From 3fe50cb13ced56102abe0d5d9e4ad2fb0e677787 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 28 Sep 2017 10:48:13 -0400 Subject: [PATCH] simpler cmake for msvc --- cmake/Findllvm.cmake | 169 ++++++++++++++----------------------------- 1 file changed, 53 insertions(+), 116 deletions(-) diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake index dc45a09258..87e80f24bc 100644 --- a/cmake/Findllvm.cmake +++ b/cmake/Findllvm.cmake @@ -7,128 +7,65 @@ # LLVM_LIBRARIES # LLVM_LIBDIRS -if(MSVC) - find_package(LLVM REQUIRED CONFIG) +find_program(LLVM_CONFIG_EXE + NAMES llvm-config-5.0 llvm-config + PATHS + "/mingw64/bin" + "/c/msys64/mingw64/bin" + "c:/msys64/mingw64/bin" + "C:/Libraries/llvm-5.0.0/bin") - # TODO: this currently doesn't work, it currently defines UNICODE but zig - # uses MBCS - #add_definitions(${LLVM_DEFINITIONS}) - - link_directories(${LLVM_LIBRARY_DIRS}) - llvm_map_components_to_libnames(LLVM_LIBRARIES - LTO - Symbolize - XCoreDisassembler - XCoreCodeGen - XCoreAsmPrinter - SystemZDisassembler - SystemZCodeGen - SystemZAsmParser - SystemZAsmPrinter - SparcDisassembler - SparcCodeGen - SparcAsmParser - SparcAsmPrinter - PowerPCDisassembler - PowerPCCodeGen - PowerPCAsmParser - PowerPCAsmPrinter - NVPTXCodeGen - NVPTXAsmPrinter - MSP430CodeGen - MSP430AsmPrinter - MipsDisassembler - MipsCodeGen - MipsAsmParser - MipsAsmPrinter - LanaiDisassembler - LanaiCodeGen - LanaiAsmParser - LanaiAsmPrinter - HexagonDisassembler - HexagonCodeGen - HexagonAsmParser - BPFDisassembler - BPFCodeGen - BPFAsmPrinter - ARMDisassembler - ARMCodeGen - ARMAsmParser - ARMAsmPrinter - AMDGPUDisassembler - AMDGPUCodeGen - AMDGPUAsmParser - AMDGPUAsmPrinter - AArch64Disassembler - AArch64CodeGen - AArch64AsmParser - AArch64AsmPrinter - LibDriver - X86Disassembler - X86AsmParser - X86CodeGen - X86AsmPrinter - Core - ) - -else() - find_program(LLVM_CONFIG_EXE - NAMES llvm-config-5.0 llvm-config - PATHS - "/mingw64/bin" - "/c/msys64/mingw64/bin" - "c:/msys64/mingw64/bin" - "C:/Libraries/llvm-5.0.0/bin") - - if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug")) - 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 - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process( - COMMAND ${LLVM_CONFIG_EXE} --system-libs - OUTPUT_VARIABLE LLVM_SYSTEM_LIBS - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process( - COMMAND ${LLVM_CONFIG_EXE} --libdir - OUTPUT_VARIABLE LLVM_LIBDIRS - OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() +if(NOT(CMAKE_BUILD_TYPE STREQUAL "Debug")) + 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} --includedir - OUTPUT_VARIABLE LLVM_INCLUDE_DIRS + 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}") - set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS}) - - if(NOT LLVM_LIBRARIES) - find_library(LLVM_LIBRARIES NAMES LLVM LLVM-5.0 LLVM-5) - endif() - - link_directories("${CMAKE_PREFIX_PATH}/lib") + 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} --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-5.0 LLVM-5) +endif() + +link_directories("${CMAKE_PREFIX_PATH}/lib") include(FindPackageHandleStandardArgs)