X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=cmake%2FModules%2FFindLLVM.cmake;fp=cmake%2FModules%2FFindLLVM.cmake;h=ba2dd1521ba9eecfe5ac25b466b15933574cd162;hp=0000000000000000000000000000000000000000;hb=f44ed1e33c85254a6176b1db3775b9b13baaaa29;hpb=f58969ddf1d22882bff102ef597c6f129255894a diff --git a/cmake/Modules/FindLLVM.cmake b/cmake/Modules/FindLLVM.cmake new file mode 100644 index 0000000..ba2dd15 --- /dev/null +++ b/cmake/Modules/FindLLVM.cmake @@ -0,0 +1,32 @@ +find_program(LLVM_CONFIG NAMES llvm-config-3.5 llvm-config) + +if(LLVM_CONFIG) + execute_process(COMMAND ${LLVM_CONFIG} --version + OUTPUT_VARIABLE LLVM_VERSION) + + if(((${LLVM_VERSION} VERSION_LESS 3.6.0) + AND (${LLVM_VERSION} VERSION_GREATER 3.5)) + OR (${LLVM_VERSION} VERSION_EQUAL 3.5)) + + execute_process(COMMAND ${LLVM_CONFIG} --cxxflags + OUTPUT_VARIABLE LLVM_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${LLVM_CONFIG} --ldflags + OUTPUT_VARIABLE LLVM_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${LLVM_CONFIG} --libs + OUTPUT_VARIABLE LLVM_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${LLVM_CONFIG} --system-libs + OUTPUT_VARIABLE LLVM_SYSTEM_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE) + + string(REPLACE -O2 "" LLVM_CFLAGS ${LLVM_CFLAGS}) + string(REPLACE -fno-exceptions "" LLVM_CFLAGS ${LLVM_CFLAGS}) + string(REPLACE -fno-rtti "" LLVM_CFLAGS ${LLVM_CFLAGS}) + string(REPLACE -DNDEBUG "" LLVM_CFLAGS ${LLVM_CFLAGS}) + string(REPLACE -I "-isystem" LLVM_CFLAGS ${LLVM_CFLAGS}) + + separate_arguments(LLVM_CFLAGS) + endif() +endif() + +if(NOT DEFINED LLVM_CFLAGS) + message(SEND_ERROR "LLVM 3.5 required but not found") +endif() \ No newline at end of file