Skip to content

Commit 9f6ba54

Browse files
author
Diptorup Deb
committed
Make it possible to specify which llvm-cov to use via an envvar.
1 parent 4680ef9 commit 9f6ba54

File tree

2 files changed

+61
-30
lines changed

2 files changed

+61
-30
lines changed

dpctl-capi/cmake/modules/FindLLVMCov.cmake

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -25,43 +25,61 @@
2525
# LLVMCov_FOUND
2626
# LLVMCov_VERSION
2727

28-
find_program(LLVMCov_EXE llvm-cov)
28+
# Check if a LLVM_TOOLS_HOME envvar is defined. If so, then search specifically
29+
# in that path or else search in default locations. The check is to allow
30+
# a particular LLVM_COV executable to be used when there are multiple LLVM_COV
31+
# versions installed in the system.
2932

30-
# get the version of llvm-cov
31-
execute_process(
32-
COMMAND ${LLVMCov_EXE} "--version"
33-
RESULT_VARIABLE result
34-
OUTPUT_VARIABLE version_string
35-
)
36-
37-
# If llvm-cov is found then set the package variables
38-
if(${result} MATCHES "0")
39-
string(REPLACE "\n" ";" VERSION_LIST "${version_string}")
40-
list(GET VERSION_LIST 1 ver_line)
41-
# Extract the llvm-cov version
42-
string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" LLVMCov_VERSION ${ver_line})
43-
# Split out the version into major, minor an patch
44-
string(REPLACE "." ";" VERSION_LIST1 "${LLVMCov_VERSION}")
45-
list(GET VERSION_LIST1 0 LLVMCov_VERSION_MAJOR)
46-
list(GET VERSION_LIST1 1 LLVMCov_VERSION_MINOR)
47-
list(GET VERSION_LIST1 2 LLVMCov_VERSION_PATCH)
33+
if(DEFINED ENV{LLVM_TOOLS_HOME})
34+
find_program(LLVMCov_EXE
35+
llvm-cov
36+
PATHS $ENV{LLVM_TOOLS_HOME}
37+
NO_DEFAULT_PATH
38+
)
39+
if(${LLVMCov_EXE} STREQUAL "LLVMCov_EXE-NOTFOUND")
40+
message(WARN
41+
"$ENV{LLVM_TOOLS_HOME} does not have an llvm-cov executable"
42+
)
43+
endif()
44+
else()
45+
find_program(LLVMCov_EXE llvm-cov)
4846
endif()
4947

50-
# Check if a specific version of llvm-cov is required.
51-
if(LLVMCov_FIND_VERSION AND (DEFINED LLVMCov_VERSION))
52-
string(COMPARE LESS_EQUAL
53-
${LLVMCov_FIND_VERSION_MAJOR}
54-
${LLVMCov_VERSION_MAJOR}
55-
VERSION_MATCH
48+
if(NOT ${LLVMCov_EXE} STREQUAL "LLVMCov_EXE-NOTFOUND")
49+
# get the version of llvm-cov
50+
execute_process(
51+
COMMAND ${LLVMCov_EXE} "--version"
52+
RESULT_VARIABLE result
53+
OUTPUT_VARIABLE version_string
5654
)
57-
if(VERSION_MATCH)
55+
# If llvm-cov is found then set the package variables
56+
if(${result} MATCHES "0")
57+
string(REPLACE "\n" ";" VERSION_LIST "${version_string}")
58+
list(GET VERSION_LIST 1 ver_line)
59+
# Extract the llvm-cov version
60+
string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" LLVMCov_VERSION ${ver_line})
61+
# Split out the version into major, minor an patch
62+
string(REPLACE "." ";" VERSION_LIST1 "${LLVMCov_VERSION}")
63+
list(GET VERSION_LIST1 0 LLVMCov_VERSION_MAJOR)
64+
list(GET VERSION_LIST1 1 LLVMCov_VERSION_MINOR)
65+
list(GET VERSION_LIST1 2 LLVMCov_VERSION_PATCH)
66+
endif()
67+
# Check if a specific version of llvm-cov is required.
68+
if(LLVMCov_FIND_VERSION AND (DEFINED LLVMCov_VERSION))
69+
string(COMPARE LESS_EQUAL
70+
${LLVMCov_FIND_VERSION_MAJOR}
71+
${LLVMCov_VERSION_MAJOR}
72+
VERSION_MATCH
73+
)
74+
if(VERSION_MATCH)
75+
set(LLVMCov_FOUND TRUE)
76+
endif()
77+
else()
5878
set(LLVMCov_FOUND TRUE)
5979
endif()
60-
else()
61-
set(LLVMCov_FOUND TRUE)
80+
message(STATUS "llvm-cov ${LLVMCov_VERSION} found at ${LLVMCov_EXE}.")
6281
endif()
6382

64-
6583
find_package_handle_standard_args(LLVMCov DEFAULT_MSG
6684
LLVMCov_EXE
6785
LLVMCov_FOUND

dpctl-capi/cmake/modules/FindLLVMProfdata.cmake

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,20 @@
2424
# LLVMProfdata_EXE The path to llvm-cov executable
2525
# LLVMProfdata_FOUND
2626

27-
find_program(LLVMProfdata_EXE llvm-profdata)
27+
if(DEFINED ENV{LLVM_TOOLS_HOME})
28+
find_program(LLVMProfdata_EXE
29+
llvm-profdata
30+
PATHS $ENV{LLVM_TOOLS_HOME}
31+
NO_DEFAULT_PATH
32+
)
33+
if(${LLVMProfdata_EXE} STREQUAL "LLVMProfdata_EXE-NOTFOUND")
34+
message(WARN
35+
"$ENV{LLVM_TOOLS_HOME} does not have an llvm-profdata executable"
36+
)
37+
endif()
38+
else()
39+
find_program(LLVMProfdata_EXE llvm-profdata)
40+
endif()
2841

2942
find_package_handle_standard_args(LLVMProfdata DEFAULT_MSG
3043
LLVMProfdata_EXE

0 commit comments

Comments
 (0)