Loading CMakeLists.txt +14 −12 Original line number Diff line number Diff line Loading @@ -3,13 +3,13 @@ # cmake_minimum_required (VERSION 3.14) project (cppduals VERSION 0.7.3 VERSION 0.7.4 LANGUAGES C CXX ) include (GNUInstallDirs) if (NOT CMAKE_CXX_STANDARD) set (CMAKE_CXX_STANDARD 20 CACHE STRING "Which C++ standard to test against.") set (CMAKE_CXX_STANDARD 17 CACHE STRING "Which C++ standard to test against.") endif() message (STATUS "CXX_STANDARD: ${CMAKE_CXX_STANDARD}") set (CMAKE_CXX_STANDARD_REQUIRED ON) Loading Loading @@ -150,21 +150,23 @@ if (CPPDUALS_CODE_COVERAGE AND NOT CPPDUALS_TESTING) message(FATAL_ERROR "CPPDUALS_CODE_COVERAGE requires CPPDUALS_TESTING to be enabled") endif() if (CPPDUALS_CODE_COVERAGE) if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") message(STATUS "Enabling coverage reporting") # Add required flags (GCC & LLVM/Clang) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") message(STATUS "Enabling coverage reporting (Clang)") target_compile_options (cppduals_coverage_config INTERFACE -O0 # no optimization -g # generate debug info --coverage # sets all required flags -fprofile-arcs -ftest-coverage -O0 -g -fprofile-instr-generate -fcoverage-mapping ) target_link_options (cppduals_coverage_config INTERFACE -fprofile-instr-generate ) elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU") message(STATUS "Enabling coverage reporting (GCC)") target_compile_options (cppduals_coverage_config INTERFACE -O0 -g --coverage -fprofile-arcs -ftest-coverage ) target_link_options (cppduals_coverage_config INTERFACE --coverage ) else() # error out if coverage is enabled but compiler is not supported message(FATAL_ERROR "Coverage reporting is disabled for unknown compilers.") endif () endif () Loading tests/CMakeLists.txt +17 −5 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ set (ALL_TESTS example ) set (ALL_TEST_BINS ) set (ALL_TEST_BIN_PATHS ) foreach (TEST_ ${ALL_TESTS}) foreach (PHASE 1 2 3 4 5) # check if file has phase defined Loading @@ -74,6 +75,7 @@ foreach (TEST_ ${ALL_TESTS}) set (TEST ${TEST_}_${PHASE}) message ("Adding test ${TEST}") set (ALL_TEST_BINS ${ALL_TEST_BINS} ${TEST}) set (ALL_TEST_BIN_PATHS ${ALL_TEST_BIN_PATHS} $<TARGET_FILE:${TEST}>) add_executable (${TEST} ${TEST_}.cpp) set (PHASE_FLAGS ${OPT_FLAGS} -DPHASE_${PHASE}) Loading Loading @@ -262,27 +264,37 @@ if (CPPDUALS_CODE_COVERAGE) set(LLVM_COV_PATH ${CMAKE_CXX_COMPILER_DIR}/llvm-cov) set(LLVM_PROFDATA_PATH ${CMAKE_CXX_COMPILER_DIR}/llvm-profdata) if(NOT EXISTS ${LLVM_COV_PATH}) find_program(LLVM_COV_PATH llvm-cov REQUIRED) find_program(LLVM_COV_PATH llvm-cov) endif() if(NOT EXISTS ${LLVM_PROFDATA_PATH}) find_program(LLVM_PROFDATA_PATH llvm-profdata REQUIRED) find_program(LLVM_PROFDATA_PATH llvm-profdata) endif() # On macOS, llvm tools live in the Xcode toolchain; use xcrun to find them if(NOT EXISTS ${LLVM_COV_PATH} AND APPLE) execute_process(COMMAND xcrun -f llvm-cov OUTPUT_VARIABLE LLVM_COV_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) endif() if(NOT EXISTS ${LLVM_PROFDATA_PATH} AND APPLE) execute_process(COMMAND xcrun -f llvm-profdata OUTPUT_VARIABLE LLVM_PROFDATA_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) endif() if(NOT EXISTS ${LLVM_COV_PATH} OR NOT EXISTS ${LLVM_PROFDATA_PATH}) message(FATAL_ERROR "Could not find llvm-cov and llvm-profdata") endif() add_custom_target(cov DEPENDS ${ALL_TEST_BINS} COMMAND ${CMAKE_COMMAND} -E remove_directory coverage/profraw COMMAND ${CMAKE_COMMAND} -E make_directory coverage/profraw COMMAND ${CMAKE_COMMAND} --build . --target test "LLVM_PROFILE_FILE=coverage/profraw/%p.profraw" COMMAND ${CMAKE_COMMAND} -E env "LLVM_PROFILE_FILE=${CMAKE_BINARY_DIR}/coverage/profraw/%p.profraw" ctest --output-on-failure COMMAND ${LLVM_PROFDATA_PATH} merge -sparse coverage/profraw/*.profraw -o coverage/coverage.profdata COMMAND ${LLVM_COV_PATH} show -instr-profile=coverage/coverage.profdata -format=html -output-dir=coverage/html -show-line-counts-or-regions -show-instantiation-summary ${ALL_TEST_BINS} ${ALL_TEST_BIN_PATHS} COMMAND ${LLVM_COV_PATH} report -instr-profile=coverage/coverage.profdata ${ALL_TEST_BINS} ${ALL_TEST_BIN_PATHS} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") Loading tests/test_dual.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -665,6 +665,22 @@ TEST(non_class, putto) { s << 2 + 3_el; EXPECT_EQ(s.str(), "(2+3_el)"); } // negative dual part (covers the sign branch) { std::stringstream s; s << 2 - 3_ef; EXPECT_EQ(s.str(), "(2-3_ef)"); } { std::stringstream s; s << 2 - 3_e; EXPECT_EQ(s.str(), "(2-3_e)"); } { std::stringstream s; s << 2 - 3_el; EXPECT_EQ(s.str(), "(2-3_el)"); } #if 0 // seems reasonable { std::stringstream s; Loading thirdparty/CMakeLists.txt +3 −9 Original line number Diff line number Diff line Loading @@ -54,15 +54,9 @@ include(GoogleTest) # # Eigen # if (TRUE) set (EIGEN_URL https://gitlab.com/libeigen/eigen/-/archive/3.3.8/eigen-3.3.8.tar.bz2) set (EIGEN_MD5 432ef01499d514f4606343276afa0ec3) set (EIGEN_MAX_CXX 17) else () set (EIGEN_URL https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.bz2) set (EIGEN_MD5 b9e98a200d2455f06db9c661c5610496) set (EIGEN_MAX_CXX 17) endif () # # Eigen # Loading Loading
CMakeLists.txt +14 −12 Original line number Diff line number Diff line Loading @@ -3,13 +3,13 @@ # cmake_minimum_required (VERSION 3.14) project (cppduals VERSION 0.7.3 VERSION 0.7.4 LANGUAGES C CXX ) include (GNUInstallDirs) if (NOT CMAKE_CXX_STANDARD) set (CMAKE_CXX_STANDARD 20 CACHE STRING "Which C++ standard to test against.") set (CMAKE_CXX_STANDARD 17 CACHE STRING "Which C++ standard to test against.") endif() message (STATUS "CXX_STANDARD: ${CMAKE_CXX_STANDARD}") set (CMAKE_CXX_STANDARD_REQUIRED ON) Loading Loading @@ -150,21 +150,23 @@ if (CPPDUALS_CODE_COVERAGE AND NOT CPPDUALS_TESTING) message(FATAL_ERROR "CPPDUALS_CODE_COVERAGE requires CPPDUALS_TESTING to be enabled") endif() if (CPPDUALS_CODE_COVERAGE) if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") message(STATUS "Enabling coverage reporting") # Add required flags (GCC & LLVM/Clang) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") message(STATUS "Enabling coverage reporting (Clang)") target_compile_options (cppduals_coverage_config INTERFACE -O0 # no optimization -g # generate debug info --coverage # sets all required flags -fprofile-arcs -ftest-coverage -O0 -g -fprofile-instr-generate -fcoverage-mapping ) target_link_options (cppduals_coverage_config INTERFACE -fprofile-instr-generate ) elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU") message(STATUS "Enabling coverage reporting (GCC)") target_compile_options (cppduals_coverage_config INTERFACE -O0 -g --coverage -fprofile-arcs -ftest-coverage ) target_link_options (cppduals_coverage_config INTERFACE --coverage ) else() # error out if coverage is enabled but compiler is not supported message(FATAL_ERROR "Coverage reporting is disabled for unknown compilers.") endif () endif () Loading
tests/CMakeLists.txt +17 −5 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ set (ALL_TESTS example ) set (ALL_TEST_BINS ) set (ALL_TEST_BIN_PATHS ) foreach (TEST_ ${ALL_TESTS}) foreach (PHASE 1 2 3 4 5) # check if file has phase defined Loading @@ -74,6 +75,7 @@ foreach (TEST_ ${ALL_TESTS}) set (TEST ${TEST_}_${PHASE}) message ("Adding test ${TEST}") set (ALL_TEST_BINS ${ALL_TEST_BINS} ${TEST}) set (ALL_TEST_BIN_PATHS ${ALL_TEST_BIN_PATHS} $<TARGET_FILE:${TEST}>) add_executable (${TEST} ${TEST_}.cpp) set (PHASE_FLAGS ${OPT_FLAGS} -DPHASE_${PHASE}) Loading Loading @@ -262,27 +264,37 @@ if (CPPDUALS_CODE_COVERAGE) set(LLVM_COV_PATH ${CMAKE_CXX_COMPILER_DIR}/llvm-cov) set(LLVM_PROFDATA_PATH ${CMAKE_CXX_COMPILER_DIR}/llvm-profdata) if(NOT EXISTS ${LLVM_COV_PATH}) find_program(LLVM_COV_PATH llvm-cov REQUIRED) find_program(LLVM_COV_PATH llvm-cov) endif() if(NOT EXISTS ${LLVM_PROFDATA_PATH}) find_program(LLVM_PROFDATA_PATH llvm-profdata REQUIRED) find_program(LLVM_PROFDATA_PATH llvm-profdata) endif() # On macOS, llvm tools live in the Xcode toolchain; use xcrun to find them if(NOT EXISTS ${LLVM_COV_PATH} AND APPLE) execute_process(COMMAND xcrun -f llvm-cov OUTPUT_VARIABLE LLVM_COV_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) endif() if(NOT EXISTS ${LLVM_PROFDATA_PATH} AND APPLE) execute_process(COMMAND xcrun -f llvm-profdata OUTPUT_VARIABLE LLVM_PROFDATA_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) endif() if(NOT EXISTS ${LLVM_COV_PATH} OR NOT EXISTS ${LLVM_PROFDATA_PATH}) message(FATAL_ERROR "Could not find llvm-cov and llvm-profdata") endif() add_custom_target(cov DEPENDS ${ALL_TEST_BINS} COMMAND ${CMAKE_COMMAND} -E remove_directory coverage/profraw COMMAND ${CMAKE_COMMAND} -E make_directory coverage/profraw COMMAND ${CMAKE_COMMAND} --build . --target test "LLVM_PROFILE_FILE=coverage/profraw/%p.profraw" COMMAND ${CMAKE_COMMAND} -E env "LLVM_PROFILE_FILE=${CMAKE_BINARY_DIR}/coverage/profraw/%p.profraw" ctest --output-on-failure COMMAND ${LLVM_PROFDATA_PATH} merge -sparse coverage/profraw/*.profraw -o coverage/coverage.profdata COMMAND ${LLVM_COV_PATH} show -instr-profile=coverage/coverage.profdata -format=html -output-dir=coverage/html -show-line-counts-or-regions -show-instantiation-summary ${ALL_TEST_BINS} ${ALL_TEST_BIN_PATHS} COMMAND ${LLVM_COV_PATH} report -instr-profile=coverage/coverage.profdata ${ALL_TEST_BINS} ${ALL_TEST_BIN_PATHS} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") Loading
tests/test_dual.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -665,6 +665,22 @@ TEST(non_class, putto) { s << 2 + 3_el; EXPECT_EQ(s.str(), "(2+3_el)"); } // negative dual part (covers the sign branch) { std::stringstream s; s << 2 - 3_ef; EXPECT_EQ(s.str(), "(2-3_ef)"); } { std::stringstream s; s << 2 - 3_e; EXPECT_EQ(s.str(), "(2-3_e)"); } { std::stringstream s; s << 2 - 3_el; EXPECT_EQ(s.str(), "(2-3_el)"); } #if 0 // seems reasonable { std::stringstream s; Loading
thirdparty/CMakeLists.txt +3 −9 Original line number Diff line number Diff line Loading @@ -54,15 +54,9 @@ include(GoogleTest) # # Eigen # if (TRUE) set (EIGEN_URL https://gitlab.com/libeigen/eigen/-/archive/3.3.8/eigen-3.3.8.tar.bz2) set (EIGEN_MD5 432ef01499d514f4606343276afa0ec3) set (EIGEN_MAX_CXX 17) else () set (EIGEN_URL https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.bz2) set (EIGEN_MD5 b9e98a200d2455f06db9c661c5610496) set (EIGEN_MAX_CXX 17) endif () # # Eigen # Loading