authorgravatar for topolarity@tapscott.meCody Tapscott <topolarity@tapscott.me> 2022-07-25 10:29:38-07:00
committergravatar for topolarity@tapscott.meCody Tapscott <topolarity@tapscott.me> 2022-07-25 10:38:52-07:00
logabc1ae538fee14af12bb5ffd35024d96da861961
tree33d038cfc5bb096c4b2962ca2e20568c5cbddc60
parent5337934bcd174987e813e192cb5ef173c13eff37

CMake: Search for Clang in CMAKE_LIBRARY_PATH, CMAKE_PREFIX_PATH, and CMAKE_FRAMEWORK_PATH

On some systems (esp. systems that use unique hashed file-paths for library-versions like Nix), we can't expect LLVM and Clang to share lib/bin directories. The best we can do is find the matching clang libraries in the CMAKE_LIBRARY_PATH provided by the environment

1 files changed, 9 insertions(+), 3 deletions(-)

cmake/Findclang.cmake+9-3
......@@ -9,7 +9,9 @@
99
1010find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
1111 HINTS ${LLVM_INCLUDE_DIRS}
12 NO_DEFAULT_PATH # Only look for clang next to LLVM
12 # Only look for Clang next to LLVM or in { CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_FRAMEWORK_PATH }
13 NO_SYSTEM_ENVIRONMENT_PATH
14 NO_CMAKE_SYSTEM_PATH
1315)
1416
1517if(${LLVM_LINK_MODE} STREQUAL "shared")
......@@ -21,14 +23,18 @@ if(${LLVM_LINK_MODE} STREQUAL "shared")
2123 clang-cpp
2224 NAMES_PER_DIR
2325 HINTS "${LLVM_LIBDIRS}"
24 NO_DEFAULT_PATH # Only look for Clang next to LLVM
26 # Only look for Clang next to LLVM or in { CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_FRAMEWORK_PATH }
27 NO_SYSTEM_ENVIRONMENT_PATH
28 NO_CMAKE_SYSTEM_PATH
2529 )
2630else()
2731 macro(FIND_AND_ADD_CLANG_LIB _libname_)
2832 string(TOUPPER ${_libname_} _prettylibname_)
2933 find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} NAMES_PER_DIR
3034 HINTS "${LLVM_LIBDIRS}"
31 NO_DEFAULT_PATH # Only look for Clang next to LLVM
35 # Only look for Clang next to LLVM or in { CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_FRAMEWORK_PATH }
36 NO_SYSTEM_ENVIRONMENT_PATH
37 NO_CMAKE_SYSTEM_PATH
3238 )
3339 if(CLANG_${_prettylibname_}_LIB)
3440 set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_${_prettylibname_}_LIB})