| ... | ... | @@ -56,7 +56,7 @@ if(ZIG_USE_LLVM_CONFIG) |
| 56 | 56 | COMMAND ${LLVM_CONFIG_EXE} --libs ${STATIC_OR_SHARED_LINK} |
| 57 | 57 | OUTPUT_QUIET |
| 58 | 58 | ERROR_VARIABLE LLVM_CONFIG_ERROR |
| 59 | | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 59 | ERROR_STRIP_TRAILING_WHITESPACE) |
| 60 | 60 | |
| 61 | 61 | if (LLVM_CONFIG_ERROR) |
| 62 | 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 | 124 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 125 | 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 | 133 | execute_process( |
| 128 | 134 | COMMAND ${LLVM_CONFIG_EXE} --shared-mode ${STATIC_OR_SHARED_LINK} |
| 129 | 135 | OUTPUT_VARIABLE LLVM_LINK_MODE |
| ... | ... | @@ -141,21 +147,33 @@ if(ZIG_USE_LLVM_CONFIG) |
| 141 | 147 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 142 | 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 | 156 | execute_process( |
| 145 | 157 | COMMAND ${LLVM_CONFIG_EXE} --shared-mode |
| 146 | 158 | OUTPUT_VARIABLE LLVM_LINK_MODE |
| 147 | 159 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 148 | 160 | endif() |
| 149 | 161 | |
| 150 | | # We always ask for the system libs corresponding to static linking, |
| 151 | | # since we always statically link LLD which needs these libraries |
| 152 | | execute_process( |
| 153 | | COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static |
| 154 | | OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES |
| 155 | | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 156 | | string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}") |
| 162 | if (${LLVM_LINK_MODE} STREQUAL "shared") |
| 163 | # We always ask for the system libs corresponding to static linking, |
| 164 | # since on some distros LLD is only available as a static library |
| 165 | # and we need these libraries to link it successfully |
| 166 | execute_process( |
| 167 | COMMAND ${LLVM_CONFIG_EXE} --system-libs --link-static |
| 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 | 178 | execute_process( |
| 161 | 179 | COMMAND ${LLVM_CONFIG_EXE} --includedir |
| ... | ... | @@ -163,14 +181,6 @@ if(ZIG_USE_LLVM_CONFIG) |
| 163 | 181 | OUTPUT_STRIP_TRAILING_WHITESPACE) |
| 164 | 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 | 184 | link_directories("${CMAKE_PREFIX_PATH}/lib") |
| 175 | 185 | link_directories("${LLVM_LIBDIRS}") |
| 176 | 186 | else() |