blob: 0f8faec7f93175ce82cbb3af3cac8fe0fa60fde6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
function(_LLVM_import)
if(NOT TARGET llvm)
find_program(llvm_config "llvm-config")
if (NOT llvm_config)
return()
endif(NOT llvm_config)
message(STATUS "Found llvm-config: ${llvm_config}")
# get llvm compile options
execute_process(COMMAND ${llvm_config} --cppflags OUTPUT_VARIABLE
LLVM_CPPFLAGS_STR OUTPUT_STRIP_TRAILING_WHITESPACE)
# split one string to list of option items
string(REPLACE " " ";" LLVM_CPPFLAGS ${LLVM_CPPFLAGS_STR})
execute_process(COMMAND ${llvm_config} --has-rtti OUTPUT_VARIABLE
LLVM_HAS_RTTI OUTPUT_STRIP_TRAILING_WHITESPACE)
if("${LLVM_HAS_RTTI}" STREQUAL "NO")
list(APPEND LLVM_CPPFLAGS "-fno-rtti")
endif()
# note: "llvm-config --cxxflags" returns whole string but also includes
# unwanted "-O3 -DNDEBUG" and several "-Wno-" options so this is not used
# get llvm link options
execute_process(COMMAND ${llvm_config} --ldflags OUTPUT_VARIABLE
LLVM_LINKFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${llvm_config} --system-libs
OUTPUT_VARIABLE LLVM_LINKSYSLIBS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${llvm_config} --libs core mcjit native
OUTPUT_VARIABLE LLVM_LINKLIBS OUTPUT_STRIP_TRAILING_WHITESPACE)
add_library(llvm INTERFACE)
foreach(ONE_CPPFLAG ${LLVM_CPPFLAGS})
target_compile_options(llvm INTERFACE ${ONE_CPPFLAG})
endforeach()
target_link_libraries(llvm INTERFACE ${LLVM_LINKFLAGS})
target_link_libraries(llvm INTERFACE ${LLVM_LINKLIBS})
target_link_libraries(llvm INTERFACE ${LLVM_LINKSYSLIBS})
endif(NOT TARGET llvm)
set(LLVM_FOUND TRUE PARENT_SCOPE)
endfunction(_LLVM_import)
_LLVM_import()
|