@@ -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,47 @@ if [ "${with_coverage}" = true ]; then
144147 build_type=" Coverage"
145148fi
146149
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+ )
178+
147179if [ " ${with_fast_math} " = true ]; then
148- cmake_param_protected= " -DCMAKE_CXX_FLAGS =-ffast-math"
180+ cmake_param_list+=(-D CMAKE_CXX_FLAGS =-ffast-math)
149181fi
150182
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
183+ if [ " ${with_walberla} " = true ] && [ " ${with_walberla_avx} " = true ]; then
184+ cmake_param_list+=(-D ESPRESSO_BUILD_WITH_WALBERLA_AVX:BOOL=ON)
172185fi
173186
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-
181187if [ " ${with_cuda} " = true ]; then
182- cmake_params= " ${cmake_params} -D CUDAToolkit_ROOT=/usr/lib/cuda"
188+ cmake_param_list+=( -D CUDAToolkit_ROOT=/usr/lib/cuda)
183189 if [ " ${CUDACXX} " = " " ] && [ " ${CXX} " != " " ]; then
184- cmake_params= " ${cmake_params} -D CMAKE_CUDA_FLAGS='--compiler-bindir= $( which " ${CXX} " ) ' "
190+ cmake_param_list+=( -D CMAKE_CUDA_HOST_COMPILER= " ${CXX} " )
185191 fi
186192fi
187193
@@ -201,6 +207,7 @@ echo ""
201207
202208builddir=" ${srcdir} /build"
203209
210+ echo " variables:"
204211outp srcdir builddir \
205212 make_check_unit_tests make_check_python make_check_tutorials make_check_samples make_check_benchmarks \
206213 cmake_params \
@@ -254,11 +261,21 @@ else
254261 fi
255262fi
256263
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
264+ # print cmake command, one parameter per line (line length is limited to 1024 chars on macOS)
265+ echo " cmake -G Ninja \\ "
266+ for arg in " ${cmake_param_list[@]} " ; do
267+ if [[ " ${arg} " = * " " * ]]; then
268+ echo -n " \" ${arg} \" "
269+ else
270+ echo -n " ${arg} "
271+ fi
272+ if [ ! " ${arg} " = " -D" ]; then
273+ echo " \\ "
274+ fi
275+ done
276+ echo " ${srcdir} "
277+
278+ cmake -G Ninja " ${srcdir} " " ${cmake_param_list[@]} " || exit 1
262279end " CONFIGURE"
263280
264281# BUILD
@@ -372,6 +389,7 @@ if [ "${with_coverage}" = true ] || [ "${with_coverage_python}" = true ]; then
372389 echo " Running lcov and gcov..."
373390 codecov_opts=" ${codecov_opts} --gcov"
374391 " ${srcdir} /maintainer/CI/run_lcov.sh" coverage.info
392+ rm coverage.info
375393 fi
376394 if [ " ${with_coverage_python} " = true ]; then
377395 echo " Running python3-coverage..."
0 commit comments