|
@@ -2,15 +2,25 @@
|
|
|
#
|
|
#
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
-find_package(LLVM QUIET CONFIG)
|
|
|
|
|
|
|
+find_package(LLVM QUIET COMPONENTS CONFIG)
|
|
|
|
|
+if (LLVM_FOUND)
|
|
|
|
|
+ separate_arguments(LLVM_DEFINITIONS)
|
|
|
|
|
+ if (LLVMDemangle IN_LIST LLVM_AVAILABLE_LIBS)
|
|
|
|
|
+ set(LLVM_Demangle_FOUND TRUE)
|
|
|
|
|
+ endif()
|
|
|
|
|
+endif()
|
|
|
|
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
include(FindPackageHandleStandardArgs)
|
|
|
-find_package_handle_standard_args(LLVM CONFIG_MODE)
|
|
|
|
|
|
|
+find_package_handle_standard_args(LLVM HANDLE_COMPONENTS CONFIG_MODE)
|
|
|
|
|
|
|
|
-if (LLVM_FOUND AND NOT TARGET LLVM::Demangle)
|
|
|
|
|
|
|
+if (LLVM_FOUND AND LLVM_Demangle_FOUND AND NOT TARGET LLVM::Demangle)
|
|
|
add_library(LLVM::Demangle INTERFACE IMPORTED)
|
|
add_library(LLVM::Demangle INTERFACE IMPORTED)
|
|
|
- llvm_map_components_to_libnames(LLVM_LIBRARIES demangle)
|
|
|
|
|
target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS})
|
|
target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS})
|
|
|
target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS})
|
|
target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS})
|
|
|
|
|
+ # prefer shared LLVM: https://github.com/llvm/llvm-project/issues/34593
|
|
|
|
|
+ # but use ugly hack because llvm_config doesn't support interface library
|
|
|
|
|
+ add_library(_dummy_lib SHARED EXCLUDE_FROM_ALL src/yuzu/main.cpp)
|
|
|
|
|
+ llvm_config(_dummy_lib USE_SHARED demangle)
|
|
|
|
|
+ get_target_property(LLVM_LIBRARIES _dummy_lib LINK_LIBRARIES)
|
|
|
target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES})
|
|
target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES})
|
|
|
endif()
|
|
endif()
|