Commit e803490a56

Andrew Kelley <andrew@ziglang.org>
2020-03-28 03:24:15
cmake: support finding a cross compiled llvm
1 parent f407109
Changed files (1)
cmake/Findllvm.cmake
@@ -7,118 +7,302 @@
 # LLVM_LIBRARIES
 # LLVM_LIBDIRS
 
-find_program(LLVM_CONFIG_EXE
-    NAMES llvm-config-10 llvm-config-10.0 llvm-config100 llvm-config
-    PATHS
-        "/mingw64/bin"
-        "/c/msys64/mingw64/bin"
-        "c:/msys64/mingw64/bin"
-        "C:/Libraries/llvm-10.0.0/bin")
-
-if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
-  message(FATAL_ERROR "unable to find llvm-config")
-endif()
-
-if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
-  message(FATAL_ERROR "unable to find llvm-config")
-endif()
-
-execute_process(
-	COMMAND ${LLVM_CONFIG_EXE} --version
-	OUTPUT_VARIABLE LLVM_CONFIG_VERSION
-	OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-if("${LLVM_CONFIG_VERSION}" VERSION_LESS 10)
-  message(FATAL_ERROR "expected LLVM 10.x but found ${LLVM_CONFIG_VERSION}")
-endif()
-if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 11)
-  message(FATAL_ERROR "expected LLVM 10.x but found ${LLVM_CONFIG_VERSION}")
-endif()
-if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 11)
-  message(FATAL_ERROR "expected LLVM 10.x but found ${LLVM_CONFIG_VERSION}")
-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}")
-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()
-endfunction(NEED_TARGET)
-NEED_TARGET("AArch64")
-NEED_TARGET("AMDGPU")
-NEED_TARGET("ARM")
-NEED_TARGET("BPF")
-NEED_TARGET("Hexagon")
-NEED_TARGET("Lanai")
-NEED_TARGET("Mips")
-NEED_TARGET("MSP430")
-NEED_TARGET("NVPTX")
-NEED_TARGET("PowerPC")
-NEED_TARGET("RISCV")
-NEED_TARGET("Sparc")
-NEED_TARGET("SystemZ")
-NEED_TARGET("WebAssembly")
-NEED_TARGET("X86")
-NEED_TARGET("XCore")
+if(ZIG_CROSSCOMPILING)
+  # Here we assume that we're cross compiling with Zig, of course. No reason
+  # to support more complicated setups. We also assume the experimental target
+  # AVR is enabled.
 
-if(ZIG_STATIC_LLVM)
-  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}")
+  find_path(LLVM_INCLUDE_DIRS NAMES llvm/IR/IRBuilder.h
+    PATHS
+        /usr/lib/llvm/10/include
+        /usr/lib/llvm-10/include
+        /usr/lib/llvm-10.0/include
+        /usr/local/llvm100/include
+        /mingw64/include)
 
-  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}")
+    macro(FIND_AND_ADD_LLVM_LIB _libname_)
+      string(TOUPPER ${_libname_} _prettylibname_)
+      find_library(LLVM_${_prettylibname_}_LIB NAMES ${_libname_}
+        PATHS
+        ${LLVM_LIBDIRS}
+        /usr/lib/llvm/10/lib
+        /usr/lib/llvm-10/lib
+        /usr/lib/llvm-10.0/lib
+        /usr/local/llvm100/lib
+        /mingw64/lib
+        /c/msys64/mingw64/lib
+        c:\\msys64\\mingw64\\lib)
+      if(LLVM_${_prettylibname_}_LIB)
+        set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_${_prettylibname_}_LIB})
+      endif()
+    endmacro(FIND_AND_ADD_LLVM_LIB)
 
