FindLLVM.cmake 1.1 KB

123456789101112131415161718192021222324252627
  1. # SPDX-FileCopyrightText: 2023 Alexandre Bouvier <contact@amb.tf>
  2. #
  3. # SPDX-License-Identifier: GPL-3.0-or-later
  4. find_package(LLVM QUIET COMPONENTS CONFIG)
  5. if (LLVM_FOUND)
  6. separate_arguments(LLVM_DEFINITIONS)
  7. if (LLVMDemangle IN_LIST LLVM_AVAILABLE_LIBS)
  8. set(LLVM_Demangle_FOUND TRUE)
  9. endif()
  10. endif()
  11. include(FindPackageHandleStandardArgs)
  12. find_package_handle_standard_args(LLVM HANDLE_COMPONENTS CONFIG_MODE)
  13. if (LLVM_FOUND AND LLVM_Demangle_FOUND AND NOT TARGET LLVM::Demangle)
  14. add_library(LLVM::Demangle INTERFACE IMPORTED)
  15. target_compile_definitions(LLVM::Demangle INTERFACE ${LLVM_DEFINITIONS})
  16. target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS})
  17. # prefer shared LLVM: https://github.com/llvm/llvm-project/issues/34593
  18. # but use ugly hack because llvm_config doesn't support interface library
  19. add_library(_dummy_lib SHARED EXCLUDE_FROM_ALL src/yuzu/main.cpp)
  20. llvm_config(_dummy_lib USE_SHARED demangle)
  21. get_target_property(LLVM_LIBRARIES _dummy_lib LINK_LIBRARIES)
  22. target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES})
  23. endif()