cmake_minimum_required(VERSION 3.26.4) project(reman3_tooling) set(LLVM_PATH "" CACHE STRING "Path to the LLVM source tree") set(LLVM_ADD_PATH ${LLVM_PATH}/llvm) if(NOT EXISTS ${LLVM_ADD_PATH}/CMakeLists.txt) message(FATAL_ERROR "LLVM_PATH is invalid (${LLVM_PATH})") endif() set(BUILD_SHARED_LIBS OFF) set(LLVM_INCLUDE_UTILS OFF CACHE BOOL "" FORCE) set(LLVM_INCLUDE_RUNTIMES OFF CACHE BOOL "" FORCE) set(LLVM_BUILD_RUNTIME OFF CACHE BOOL "" FORCE) set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "" FORCE) set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "" FORCE) set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "" FORCE) set(LLVM_ENABLE_OCAMLDOC OFF CACHE BOOL "" FORCE) set(LLVM_ENABLE_BINDINGS OFF CACHE BOOL "" FORCE) set(LLVM_ENABLE_TELEMETRY OFF CACHE BOOL "" FORCE) set(LLVM_INCLUDE_BENCHMARKS OFF CACHE BOOL "" FORCE) set(LLVM_TARGETS_TO_BUILD "X86" CACHE STRING "" FORCE) set(LLVM_ENABLE_PROJECTS "clang" CACHE STRING "" FORCE) set(LLVM_BINARY_DIR ${CMAKE_BINARY_DIR}/external/llvm) add_subdirectory(${LLVM_ADD_PATH} ${LLVM_BINARY_DIR}) add_subdirectory(../game_re/third_party/spdlog spdlog) # Add the clang tooling executable add_executable(clang_tool main.cpp) target_include_directories(clang_tool PRIVATE ${LLVM_PATH}/llvm/include ${LLVM_PATH}/clang/include ${LLVM_BINARY_DIR}/include ${LLVM_BINARY_DIR}/tools/clang/include ) # Link against clang tooling libraries target_link_libraries(clang_tool clangTooling clangFrontend clangASTMatchers clangAST clangBasic clangSerialization clangDriver clangParse clangSema clangAnalysis clangEdit clangRewrite clangLex spdlog::spdlog ) # Include LLVM/Clang headers target_include_directories(clang_tool PRIVATE ${LLVM_INCLUDE_DIRS} ${CLANG_INCLUDE_DIRS} )