| ... | @@ -56,7 +56,7 @@ if(ZIG_USE_LLVM_CONFIG) | ... | @@ -56,7 +56,7 @@ if(ZIG_USE_LLVM_CONFIG) |
| 56 | COMMAND ${LLVM_CONFIG_EXE} --libs ${STATIC_OR_SHARED_LINK} | 56 | COMMAND ${LLVM_CONFIG_EXE} --libs ${STATIC_OR_SHARED_LINK} |
| 57 | OUTPUT_QUIET | 57 | OUTPUT_QUIET |
| 58 | ERROR_VARIABLE LLVM_CONFIG_ERROR | 58 | ERROR_VARIABLE LLVM_CONFIG_ERROR |
| 59 | OUTPUT_STRIP_TRAILING_WHITESPACE) | 59 | ERROR_STRIP_TRAILING_WHITESPACE) |
| 60 | | 60 | |
| 61 | if (LLVM_CONFIG_ERROR) | 61 | if (LLVM_CONFIG_ERROR) |
| 62 | # Save the error message, in case this is the last llvm-config we find | 62 | # Save the error message, in case this is the last llvm-config we find |
| ... | @@ -124,6 +124,12 @@ if(ZIG_USE_LLVM_CONFIG) | ... | @@ -124,6 +124,12 @@ if(ZIG_USE_LLVM_CONFIG) |
| 124 | OUTPUT_STRIP_TRAILING_WHITESPACE) | 124 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 125 | string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}") | 125 | string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}") |
| 126 | | 126 | |
| | 127 | execute_process( |
| | 128 | COMMAND ${LLVM_CONFIG_EXE} --system-libs ${STATIC_OR_SHARED_LINK} |
| | 129 | OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES |
| | 130 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| | 131 | string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}") |
| | 132 | |
| 127 | execute_process( | 133 | execute_process( |
| 128 | COMMAND ${LLVM_CONFIG_EXE} --shared-mode ${STATIC_OR_SHARED_LINK} | 134 | COMMAND ${LLVM_CONFIG_EXE} --shared-mode ${STATIC_OR_SHARED_LINK} |
| 129 | OUTPUT_VARIABLE LLVM_LINK_MODE | 135 | OUTPUT_VARIABLE LLVM_LINK_MODE |
| ... | @@ -141,21 +147,33 @@ if(ZIG_USE_LLVM_CONFIG) | ... | @@ -141,21 +147,33 @@ if(ZIG_USE_LLVM_CONFIG) |
| 141 | OUTPUT_STRIP_TRAILING_WHITESPACE) | 147 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 142 | string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}") | 148 | string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}") |
| 143 | | 149 | |
| | 150 | execute_process( |
| | 151 | COMMAND ${LLVM_CONFIG_EXE} --system-libs |
| | 152 | OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES |
| | 153 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| | 154 | string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}") |
| | 155 | |
| 144 | execute_process( | 156 | execute_process( |
| 145 | COMMAND ${LLVM_CONFIG_EXE} --shared-mode | 157 | COMMAND ${LLVM_CONFIG_EXE} --shared-mode |
| 146 | OUTPUT_VARIABLE LLVM_LINK_MODE | 158 | OUTPUT_VARIABLE LLVM_LINK_MODE |
| 147 | OUTPUT_STRIP_TRAILING_WHITESPACE) | 159 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 148 | endif() | 160 | endif() |
| 149 | | 161 | |
| 150 | # We always ask for the system libs corresponding to static linking, | 162 | if (${LLVM_LINK_MODE} STREQUAL "shared") |
| 151 | # since we always statically link LLD which needs these libraries | 163 | # We always ask for the system libs corresponding to static linking, |
| 152 | execute_process( | 164 | # since on some distros LLD is only available as a static library |
| 153 | COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static | 165 | # and we need these libraries to link it successfully |
| 154 | OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES | 166 | execute_process( |
| 155 | OUTPUT_STRIP_TRAILING_WHITESPACE) | 167 | COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static |
| 156 | string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}") | 168 | OUTPUT_VARIABLE LLVM_STATIC_SYSTEM_LIBS_SPACES |
| | 169 | ERROR_QUIET # Some installations have no static libs, we just ignore the failure |
| | 170 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| | 171 | string(REPLACE " " ";" LLVM_STATIC_SYSTEM_LIBS "${LLVM_STATIC_SYSTEM_LIBS_SPACES}") |
| 157 | | 172 | |
| 158 | set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS}) | 173 | set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS} ${LLVM_STATIC_SYSTEM_LIBS}) |
| | 174 | else() |
| | 175 | set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS}) |
| | 176 | endif() |
| 159 | | 177 | |
| 160 | execute_process( | 178 | execute_process( |
| 161 | COMMAND ${LLVM_CONFIG_EXE} --includedir | 179 | COMMAND ${LLVM_CONFIG_EXE} --includedir |
| ... | @@ -163,14 +181,6 @@ if(ZIG_USE_LLVM_CONFIG) | ... | @@ -163,14 +181,6 @@ if(ZIG_USE_LLVM_CONFIG) |
| 163 | OUTPUT_STRIP_TRAILING_WHITESPACE) | 181 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 164 | string(REPLACE " " ";" LLVM_INCLUDE_DIRS "${LLVM_INCLUDE_DIRS_SPACES}") | 182 | string(REPLACE " " ";" LLVM_INCLUDE_DIRS "${LLVM_INCLUDE_DIRS_SPACES}") |
| 165 | | 183 | |
| 166 | if(NOT LLVM_LIBRARIES) | | |
| 167 | find_library(LLVM_LIBRARIES | | |
| 168 | NAMES LLVM LLVM-14 LLVM-14.0 NAMES_PER_DIR | | |
| 169 | HINTS "${LLVM_CONFIG_DIR}/../lib" "${LLVM_CONFIG_DIR}/../lib64" "${LLVM_CONFIG_DIR}/../${CMAKE_LIBRARY_ARCHITECTURE}") | | |
| 170 | | | |
| 171 | # TODO: Make this fallthrough work | | |
| 172 | endif() | | |
| 173 | | | |
| 174 | link_directories("${CMAKE_PREFIX_PATH}/lib") | 184 | link_directories("${CMAKE_PREFIX_PATH}/lib") |
| 175 | link_directories("${LLVM_LIBDIRS}") | 185 | link_directories("${LLVM_LIBDIRS}") |
| 176 | else() | 186 | else() |