reman3/tooling/CMakeLists.txt

61 lines
1.7 KiB
CMake

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}
)