Skip to content

Commit 1acd14a

Browse files
committed
Add support for coverage collection using LLVM_BUILD_INSTRUMENTED_COVERAGE
1 parent 3cd08b5 commit 1acd14a

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

amd/comgr/CMakeLists.txt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,27 @@ if (CMAKE_SIZEOF_VOID_P EQUAL 4)
265265
set_target_properties(amd_comgr PROPERTIES OUTPUT_NAME "amd_comgr32")
266266
endif()
267267

268+
option(LLVM_BUILD_INSTRUMENTED_COVERAGE "Build LLVM and tools with Code Coverage instrumentation" Off)
269+
mark_as_advanced(LLVM_BUILD_INSTRUMENTED_COVERAGE)
270+
if(LLVM_BUILD_INSTRUMENTED_COVERAGE)
271+
if(NOT LLVM_PROFILE_MERGE_POOL_SIZE)
272+
# A pool size of 1-2 is probably sufficient on an SSD. 3-4 should be fine
273+
# for spinning disks. Anything higher may only help on slower mediums.
274+
set(LLVM_PROFILE_MERGE_POOL_SIZE "4")
275+
endif()
276+
if(NOT LLVM_PROFILE_FILE_PATTERN)
277+
if(NOT LLVM_PROFILE_DATA_DIR)
278+
file(TO_NATIVE_PATH "${LLVM_BINARY_DIR}/profiles" LLVM_PROFILE_DATA_DIR)
279+
endif()
280+
file(TO_NATIVE_PATH "${LLVM_PROFILE_DATA_DIR}/%${LLVM_PROFILE_MERGE_POOL_SIZE}m.profraw" LLVM_PROFILE_FILE_PATTERN)
281+
endif()
282+
set(INSTRUMENTED_COVERAGE_FLAGS -O0 -fprofile-instr-generate=${LLVM_PROFILE_FILE_PATTERN} -fcoverage-mapping)
283+
list(APPEND AMD_COMGR_PRIVATE_COMPILE_OPTIONS ${INSTRUMENTED_COVERAGE_FLAGS})
284+
list(APPEND AMD_COMGR_PUBLIC_COMPILE_OPTIONS ${INSTRUMENTED_COVERAGE_FLAGS})
285+
list(APPEND AMD_COMGR_PRIVATE_LINKER_OPTIONS ${INSTRUMENTED_COVERAGE_FLAGS} -L${LLVM_LIBRARY_DIRS})
286+
list(APPEND AMD_COMGR_PUBLIC_LINKER_OPTIONS ${INSTRUMENTED_COVERAGE_FLAGS} -L${LLVM_LIBRARY_DIRS})
287+
endif()
288+
268289
target_compile_options(amd_comgr
269290
PRIVATE "${AMD_COMGR_PRIVATE_COMPILE_OPTIONS}")
270291
target_compile_definitions(amd_comgr

0 commit comments

Comments
 (0)