summaryrefslogtreecommitdiff
path: root/resources/scripts/handle/make
diff options
context:
space:
mode:
Diffstat (limited to 'resources/scripts/handle/make')
-rwxr-xr-xresources/scripts/handle/make/file80
1 files changed, 80 insertions, 0 deletions
diff --git a/resources/scripts/handle/make/file b/resources/scripts/handle/make/file
new file mode 100755
index 00000000..855ea1c4
--- /dev/null
+++ b/resources/scripts/handle/make/file
@@ -0,0 +1,80 @@
+#!/usr/bin/env sh
+
+# helper script: build utils used by lbmk
+#
+# Copyright (C) 2023 Leah Rowe <info@minifree.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+[ "x${DEBUG+set}" = 'xset' ] && set -v
+set -u -e
+
+. "include/err.sh"
+
+mode=""
+project=""
+
+main()
+{
+ while getopts b:c: option
+ do
+ case "${1}" in
+ -b)
+ shift ;;
+ -c)
+ mode="distclean"
+ shift ;;
+ *)
+ err "Invalid option" ;;
+ esac
+ project="${OPTARG}"
+ shift
+ done
+
+ [ -z "${project}" ] && err "project name not specified"
+ [ "${project}" = "ich9utils" ] && project="util/ich9utils"
+
+ handle_dependencies
+ run_make_command
+}
+
+handle_dependencies()
+{
+ [ -d "${project}" ] || ./fetch "${project%/*}" || \
+ err "handle_dependencies: can't fetch ${project%/*}"
+ [ -d "${project}" ] || \
+ err "handle_dependencies: ${project%/*} not downloaded"
+
+ if [ "${project}" = "uefitool" ]; then
+ (
+ cd uefitool || err "handle_dependencies: !cd uefitool"
+ cmake UEFIExtract/ || \
+ err "handle_dependencies: !cmake UEFIExtract/"
+ )
+ fi
+}
+
+run_make_command()
+{
+ if [ -z "${mode}" ]; then
+ make -C "${project}" -j$(nproc) || \
+ err "run_make_command: !make -C ${project}"
+ else
+ make -C "${project}" distclean || make -C "${project}" clean \
+ || err "run_make_command: ${project}: make-clean failed"
+ fi
+}
+
+main $@