diff options
| author | 2023-01-23 01:51:12 +0100 | |
|---|---|---|
| committer | 2023-01-23 06:23:00 +0100 | |
| commit | 34b1ea9c1925d0da9377973d25e10e9b5ec40e94 (patch) | |
| tree | 0ada6de7ae81a250258a4243d5bd4d2cc1283aef | |
| parent | Merge pull request #9555 from abouvier/catch2-update (diff) | |
| download | yuzu-34b1ea9c1925d0da9377973d25e10e9b5ec40e94.tar.gz yuzu-34b1ea9c1925d0da9377973d25e10e9b5ec40e94.tar.xz yuzu-34b1ea9c1925d0da9377973d25e10e9b5ec40e94.zip | |
cmake: prefer system llvm library
| -rw-r--r-- | CMakeLists.txt | 1 | ||||
| -rw-r--r-- | CMakeModules/FindLLVM.cmake | 16 | ||||
| -rw-r--r-- | externals/CMakeLists.txt | 9 | ||||
| -rw-r--r-- | externals/demangle/ItaniumDemangle.cpp | 4 | ||||
| -rw-r--r-- | externals/demangle/llvm/Demangle/Demangle.h (renamed from externals/demangle/Demangle.h) | 0 | ||||
| -rw-r--r-- | externals/demangle/llvm/Demangle/DemangleConfig.h (renamed from externals/demangle/DemangleConfig.h) | 0 | ||||
| -rw-r--r-- | externals/demangle/llvm/Demangle/ItaniumDemangle.h (renamed from externals/demangle/ItaniumDemangle.h) | 0 | ||||
| -rw-r--r-- | externals/demangle/llvm/Demangle/StringView.h (renamed from externals/demangle/StringView.h) | 0 | ||||
| -rw-r--r-- | externals/demangle/llvm/Demangle/Utility.h (renamed from externals/demangle/Utility.h) | 0 | ||||
| -rw-r--r-- | src/common/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/common/demangle.cpp | 6 |
11 files changed, 28 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index f91ba950a..b3329318a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
| @@ -208,6 +208,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) | |||
| 208 | find_package(enet 1.3 MODULE) | 208 | find_package(enet 1.3 MODULE) |
| 209 | find_package(fmt 9 REQUIRED) | 209 | find_package(fmt 9 REQUIRED) |
| 210 | find_package(inih MODULE) | 210 | find_package(inih MODULE) |
| 211 | find_package(LLVM MODULE) | ||
| 211 | find_package(lz4 REQUIRED) | 212 | find_package(lz4 REQUIRED) |
| 212 | find_package(nlohmann_json 3.8 REQUIRED) | 213 | find_package(nlohmann_json 3.8 REQUIRED) |
| 213 | find_package(Opus 1.3 MODULE) | 214 | find_package(Opus 1.3 MODULE) |
diff --git a/CMakeModules/FindLLVM.cmake b/CMakeModules/FindLLVM.cmake new file mode 100644 index 000000000..513d9a536 --- /dev/null +++ b/CMakeModules/FindLLVM.cmake | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | # SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf> | ||
| 2 | # | ||
| 3 | # SPDX-License-Identifier: GPL-3.0-or-later | ||
| 4 | |||
| 5 | find_package(LLVM QUIET CONFIG) | ||
| 6 | |||
| 7 | include(FindPackageHandleStandardArgs) | ||
| 8 | find_package_handle_standard_args(LLVM CONFIG_MODE) | ||
| 9 | |||
| 10 | if (LLVM_FOUND AND NOT TARGET LLVM::Demangle) | ||
| 11 | add_library(LLVM::Demangle INTERFACE IMPORTED) | ||
| 12 | llvm_map_components_to_libnames(LLVM_LIBRARIES demangle) | ||
| 13 | target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS}) | ||
| 14 | target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS}) | ||
| 15 | target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES}) | ||
| 16 | endif() | ||
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 94dd8bb62..8532fd7a8 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt | |||
| @@ -158,6 +158,9 @@ if (YUZU_USE_EXTERNAL_VULKAN_HEADERS) | |||
| 158 | add_subdirectory(Vulkan-Headers EXCLUDE_FROM_ALL) | 158 | add_subdirectory(Vulkan-Headers EXCLUDE_FROM_ALL) |
| 159 | endif() | 159 | endif() |
| 160 | 160 | ||
| 161 | add_library(demangle STATIC) | 161 | if (NOT TARGET LLVM::Demangle) |
| 162 | target_include_directories(demangle PUBLIC ./demangle) | 162 | add_library(demangle STATIC) |
| 163 | target_sources(demangle PRIVATE demangle/ItaniumDemangle.cpp) | 163 | target_include_directories(demangle PUBLIC ./demangle) |
| 164 | target_sources(demangle PRIVATE demangle/ItaniumDemangle.cpp) | ||
| 165 | add_library(LLVM::Demangle ALIAS demangle) | ||
| 166 | endif() | ||
diff --git a/externals/demangle/ItaniumDemangle.cpp b/externals/demangle/ItaniumDemangle.cpp index 5e078e3e2..b055a2fd7 100644 --- a/externals/demangle/ItaniumDemangle.cpp +++ b/externals/demangle/ItaniumDemangle.cpp | |||
| @@ -11,8 +11,8 @@ | |||
| 11 | // file does not yet support: | 11 | // file does not yet support: |
| 12 | // - C++ modules TS | 12 | // - C++ modules TS |
| 13 | 13 | ||
| 14 | #include "Demangle.h" | 14 | #include "llvm/Demangle/Demangle.h" |
| 15 | #include "ItaniumDemangle.h" | 15 | #include "llvm/Demangle/ItaniumDemangle.h" |
| 16 | 16 | ||
| 17 | #include <cassert> | 17 | #include <cassert> |
| 18 | #include <cctype> | 18 | #include <cctype> |
diff --git a/externals/demangle/Demangle.h b/externals/demangle/llvm/Demangle/Demangle.h index 5b673e4e1..5b673e4e1 100644 --- a/externals/demangle/Demangle.h +++ b/externals/demangle/llvm/Demangle/Demangle.h | |||
diff --git a/externals/demangle/DemangleConfig.h b/externals/demangle/llvm/Demangle/DemangleConfig.h index a8aef9df1..a8aef9df1 100644 --- a/externals/demangle/DemangleConfig.h +++ b/externals/demangle/llvm/Demangle/DemangleConfig.h | |||
diff --git a/externals/demangle/ItaniumDemangle.h b/externals/demangle/llvm/Demangle/ItaniumDemangle.h index 64b35c142..64b35c142 100644 --- a/externals/demangle/ItaniumDemangle.h +++ b/externals/demangle/llvm/Demangle/ItaniumDemangle.h | |||
diff --git a/externals/demangle/StringView.h b/externals/demangle/llvm/Demangle/StringView.h index 44d2b18a3..44d2b18a3 100644 --- a/externals/demangle/StringView.h +++ b/externals/demangle/llvm/Demangle/StringView.h | |||
diff --git a/externals/demangle/Utility.h b/externals/demangle/llvm/Demangle/Utility.h index 50d05c6b1..50d05c6b1 100644 --- a/externals/demangle/Utility.h +++ b/externals/demangle/llvm/Demangle/Utility.h | |||
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index bd6ac6716..9884a4a0b 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt | |||
| @@ -177,7 +177,7 @@ endif() | |||
| 177 | create_target_directory_groups(common) | 177 | create_target_directory_groups(common) |
| 178 | 178 | ||
| 179 | target_link_libraries(common PUBLIC ${Boost_LIBRARIES} fmt::fmt microprofile Threads::Threads) | 179 | target_link_libraries(common PUBLIC ${Boost_LIBRARIES} fmt::fmt microprofile Threads::Threads) |
| 180 | target_link_libraries(common PRIVATE lz4::lz4 zstd::zstd demangle) | 180 | target_link_libraries(common PRIVATE lz4::lz4 zstd::zstd LLVM::Demangle) |
| 181 | 181 | ||
| 182 | if (YUZU_USE_PRECOMPILED_HEADERS) | 182 | if (YUZU_USE_PRECOMPILED_HEADERS) |
| 183 | target_precompile_headers(common PRIVATE precompiled_headers.h) | 183 | target_precompile_headers(common PRIVATE precompiled_headers.h) |
diff --git a/src/common/demangle.cpp b/src/common/demangle.cpp index f4246f666..3310faf86 100644 --- a/src/common/demangle.cpp +++ b/src/common/demangle.cpp | |||
| @@ -1,13 +1,11 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project | 1 | // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project |
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | 2 | // SPDX-License-Identifier: GPL-2.0-or-later |
| 3 | 3 | ||
| 4 | #include <llvm/Demangle/Demangle.h> | ||
| 5 | |||
| 4 | #include "common/demangle.h" | 6 | #include "common/demangle.h" |
| 5 | #include "common/scope_exit.h" | 7 | #include "common/scope_exit.h" |
| 6 | 8 | ||
| 7 | namespace llvm { | ||
| 8 | char* itaniumDemangle(const char* mangled_name, char* buf, size_t* n, int* status); | ||
| 9 | } | ||
| 10 | |||
| 11 | namespace Common { | 9 | namespace Common { |
| 12 | 10 | ||
| 13 | std::string DemangleSymbol(const std::string& mangled) { | 11 | std::string DemangleSymbol(const std::string& mangled) { |