@@ -17,79 +17,30 @@ set(DEFAULT_BC_COMPILER_FLAGS
17
17
-ffreestanding -fno-common -fno-builtin -fno-exceptions -fno-rtti
18
18
-fno-asynchronous-unwind-tables -Wno-unneeded-internal -declaration
19
19
-Wno-unused-function -Wgnu-inline-cpp-without-extern -std=c++14
20
+ -Wno-pass-failed=transform-warning
20
21
${EXTRA_BC_SYSROOT}
21
22
)
22
23
23
- set (CLANG_CXX_EXECUTABLE_NAME "clang++" )
24
- set (LLVMLINK_EXECUTABLE_NAME "llvm-link" )
24
+ find_package (Clang CONFIG REQUIRED)
25
+ get_target_property (CLANG_PATH clang LOCATION )
26
+ get_target_property (LLVMLINK_PATH llvm-link LOCATION )
25
27
26
- if (DEFINED WIN32 )
27
- set (CLANG_CXX_EXECUTABLE_NAME "${CLANG_CXX_EXECUTABLE_NAME} .exe" )
28
- set (LLVMLINK_EXECUTABLE_NAME "${LLVMLINK_EXECUTABLE_NAME} .exe" )
29
- endif ()
30
-
31
- if (DEFINED ENV{LLVM_INSTALL_PREFIX})
32
- message (STATUS "Setting LLVM_INSTALL_PREFIX from the environment variable..." )
33
- set (LLVM_INSTALL_PREFIX $ENV{LLVM_INSTALL_PREFIX} )
34
- endif ()
35
-
36
- if (DEFINED CXX_COMMON_REPOSITORY_ROOT)
37
- if (NOT DEFINED LLVM_INSTALL_PREFIX)
38
- set (LLVM_INSTALL_PREFIX "${CXX_COMMON_REPOSITORY_ROOT} /llvm" CACHE PATH "Path to LLVM install prefix" )
39
- endif ()
40
- endif ()
28
+ file (WRITE "${CMAKE_BINARY_DIR} /emitllvm.test.cpp" "int main(int argc, char* argv[]){return 0;}\n\n " )
41
29
42
- if (DEFINED LLVM_INSTALL_PREFIX)
43
- message (STATUS "LLVM bin dir: ${LLVM_INSTALL_PREFIX} /bin" )
44
- # clang path
45
- find_program (CLANG_PATH
46
- NAMES "${CLANG_CXX_EXECUTABLE_NAME} "
47
- HINTS "${LLVM_INSTALL_PREFIX} /bin"
48
- NO_DEFAULT_PATH
49
- )
30
+ execute_process (COMMAND "${CLANG_PATH} " "-emit-llvm" "-c" "emitllvm.test.cpp" "-o" "emitllvm.test.cpp.bc"
31
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR} "
32
+ RESULT_VARIABLE AOUT_IS_NOT_BC
33
+ OUTPUT_QUIET ERROR_QUIET
34
+ )
50
35
51
- # llvm-link path
52
- find_program (LLVMLINK_PATH
53
- NAMES "${LLVMLINK_EXECUTABLE_NAME} "
54
- HINTS "${LLVM_INSTALL_PREFIX} /bin"
55
- NO_DEFAULT_PATH
56
- )
36
+ if (NOT "${AOUT_IS_NOT_BC} " STREQUAL "0" )
37
+ message (SEND_ERROR "The following compiler is not suitable to generate bitcode: ${CLANG_PATH} " )
57
38
else ()
58
- # clang path
59
- if ("${CMAKE_CXX_COMPILER} " STREQUAL "${CLANG_CXX_EXECUTABLE_NAME} " )
60
- set (CLANG_PATH "${CMAKE_CXX_COMPILER} " )
61
-
62
- else ()
63
- find_program (CLANG_PATH
64
- NAMES "${CLANG_CXX_EXECUTABLE_NAME} "
65
- PATHS "/usr/bin" "/usr/local/bin" "${LLVM_INSTALL_PREFIX} /bin" "${LLVM_TOOLS_BINARY_DIR} " "C:/Program Files/LLVM/bin" "C:/Program Files (x86)/LLVM/bin"
66
- )
67
- endif ()
68
-
69
- # llvm-link path
70
- find_program (LLVMLINK_PATH
71
- NAMES "${LLVMLINK_EXECUTABLE_NAME} "
72
- PATHS "/usr/bin" "/usr/local/bin" "${LLVM_INSTALL_PREFIX} /bin" "${LLVM_TOOLS_BINARY_DIR} " "C:/Program Files/LLVM/bin" "C:/Program Files (x86)/LLVM/bin"
73
- )
74
- endif ()
75
-
76
- if ((NOT "${CLANG_PATH} " MATCHES "CLANG_PATH-NOTFOUND" ) AND (NOT "${LLVMLINK_PATH} " MATCHES "LLVMLINK_PATH-NOTFOUND" ))
77
- file (WRITE "${CMAKE_BINARY_DIR} /emitllvm.test.cpp" "int main(int argc, char* argv[]){return 0;}\n\n " )
39
+ message (STATUS "The following compiler has been selected to compile the bitcode: ${CLANG_PATH} " )
40
+ message (STATUS "The following linker has been selected to link the bitcode: ${LLVMLINK_PATH} " )
78
41
79
- execute_process (COMMAND "${CLANG_PATH} " "-emit-llvm" "-c" "emitllvm.test.cpp" "-o" "emitllvm.test.cpp.bc"
80
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR} "
81
- RESULT_VARIABLE AOUT_IS_NOT_BC
82
- OUTPUT_QUIET ERROR_QUIET
83
- )
84
-
85
- if (NOT "${AOUT_IS_NOT_BC} " STREQUAL "0" )
86
- message (SEND_ERROR "The following compiler is not suitable to generate bitcode: ${CLANG_PATH} " )
87
- else ()
88
- message (STATUS "The following compiler has been selected to compile the bitcode: ${CLANG_PATH} " )
89
-
90
- set (CMAKE_BC_COMPILER "${CLANG_PATH} " CACHE PATH "Bitcode Compiler" )
91
- set (CMAKE_BC_LINKER "${LLVMLINK_PATH} " CACHE PATH "Bitcode Linker" )
92
- endif ()
42
+ set (CMAKE_BC_COMPILER "${CLANG_PATH} " CACHE PATH "Bitcode Compiler" )
43
+ set (CMAKE_BC_LINKER "${LLVMLINK_PATH} " CACHE PATH "Bitcode Linker" )
93
44
endif ()
94
45
95
46
#
0 commit comments