aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--CMakeLists.txt50
1 files changed, 50 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..0d0c26c
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,50 @@
+
+cmake_minimum_required(VERSION 3.14.5)
+project(cgrep VERSION 1.1)
+set(CMAKE_CXX_COMPILER clang++)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED True)
+
+function(CleanMessage)
+ execute_process(COMMAND ${CMAKE_COMMAND} -E echo "${ARGN}")
+endfunction()
+
+execute_process(COMMAND llvm-config --cxxflags OUTPUT_VARIABLE LLVM_CXX_FLAGS)
+string(REGEX REPLACE "\n$" "" LLVM_CXX_FLAGS "${LLVM_CXX_FLAGS}")
+execute_process(COMMAND llvm-config --src-root OUTPUT_VARIABLE LLVM_SRC_ROOT)
+string(REGEX REPLACE "\n$" "" LLVM_SRC_ROOT "${LLVM_SRC_ROOT}")
+execute_process(COMMAND llvm-config --obj-root OUTPUT_VARIABLE LLVM_OBJ_ROOT)
+string(REGEX REPLACE "\n$" "" LLVM_OBJ_ROOT "${LLVM_OBJ_ROOT}")
+execute_process(COMMAND llvm-config --ldflags OUTPUT_VARIABLE LLVM_LD_FLAGS)
+string(REGEX REPLACE "\n" "" LLVM_LD_FLAGS "${LLVM_LD_FLAGS}")
+execute_process(COMMAND llvm-config --libs OUTPUT_VARIABLE LLVM_LIBS)
+string(REGEX REPLACE "\n$" "" LLVM_LIBS "${LLVM_LIBS}")
+string(REGEX REPLACE "^-l" "" LLVM_LIBS "${LLVM_LIBS}")
+execute_process(COMMAND llvm-config --system-libs OUTPUT_VARIABLE LLVM_SYS_LIBS)
+string(REGEX REPLACE "\n$" "" LLVM_SYS_LIBS "${LLVM_SYS_LIBS}")
+string(REGEX REPLACE "^-l" "" LLVM_SYS_LIBS "${LLVM_SYS_LIBS}")
+
+add_compile_options(${LLVM_CXX_FLAGS})
+add_compile_options(-I"${LLVM_SRC_ROOT}/tools/clang/include")
+add_compile_options(-I"${LLVM_OBJ_ROOT}/tools/clang/include")
+
+set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin)
+set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
+set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
+
+add_link_options(${LLVM_LD_FLAGS})
+
+add_executable(cgrep cgrep.cpp ${CMAKE_SOURCE_DIR}/cfe-extra/cfe_extra.cpp)
+option(USE_MONOLITH_LIBTOOLING "use libtooling built into a single library" OFF)
+if (USE_MONOLITH_LIBTOOLING)
+ target_link_libraries(cgrep libclang-cpp)
+else()
+ target_link_libraries(cgrep -Wl,--start-group clangAST clangAnalysis clangBasic clangDriver clangEdit clangFrontend clangFrontendTool clangLex clangParse clangSema clangEdit clangASTMatchers clangRewrite clangRewriteFrontend clangStaticAnalyzerFrontend clangStaticAnalyzerCheckers clangStaticAnalyzerCore clangSerialization clangToolingCore clangTooling stdc++ LLVMRuntimeDyld m -Wl,--end-group)
+endif()
+target_link_libraries(cgrep ${LLVM_SYS_LIBS})
+target_link_libraries(cgrep ${LLVM_LIBS})
+
+include_directories("${PROJECT_SOURCE_DIR}/cfe-extra")
+target_include_directories(cgrep PUBLIC "${PROJECT_BINARY_DIR}" "${PROJECT_SOURCE_DIR/cfe-extra}")
+
+