Skip to content

Commit 0894b3c

Browse files
committed
[cmake] Add built-in variable to run the llvm-link tool.
1 parent f744300 commit 0894b3c

File tree

3 files changed

+57
-16
lines changed

3 files changed

+57
-16
lines changed

CMakeLists.txt

Lines changed: 55 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ set(PTS_EXECUTABLE "" CACHE FILEPATH "Path to PTS which runs tests.")
2424
if (NOT EXISTS "${PTS_EXECUTABLE}")
2525
message(SEND_ERROR "Could NOT find PTS which is required to run tests."
2626
" Set PTS_EXECUTABLE variable.")
27+
else()
28+
message(STATUS "Perl executable: ${PERL_EXECUTABLE}")
2729
endif()
2830
get_filename_component(TS_PTS_PATH "${PTS_EXECUTABLE}" ABSOLUTE)
2931

@@ -39,6 +41,13 @@ if (TSAR_FOUND)
3941
if (TS_CLANG_TOOL)
4042
message(STATUS "Use Clang from TSAR package.")
4143
endif()
44+
set(TS_LLVM_LINK_TOOL)
45+
if ("llvm-link" IN_LIST TSAR_LLVM_TOOLS)
46+
set(TS_LLVM_LINK_TOOL llvm-link)
47+
endif()
48+
if (TS_LLVM_LINK_TOOL)
49+
message(STATUS "Use llvm-link from TSAR package.")
50+
endif()
4251
endif()
4352
if (TSAR_EXECUTABLE)
4453
set(TC_SUFFIX "")
@@ -72,10 +81,14 @@ if (TSAR_FOUND)
7281
if (TS_CLANG_TOOL)
7382
set(TS_CLANG_PATH "${TS_BINARY_DEFAULT_DIR}/${TS_CLANG_TOOL}${CMAKE_EXECUTABLE_SUFFIX}")
7483
endif()
84+
if (TS_LLVM_LINK_TOOL)
85+
set(TS_LLVM_LINK_PATH "${TS_BINARY_DEFAULT_DIR}/${TS_LLVM_LINK_TOOL}${CMAKE_EXECUTABLE_SUFFIX}")
86+
endif()
7587
else()
7688
set(TS_TSAR_PATH)
7789
set(TS_INCLUDE_PATH)
7890
set(TS_CLANG_PATH)
91+
set(TS_LLVM_LINK_PATH)
7992
foreach(CONFIG_NAME ${CMAKE_CONFIGURATION_TYPES})
8093
string(TOUPPER ${CONFIG_NAME} C)
8194
list(FIND TSAR_CONFIGURATIONS ${C} TSAR_ENABLE_${C})
@@ -92,6 +105,9 @@ if (TSAR_FOUND)
92105
if (TS_CLANG_TOOL)
93106
set(TS_CLANG_PATH "${TS_CLANG_PATH}$<$<CONFIG:${C}>:${TSAR_BINARY_DIR_${C}}/${TS_CLANG_TOOL}${CMAKE_EXECUTABLE_SUFFIX}>")
94107
endif()
108+
if (TS_LLVM_LINK_TOOL)
109+
set(TS_LLVM_LINK_PATH "${TS_LLVM_LINK_PATH}$<$<CONFIG:${C}>:${TSAR_BINARY_DIR_${C}}/${TS_LLVM_LINK_TOOL}${CMAKE_EXECUTABLE_SUFFIX}>")
110+
endif()
95111
set(TS_LIBRARY_PATH "'$<SHELL_PATH:${TSAR_BINARY_DIR_${C}}/../lib>'")
96112
file(GLOB TS_OMP_LIBRARIES LIST_DIRECTORIES false
97113
RELATIVE ${TS_LIBRARY_PATH} ${TS_LIBRARY_PATH}/*omp.*)
@@ -104,34 +120,56 @@ if (TSAR_FOUND)
104120
if (TS_CLANG_TOOL)
105121
set(TS_CLANG_PATH "$<SHELL_PATH:${TS_CLANG_PATH}>")
106122
endif()
123+
if (TS_LLVM_LINK_TOOL)
124+
set(TS_LLVM_LINK_PATH "$<SHELL_PATH:${TS_LLVM_LINK_PATH}>")
125+
endif()
107126
endif()
108127

109-
if (NOT TS_CLANG_PATH)
128+
if (NOT TS_CLANG_PATH OR NOT TS_LLVM_LINK_PATH)
110129
find_package(LLVM ${TSAR_LLVM_VERSION})
111130
if (LLVM_FOUND)
112131
set(TS_LIBRARY_PATH "${TS_LIBRARY_PATH} '$<SHELL_PATH:${LLVM_BINARY_DIR}/lib>'")
113132
file(GLOB TS_OMP_LIBRARIES LIST_DIRECTORIES false
114133
RELATIVE ${LLVM_BINARY_DIR}/lib ${LLVM_BINARY_DIR}/lib/*omp.*)
115134
message(STATUS "LLVM version: ${LLVM_VERSION}")
116-
message(STATUS "Lookup for Clang in ${LLVM_BINARY_DIR}/lib/cmake/clang")
117-
find_package(Clang HINTS "${LLVM_BINARY_DIR}/lib/cmake/clang" NO_DEFAULT_PATH)
118-
if (TARGET clang)
119-
get_property(CLANG_CONFIGURATIONS TARGET clang PROPERTY IMPORTED_CONFIGURATIONS)
120-
if (CLANG_CONFIGURATIONS)
121-
list(GET CLANG_CONFIGURATIONS 0 CLANG_CONFIG)
122-
get_property(TS_CLANG_PATH TARGET clang PROPERTY IMPORTED_LOCATION_${CLANG_CONFIG})
123-
message(STATUS "Find Clang configuration: ${CLANG_CONFIG}")
124-
else()
125-
get_property(TS_CLANG_PATH TARGET clang PROPERTY IMPORTED_LOCATION)
135+
if (NOT TS_LLVM_LINK_PATH)
136+
if (TARGET llvm-link)
137+
get_property(LLVM_LINK_CONFIGURATIONS TARGET llvm-link PROPERTY IMPORTED_CONFIGURATIONS)
138+
if (LLVM_LINK_CONFIGURATIONS)
139+
list(GET LLVM_LINK_CONFIGURATIONS 0 LLVM_LINK_CONFIG)
140+
get_property(TS_LLVM_LINK_PATH TARGET llvm-link PROPERTY IMPORTED_LOCATION_${LLVM_LINK_CONFIG})
141+
message(STATUS "Find llvm-link configuration: ${LLVM_LINK_CONFIG}")
142+
else()
143+
get_property(TS_LLVM_LINK_PATH TARGET llvm-link PROPERTY IMPORTED_LOCATION)
144+
endif()
126145
endif()
127-
if (TSAR_LLVM_VERSION)
128-
set(TS_INCLUDE_PATH "${TS_INCLUDE_PATH} '$<SHELL_PATH:${LLVM_BINARY_DIR}/lib/clang/${TSAR_LLVM_VERSION}/include>'")
146+
if (NOT TS_LLVM_LINK_PATH)
147+
message(WARNING "Could NOT find suitable llvm-link executable, be sure it is installed.")
148+
else()
149+
message(STATUS "llvm-link executable: ${TS_LLVM_LINK_PATH}")
129150
endif()
130151
endif()
131152
if (NOT TS_CLANG_PATH)
132-
message(WARNING "Could NOT find suitable Clang executable, be sure it is installed.")
133-
else()
134-
message(STATUS "Clang executable: ${TS_CLANG_PATH}")
153+
message(STATUS "Lookup for Clang in ${LLVM_BINARY_DIR}/lib/cmake/clang")
154+
find_package(Clang HINTS "${LLVM_BINARY_DIR}/lib/cmake/clang" NO_DEFAULT_PATH)
155+
if (TARGET clang)
156+
get_property(CLANG_CONFIGURATIONS TARGET clang PROPERTY IMPORTED_CONFIGURATIONS)
157+
if (CLANG_CONFIGURATIONS)
158+
list(GET CLANG_CONFIGURATIONS 0 CLANG_CONFIG)
159+
get_property(TS_CLANG_PATH TARGET clang PROPERTY IMPORTED_LOCATION_${CLANG_CONFIG})
160+
message(STATUS "Find Clang configuration: ${CLANG_CONFIG}")
161+
else()
162+
get_property(TS_CLANG_PATH TARGET clang PROPERTY IMPORTED_LOCATION)
163+
endif()
164+
if (TSAR_LLVM_VERSION)
165+
set(TS_INCLUDE_PATH "${TS_INCLUDE_PATH} '$<SHELL_PATH:${LLVM_BINARY_DIR}/lib/clang/${TSAR_LLVM_VERSION}/include>'")
166+
endif()
167+
endif()
168+
if (NOT TS_CLANG_PATH)
169+
message(WARNING "Could NOT find suitable Clang executable, be sure it is installed.")
170+
else()
171+
message(STATUS "Clang executable: ${TS_CLANG_PATH}")
172+
endif()
135173
endif()
136174
endif()
137175
endif()
@@ -179,6 +217,7 @@ endmacro()
179217

180218
quote_path(TS_TSAR_PATH)
181219
quote_path(TS_CLANG_PATH)
220+
quote_path(TS_LLVM_LINK_PATH)
182221
quote_path(TS_DVM_PATH)
183222

184223
configure_file(sys/config.in sys/config.gen @ONLY)

sys/Plugins/TsarPlugin.pm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ my %required_vars = (
2323
'' => [qw(
2424
tsar
2525
clang
26+
llvm_link
2627
include
2728
lib
2829
dvm

sys/config.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ tsar=@TS_TSAR_PATH@
22
include=@TS_INCLUDE_PATH@
33
lib=@TS_LIBRARY_PATH@
44
clang=@TS_CLANG_PATH@
5+
llvm_link=@TS_LLVM_LINK_PATH@
56
dvm=@TS_DVM_PATH@
67
openmp=@TS_OMP_LIBRARIES@

0 commit comments

Comments
 (0)