@@ -17,79 +17,30 @@ set(DEFAULT_BC_COMPILER_FLAGS
1717 -ffreestanding -fno-common -fno-builtin -fno-exceptions -fno-rtti
1818 -fno-asynchronous-unwind-tables -Wno-unneeded-internal -declaration
1919 -Wno-unused-function -Wgnu-inline-cpp-without-extern -std=c++14
20+ -Wno-pass-failed=transform-warning
2021 ${EXTRA_BC_SYSROOT}
2122)
2223
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 )
2527
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 " )
4129
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+ )
5035
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} " )
5738else ()
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} " )
7841
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" )
9344endif ()
9445
9546#
0 commit comments