Skip to content

Commit 938e061

Browse files
fsfodvgvassilev
authored andcommitted
Add a option to add_clang_tool CMake macro to force static linking to clang libraries
1 parent b987a75 commit 938e061

File tree

4 files changed

+21
-8
lines changed

4 files changed

+21
-8
lines changed

clang/cmake/modules/AddClang.cmake

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,20 +155,27 @@ macro(add_clang_executable name)
155155
endmacro(add_clang_executable)
156156

157157
macro(add_clang_tool name)
158-
cmake_parse_arguments(ARG "DEPENDS;GENERATE_DRIVER" "" "" ${ARGN})
158+
cmake_parse_arguments(ARG "DEPENDS;GENERATE_DRIVER;DISABLE_CLANG_LINK_DYLIB" "" "" ${ARGN})
159159
if (NOT CLANG_BUILD_TOOLS)
160160
set(EXCLUDE_FROM_ALL ON)
161161
endif()
162+
163+
set(args_list ${ARGN})
164+
165+
if(ARG_DISABLE_CLANG_LINK_DYLIB)
166+
# Remove this so the llvm argument parsing doesn't get confused
167+
list(REMOVE_ITEM args_list DISABLE_CLANG_LINK_DYLIB)
168+
endif()
169+
162170
if(ARG_GENERATE_DRIVER
163171
AND LLVM_TOOL_LLVM_DRIVER_BUILD
164172
AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS)
165173
)
166-
set(get_obj_args ${ARGN})
167-
list(FILTER get_obj_args EXCLUDE REGEX "^SUPPORT_PLUGINS$")
168-
generate_llvm_objects(${name} ${get_obj_args})
174+
list(FILTER args_list EXCLUDE REGEX "^SUPPORT_PLUGINS$")
175+
generate_llvm_objects(${name} ${args_list})
169176
add_custom_target(${name} DEPENDS llvm-driver clang-resource-headers)
170177
else()
171-
add_clang_executable(${name} ${ARGN})
178+
add_clang_executable(${name} ${args_list})
172179
add_dependencies(${name} clang-resource-headers)
173180

174181
if (CLANG_BUILD_TOOLS)
@@ -187,6 +194,10 @@ macro(add_clang_tool name)
187194
endif()
188195
endif()
189196
set_target_properties(${name} PROPERTIES XCODE_GENERATE_SCHEME ON)
197+
198+
if(ARG_DISABLE_CLANG_LINK_DYLIB)
199+
target_compile_definitions(${name} PRIVATE CLANG_BUILD_STATIC)
200+
endif()
190201
endmacro()
191202

192203
macro(add_clang_symlink name dest)

clang/tools/amdgpu-arch/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
set(LLVM_LINK_COMPONENTS Support)
1010

11-
add_clang_tool(amdgpu-arch AMDGPUArch.cpp AMDGPUArchByHSA.cpp AMDGPUArchByHIP.cpp)
11+
add_clang_tool(amdgpu-arch DISABLE_CLANG_LINK_DYLIB
12+
AMDGPUArch.cpp AMDGPUArchByHSA.cpp AMDGPUArchByHIP.cpp)
1213

1314
target_link_libraries(amdgpu-arch PRIVATE clangBasic)

clang/tools/clang-linker-wrapper/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ if(NOT CLANG_BUILT_STANDALONE)
2626
set(tablegen_deps intrinsics_gen LinkerWrapperOpts)
2727
endif()
2828

29-
add_clang_tool(clang-linker-wrapper
29+
add_clang_tool(clang-linker-wrapper DISABLE_CLANG_LINK_DYLIB
3030
ClangLinkerWrapper.cpp
3131

3232
DEPENDS

clang/tools/nvptx-arch/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
# //===--------------------------------------------------------------------===//
88

99
set(LLVM_LINK_COMPONENTS Support)
10-
add_clang_tool(nvptx-arch NVPTXArch.cpp)
10+
add_clang_tool(nvptx-arch DISABLE_CLANG_LINK_DYLIB
11+
NVPTXArch.cpp)
1112

1213
target_link_libraries(nvptx-arch PRIVATE clangBasic)

0 commit comments

Comments
 (0)