diff options
author | monster <monster@ydb.tech> | 2022-07-07 14:41:37 +0300 |
---|---|---|
committer | monster <monster@ydb.tech> | 2022-07-07 14:41:37 +0300 |
commit | 06e5c21a835c0e923506c4ff27929f34e00761c2 (patch) | |
tree | 75efcbc6854ef9bd476eb8bf00cc5c900da436a2 /cmake/llvm-tools.cmake | |
parent | 03f024c4412e3aa613bb543cf1660176320ba8f4 (diff) | |
download | ydb-06e5c21a835c0e923506c4ff27929f34e00761c2.tar.gz |
fix ya.make
Diffstat (limited to 'cmake/llvm-tools.cmake')
-rw-r--r-- | cmake/llvm-tools.cmake | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/cmake/llvm-tools.cmake b/cmake/llvm-tools.cmake new file mode 100644 index 0000000000..b53345232a --- /dev/null +++ b/cmake/llvm-tools.cmake @@ -0,0 +1,48 @@ +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CLANGPLUSPLUS ${CMAKE_CXX_COMPILER}) + message(STATUS "Using ${CLANGPLUSPLUS} for c++ to LLVM IR translation") +else() + find_program(CLANGPLUSPLUS NAMES clang++-12 clang++) + if (CLANGPLUSPLUS MATCHES "CLANGPLUSPLUS-NOTFOUND") + message(SEND_ERROR "clang++ not found") + else() + message(STATUS "Using ${CLANGPLUSPLUS} for c++ to LLVM IR translation") + endif() +endif() + +find_program(LLVMLINK NAMES llvm-link-12 llvm-link) +if (LLVMLINK MATCHES "LLVMLINK-NOTFOUND") + message(SEND_ERROR "llvm-link not found") +else() + message(STATUS "Using ${LLVMLINK} for LLVM IR linking") +endif() +find_program(LLVMOPT NAMES opt-12 opt) +if (LLVMOPT MATCHES "LLVMOPT-NOTFOUND") + message(SEND_ERROR "llvm opt tool not found") +else() + message(STATUS "Using ${LLVMOPT} for LLVM IR optimization") +endif() + +function(llvm_compile_cxx Tgt Inpt Out Tool) + list(APPEND TARGET_INCLUDES "-I$<JOIN:$<TARGET_PROPERTY:${Tgt},INCLUDE_DIRECTORIES>,$<SEMICOLON>-I>") + list(APPEND TARGET_COMPILE_OPTIONS "$<JOIN:$<TARGET_PROPERTY:${Tgt},COMPILE_OPTIONS>,$<SEMICOLON>>") + get_target_property(TARGET_STANDARD ${Tgt} CXX_STANDARD) + + add_custom_command( + OUTPUT ${Out} + COMMAND + ${Tool} + ${TARGET_INCLUDES} + ${TARGET_COMPILE_OPTIONS} + -std=c++${TARGET_STANDARD} + -Wno-unknown-warning-option + -fno-lto + -emit-llvm + -c + ${Inpt} + -o + ${Out} + COMMAND_EXPAND_LISTS + DEPENDS ${Inpt} ${Tool} + ) +endfunction() |