|
@@ -4,17 +4,17 @@ clear
|
|
|
cd $(dirname $0)
|
|
|
|
|
|
printHelpExit() {
|
|
|
- echo "$0 clean | remove build results"
|
|
|
- echo "$0 build | build everything"
|
|
|
- echo "$0 install | move build results into the install folder"
|
|
|
- echo "$0 test | run the tests"
|
|
|
- echo "$0 valgrind | run the tests with valgrind"
|
|
|
- echo "$0 coverage | generate code coverage"
|
|
|
- echo "$0 performance | run the performance tests"
|
|
|
- echo "$0 final | find classes / structs which are not final"
|
|
|
- echo "$0 macro | find macros without CORE"
|
|
|
- echo "$0 include | find system includes"
|
|
|
- echo "$0 time | check build time"
|
|
|
+ echo "$0 clean | remove build results"
|
|
|
+ echo "$0 build <type> | build everything"
|
|
|
+ echo "$0 install | move build results into the install folder"
|
|
|
+ echo "$0 test <type> | run the tests"
|
|
|
+ echo "$0 valgrind <type> | run the tests with valgrind"
|
|
|
+ echo "$0 coverage | generate code coverage"
|
|
|
+ echo "$0 performance | run the performance tests"
|
|
|
+ echo "$0 final | find classes / structs which are not final"
|
|
|
+ echo "$0 macro | find macros without CORE"
|
|
|
+ echo "$0 include | find system includes"
|
|
|
+ echo "$0 time | check build time"
|
|
|
exit 0
|
|
|
}
|
|
|
|
|
@@ -23,40 +23,83 @@ if [ -z "$task" ]; then
|
|
|
printHelpExit
|
|
|
fi
|
|
|
|
|
|
-# tasks
|
|
|
-build=false
|
|
|
-test=false
|
|
|
-valgrind=false
|
|
|
+# task vars
|
|
|
+build_debug=false
|
|
|
+build_release=false
|
|
|
+
|
|
|
+test_debug=false
|
|
|
+test_release=false
|
|
|
+
|
|
|
+valgrind=""
|
|
|
performance=false
|
|
|
time=false
|
|
|
install=false
|
|
|
coverage=false
|
|
|
-profile=$(cat profile)
|
|
|
|
|
|
# parsing
|
|
|
if [ "$task" = "clean" ]; then
|
|
|
- rm -rf build install
|
|
|
- exit 0
|
|
|
+ rm -rf build_debug build_release install
|
|
|
elif [ "$task" = "build" ]; then
|
|
|
- build=true
|
|
|
+ type=$2
|
|
|
+ if [ "$type" = "debug" ]; then
|
|
|
+ build_debug=true
|
|
|
+ elif [ "$type" = "release" ]; then
|
|
|
+ build_release=true
|
|
|
+ elif [ "$type" = "all" ]; then
|
|
|
+ build_debug=true
|
|
|
+ build_test_release=true
|
|
|
+ build_release=true
|
|
|
+ else
|
|
|
+ echo "Valid build types are: debug, release, all"
|
|
|
+ printHelpExit
|
|
|
+ fi
|
|
|
elif [ "$task" = "install" ]; then
|
|
|
- build=true
|
|
|
+ build_release=true
|
|
|
install=true
|
|
|
elif [ "$task" = "coverage" ]; then
|
|
|
- build=true
|
|
|
+ build_debug=true
|
|
|
+ test_debug=true
|
|
|
coverage=true
|
|
|
- test=true
|
|
|
elif [ "$task" = "test" ]; then
|
|
|
- build=true
|
|
|
- test=true
|
|
|
+ type=$2
|
|
|
+ if [ "$type" = "debug" ]; then
|
|
|
+ build_debug=true
|
|
|
+ test_debug=true
|
|
|
+ elif [ "$type" = "release" ]; then
|
|
|
+ build_test_release=true
|
|
|
+ test_release=true
|
|
|
+ elif [ "$type" = "all" ]; then
|
|
|
+ build_debug=true
|
|
|
+ test_debug=true
|
|
|
+ build_test_release=true
|
|
|
+ test_release=true
|
|
|
+ else
|
|
|
+ echo "Valid test types are: debug, release, all"
|
|
|
+ printHelpExit
|
|
|
+ fi
|
|
|
elif [ "$task" = "valgrind" ]; then
|
|
|
- build=true
|
|
|
- valgrind=true
|
|
|
+ type=$2
|
|
|
+ if [ "$type" = "debug" ]; then
|
|
|
+ build_debug=true
|
|
|
+ test_debug=true
|
|
|
+ elif [ "$type" = "release" ]; then
|
|
|
+ build_test_release=true
|
|
|
+ test_release=true
|
|
|
+ elif [ "$type" = "all" ]; then
|
|
|
+ build_debug=true
|
|
|
+ test_debug=true
|
|
|
+ build_test_release=true
|
|
|
+ test_release=true
|
|
|
+ else
|
|
|
+ echo "Valid valgrind types are: debug, release, all"
|
|
|
+ printHelpExit
|
|
|
+ fi
|
|
|
+ valgrind="valgrind"
|
|
|
elif [ "$task" = "performance" ]; then
|
|
|
- build=true
|
|
|
+ build_release=true
|
|
|
performance=true
|
|
|
elif [ "$task" = "time" ]; then
|
|
|
- build=true
|
|
|
+ build_release=true
|
|
|
time=true
|
|
|
elif [ "$task" = "final" ]; then
|
|
|
grep -r " class" src include | grep -v -E 'final|enum|.git' || true
|
|
@@ -78,32 +121,41 @@ else
|
|
|
fi
|
|
|
|
|
|
# task execution
|
|
|
-if $build; then
|
|
|
- if [ ! -e build ]; then
|
|
|
- cmake -B build -S . -G Ninja -DCMAKE_INSTALL_PREFIX=./install \
|
|
|
- -DCMAKE_BUILD_TYPE=$profile
|
|
|
+buildProfile() {
|
|
|
+ folder=$1
|
|
|
+ shift 1
|
|
|
+ if [ ! -e "$folder" ]; then
|
|
|
+ cmake -B "$folder" -S . -G Ninja -DCMAKE_INSTALL_PREFIX=./install $@
|
|
|
fi
|
|
|
- ninja -C build
|
|
|
+ ninja -C "$folder"
|
|
|
+}
|
|
|
+
|
|
|
+if $build_debug; then
|
|
|
+ buildProfile build_debug -DCMAKE_BUILD_TYPE=Debug
|
|
|
+fi
|
|
|
+if $build_release; then
|
|
|
+ buildProfile build_release -DCMAKE_BUILD_TYPE=Release
|
|
|
fi
|
|
|
if $install; then
|
|
|
- ninja -C build install
|
|
|
+ ninja -C build_release install
|
|
|
fi
|
|
|
-if $test; then
|
|
|
- cd build
|
|
|
- ./test light || true
|
|
|
+if $test_debug; then
|
|
|
+ cd build_debug
|
|
|
+ $valgrind ./test light $valgrind || true
|
|
|
cd ..
|
|
|
fi
|
|
|
-if $valgrind; then
|
|
|
- cd build
|
|
|
- valgrind ./test light valgrind || true
|
|
|
+if $test_release; then
|
|
|
+ cd build_release
|
|
|
+ $valgrind ./test light $valgrind || true
|
|
|
cd ..
|
|
|
fi
|
|
|
if $performance; then
|
|
|
- cd build
|
|
|
+ cd build_release
|
|
|
./performance
|
|
|
+ cd ..
|
|
|
fi
|
|
|
if $time; then
|
|
|
- lines=$(cat build/.ninja_log | grep "^[0-9]")
|
|
|
+ lines=$(cat build_release/.ninja_log | grep "^[0-9]")
|
|
|
|
|
|
startMillis=0
|
|
|
endMillis=0
|
|
@@ -125,5 +177,5 @@ if $time; then
|
|
|
printf "$output" | sort -n
|
|
|
fi
|
|
|
if $coverage; then
|
|
|
- gcovr -r . build -e test -e performance
|
|
|
+ gcovr -r . build_debug -e test -e performance
|
|
|
fi
|