|
1 | 1 | cmake_minimum_required(VERSION 3.9)
|
2 | 2 | project(scala-native-bindgen)
|
3 | 3 |
|
4 |
| -# Locate LLVMConfig.cmake |
5 |
| -#find_package(LLVM REQUIRED CONFIG) |
6 |
| -#message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") |
7 |
| -#message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") |
8 |
| - |
9 |
| -find_program(LLVM_CONFIG_PROGRAM |
10 |
| - NAMES |
11 |
| -# llvm-config-${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR} |
12 |
| - llvm-config-6.0 |
13 |
| - llvm-config-5.0 |
14 |
| - llvm-config-4.0 |
15 |
| - llvm-config |
16 |
| -) |
17 |
| - |
18 |
| -execute_process(COMMAND ${LLVM_CONFIG_PROGRAM} --includedir |
19 |
| - OUTPUT_VARIABLE LLVM_INCLUDE_DIR |
20 |
| - OUTPUT_STRIP_TRAILING_WHITESPACE |
21 |
| -) |
22 |
| -message(STATUS "Using LLVM include dir: ${LLVM_INCLUDE_DIR}") |
| 4 | +set(USE_SHARED OFF) |
23 | 5 |
|
24 |
| -execute_process(COMMAND ${LLVM_CONFIG_PROGRAM} --cxxflags |
25 |
| - OUTPUT_VARIABLE LLVM_CXX_FLAGS |
26 |
| - OUTPUT_STRIP_TRAILING_WHITESPACE |
27 |
| -) |
28 |
| -message(STATUS "Using LLVM CXXFLAGS: ${LLVM_CXX_FLAGS}") |
29 |
| - |
30 |
| -execute_process(COMMAND ${LLVM_CONFIG_PROGRAM} --ldflags |
31 |
| - OUTPUT_VARIABLE LLVM_LINKER_FLAGS |
32 |
| - OUTPUT_STRIP_TRAILING_WHITESPACE |
33 |
| -) |
34 |
| -message(STATUS "Using LLVM LDFLAGS: ${LLVM_LINKER_FLAGS}") |
35 |
| - |
36 |
| -execute_process(COMMAND ${LLVM_CONFIG_PROGRAM} --libs --link-static |
37 |
| - OUTPUT_VARIABLE LLVM_LIBS |
38 |
| - OUTPUT_STRIP_TRAILING_WHITESPACE |
39 |
| -) |
| 6 | +# Locate LLVMConfig.cmake |
| 7 | +find_package(LLVM REQUIRED CONFIG) |
| 8 | +message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") |
| 9 | +message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") |
40 | 10 |
|
41 |
| -execute_process(COMMAND ${LLVM_CONFIG_PROGRAM} --system-libs --link-static |
42 |
| - OUTPUT_VARIABLE LLVM_SYSTEM_LIBS |
43 |
| - OUTPUT_STRIP_TRAILING_WHITESPACE |
44 |
| -) |
| 11 | +message(STATUS "Using LLVM include dirs: ${LLVM_INCLUDE_DIRS}") |
| 12 | +include_directories(SYSTEM ${LLVM_INCLUDE_DIRS}) |
45 | 13 |
|
46 |
| -include_directories(SYSTEM ${LLVM_INCLUDE_DIR}) |
| 14 | +message(STATUS "Using LLVM defs: ${LLVM_DEFINITIONS}") |
| 15 | +add_definitions(${LLVM_DEFINITIONS}) |
47 | 16 |
|
48 |
| -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LLVM_CXX_FLAGS}") |
49 | 17 | add_compile_options(-fexceptions -std=c++11 -Wall -Wconversion -Werror)
|
50 | 18 |
|
51 | 19 | if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
52 | 20 | # macOS does not guarantee backwards compatible system calls and therefore
|
53 | 21 | # discourages statically linked binaries. Instead add -L/usr/lib before the
|
54 | 22 | # LLVM LDFLAGS to link against the dynamic system libc++ instead of the one
|
55 | 23 | # from LLVM.
|
56 |
| - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/lib ${LLVM_LINKER_FLAGS}") |
| 24 | + set(BINDGEN_LINK_FLAG "-L/usr/lib") |
57 | 25 | else()
|
58 |
| - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LLVM_LINKER_FLAGS} -static") |
| 26 | + set(BINDGEN_LINK_FLAG "-static") |
59 | 27 | endif()
|
| 28 | +message(STATUS "Using link flag: ${BINDGEN_LINK_FLAG}") |
| 29 | + |
| 30 | +message(STATUS "Using LLVM library directories: ${LLVM_LIBRARY_DIRS}") |
| 31 | +link_directories(${LLVM_LIBRARY_DIRS}) |
60 | 32 |
|
61 | 33 | add_executable(bindgen
|
62 | 34 | Main.cpp
|
@@ -116,27 +88,23 @@ add_executable(bindgen
|
116 | 88 | set_target_properties(bindgen
|
117 | 89 | PROPERTIES
|
118 | 90 | OUTPUT_NAME scala-native-bindgen
|
| 91 | + LINK_FLAGS "${BINDGEN_LINK_FLAG}" |
119 | 92 | )
|
120 | 93 |
|
| 94 | +llvm_map_components_to_libnames(LLVM_LIBS support core irreader object option profiledata) |
| 95 | + |
121 | 96 | target_link_libraries(bindgen
|
122 | 97 | PRIVATE
|
123 | 98 | clangFrontend
|
124 | 99 | clangTooling
|
125 |
| - |
126 |
| - clangFrontend |
127 | 100 | clangSerialization
|
128 | 101 | clangDriver
|
129 |
| - clangTooling |
130 | 102 | clangParse
|
131 | 103 | clangSema
|
132 |
| - |
133 | 104 | clangAnalysis
|
134 |
| - |
135 | 105 | clangEdit
|
136 | 106 | clangAST
|
137 | 107 | clangLex
|
138 | 108 | clangBasic
|
139 |
| - |
140 |
| - "${LLVM_LIBS}" |
141 |
| - "${LLVM_SYSTEM_LIBS}" |
| 109 | + ${LLVM_LIBS} |
142 | 110 | )
|
0 commit comments