mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Includes C++26 related infrastructure macros. Fixes compile errors when compiling under C++26. Initially supported C++26 features: - [[indeterminate]] - new 2022 ISO prefixes in ratio.h - atomic fetch_max() and fetch_min() - is_virtual_base_of - is_trivially_relocatable and trivially_relocate - saturation arithmetic: add_sat, sub_sat, mul_sat, div_sat, saturate_cast
83 lines
2.2 KiB
Bash
Executable File
83 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# run-coverage.sh [gcc|clang]
|
|
#
|
|
# defaults:
|
|
# compiler: clang
|
|
#
|
|
|
|
set -e
|
|
|
|
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)
|
|
|
|
# Choose gcc or clang via cmdline
|
|
if [ "$1" = "gcc" ] ; then
|
|
COMPILER=gcc
|
|
else
|
|
# default
|
|
COMPILER=clang
|
|
fi
|
|
|
|
if [ "$COMPILER" = "gcc" ]; then
|
|
C_COMPILER=gcc
|
|
CXX_COMPILER=g++
|
|
GCOV="$(command -v gcov)" || { echo "gcov not found in PATH"; exit 1; }
|
|
GCOV_ADD=""
|
|
EXTRA_LINK_OPTIONS=""
|
|
EXTRA_LINK_LIBS="gcov"
|
|
elif [ "$COMPILER" = "clang" ]; then
|
|
C_COMPILER=clang
|
|
CXX_COMPILER=clang++
|
|
GCOV="$(command -v llvm-cov)" || { echo "llvm-cov not found in PATH"; exit 1; }
|
|
GCOV_ADD="--gcov-tool gcov"
|
|
EXTRA_LINK_OPTIONS="--coverage"
|
|
EXTRA_LINK_LIBS=""
|
|
else
|
|
echo "Unsupported compiler: $COMPILER"
|
|
exit 1
|
|
fi
|
|
|
|
BUILD=build-coverage
|
|
|
|
rm -rf -- "${BUILD:?}"
|
|
mkdir -p "$BUILD"
|
|
cd "$BUILD" || exit 1
|
|
touch total.info
|
|
|
|
for CXXSTD in 11 14 17 20 23 26; do
|
|
for NOSTL in OFF ON; do
|
|
rm -rf CMakeFiles
|
|
cmake -DEXTRA_COMPILE_OPTIONS="--coverage" \
|
|
-DEXTRA_LINK_OPTIONS="$EXTRA_LINK_OPTIONS" \
|
|
-DEXTRA_LINK_LIBS="$EXTRA_LINK_LIBS" \
|
|
-DCMAKE_C_COMPILER=$C_COMPILER \
|
|
-DCMAKE_CXX_COMPILER=$CXX_COMPILER \
|
|
-DNO_STL=$NOSTL \
|
|
-DETL_USE_TYPE_TRAITS_BUILTINS=OFF \
|
|
-DETL_USER_DEFINED_TYPE_TRAITS=OFF \
|
|
-DETL_FORCE_TEST_CPP03_IMPLEMENTATION=OFF \
|
|
-DETL_OPTIMISATION=-O0 \
|
|
-DETL_CXX_STANDARD=$CXXSTD \
|
|
-DETL_ENABLE_SANITIZER=Off \
|
|
-DETL_MESSAGES_ARE_NOT_VIRTUAL=OFF \
|
|
-DETL_USE_BUILTIN_MEM_FUNCTIONS=ON ..
|
|
cmake --build .
|
|
./etl_tests
|
|
lcov --gcov-tool "$GCOV" $GCOV_ADD --capture --directory CMakeFiles/etl_tests.dir \
|
|
--rc "geninfo_unexecuted_blocks=1" --output-file coverage.info --include '*/include/etl/*' --rc "lcov_branch_coverage=1" \
|
|
--ignore-errors inconsistent \
|
|
--ignore-errors mismatch
|
|
|
|
lcov -a total.info -a coverage.info -o total.info --rc "lcov_branch_coverage=1" \
|
|
--ignore-errors inconsistent \
|
|
--ignore-errors corrupt \
|
|
--ignore-errors empty
|
|
done
|
|
done
|
|
|
|
genhtml total.info --output-directory coverage --rc "genhtml_branch_coverage=1" --branch-coverage -t $COMPILER \
|
|
--ignore-errors inconsistent \
|
|
--ignore-errors category
|
|
|
|
cd ..
|