diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake index e13c1e741c..a7c901a472 100644 --- a/cmake/Findllvm.cmake +++ b/cmake/Findllvm.cmake @@ -5,15 +5,15 @@ # LLVM_FOUND # LLVM_INCLUDE_DIRS # LLVM_LIBRARIES -# LLVM_LIBDIRS +# LLVM_LIBDIR find_program(LLVM_CONFIG_EXE - NAMES llvm-config-8 llvm-config-8.0 llvm-config80 llvm-config - PATHS - "/mingw64/bin" - "/c/msys64/mingw64/bin" - "c:/msys64/mingw64/bin" - "C:/Libraries/llvm-8.0.0/bin") + NAMES llvm-config-8 llvm-config-8.0 llvm-config80 llvm-config + PATHS + "/mingw64/bin" + "/c/msys64/mingw64/bin" + "c:/msys64/mingw64/bin" + "C:/Libraries/llvm-8.0.0/bin") if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND") message(FATAL_ERROR "unable to find llvm-config") @@ -24,9 +24,9 @@ if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND") endif() execute_process( - COMMAND ${LLVM_CONFIG_EXE} --version - OUTPUT_VARIABLE LLVM_CONFIG_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) + COMMAND ${LLVM_CONFIG_EXE} --version + OUTPUT_VARIABLE LLVM_CONFIG_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) if("${LLVM_CONFIG_VERSION}" VERSION_LESS 8) message(FATAL_ERROR "expected LLVM 8.x but found ${LLVM_CONFIG_VERSION}") @@ -39,15 +39,15 @@ if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 9) endif() execute_process( - COMMAND ${LLVM_CONFIG_EXE} --targets-built - OUTPUT_VARIABLE LLVM_TARGETS_BUILT_SPACES - OUTPUT_STRIP_TRAILING_WHITESPACE) -string(REPLACE " " ";" LLVM_TARGETS_BUILT "${LLVM_TARGETS_BUILT_SPACES}") + COMMAND ${LLVM_CONFIG_EXE} --targets-built + OUTPUT_VARIABLE LLVM_TARGETS_BUILT_SPACES + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE " " ";" LLVM_TARGETS_BUILT "${LLVM_TARGETS_BUILT_SPACES}") function(NEED_TARGET TARGET_NAME) - list (FIND LLVM_TARGETS_BUILT "${TARGET_NAME}" _index) - if (${_index} EQUAL -1) - message(FATAL_ERROR "LLVM is missing target ${TARGET_NAME}. Zig requires LLVM to be built with all default targets enabled.") - endif() + list (FIND LLVM_TARGETS_BUILT "${TARGET_NAME}" _index) + if (${_index} EQUAL -1) + message(FATAL_ERROR "LLVM is missing target ${TARGET_NAME}. Zig requires LLVM to be built with all default targets enabled.") + endif() endfunction(NEED_TARGET) NEED_TARGET("AArch64") NEED_TARGET("AMDGPU") @@ -67,47 +67,53 @@ NEED_TARGET("XCore") if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug") OR ZIG_STATIC) execute_process( - COMMAND ${LLVM_CONFIG_EXE} --libfiles --link-static - OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}") + COMMAND ${LLVM_CONFIG_EXE} --libdir --link-static + OUTPUT_VARIABLE LLVM_LIBDIR_ORIG + OUTPUT_STRIP_TRAILING_WHITESPACE) + file(TO_CMAKE_PATH "${LLVM_LIBDIR_ORIG}" LLVM_LIBDIR) 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}") + COMMAND ${LLVM_CONFIG_EXE} --libnames --link-static + OUTPUT_VARIABLE LLVM_LIBNAMES_SPACES + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE " " ";" LLVM_LIBNAMES "${LLVM_LIBNAMES_SPACES}") + foreach(LLVM_LIBNAME ${LLVM_LIBNAMES}) + list(APPEND LLVM_LIBRARIES "${LLVM_LIBDIR}/${LLVM_LIBNAME}") + endforeach() execute_process( - COMMAND ${LLVM_CONFIG_EXE} --libdir --link-static - OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}") + 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}") endif() if(NOT LLVM_LIBRARIES) execute_process( - COMMAND ${LLVM_CONFIG_EXE} --libs - OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}") + COMMAND ${LLVM_CONFIG_EXE} --libdir + OUTPUT_VARIABLE LLVM_LIBDIR_ORIG + OUTPUT_STRIP_TRAILING_WHITESPACE) + file(TO_CMAKE_PATH "${LLVM_LIBDIR_ORIG}" LLVM_LIBDIR) 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}") + COMMAND ${LLVM_CONFIG_EXE} --libs + OUTPUT_VARIABLE LLVM_LIBNAMES_SPACES + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE " " ";" LLVM_LIBNAMES "${LLVM_LIBNAMES_SPACES}") + foreach(LLVM_LIBNAME ${LLVM_LIBNAMES}) + list(APPEND LLVM_LIBRARIES "${LLVM_LIBDIR}/${LLVM_LIBNAME}") + endforeach() execute_process( - COMMAND ${LLVM_CONFIG_EXE} --libdir - OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}") + 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}") endif() execute_process( - COMMAND ${LLVM_CONFIG_EXE} --includedir - OUTPUT_VARIABLE LLVM_INCLUDE_DIRS - OUTPUT_STRIP_TRAILING_WHITESPACE) + COMMAND ${LLVM_CONFIG_EXE} --includedir + OUTPUT_VARIABLE LLVM_INCLUDE_DIRS + OUTPUT_STRIP_TRAILING_WHITESPACE) set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS}) @@ -116,9 +122,9 @@ if(NOT LLVM_LIBRARIES) endif() link_directories("${CMAKE_PREFIX_PATH}/lib") -link_directories("${LLVM_LIBDIRS}") +link_directories("${LLVM_LIBDIR}") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LLVM DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIRS) -mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_LIBDIRS) +mark_as_advanced(LLVM_INCLUDE_DIRS LLVM_LIBRARIES LLVM_LIBDIR)