summaryrefslogtreecommitdiff
path: root/CMakeModules/FindLLVM.cmake
diff options
context:
space:
mode:
authorGravatar Alexandre Bouvier2023-02-24 23:45:38 +0100
committerGravatar Alexandre Bouvier2023-02-28 17:46:20 +0100
commit7b8a5413add02004d778252c0b67bf921c1fb7d8 (patch)
tree344fce8b5837273e8791a0f28622d075a215d712 /CMakeModules/FindLLVM.cmake
parentMerge pull request #9851 from abouvier/openssl-vcpkg (diff)
downloadyuzu-7b8a5413add02004d778252c0b67bf921c1fb7d8.tar.gz
yuzu-7b8a5413add02004d778252c0b67bf921c1fb7d8.tar.xz
yuzu-7b8a5413add02004d778252c0b67bf921c1fb7d8.zip
cmake: support components in find modules
Diffstat (limited to 'CMakeModules/FindLLVM.cmake')
-rw-r--r--CMakeModules/FindLLVM.cmake18
1 files changed, 14 insertions, 4 deletions
diff --git a/CMakeModules/FindLLVM.cmake b/CMakeModules/FindLLVM.cmake
index 513d9a536..efbd0ca46 100644
--- a/CMakeModules/FindLLVM.cmake
+++ b/CMakeModules/FindLLVM.cmake
@@ -2,15 +2,25 @@
2# 2#
3# SPDX-License-Identifier: GPL-3.0-or-later 3# SPDX-License-Identifier: GPL-3.0-or-later
4 4
5find_package(LLVM QUIET CONFIG) 5find_package(LLVM QUIET COMPONENTS CONFIG)
6if (LLVM_FOUND)
7 separate_arguments(LLVM_DEFINITIONS)
8 if (LLVMDemangle IN_LIST LLVM_AVAILABLE_LIBS)
9 set(LLVM_Demangle_FOUND TRUE)
10 endif()
11endif()
6 12
7include(FindPackageHandleStandardArgs) 13include(FindPackageHandleStandardArgs)
8find_package_handle_standard_args(LLVM CONFIG_MODE) 14find_package_handle_standard_args(LLVM HANDLE_COMPONENTS CONFIG_MODE)
9 15
10if (LLVM_FOUND AND NOT TARGET LLVM::Demangle) 16if (LLVM_FOUND AND LLVM_Demangle_FOUND AND NOT TARGET LLVM::Demangle)
11 add_library(LLVM::Demangle INTERFACE IMPORTED) 17 add_library(LLVM::Demangle INTERFACE IMPORTED)
12 llvm_map_components_to_libnames(LLVM_LIBRARIES demangle)
13 target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS}) 18 target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS})
14 target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS}) 19 target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS})
20 # prefer shared LLVM: https://github.com/llvm/llvm-project/issues/34593
21 # but use ugly hack because llvm_config doesn't support interface library
22 add_library(_dummy_lib SHARED EXCLUDE_FROM_ALL src/yuzu/main.cpp)
23 llvm_config(_dummy_lib USE_SHARED demangle)
24 get_target_property(LLVM_LIBRARIES _dummy_lib LINK_LIBRARIES)
15 target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES}) 25 target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES})
16endif() 26endif()