From: 박세희/동작제어Lab(SR)/Principal Engineer/삼성전자 Date: Wed, 22 Aug 2018 02:19:15 +0000 (+0900) Subject: Add 'llvm' as external module (#1110) X-Git-Tag: nncc_backup~2099 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b8a61e6cca0b9bc33d3402277b1f6cd74d3e549c;p=platform%2Fcore%2Fml%2Fnnfw.git Add 'llvm' as external module (#1110) This commit adds 'llvm' as external module which provides compile/link options to use LLVM libraries. Signed-off-by: SaeHie Park --- diff --git a/cmake/packages/LLVMConfig.cmake b/cmake/packages/LLVMConfig.cmake new file mode 100644 index 0000000..0f8faec --- /dev/null +++ b/cmake/packages/LLVMConfig.cmake @@ -0,0 +1,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()