@@ -134,6 +134,9 @@ set_default_value with_stokesian_dynamics false
134134set_default_value test_timeout 500
135135set_default_value hide_gpu false
136136
137+ # accumulate CMake params in a Bash array to preserve whitespace characters
138+ declare -a cmake_param_list
139+
137140if [ " ${make_check_unit_tests} " = true ] || [ " ${make_check_python} " = true ] || [ " ${make_check_tutorials} " = true ] || [ " ${make_check_samples} " = true ] || [ " ${make_check_benchmarks} " = true ]; then
138141 run_checks=true
139142else
@@ -144,44 +147,43 @@ if [ "${with_coverage}" = true ]; then
144147 build_type=" Coverage"
145148fi
146149
147- if [ " ${with_fast_math} " = true ]; then
148- cmake_param_protected=" -DCMAKE_CXX_FLAGS=-ffast-math"
149- fi
150+ cmake_param_list+=(
151+ ${cmake_params}
152+ -D CMAKE_BUILD_TYPE=${build_type}
153+ -D CMAKE_INSTALL_PREFIX=/tmp/espresso-unit-tests
154+ -D ESPRESSO_INSIDE_DOCKER:BOOL=ON
155+ -D ESPRESSO_WARNINGS_ARE_ERRORS:BOOL=ON
156+ -D ESPRESSO_CTEST_ARGS:STRING=" -j${check_procs} "
157+ -D ESPRESSO_TEST_TIMEOUT:STRING=${test_timeout}
158+ -D ESPRESSO_BUILD_BENCHMARKS:BOOL=${make_check_benchmarks}
159+ -D ESPRESSO_BUILD_WITH_CCACHE:BOOL=${with_ccache}
160+ -D ESPRESSO_BUILD_WITH_CALIPER:BOOL=${with_caliper}
161+ -D ESPRESSO_BUILD_WITH_FPE:BOOL=${with_fpe}
162+ -D ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM:BOOL=${with_shared_memory_parallelism}
163+ -D ESPRESSO_BUILD_WITH_HDF5:BOOL=${with_hdf5}
164+ -D ESPRESSO_BUILD_WITH_FFTW:BOOL=${with_fftw}
165+ -D ESPRESSO_BUILD_WITH_GSL:BOOL=${with_gsl}
166+ -D ESPRESSO_BUILD_WITH_SCAFACOS:BOOL=${with_scafacos}
167+ -D ESPRESSO_BUILD_WITH_NLOPT:BOOL=${with_nlopt}
168+ -D ESPRESSO_BUILD_WITH_STOKESIAN_DYNAMICS:BOOL=${with_stokesian_dynamics}
169+ -D ESPRESSO_BUILD_WITH_WALBERLA:BOOL=${with_walberla}
170+ -D ESPRESSO_BUILD_WITH_WALBERLA_AVX:BOOL=${with_walberla_avx}
171+ -D ESPRESSO_BUILD_WITH_COVERAGE:BOOL=${with_coverage}
172+ -D ESPRESSO_BUILD_WITH_COVERAGE_PYTHON:BOOL=${with_coverage_python}
173+ -D ESPRESSO_BUILD_WITH_ASAN:BOOL=${with_asan}
174+ -D ESPRESSO_BUILD_WITH_UBSAN:BOOL=${with_ubsan}
175+ -D ESPRESSO_BUILD_WITH_CLANG_TIDY:BOOL=${with_static_analysis}
176+ -D ESPRESSO_BUILD_WITH_CUDA:BOOL=${with_cuda}
177+ )
150178
151- cmake_params=" -D CMAKE_BUILD_TYPE=${build_type} -D ESPRESSO_WARNINGS_ARE_ERRORS=ON ${cmake_params} "
152- cmake_params=" ${cmake_params} -D CMAKE_INSTALL_PREFIX=/tmp/espresso-unit-tests -D ESPRESSO_INSIDE_DOCKER=ON"
153- cmake_params=" ${cmake_params} -D ESPRESSO_CTEST_ARGS:STRING=-j${check_procs} -D ESPRESSO_TEST_TIMEOUT=${test_timeout} "
154-
155- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_BENCHMARKS=${make_check_benchmarks} "
156- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_CCACHE=${with_ccache} "
157- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_CALIPER=${with_caliper} "
158- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_FPE=${with_fpe} "
159- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM=${with_shared_memory_parallelism} "
160- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_HDF5=${with_hdf5} "
161- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_FFTW=${with_fftw} "
162- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_GSL=${with_gsl} "
163- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_SCAFACOS=${with_scafacos} "
164- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_NLOPT=${with_nlopt} "
165- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_STOKESIAN_DYNAMICS=${with_stokesian_dynamics} "
166- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_WALBERLA=${with_walberla} "
167-
168- if [ " ${with_walberla} " = true ]; then
169- if [ " ${with_walberla_avx} " = true ]; then
170- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_WALBERLA_AVX=ON"
171- fi
179+ if [ " ${with_fast_math} " = true ]; then
180+ cmake_param_list+=(-D CMAKE_CXX_FLAGS=-ffast-math)
172181fi
173182
174- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_COVERAGE=${with_coverage} "
175- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_COVERAGE_PYTHON=${with_coverage_python} "
176- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_ASAN=${with_asan} "
177- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_UBSAN=${with_ubsan} "
178- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_CLANG_TIDY=${with_static_analysis} "
179- cmake_params=" ${cmake_params} -D ESPRESSO_BUILD_WITH_CUDA=${with_cuda} "
180-
181183if [ " ${with_cuda} " = true ]; then
182- cmake_params= " ${cmake_params} -D CUDAToolkit_ROOT=/usr/lib/cuda"
184+ cmake_param_list+=( -D CUDAToolkit_ROOT=/usr/lib/cuda)
183185 if [ " ${CUDACXX} " = " " ] && [ " ${CXX} " != " " ]; then
184- cmake_params= " ${cmake_params} -D CMAKE_CUDA_FLAGS='--compiler-bindir= $( which " ${CXX} " ) ' "
186+ cmake_param_list+=( -D CMAKE_CUDA_HOST_COMPILER= " ${CXX} " )
185187 fi
186188fi
187189
@@ -201,6 +203,7 @@ echo ""
201203
202204builddir=" ${srcdir} /build"
203205
206+ echo " variables:"
204207outp srcdir builddir \
205208 make_check_unit_tests make_check_python make_check_tutorials make_check_samples make_check_benchmarks \
206209 cmake_params \
@@ -254,11 +257,21 @@ else
254257 fi
255258fi
256259
257- if [ -z " ${cmake_param_protected} " ]; then
258- cmake -G Ninja " ${srcdir} " ${cmake_params} || exit 1
259- else
260- cmake -G Ninja " ${srcdir} " ${cmake_params} " ${cmake_param_protected} " || exit 1
261- fi
260+ # print cmake command, one parameter per line (line length is limited to 1024 chars on macOS)
261+ echo " cmake -G Ninja \\ "
262+ for arg in " ${cmake_param_list[@]} " ; do
263+ if [[ " ${arg} " = * " " * ]]; then
264+ echo -n " \" ${arg} \" "
265+ else
266+ echo -n " ${arg} "
267+ fi
268+ if [ ! " ${arg} " = " -D" ]; then
269+ echo " \\ "
270+ fi
271+ done
272+ echo " ${srcdir} "
273+
274+ cmake -G Ninja " ${srcdir} " " ${cmake_param_list[@]} " || exit 1
262275end " CONFIGURE"
263276
264277# BUILD
353366if [ " ${with_coverage} " = true ] || [ " ${with_coverage_python} " = true ]; then
354367 start " COVERAGE"
355368 cd " ${builddir} "
369+ rm -f _deps/highfive-src/.github/workflows/coverage.yml
356370
357371 # import codecov key
358372 gpg --import " ${CODECOV_PUBLIC_KEY} "
@@ -372,6 +386,7 @@ if [ "${with_coverage}" = true ] || [ "${with_coverage_python}" = true ]; then
372386 echo " Running lcov and gcov..."
373387 codecov_opts=" ${codecov_opts} --gcov"
374388 " ${srcdir} /maintainer/CI/run_lcov.sh" coverage.info
389+ rm coverage.info
375390 fi
376391 if [ " ${with_coverage_python} " = true ]; then
377392 echo " Running python3-coverage..."
0 commit comments