From 9d419e77a0621ddf8398edecb40ddedc3388dc42 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Thu, 5 Oct 2023 22:49:19 +0100 Subject: handle/make/*: unified main() function Signed-off-by: Leah Rowe --- include/make.sh | 30 ++++++++++++++++++++++++++++++ script/build/release/src | 2 +- script/handle/make/config | 22 ++-------------------- script/handle/make/file | 28 +++++++--------------------- 4 files changed, 40 insertions(+), 42 deletions(-) create mode 100644 include/make.sh diff --git a/include/make.sh b/include/make.sh new file mode 100644 index 00000000..697c40d2 --- /dev/null +++ b/include/make.sh @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2023 Leah Rowe + +main() +{ + while getopts b:m:u:c:x: option + do + _flag="${1}" + case "${1}" in + -b) mode="all" ;; + -u) mode="oldconfig" ;; + -m) mode="menuconfig" ;; + -c) mode="distclean" ;; + -x) mode="crossgcc-clean" ;; + *) fail "Invalid option" ;; + esac + shift; project="${OPTARG}"; shift + done + [ -z "${mode}" ] && fail "mode not given (-m, -u, -b, -c or -x)" + [ -z "${project}" ] && fail "project name not specified" + + handle_dependencies $@ + handle_targets +} + +fail() +{ + [ -z "${codedir}" ] || ./handle make file -c "${codedir}" || : + err "${1}" +} diff --git a/script/build/release/src b/script/build/release/src index 6c7d3190..1a504133 100755 --- a/script/build/release/src +++ b/script/build/release/src @@ -108,7 +108,7 @@ purge_files() done x_ ./handle make file -c bios_extract flashrom grub uefitool \ util-fw/stm32-vserprog util-fw/stm32-vserprog/libopencm3 \ - memtest86plus/build* util/* + memtest86plus/build32 memtest86plus/build64 util/* x_ rm -Rf .git* */.git* */*/.git* */*/*/.git* */*/*/*/.git* \ */*/*/*/*/.git* */*/*/*/*/*/.git* */*/*/*/*/*/*/.git* diff --git a/script/handle/make/config b/script/handle/make/config index 9d028a85..694119c4 100755 --- a/script/handle/make/config +++ b/script/handle/make/config @@ -9,6 +9,7 @@ set -u -e . "include/err.sh" . "include/option.sh" +. "include/make.sh" read projectname < projectname read our_version < version @@ -20,26 +21,7 @@ eval "$(setvars "" arch cfgsdir codedir config config_name crossgcc_ada mode \ tmpclean="$(mktemp -d -t makeclean.XXXXXXXXXX)" -main() -{ - while getopts b:m:u:c:x: option - do - case "${1}" in - -b) mode="all" ;; - -u) mode="oldconfig" ;; - -m) mode="menuconfig" ;; - -c) mode="distclean" ;; - -x) mode="crossgcc-clean" ;; - *) fail "Invalid option" ;; - esac - shift; project="${OPTARG}"; shift - done - [ -z "${mode}" ] && fail "mode not given (-m, -u, -b, -c or -x)" - [ -z "${project}" ] && fail "project name not specified" - - handle_dependencies $@ - handle_targets -} +# main() is in include/make.sh handle_dependencies() { diff --git a/script/handle/make/file b/script/handle/make/file index c0a6afb4..ff41f375 100755 --- a/script/handle/make/file +++ b/script/handle/make/file @@ -6,30 +6,16 @@ set -u -e . "include/err.sh" +. "include/make.sh" -eval "$(setvars "" mode project _flag)" +eval "$(setvars "" mode project _flag codedir)" -main() -{ - while getopts b:c: option - do - _flag="${1}" - case "${_flag}" in - -b) : ;; - -c) mode="distclean" ;; - *) err "Invalid option" ;; - esac - shift; project="${OPTARG}"; shift - done - [ -z "${project}" ] && err "project name not specified" - [ $# -gt 0 ] && x_ ./handle make file ${_flag} ${@} - - handle_dependencies - run_make_command -} +# main() is in include/make.sh handle_dependencies() { + [ $# -gt 0 ] && x_ ./handle make file ${_flag} ${@} + [ -d "${project}" ] || x_ ./update project repo "${project%/*}" [ -d "${project}" ] || \ err "handle_dependencies: ${project%/*} not downloaded" @@ -42,11 +28,11 @@ handle_dependencies() ) } -run_make_command() +handle_targets() { [ -f "${project}/Makefile" ] || [ -f "${project}/makefile" ] || \ [ -f "${project}/GNUmakefile" ] || return 0 - [ -z "${mode}" ] && x_ make -C "${project}" -j$(nproc) && return 0 + [ "${mode}" = "all" ] && x_ make -C "${project}" -j$(nproc) && return 0 x_ make -C "${project}" clean make -C "${project}" distclean 2>/dev/null || : } -- cgit v1.2.1