| author | |
| committer | |
| log | dd70336f3ace541586210bd7bd061cc09a8c0e03 |
| tree | badb6ba2ced8240adfdae419f175dd2dc1b09267 |
| parent | a4559271501670b39305fc3575ae8d87fa03d35e |
CMake has a surprising default behavior where looking up a library by
multiple names gives the name order higher priority than the directory
search order.
For example, if your system provides "llvm-config-14" and
CMAKE_PREFIX_PATH includes "llvm-config", CMake will always end up
choosing the system-provided llvm-config-14.
This change add NAMES_PER_DIR to request the more sensible behavior:
directory search order has higher priority than name order, so
CMAKE_PREFIX_PATH always wins over system-provided tools/libraries.4 files changed, 12 insertions(+), 10 deletions(-)
CMakeLists.txt+3-3| ... | ... | @@ -31,7 +31,7 @@ set(ZIG_VERSION "" CACHE STRING "Override Zig version string. Default is to find |
| 31 | 31 | |
| 32 | 32 | if("${ZIG_VERSION}" STREQUAL "") |
| 33 | 33 | set(ZIG_VERSION "${ZIG_VERSION_MAJOR}.${ZIG_VERSION_MINOR}.${ZIG_VERSION_PATCH}") |
| 34 | find_program(GIT_EXE NAMES git) | |
| 34 | find_program(GIT_EXE NAMES git NAMES_PER_DIR) | |
| 35 | 35 | if(GIT_EXE) |
| 36 | 36 | execute_process( |
| 37 | 37 | COMMAND ${GIT_EXE} -C ${CMAKE_SOURCE_DIR} describe --match *.*.* --tags |
| ... | ... | @@ -110,13 +110,13 @@ find_package(lld 14) |
| 110 | 110 | |
| 111 | 111 | if(ZIG_STATIC_ZLIB) |
| 112 | 112 | list(REMOVE_ITEM LLVM_LIBRARIES "-lz") |
| 113 | find_library(ZLIB NAMES libz.a libzlibstatic.a z zlib libz) | |
| 113 | find_library(ZLIB NAMES libz.a libzlibstatic.a z zlib libz NAMES_PER_DIR) | |
| 114 | 114 | list(APPEND LLVM_LIBRARIES "${ZLIB}") |
| 115 | 115 | endif() |
| 116 | 116 | |
| 117 | 117 | if(APPLE AND ZIG_STATIC) |
| 118 | 118 | list(REMOVE_ITEM LLVM_LIBRARIES "-lcurses") |
| 119 | find_library(CURSES NAMES libcurses.a libncurses.a | |
| 119 | find_library(CURSES NAMES libcurses.a libncurses.a NAMES_PER_DIR | |
| 120 | 120 | PATHS |
| 121 | 121 | /usr/local/opt/ncurses/lib |
| 122 | 122 | /opt/homebrew/opt/ncurses/lib) |
cmake/Findclang.cmake+2-1| ... | ... | @@ -25,6 +25,7 @@ if(ZIG_PREFER_CLANG_CPP_DYLIB) |
| 25 | 25 | clang-cpp-14.0 |
| 26 | 26 | clang-cpp140 |
| 27 | 27 | clang-cpp |
| 28 | NAMES_PER_DIR | |
| 28 | 29 | PATHS |
| 29 | 30 | ${CLANG_LIBDIRS} |
| 30 | 31 | /usr/lib/llvm/14/lib |
| ... | ... | @@ -40,7 +41,7 @@ endif() |
| 40 | 41 | if(NOT CLANG_LIBRARIES) |
| 41 | 42 | macro(FIND_AND_ADD_CLANG_LIB _libname_) |
| 42 | 43 | string(TOUPPER ${_libname_} _prettylibname_) |
| 43 | find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} | |
| 44 | find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} NAMES_PER_DIR | |
| 44 | 45 | PATHS |
| 45 | 46 | ${CLANG_LIBDIRS} |
| 46 | 47 | /usr/lib/llvm/14/lib |
cmake/Findlld.cmake+2-2| ... | ... | @@ -15,7 +15,7 @@ find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h |
| 15 | 15 | /opt/homebrew/opt/llvm@14/include |
| 16 | 16 | /mingw64/include) |
| 17 | 17 | |
| 18 | find_library(LLD_LIBRARY NAMES lld-14.0 lld140 lld | |
| 18 | find_library(LLD_LIBRARY NAMES lld-14.0 lld140 lld NAMES_PER_DIR | |
| 19 | 19 | PATHS |
| 20 | 20 | /usr/lib/llvm-14/lib |
| 21 | 21 | /usr/local/llvm140/lib |
| ... | ... | @@ -28,7 +28,7 @@ if(EXISTS ${LLD_LIBRARY}) |
| 28 | 28 | else() |
| 29 | 29 | macro(FIND_AND_ADD_LLD_LIB _libname_) |
| 30 | 30 | string(TOUPPER ${_libname_} _prettylibname_) |
| 31 | find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_} | |
| 31 | find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_} NAMES_PER_DIR | |
| 32 | 32 | PATHS |
| 33 | 33 | ${LLD_LIBDIRS} |
| 34 | 34 | /usr/lib/llvm-14/lib |
cmake/Findllvm.cmake+5-4| ... | ... | @@ -27,6 +27,7 @@ if(ZIG_PREFER_CLANG_CPP_DYLIB) |
| 27 | 27 | LLVM-14 |
| 28 | 28 | LLVM-140 |
| 29 | 29 | LLVM |
| 30 | NAMES_PER_DIR | |
| 30 | 31 | PATHS |
| 31 | 32 | ${LLVM_LIBDIRS} |
| 32 | 33 | /usr/lib/llvm/14/lib |
| ... | ... | @@ -40,7 +41,7 @@ if(ZIG_PREFER_CLANG_CPP_DYLIB) |
| 40 | 41 | ) |
| 41 | 42 | |
| 42 | 43 | find_program(LLVM_CONFIG_EXE |
| 43 | NAMES llvm-config-14 llvm-config-14.0 llvm-config140 llvm-config14 llvm-config | |
| 44 | NAMES llvm-config-14 llvm-config-14.0 llvm-config140 llvm-config14 llvm-config NAMES_PER_DIR | |
| 44 | 45 | PATHS |
| 45 | 46 | "/mingw64/bin" |
| 46 | 47 | "/c/msys64/mingw64/bin" |
| ... | ... | @@ -71,7 +72,7 @@ if(ZIG_PREFER_CLANG_CPP_DYLIB) |
| 71 | 72 | endif() |
| 72 | 73 | elseif(ZIG_USE_LLVM_CONFIG) |
| 73 | 74 | find_program(LLVM_CONFIG_EXE |
| 74 | NAMES llvm-config-14 llvm-config-14.0 llvm-config140 llvm-config14 llvm-config | |
| 75 | NAMES llvm-config-14 llvm-config-14.0 llvm-config140 llvm-config14 llvm-config NAMES_PER_DIR | |
| 75 | 76 | PATHS |
| 76 | 77 | "/mingw64/bin" |
| 77 | 78 | "/c/msys64/mingw64/bin" |
| ... | ... | @@ -173,7 +174,7 @@ elseif(ZIG_USE_LLVM_CONFIG) |
| 173 | 174 | set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS}) |
| 174 | 175 | |
| 175 | 176 | if(NOT LLVM_LIBRARIES) |
| 176 | find_library(LLVM_LIBRARIES NAMES LLVM LLVM-14 LLVM-14.0) | |
| 177 | find_library(LLVM_LIBRARIES NAMES LLVM LLVM-14 LLVM-14.0 NAMES_PER_DIR) | |
| 177 | 178 | endif() |
| 178 | 179 | |
| 179 | 180 | link_directories("${CMAKE_PREFIX_PATH}/lib") |
| ... | ... | @@ -184,7 +185,7 @@ else() |
| 184 | 185 | |
| 185 | 186 | macro(FIND_AND_ADD_LLVM_LIB _libname_) |
| 186 | 187 | string(TOUPPER ${_libname_} _prettylibname_) |
| 187 | find_library(LLVM_${_prettylibname_}_LIB NAMES ${_libname_} PATHS ${LLVM_LIBDIRS}) | |
| 188 | find_library(LLVM_${_prettylibname_}_LIB NAMES ${_libname_} NAMES_PER_DIR PATHS ${LLVM_LIBDIRS}) | |
| 188 | 189 | set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_${_prettylibname_}_LIB}) |
| 189 | 190 | endmacro(FIND_AND_ADD_LLVM_LIB) |
| 190 | 191 |