From 01f5ca4365e4c3748f895a8948707ec09c162846 Mon Sep 17 00:00:00 2001 From: krcroft Date: Sun, 15 Mar 2020 10:13:46 -0700 Subject: [PATCH] Handle user-defined sets of files --- scripts/dump-preprocessor-defines.sh | 16 +++++--- .../verify-ctype-algorithm-include-order.sh | 39 ++++++++++++++----- 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/scripts/dump-preprocessor-defines.sh b/scripts/dump-preprocessor-defines.sh index a5478318..d2deffe5 100755 --- a/scripts/dump-preprocessor-defines.sh +++ b/scripts/dump-preprocessor-defines.sh @@ -23,11 +23,16 @@ gcc_includes="$(gcc -xc++ -E -v - < /dev/null 2>&1 | grep '^ ' | tail -n +2 | se sdl_includes="$(sdl2-config --cflags)" # Round up our source files -sources=( "$(find . -name '*.cpp' -o -name '*.c')" ) +if [[ "$#" == "0" ]]; then + sources=( "$(find . -name '*.cpp' -o -name '*.c')" ) +else + sources=( "$@" ) +fi # Run it -parallel \ - "g++ -std=gnu++11 \ +parallel "\ + [[ ! -f {}.defines || {} -nt {}.defines ]] \ + && g++ -std=gnu++11 \ $gcc_includes \ $sdl_includes \ -I$root_dir \ @@ -35,5 +40,6 @@ parallel \ -I{//} \ -DHAVE_CONFIG_H \ -E -dM -include '{}' - < /dev/null 2> /dev/null \ - | grep '^#define' > '{.}.defines' \ - ; echo '{} to {.}.defines'" ::: "${sources[@]}" + | grep '^#define' > '{}.defines' \ + && echo '{} to {}.defines' \ + || true" ::: "${sources[@]}" diff --git a/scripts/verify-ctype-algorithm-include-order.sh b/scripts/verify-ctype-algorithm-include-order.sh index 487abe77..063b3657 100755 --- a/scripts/verify-ctype-algorithm-include-order.sh +++ b/scripts/verify-ctype-algorithm-include-order.sh @@ -21,16 +21,37 @@ declare -gr green="\\e[32m" declare -gr cyan="\\e[36m" declare -gr reset="\\e[0m" -# Round up defines files -# shellcheck disable=SC2207 -defines=( $(find . -name '*.defines') ) +# Path to our define script +write_defines="./scripts/dump-preprocessor-defines.sh" -# Ensure we have the expected quantity -actual="${#defines[@]}" -expected="$(find . -name '*.cpp' -o -name '*.c' | wc -l)" -if (( "$actual" != "$expected" )); then - echo "We should have $expected .defines files but $actual were found" - exit 1 +# Round up defines files +if [[ "$#" == "0" ]]; then + "$write_defines" + + # shellcheck disable=SC2207 + defines=( $(find . -name '*.defines') ) + + # Ensure we have as many as we have source files + actual="${#defines[@]}" + expected="$(find . -name '*.cpp' -o -name '*.c' | wc -l)" + if (( "$actual" != "$expected" )); then + echo "We should have $expected .defines files but $actual were found" + exit 1 + fi + +# Otherwise verify only those files specified +else + defines=( ) + for f in "$@"; do + extension="${f##*.}" + if [[ "$extension" == "defines" ]]; then + "$write_defines" "${f%.*}" + defines+=( "$f" ) + else + "$write_defines" "$f" + defines+=( "${f}.defines" ) + fi + done fi # The header strings that we're looking for