diff options
Diffstat (limited to 'ci/ci_verify_makefiles.sh')
-rwxr-xr-x | ci/ci_verify_makefiles.sh | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/ci/ci_verify_makefiles.sh b/ci/ci_verify_makefiles.sh index 9f65ec021..78e7469d7 100755 --- a/ci/ci_verify_makefiles.sh +++ b/ci/ci_verify_makefiles.sh @@ -4,7 +4,7 @@ set -e # ci_verify_makefiles.sh # Continuously integrate libpng using the legacy makefiles. # -# Copyright (c) 2019-2022 Cosmin Truta. +# Copyright (c) 2019-2023 Cosmin Truta. # # This software is released under the libpng license. # For conditions of distribution and use, see the disclaimer @@ -13,7 +13,6 @@ set -e CI_SCRIPTNAME="$(basename "$0")" CI_SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)" CI_SRCDIR="$(dirname "$CI_SCRIPTDIR")" -CI_BUILDDIR="$CI_SRCDIR" function ci_info { printf >&2 "%s: %s\\n" "$CI_SCRIPTNAME" "$*" @@ -31,7 +30,7 @@ function ci_spawn { "$@" } -function ci_init_makefiles { +function ci_init_makefiles_build { CI_SYSTEM_NAME="$(uname -s)" CI_MACHINE_NAME="$(uname -m)" CI_MAKE="${CI_MAKE:-make}" @@ -45,12 +44,11 @@ function ci_init_makefiles { esac } -function ci_trace_makefiles { +function ci_trace_makefiles_build { ci_info "## START OF CONFIGURATION ##" ci_info "system name: $CI_SYSTEM_NAME" ci_info "machine hardware name: $CI_MACHINE_NAME" ci_info "source directory: $CI_SRCDIR" - ci_info "build directory: $CI_BUILDDIR" ci_info "environment option: \$CI_MAKEFILES: '$CI_MAKEFILES'" ci_info "environment option: \$CI_MAKE: '$CI_MAKE'" ci_info "environment option: \$CI_MAKE_FLAGS: '$CI_MAKE_FLAGS'" @@ -81,6 +79,19 @@ function ci_trace_makefiles { ci_info "## END OF CONFIGURATION ##" } +function ci_cleanup_old_makefiles_build { + # Any old makefile-based build will most likely leave a mess + # of object files behind if interrupted, e.g., via Ctrl+C. + # There may be other files behind, depending on what makefile + # had been used. We cannot easily enumerate all of those. + # Fortunately, for a clean makefiles-based build, it should be + # sufficient to remove the old object files only. + [[ -z $(find "$CI_SRCDIR" -maxdepth 1 -name "*.o") ]] || + ci_spawn rm -f "$CI_SRCDIR"/*.o + [[ -z $(find "$CI_SRCDIR" -maxdepth 1 -name "*.obj") ]] || + ci_spawn rm -f "$CI_SRCDIR"/*.obj +} + function ci_build_makefiles { ci_info "## START OF BUILD ##" # Initialize ALL_CC_FLAGS and ALL_LD_FLAGS as strings. @@ -91,8 +102,8 @@ function ci_build_makefiles { ALL_LD_FLAGS="-fsanitize=$CI_SANITIZERS $ALL_LD_FLAGS" } # Initialize ALL_MAKE_FLAGS and ALL_MAKE_VARS as arrays. - local -a ALL_MAKE_FLAGS=($CI_MAKE_FLAGS) - local -a ALL_MAKE_VARS=() + local ALL_MAKE_FLAGS=($CI_MAKE_FLAGS) + local ALL_MAKE_VARS=() [[ $CI_CC ]] && ALL_MAKE_VARS+=(CC="$CI_CC") [[ $ALL_CC_FLAGS ]] && ALL_MAKE_VARS+=(CFLAGS="$ALL_CC_FLAGS") [[ $CI_CPP ]] && ALL_MAKE_VARS+=(CPP="$CI_CPP") @@ -107,7 +118,7 @@ function ci_build_makefiles { [[ $CI_LIBS ]] && ALL_MAKE_VARS+=(LIBS="$CI_LIBS") ALL_MAKE_VARS+=($CI_MAKE_VARS) # Build! - ci_spawn cd "$CI_SRCDIR" + cd "$CI_SRCDIR" local MY_MAKEFILE for MY_MAKEFILE in $CI_MAKEFILES do @@ -129,10 +140,15 @@ function ci_build_makefiles { ci_info "## END OF BUILD ##" } -ci_init_makefiles -ci_trace_makefiles -[[ $# -eq 0 ]] || { - ci_info "note: this program accepts environment options only" - ci_err "unexpected command arguments: '$*'" +function main { + [[ $# -eq 0 ]] || { + ci_info "note: this program accepts environment options only" + ci_err "unexpected command arguments: '$*'" + } + ci_init_makefiles_build + ci_trace_makefiles_build + ci_cleanup_old_makefiles_build + ci_build_makefiles } -ci_build_makefiles + +main "$@" |