+    # This list can be re-generated with `llvm-config --libfiles` and then
+    # reformatting using your favorite text editor. Note we do not execute
+    # `llvm-config` here because we are cross compiling.
+    FIND_AND_ADD_LLVM_LIB(LLVMXRay)
+    FIND_AND_ADD_LLVM_LIB(LLVMWindowsManifest)
+    FIND_AND_ADD_LLVM_LIB(LLVMTableGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMSymbolize)
+    FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoPDB)
+    FIND_AND_ADD_LLVM_LIB(LLVMOrcJIT)
+    FIND_AND_ADD_LLVM_LIB(LLVMOrcError)
+    FIND_AND_ADD_LLVM_LIB(LLVMJITLink)
+    FIND_AND_ADD_LLVM_LIB(LLVMObjectYAML)
+    FIND_AND_ADD_LLVM_LIB(LLVMMCA)
+    FIND_AND_ADD_LLVM_LIB(LLVMLTO)
+    FIND_AND_ADD_LLVM_LIB(LLVMPasses)
+    FIND_AND_ADD_LLVM_LIB(LLVMObjCARCOpts)
+    FIND_AND_ADD_LLVM_LIB(LLVMLineEditor)
+    FIND_AND_ADD_LLVM_LIB(LLVMLibDriver)
+    FIND_AND_ADD_LLVM_LIB(LLVMInterpreter)
+    FIND_AND_ADD_LLVM_LIB(LLVMFuzzMutate)
+    FIND_AND_ADD_LLVM_LIB(LLVMFrontendOpenMP)
+    FIND_AND_ADD_LLVM_LIB(LLVMMCJIT)
+    FIND_AND_ADD_LLVM_LIB(LLVMExecutionEngine)
+    FIND_AND_ADD_LLVM_LIB(LLVMRuntimeDyld)
+    FIND_AND_ADD_LLVM_LIB(LLVMDWARFLinker)
+    FIND_AND_ADD_LLVM_LIB(LLVMDlltoolDriver)
+    FIND_AND_ADD_LLVM_LIB(LLVMOption)
+    FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoGSYM)
+    FIND_AND_ADD_LLVM_LIB(LLVMCoverage)
+    FIND_AND_ADD_LLVM_LIB(LLVMCoroutines)
+    FIND_AND_ADD_LLVM_LIB(LLVMAVRDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMAVRCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMAVRAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMAVRDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMAVRInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMXCoreDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMXCoreCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMXCoreDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMXCoreInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMX86Disassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMX86AsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMX86CodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMX86Desc)
+    FIND_AND_ADD_LLVM_LIB(LLVMX86Utils)
+    FIND_AND_ADD_LLVM_LIB(LLVMX86Info)
+    FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMSystemZDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMSystemZCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMSystemZAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMSystemZDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMSystemZInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMSparcDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMSparcCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMSparcAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMSparcDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMSparcInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMRISCVDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMRISCVCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMRISCVAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMRISCVDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMRISCVUtils)
+    FIND_AND_ADD_LLVM_LIB(LLVMRISCVInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMPowerPCDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMPowerPCCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMPowerPCAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMPowerPCDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMPowerPCInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMNVPTXCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMNVPTXDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMNVPTXInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMMSP430Disassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMMSP430CodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMMSP430AsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMMSP430Desc)
+    FIND_AND_ADD_LLVM_LIB(LLVMMSP430Info)
+    FIND_AND_ADD_LLVM_LIB(LLVMMipsDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMMipsCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMMipsAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMMipsDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMMipsInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMLanaiDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMLanaiCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMLanaiAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMLanaiDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMLanaiInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMHexagonDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMHexagonCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMHexagonAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMHexagonDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMHexagonInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMBPFDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMBPFCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMBPFAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMBPFDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMBPFInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMARMDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMARMCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMARMAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMARMDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMARMUtils)
+    FIND_AND_ADD_LLVM_LIB(LLVMARMInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMMIRParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMipo)
+    FIND_AND_ADD_LLVM_LIB(LLVMInstrumentation)
+    FIND_AND_ADD_LLVM_LIB(LLVMVectorize)
+    FIND_AND_ADD_LLVM_LIB(LLVMLinker)
+    FIND_AND_ADD_LLVM_LIB(LLVMIRReader)
+    FIND_AND_ADD_LLVM_LIB(LLVMAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUAsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUDesc)
+    FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUUtils)
+    FIND_AND_ADD_LLVM_LIB(LLVMAMDGPUInfo)
+    FIND_AND_ADD_LLVM_LIB(LLVMAArch64Disassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMMCDisassembler)
+    FIND_AND_ADD_LLVM_LIB(LLVMAArch64CodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMCFGuard)
+    FIND_AND_ADD_LLVM_LIB(LLVMGlobalISel)
+    FIND_AND_ADD_LLVM_LIB(LLVMSelectionDAG)
+    FIND_AND_ADD_LLVM_LIB(LLVMAsmPrinter)
+    FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoDWARF)
+    FIND_AND_ADD_LLVM_LIB(LLVMCodeGen)
+    FIND_AND_ADD_LLVM_LIB(LLVMTarget)
+    FIND_AND_ADD_LLVM_LIB(LLVMScalarOpts)
+    FIND_AND_ADD_LLVM_LIB(LLVMInstCombine)
+    FIND_AND_ADD_LLVM_LIB(LLVMAggressiveInstCombine)
+    FIND_AND_ADD_LLVM_LIB(LLVMTransformUtils)
+    FIND_AND_ADD_LLVM_LIB(LLVMBitWriter)
+    FIND_AND_ADD_LLVM_LIB(LLVMAnalysis)
+    FIND_AND_ADD_LLVM_LIB(LLVMProfileData)
+    FIND_AND_ADD_LLVM_LIB(LLVMObject)
+    FIND_AND_ADD_LLVM_LIB(LLVMTextAPI)
+    FIND_AND_ADD_LLVM_LIB(LLVMBitReader)
+    FIND_AND_ADD_LLVM_LIB(LLVMCore)
+    FIND_AND_ADD_LLVM_LIB(LLVMRemarks)
+    FIND_AND_ADD_LLVM_LIB(LLVMBitstreamReader)
+    FIND_AND_ADD_LLVM_LIB(LLVMAArch64AsmParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMMCParser)
+    FIND_AND_ADD_LLVM_LIB(LLVMAArch64Desc)
+    FIND_AND_ADD_LLVM_LIB(LLVMMC)
+    FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoCodeView)
+    FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoMSF)
+    FIND_AND_ADD_LLVM_LIB(LLVMBinaryFormat)
+    FIND_AND_ADD_LLVM_LIB(LLVMAArch64Utils)
+    FIND_AND_ADD_LLVM_LIB(LLVMAArch64Info)
+    FIND_AND_ADD_LLVM_LIB(LLVMSupport)
+    FIND_AND_ADD_LLVM_LIB(LLVMDemangle)
+else()
+  find_program(LLVM_CONFIG_EXE
+      NAMES llvm-config-10 llvm-config-10.0 llvm-config100 llvm-config
+      PATHS
+          "/mingw64/bin"
+          "/c/msys64/mingw64/bin"
+          "c:/msys64/mingw64/bin"
+          "C:/Libraries/llvm-10.0.0/bin")
+  
+  if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
+    message(FATAL_ERROR "unable to find llvm-config")
+  endif()
+  
+  if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
+    message(FATAL_ERROR "unable to find llvm-config")
+  endif()
+  
   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}")
