Commit 67021e2bff

Jonathan Marler <jonathan.j.marler@hp.com>
2017-09-12 02:27:41
Modified cmake to use LLVM imported packages.
1 parent 7c81cd3
cmake/Findclang.cmake
@@ -1,50 +0,0 @@
-# Copyright (c) 2016 Andrew Kelley
-# This file is MIT licensed.
-# See http://opensource.org/licenses/MIT
-
-# CLANG_FOUND
-# CLANG_INCLUDE_DIRS
-# CLANG_LIBRARIES
-
-find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
-    PATHS
-        ${LLVM_INSTALL_PREFIX}/include
-        /usr/lib/llvm/5/include
-        /usr/lib/llvm-5.0/include
-        /mingw64/include)
-
-if(NOT CLANG_INCLUDE_DIRS)
-    message(FATAL_ERROR "Failed to find CLANG header files")
-endif()
-
-macro(FIND_AND_ADD_CLANG_LIB _libname_)
-    string(TOUPPER ${_libname_} _prettylibname_)
-    find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_}
-        PATHS
-            ${LLVM_INSTALL_PREFIX}/lib
-            /usr/lib/llvm/5/lib
-            /usr/lib/llvm-5.0/lib
-            /mingw64/lib
-            /c/msys64/mingw64/lib
-            c:\\msys64\\mingw64\\lib)
-    if(CLANG_${_prettylibname_}_LIB)
-        set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_${_prettylibname_}_LIB})
-    endif()
-endmacro(FIND_AND_ADD_CLANG_LIB)
-
-FIND_AND_ADD_CLANG_LIB(clangFrontend)
-FIND_AND_ADD_CLANG_LIB(clangDriver)
-FIND_AND_ADD_CLANG_LIB(clangSerialization)
-FIND_AND_ADD_CLANG_LIB(clangSema)
-FIND_AND_ADD_CLANG_LIB(clangAnalysis)
-FIND_AND_ADD_CLANG_LIB(clangAST)
-FIND_AND_ADD_CLANG_LIB(clangParse)
-FIND_AND_ADD_CLANG_LIB(clangSema)
-FIND_AND_ADD_CLANG_LIB(clangBasic)
-FIND_AND_ADD_CLANG_LIB(clangEdit)
-FIND_AND_ADD_CLANG_LIB(clangLex)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(CLANG DEFAULT_MSG CLANG_LIBRARIES CLANG_INCLUDE_DIRS)
-
-mark_as_advanced(CLANG_INCLUDE_DIRS CLANG_LIBRARIES)
cmake/Findllvm.cmake
@@ -1,75 +0,0 @@
-# Copyright (c) 2014 Andrew Kelley
-# This file is MIT licensed.
-# See http://opensource.org/licenses/MIT
-
-# LLVM_INCLUDE_DIR
-# LLVM_LIBRARIES
-# LLVM_LIBDIRS
-
-if(LLVM_INSTALL_PREFIX)
-    find_program(LLVM_CONFIG_EXE
-        NAMES llvm-config-5.0 llvm-config
-        PATHS ${LLVM_INSTALL_PREFIX}/bin
-        NO_DEFAULT_PATH)
-    if(NOT LLVM_CONFIG_EXE)
-        message(FATAL_ERROR "Invalid LLVM_INSTALL_PREFIX \"${LLVM_INSTALL_PREFIX}\", could not find llvm-config")
-    endif()
-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 LLVM_CONFIG_EXE)
-        message(FATAL_ERROR "Could not find llvm-config, use -DLLVM_INSTALL_PREFIX to specify the install path")
-    endif()
-    execute_process(
-        COMMAND ${LLVM_CONFIG_EXE} --prefix
-        OUTPUT_VARIABLE LLVM_INSTALL_PREFIX
-        OUTPUT_STRIP_TRAILING_WHITESPACE)
-endif()
-
-if(${LLVM_INSTALL_PREFIX} MATCHES "^.* ")
-    # NOTE: this is a limitation due to llvm-config.  If the path contains spaces then there's
-    # no way to tell from the output of llvm-config whether a space is seperating a filename, or
-    # just a space in the path name.
-    message(FATAL_ERROR "The LLVM install path \"${LLVM_INSTALL_PREFIX}\" cannot contain spaces")
-endif()
-
-execute_process(
-    COMMAND ${LLVM_CONFIG_EXE} --libs
-    OUTPUT_VARIABLE LLVM_LIBRARIES_STRING
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-string(REPLACE " " ";" LLVM_LIBRARIES ${LLVM_LIBRARIES_STRING})
-
-execute_process(
-    COMMAND ${LLVM_CONFIG_EXE} --system-libs
-    OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_STRING
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-string(REPLACE " " ";" LLVM_SYSTEM_LIBS ${LLVM_SYSTEM_LIBS_STRING})
-
-execute_process(
-    COMMAND ${LLVM_CONFIG_EXE} --libdir
-    OUTPUT_VARIABLE LLVM_LIBDIRS
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-execute_process(
-    COMMAND ${LLVM_CONFIG_EXE} --includedir
-    OUTPUT_VARIABLE LLVM_INCLUDE_DIR
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-find_library(LLVM_LIBRARY NAMES LLVM)
-
-set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
-
-if(LLVM_LIBRARY)
-  set(LLVM_LIBRARIES ${LLVM_LIBRARY})
-endif()
-
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(LLVM DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIR)
-
-mark_as_advanced(LLVM_INCLUDE_DIR LLVM_LIBRARIES LLVM_LIBDIRS)
CMakeLists.txt
@@ -26,13 +26,86 @@ option(ZIG_TEST_COVERAGE "Build Zig with test coverage instrumentation" OFF)
 # git log -p -- deps/lld
 option(ZIG_FORCE_EXTERNAL_LLD "If your system has the LLD patches use it instead of the embedded LLD" OFF)
 
+find_package(LLVM REQUIRED CONFIG)
+include_directories(${LLVM_INCLUDE_DIRS})
 
-find_package(llvm)
-include_directories(${LLVM_INCLUDE_DIR})
-link_directories(${LLVM_LIBDIRS})
+# TODO: this currently doesn't work, it currently defines UNICODE but zig
+#       uses MBCS
+#add_definitions(${LLVM_DEFINITIONS})
 
-find_package(clang)
+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
+)
+
+find_package(CLANG REQUIRED CONFIG)
 include_directories(${CLANG_INCLUDE_DIRS})
+set(CLANG_LIBRARIES
+    clangFrontend
+    clangDriver
+    clangSerialization
+    clangSema
+    clangAnalysis
+    clangAST
+    clangParse
+    clangSema
+    clangBasic
+    clangEdit
+    clangLex
+)
+
 
 if(ZIG_FORCE_EXTERNAL_LLD)
     find_package(lld)