diff options
Diffstat (limited to 'CMakeModules/FindLLVM.cmake')
| -rw-r--r-- | CMakeModules/FindLLVM.cmake | 18 |
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 | ||
| 5 | find_package(LLVM QUIET CONFIG) | 5 | find_package(LLVM QUIET COMPONENTS CONFIG) |
| 6 | if (LLVM_FOUND) | ||
| 7 | separate_arguments(LLVM_DEFINITIONS) | ||
| 8 | if (LLVMDemangle IN_LIST LLVM_AVAILABLE_LIBS) | ||
| 9 | set(LLVM_Demangle_FOUND TRUE) | ||
| 10 | endif() | ||
| 11 | endif() | ||
| 6 | 12 | ||
| 7 | include(FindPackageHandleStandardArgs) | 13 | include(FindPackageHandleStandardArgs) |
| 8 | find_package_handle_standard_args(LLVM CONFIG_MODE) | 14 | find_package_handle_standard_args(LLVM HANDLE_COMPONENTS CONFIG_MODE) |
| 9 | 15 | ||
| 10 | if (LLVM_FOUND AND NOT TARGET LLVM::Demangle) | 16 | if (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}) |
| 16 | endif() | 26 | endif() |