-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} --version
+  	OUTPUT_VARIABLE LLVM_CONFIG_VERSION
+  	OUTPUT_STRIP_TRAILING_WHITESPACE)
+  
+  if("${LLVM_CONFIG_VERSION}" VERSION_LESS 10)
+    message(FATAL_ERROR "expected LLVM 10.x but found ${LLVM_CONFIG_VERSION}")
+  endif()
+  if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 11)
+    message(FATAL_ERROR "expected LLVM 10.x but found ${LLVM_CONFIG_VERSION}")
+  endif()
+  if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 11)
+    message(FATAL_ERROR "expected LLVM 10.x but found ${LLVM_CONFIG_VERSION}")
+  endif()
+  
   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} --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()
+  endfunction(NEED_TARGET)
+  NEED_TARGET("AArch64")
+  NEED_TARGET("AMDGPU")
+  NEED_TARGET("ARM")
+  NEED_TARGET("BPF")
+  NEED_TARGET("Hexagon")
+  NEED_TARGET("Lanai")
+  NEED_TARGET("Mips")
+  NEED_TARGET("MSP430")
+  NEED_TARGET("NVPTX")
+  NEED_TARGET("PowerPC")
+  NEED_TARGET("RISCV")
+  NEED_TARGET("Sparc")
+  NEED_TARGET("SystemZ")
+  NEED_TARGET("WebAssembly")
+  NEED_TARGET("X86")
+  NEED_TARGET("XCore")
+  
+  if(ZIG_STATIC_LLVM)
+    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}")
+  
+    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}")
+  
+    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}")
+  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}")
+  
+    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} --libdir
+        OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES
+        OUTPUT_STRIP_TRAILING_WHITESPACE)
+    string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}")
+  endif()
+  
   execute_process(
-      COMMAND ${LLVM_CONFIG_EXE} --libdir
-      OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES
+      COMMAND ${LLVM_CONFIG_EXE} --includedir
+      OUTPUT_VARIABLE LLVM_INCLUDE_DIRS
       OUTPUT_STRIP_TRAILING_WHITESPACE)
-  string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}")
+  
+  set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
+  
+  if(NOT LLVM_LIBRARIES)
+    find_library(LLVM_LIBRARIES NAMES LLVM LLVM-10 LLVM-10.0)
+  endif()
+  
+  link_directories("${CMAKE_PREFIX_PATH}/lib")
+  link_directories("${LLVM_LIBDIRS}")
 endif()
 
-execute_process(
-    COMMAND ${LLVM_CONFIG_EXE} --includedir
-    OUTPUT_VARIABLE LLVM_INCLUDE_DIRS
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
-
-if(NOT LLVM_LIBRARIES)
-  find_library(LLVM_LIBRARIES NAMES LLVM LLVM-10 LLVM-10.0)
-endif()
-
-link_directories("${CMAKE_PREFIX_PATH}/lib")
-link_directories("${LLVM_LIBDIRS}")
-
 include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(LLVM DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIRS)