Commit 4113a790b0
Changed files (3)
cmake/Findclang.cmake
@@ -7,7 +7,6 @@
# CLANG_LIBRARIES
# CLANG_LIBDIRS
-#TODO: FIXME
find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
HINTS ${LLVM_INCLUDE_DIRS}
NO_DEFAULT_PATH # Only look for clang next to LLVM
cmake/Findlld.cmake
@@ -8,12 +8,22 @@
find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h
HINTS ${LLVM_INCLUDE_DIRS}
- NO_DEFAULT_PATH # Only look for LLD next to LLVM
-)
+ PATHS
+ /usr/lib/llvm-14/include
+ /usr/local/llvm140/include
+ /usr/local/llvm14/include
+ /usr/local/opt/llvm@14/include
+ /opt/homebrew/opt/llvm@14/include
+ /mingw64/include)
find_library(LLD_LIBRARY NAMES lld-14.0 lld140 lld NAMES_PER_DIR
HINTS ${LLVM_LIBDIRS}
- NO_DEFAULT_PATH # Only look for LLD next to LLVM
+ PATHS
+ /usr/lib/llvm-14/lib
+ /usr/local/llvm140/lib
+ /usr/local/llvm14/lib
+ /usr/local/opt/llvm@14/lib
+ /opt/homebrew/opt/llvm@14/lib
)
if(EXISTS ${LLD_LIBRARY})
set(LLD_LIBRARIES ${LLD_LIBRARY})
@@ -22,8 +32,16 @@ else()
string(TOUPPER ${_libname_} _prettylibname_)
find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_} NAMES_PER_DIR
HINTS ${LLVM_LIBDIRS}
- NO_DEFAULT_PATH # Only look for LLD next to LLVM
- )
+ PATHS
+ ${LLD_LIBDIRS}
+ /usr/lib/llvm-14/lib
+ /usr/local/llvm140/lib
+ /usr/local/llvm14/lib
+ /usr/local/opt/llvm@14/lib
+ /opt/homebrew/opt/llvm@14/lib
+ /mingw64/lib
+ /c/msys64/mingw64/lib
+ c:/msys64/mingw64/lib)
if(LLD_${_prettylibname_}_LIB)
set(LLD_LIBRARIES ${LLD_LIBRARIES} ${LLD_${_prettylibname_}_LIB})
endif()
cmake/Findllvm.cmake
@@ -56,7 +56,7 @@ if(ZIG_USE_LLVM_CONFIG)
COMMAND ${LLVM_CONFIG_EXE} --libs ${STATIC_OR_SHARED_LINK}
OUTPUT_QUIET
ERROR_VARIABLE LLVM_CONFIG_ERROR
- OUTPUT_STRIP_TRAILING_WHITESPACE)
+ ERROR_STRIP_TRAILING_WHITESPACE)
if (LLVM_CONFIG_ERROR)
# Save the error message, in case this is the last llvm-config we find
@@ -124,6 +124,12 @@ if(ZIG_USE_LLVM_CONFIG)
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}")
+ execute_process(
+ COMMAND ${LLVM_CONFIG_EXE} --system-libs ${STATIC_OR_SHARED_LINK}
+ OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}")
+
execute_process(
COMMAND ${LLVM_CONFIG_EXE} --shared-mode ${STATIC_OR_SHARED_LINK}
OUTPUT_VARIABLE LLVM_LINK_MODE
@@ -141,21 +147,33 @@ if(ZIG_USE_LLVM_CONFIG)
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}")
+ execute_process(
+ COMMAND ${LLVM_CONFIG_EXE} --system-libs
+ OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}")
+
execute_process(
COMMAND ${LLVM_CONFIG_EXE} --shared-mode
OUTPUT_VARIABLE LLVM_LINK_MODE
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
- # We always ask for the system libs corresponding to static linking,
- # since we always statically link LLD which needs these libraries
- execute_process(
- COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static
- OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}")
+ if (${LLVM_LINK_MODE} STREQUAL "shared")
+ # We always ask for the system libs corresponding to static linking,
+ # since on some distros LLD is only available as a static library
+ # and we need these libraries to link it successfully
+ execute_process(
+ COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static
+ OUTPUT_VARIABLE LLVM_STATIC_SYSTEM_LIBS_SPACES
+ ERROR_QUIET # Some installations have no static libs, we just ignore the failure
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(REPLACE " " ";" LLVM_STATIC_SYSTEM_LIBS "${LLVM_STATIC_SYSTEM_LIBS_SPACES}")
- set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
+ set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS} ${LLVM_STATIC_SYSTEM_LIBS})
+ else()
+ set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
+ endif()
execute_process(
COMMAND ${LLVM_CONFIG_EXE} --includedir
@@ -163,14 +181,6 @@ if(ZIG_USE_LLVM_CONFIG)
OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE " " ";" LLVM_INCLUDE_DIRS "${LLVM_INCLUDE_DIRS_SPACES}")
- if(NOT LLVM_LIBRARIES)
- find_library(LLVM_LIBRARIES
- NAMES LLVM LLVM-14 LLVM-14.0 NAMES_PER_DIR
- HINTS "${LLVM_CONFIG_DIR}/../lib" "${LLVM_CONFIG_DIR}/../lib64" "${LLVM_CONFIG_DIR}/../${CMAKE_LIBRARY_ARCHITECTURE}")
-
- # TODO: Make this fallthrough work
- endif()
-
link_directories("${CMAKE_PREFIX_PATH}/lib")
link_directories("${LLVM_LIBDIRS}")
else()