| ... | @@ -20,6 +20,8 @@ set(ZIG_LIBC_INCLUDE_DIR "/usr/include" CACHE STRING "Default native target libc | ... | @@ -20,6 +20,8 @@ set(ZIG_LIBC_INCLUDE_DIR "/usr/include" CACHE STRING "Default native target libc |
| 20 | set(ZIG_LD_PATH "ld" CACHE STRING "Path to ld for the native target") | 20 | set(ZIG_LD_PATH "ld" CACHE STRING "Path to ld for the native target") |
| 21 | set(ZIG_DYNAMIC_LINKER "" CACHE STRING "Override dynamic linker for native target") | 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 | find_package(llvm) | 27 | find_package(llvm) |
| ... | @@ -175,10 +177,17 @@ if(MINGW) | ... | @@ -175,10 +177,17 @@ if(MINGW) |
| 175 | endif() | 177 | endif() |
| 176 | | 178 | |
| 177 | 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") | 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 | add_executable(zig ${ZIG_SOURCES}) | 186 | add_executable(zig ${ZIG_SOURCES}) |
| 180 | set_target_properties(zig PROPERTIES | 187 | set_target_properties(zig PROPERTIES |
| 181 | COMPILE_FLAGS ${EXE_CFLAGS}) | 188 | COMPILE_FLAGS ${EXE_CFLAGS} |
| | 189 | LINK_FLAGS ${EXE_LDFLAGS} |
| | 190 | ) |
| 182 | target_link_libraries(zig LINK_PUBLIC | 191 | target_link_libraries(zig LINK_PUBLIC |
| 183 | ${CLANG_LIBRARIES} | 192 | ${CLANG_LIBRARIES} |
| 184 | ${LLVM_LIBRARIES} | 193 | ${LLVM_LIBRARIES} |
| ... | @@ -208,4 +217,18 @@ add_executable(run_tests ${TEST_SOURCES}) | ... | @@ -208,4 +217,18 @@ add_executable(run_tests ${TEST_SOURCES}) |
| 208 | target_link_libraries(run_tests) | 217 | target_link_libraries(run_tests) |
| 209 | set_target_properties(run_tests PROPERTIES | 218 | set_target_properties(run_tests PROPERTIES |
| 210 | COMPILE_FLAGS ${EXE_CFLAGS} | 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() |