Skip to content

Commit 5b3df08

Browse files
committed
Use the LLVM cmake config instead of llvm-config
1 parent 58ebac8 commit 5b3df08

File tree

1 file changed

+19
-51
lines changed

1 file changed

+19
-51
lines changed

bindgen/CMakeLists.txt

Lines changed: 19 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,34 @@
11
cmake_minimum_required(VERSION 3.9)
22
project(scala-native-bindgen)
33

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)
235

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}")
4010

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})
4513

46-
include_directories(SYSTEM ${LLVM_INCLUDE_DIR})
14+
message(STATUS "Using LLVM defs: ${LLVM_DEFINITIONS}")
15+
add_definitions(${LLVM_DEFINITIONS})
4716

48-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LLVM_CXX_FLAGS}")
4917
add_compile_options(-fexceptions -std=c++11 -Wall -Wconversion -Werror)
5018

5119
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
5220
# macOS does not guarantee backwards compatible system calls and therefore
5321
# discourages statically linked binaries. Instead add -L/usr/lib before the
5422
# LLVM LDFLAGS to link against the dynamic system libc++ instead of the one
5523
# 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")
5725
else()
58-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LLVM_LINKER_FLAGS} -static")
26+
set(BINDGEN_LINK_FLAG "-static")
5927
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})
6032

6133
add_executable(bindgen
6234
Main.cpp
@@ -116,27 +88,23 @@ add_executable(bindgen
11688
set_target_properties(bindgen
11789
PROPERTIES
11890
OUTPUT_NAME scala-native-bindgen
91+
LINK_FLAGS "${BINDGEN_LINK_FLAG}"
11992
)
12093

94+
llvm_map_components_to_libnames(LLVM_LIBS support core irreader object option profiledata)
95+
12196
target_link_libraries(bindgen
12297
PRIVATE
12398
clangFrontend
12499
clangTooling
125-
126-
clangFrontend
127100
clangSerialization
128101
clangDriver
129-
clangTooling
130102
clangParse
131103
clangSema
132-
133104
clangAnalysis
134-
135105
clangEdit
136106
clangAST
137107
clangLex
138108
clangBasic
139-
140-
"${LLVM_LIBS}"
141-
"${LLVM_SYSTEM_LIBS}"
109+
${LLVM_LIBS}
142110
)

0 commit comments

Comments
 (0)