| ... | ... | @@ -20,6 +20,8 @@ set(ZIG_LIBC_INCLUDE_DIR "/usr/include" CACHE STRING "Default native target libc |
| 20 | 20 | set(ZIG_LD_PATH "ld" CACHE STRING "Path to ld for the native target") |
| 21 | 21 | set(ZIG_DYNAMIC_LINKER "" CACHE STRING "Override dynamic linker for native target") |
| 22 | 22 | |
| 23 | option(ZIG_TEST_COVERAGE "Build Zig with test coverage instrumentation" OFF) |
| 24 | |
| 23 | 25 | |
| 24 | 26 | |
| 25 | 27 | find_package(llvm) |
| ... | ... | @@ -175,10 +177,17 @@ if(MINGW) |
| 175 | 177 | endif() |
| 176 | 178 | |
| 177 | 179 | set(EXE_CFLAGS "-std=c++11 -fno-exceptions -fno-rtti -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__USE_MINGW_ANSI_STDIO -Werror=strict-prototypes -Werror=old-style-definition -Werror=missing-prototypes") |
| 180 | set(EXE_LDFLAGS " ") |
| 181 | if(ZIG_TEST_COVERAGE) |
| 182 | set(EXE_CFLAGS "${EXE_CFLAGS} -fprofile-arcs -ftest-coverage") |
| 183 | set(EXE_LDFLAGS "-fprofile-arcs -ftest-coverage") |
| 184 | endif() |
| 178 | 185 | |
| 179 | 186 | add_executable(zig ${ZIG_SOURCES}) |
| 180 | 187 | set_target_properties(zig PROPERTIES |
| 181 | | COMPILE_FLAGS ${EXE_CFLAGS}) |
| 188 | COMPILE_FLAGS ${EXE_CFLAGS} |
| 189 | LINK_FLAGS ${EXE_LDFLAGS} |
| 190 | ) |
| 182 | 191 | target_link_libraries(zig LINK_PUBLIC |
| 183 | 192 | ${CLANG_LIBRARIES} |
| 184 | 193 | ${LLVM_LIBRARIES} |
| ... | ... | @@ -208,4 +217,18 @@ add_executable(run_tests ${TEST_SOURCES}) |
| 208 | 217 | target_link_libraries(run_tests) |
| 209 | 218 | set_target_properties(run_tests PROPERTIES |
| 210 | 219 | COMPILE_FLAGS ${EXE_CFLAGS} |
| 220 | LINK_FLAGS ${EXE_LDFLAGS} |
| 211 | 221 | ) |
| 222 | |
| 223 | if (ZIG_TEST_COVERAGE) |
| 224 | add_custom_target(coverage |
| 225 | DEPENDS run_tests |
| 226 | WORKING_DIRECTORY ${CMAKE_BINARY_DIR} |
| 227 | COMMAND lcov --directory . --zerocounters --rc lcov_branch_coverage=1 |
| 228 | COMMAND ./run_tests |
| 229 | COMMAND lcov --directory . --capture --output-file coverage.info --rc lcov_branch_coverage=1 |
| 230 | COMMAND lcov --remove coverage.info '/usr/*' --output-file coverage.info.cleaned --rc lcov_branch_coverage=1 |
| 231 | COMMAND genhtml -o coverage coverage.info.cleaned --rc lcov_branch_coverage=1 |
| 232 | COMMAND rm coverage.info coverage.info.cleaned |
| 233 | ) |
| 234 | endif() |