3030 exit 1
3131fi
3232
33- CMAKE_BUILD_TYPE= " ${CMAKE_BUILD_TYPE :- Debug} "
33+ # Meta -------------------------------------------------------------------------
3434
3535if (set +x && [ -z " $CMAKE_HELP " ]); then
3636 CMAKE_HELP=" $( cmake --help) "
@@ -40,7 +40,45 @@ cmake-help-contains() {
4040 (set +x && [[ " $CMAKE_HELP " =~ $1 ]])
4141}
4242
43- COVERAGE=" ${COVERAGE:- 0} "
43+ # Generate ---------------------------------------------------------------------
44+
45+ BUILD_DIR=" .build"
46+
47+ CMAKE_BUILD_TYPE=" ${CMAKE_BUILD_TYPE:- Debug} "
48+
49+ GENERATE_CMD=(cmake)
50+ if ! cmake-help-contains " Visual Studio" || [ -n " $CXX " ]; then
51+ COVERAGE=" ${COVERAGE:- 0} "
52+ if [ " $COVERAGE " = 1 ]; then
53+ BUILD_DIR=" $BUILD_DIR .coverage"
54+ GENERATE_CMD+=(" -DCOVERAGE=ON" )
55+ fi
56+
57+ BUILD_DIR=" $BUILD_DIR .$CMAKE_BUILD_TYPE ${CXX: +.} $CXX "
58+ GENERATE_CMD+=(" -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE " )
59+
60+ if cmake-help-contains " MSYS Makefiles" ; then
61+ GENERATE_CMD+=(" -G" " MSYS Makefiles" )
62+ export CMAKE_MAKE_PROGRAM=" make"
63+ fi
64+ fi
65+ GENERATE_CMD+=(..)
66+
67+ # Clean
68+
69+ CLEAN=" ${CLEAN:- 0} "
70+ if [ " $CLEAN " = 1 ]; then
71+ rm -rf " $BUILD_DIR "
72+ fi
73+
74+ # Generate
75+
76+ mkdir -p " $BUILD_DIR " && cd " $_ "
77+ " ${GENERATE_CMD[@]} "
78+
79+ # Build and Test ---------------------------------------------------------------
80+
81+ export CTEST_OUTPUT_ON_FAILURE=" ${CTEST_OUTPUT_ON_FAILURE:- 1} "
4482
4583N_PARALLEL_BUILD=" ${N_PARALLEL_BUILD:- $NUMBER_OF_PROCESSORS } "
4684N_PARALLEL_TEST=" ${N_PARALLEL_TEST:- $NUMBER_OF_PROCESSORS } "
@@ -51,48 +89,25 @@ if command -v nice > /dev/null; then
5189 BUILD_CMD+=(nice)
5290 TEST_CMD+=(nice)
5391fi
54- BUILD_CMD+=(cmake --build . --config $CMAKE_BUILD_TYPE --parallel $N_PARALLEL_BUILD --)
55- TEST_CMD+=(ctest --build-config $CMAKE_BUILD_TYPE --parallel $N_PARALLEL_TEST )
92+ BUILD_CMD+=(cmake --build . --config " $CMAKE_BUILD_TYPE " --parallel " $N_PARALLEL_BUILD " --)
93+ TEST_CMD+=(ctest --build-config " $CMAKE_BUILD_TYPE " --parallel " $N_PARALLEL_TEST " )
5694
57- INIT_CMD=(cmake)
5895if cmake-help-contains " Visual Studio" && [ -z " $CXX " ]; then
59- DIR=" .build"
60-
6196 if [ " $QUIET " != 0 ]; then
6297 MSBUILD_VERBOSITY=" ${MSBUILD_VERBOSITY:- QUIET} "
6398 fi
6499 if [ -n " $MSBUILD_VERBOSITY " ]; then
65100 BUILD_CMD+=(" /VERBOSITY:$MSBUILD_VERBOSITY " )
66101 fi
67- else
68- DIR=" .build.$CMAKE_BUILD_TYPE ${CXX: +.} $CXX "
69- INIT_CMD+=(" -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE " )
70-
71- if cmake-help-contains " MSYS Makefiles" ; then
72- INIT_CMD+=(" -G" " MSYS Makefiles" )
73- export CMAKE_MAKE_PROGRAM=" make"
74- fi
75-
76- if [ " $COVERAGE " = 1 ]; then
77- INIT_CMD+=(" -DCOVERAGE=ON" )
78- fi
79102fi
80- INIT_CMD+=(..)
103+
104+ # Watch ------------------------------------------------------------------------
81105
82106export WATCH_CMD=(fswatch --one-per-batch --recursive)
107+
83108if [[ " $OSTYPE " =~ ^(linux-gnu| msys| cygwin)$ ]]; then
84109 # The default monitor notifies on read accesses...
85110 WATCH_CMD+=(--monitor poll_monitor ' --latency=5' )
86111fi
87112
88- export CTEST_OUTPUT_ON_FAILURE=" ${CTEST_OUTPUT_ON_FAILURE:- 1} "
89-
90- CLEAN=" ${CLEAN:- 0} "
91- if [ " $CLEAN " = 1 ]; then
92- rm -rf " $DIR "
93- fi
94-
95- mkdir -p " $DIR " && cd " $_ "
96- " ${INIT_CMD[@]} "
97-
98113WATCH_CMD+=(../* )
0 commit comments