authorgravatar for johnnymarler@gmail.comJonathan Marler <johnnymarler@gmail.com> 2017-09-11 18:27:41-06:00
committergravatar for johnnymarler@gmail.comJonathan Marler <johnnymarler@gmail.com> 2017-09-11 18:27:41-06:00
log67021e2bfff0b9caea432fd996031ab880afdbc5
tree2a4fbeeb37db3407292561c6eed9c06745df7842
parent7c81cd30de876f8bc56a4c689372e4d388b8608c

Modified cmake to use LLVM imported packages.


3 files changed, 77 insertions(+), 129 deletions(-)

CMakeLists.txt+77-4
......@@ -26,13 +26,86 @@ option(ZIG_TEST_COVERAGE "Build Zig with test coverage instrumentation" OFF)
2626# git log -p -- deps/lld
2727option(ZIG_FORCE_EXTERNAL_LLD "If your system has the LLD patches use it instead of the embedded LLD" OFF)
2828
29find_package(LLVM REQUIRED CONFIG)
30include_directories(${LLVM_INCLUDE_DIRS})
2931
30find_package(llvm)
31include_directories(${LLVM_INCLUDE_DIR})
32link_directories(${LLVM_LIBDIRS})
32# TODO: this currently doesn't work, it currently defines UNICODE but zig
33# uses MBCS
34#add_definitions(${LLVM_DEFINITIONS})
3335
34find_package(clang)
36link_directories(${LLVM_LIBRARY_DIRS})
37llvm_map_components_to_libnames(LLVM_LIBRARIES
38 LTO
39 Symbolize
40 XCoreDisassembler
41 XCoreCodeGen
42 XCoreAsmPrinter
43 SystemZDisassembler
44 SystemZCodeGen
45 SystemZAsmParser
46 SystemZAsmPrinter
47 SparcDisassembler
48 SparcCodeGen
49 SparcAsmParser
50 SparcAsmPrinter
51 PowerPCDisassembler
52 PowerPCCodeGen
53 PowerPCAsmParser
54 PowerPCAsmPrinter
55 NVPTXCodeGen
56 NVPTXAsmPrinter
57 MSP430CodeGen
58 MSP430AsmPrinter
59 MipsDisassembler
60 MipsCodeGen
61 MipsAsmParser
62 MipsAsmPrinter
63 LanaiDisassembler
64 LanaiCodeGen
65 LanaiAsmParser
66 LanaiAsmPrinter
67 HexagonDisassembler
68 HexagonCodeGen
69 HexagonAsmParser
70 BPFDisassembler
71 BPFCodeGen
72 BPFAsmPrinter
73 ARMDisassembler
74 ARMCodeGen
75 ARMAsmParser
76 ARMAsmPrinter
77 AMDGPUDisassembler
78 AMDGPUCodeGen
79 AMDGPUAsmParser
80 AMDGPUAsmPrinter
81 AArch64Disassembler
82 AArch64CodeGen
83 AArch64AsmParser
84 AArch64AsmPrinter
85 LibDriver
86 X86Disassembler
87 X86AsmParser
88 X86CodeGen
89 X86AsmPrinter
90 Core
91)
92
93find_package(CLANG REQUIRED CONFIG)
3594include_directories(${CLANG_INCLUDE_DIRS})
95set(CLANG_LIBRARIES
96 clangFrontend
97 clangDriver
98 clangSerialization
99 clangSema
100 clangAnalysis
101 clangAST
102 clangParse
103 clangSema
104 clangBasic
105 clangEdit
106 clangLex
107)
108
36109
37110if(ZIG_FORCE_EXTERNAL_LLD)
38111 find_package(lld)
cmake/Findclang.cmake deleted-50
......@@ -1,50 +0,0 @@
1# Copyright (c) 2016 Andrew Kelley
2# This file is MIT licensed.
3# See http://opensource.org/licenses/MIT
4
5# CLANG_FOUND
6# CLANG_INCLUDE_DIRS
7# CLANG_LIBRARIES
8
9find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
10 PATHS
11 ${LLVM_INSTALL_PREFIX}/include
12 /usr/lib/llvm/5/include
13 /usr/lib/llvm-5.0/include
14 /mingw64/include)
15
16if(NOT CLANG_INCLUDE_DIRS)
17 message(FATAL_ERROR "Failed to find CLANG header files")
18endif()
19
20macro(FIND_AND_ADD_CLANG_LIB _libname_)
21 string(TOUPPER ${_libname_} _prettylibname_)
22 find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_}
23 PATHS
24 ${LLVM_INSTALL_PREFIX}/lib
25 /usr/lib/llvm/5/lib
26 /usr/lib/llvm-5.0/lib
27 /mingw64/lib
28 /c/msys64/mingw64/lib
29 c:\\msys64\\mingw64\\lib)
30 if(CLANG_${_prettylibname_}_LIB)
31 set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_${_prettylibname_}_LIB})
32 endif()
33endmacro(FIND_AND_ADD_CLANG_LIB)
34
35FIND_AND_ADD_CLANG_LIB(clangFrontend)
36FIND_AND_ADD_CLANG_LIB(clangDriver)
37FIND_AND_ADD_CLANG_LIB(clangSerialization)
38FIND_AND_ADD_CLANG_LIB(clangSema)
39FIND_AND_ADD_CLANG_LIB(clangAnalysis)
40FIND_AND_ADD_CLANG_LIB(clangAST)
41FIND_AND_ADD_CLANG_LIB(clangParse)
42FIND_AND_ADD_CLANG_LIB(clangSema)
43FIND_AND_ADD_CLANG_LIB(clangBasic)
44FIND_AND_ADD_CLANG_LIB(clangEdit)
45FIND_AND_ADD_CLANG_LIB(clangLex)
46
47include(FindPackageHandleStandardArgs)
48find_package_handle_standard_args(CLANG DEFAULT_MSG CLANG_LIBRARIES CLANG_INCLUDE_DIRS)
49
50mark_as_advanced(CLANG_INCLUDE_DIRS CLANG_LIBRARIES)
cmake/Findllvm.cmake deleted-75
......@@ -1,75 +0,0 @@
1# Copyright (c) 2014 Andrew Kelley
2# This file is MIT licensed.
3# See http://opensource.org/licenses/MIT
4
5# LLVM_INCLUDE_DIR
6# LLVM_LIBRARIES
7# LLVM_LIBDIRS
8
9if(LLVM_INSTALL_PREFIX)
10 find_program(LLVM_CONFIG_EXE
11 NAMES llvm-config-5.0 llvm-config
12 PATHS ${LLVM_INSTALL_PREFIX}/bin
13 NO_DEFAULT_PATH)
14 if(NOT LLVM_CONFIG_EXE)
15 message(FATAL_ERROR "Invalid LLVM_INSTALL_PREFIX \"${LLVM_INSTALL_PREFIX}\", could not find llvm-config")
16 endif()
17else()
18 find_program(LLVM_CONFIG_EXE
19 NAMES llvm-config-5.0 llvm-config
20 PATHS
21 "/mingw64/bin"
22 "/c/msys64/mingw64/bin"
23 "c:/msys64/mingw64/bin"
24 "C:/Libraries/llvm-5.0.0/bin")
25 if(NOT LLVM_CONFIG_EXE)
26 message(FATAL_ERROR "Could not find llvm-config, use -DLLVM_INSTALL_PREFIX to specify the install path")
27 endif()
28 execute_process(
29 COMMAND ${LLVM_CONFIG_EXE} --prefix
30 OUTPUT_VARIABLE LLVM_INSTALL_PREFIX
31 OUTPUT_STRIP_TRAILING_WHITESPACE)
32endif()
33
34if(${LLVM_INSTALL_PREFIX} MATCHES "^.* ")
35 # NOTE: this is a limitation due to llvm-config. If the path contains spaces then there's
36 # no way to tell from the output of llvm-config whether a space is seperating a filename, or
37 # just a space in the path name.
38 message(FATAL_ERROR "The LLVM install path \"${LLVM_INSTALL_PREFIX}\" cannot contain spaces")
39endif()
40
41execute_process(
42 COMMAND ${LLVM_CONFIG_EXE} --libs
43 OUTPUT_VARIABLE LLVM_LIBRARIES_STRING
44 OUTPUT_STRIP_TRAILING_WHITESPACE)
45string(REPLACE " " ";" LLVM_LIBRARIES ${LLVM_LIBRARIES_STRING})
46
47execute_process(
48 COMMAND ${LLVM_CONFIG_EXE} --system-libs
49 OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_STRING
50 OUTPUT_STRIP_TRAILING_WHITESPACE)
51string(REPLACE " " ";" LLVM_SYSTEM_LIBS ${LLVM_SYSTEM_LIBS_STRING})
52
53execute_process(
54 COMMAND ${LLVM_CONFIG_EXE} --libdir
55 OUTPUT_VARIABLE LLVM_LIBDIRS
56 OUTPUT_STRIP_TRAILING_WHITESPACE)
57
58execute_process(
59 COMMAND ${LLVM_CONFIG_EXE} --includedir
60 OUTPUT_VARIABLE LLVM_INCLUDE_DIR
61 OUTPUT_STRIP_TRAILING_WHITESPACE)
62
63find_library(LLVM_LIBRARY NAMES LLVM)
64
65set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
66
67if(LLVM_LIBRARY)
68 set(LLVM_LIBRARIES ${LLVM_LIBRARY})
69endif()
70
71
72include(FindPackageHandleStandardArgs)
73find_package_handle_standard_args(LLVM DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIR)
74
75mark_as_advanced(LLVM_INCLUDE_DIR LLVM_LIBRARIES LLVM_LIBDIRS)