initial commit
This commit is contained in:
commit
8385bbb030
7 changed files with 562 additions and 0 deletions
83
CMakeLists.txt
Normal file
83
CMakeLists.txt
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
cmake_minimum_required(VERSION 3.20)
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE)
|
||||
endif()
|
||||
|
||||
project(errorck LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(REQUIRED_LLVM_VERSION "18.1.8" CACHE STRING "Required LLVM/Clang version")
|
||||
set(LLVM_ROOT "" CACHE PATH "Prefix containing lib/cmake/llvm and lib/cmake/clang")
|
||||
set(LLVM_TAG "llvmorg-18.1.8" CACHE STRING "llvm-project git tag/commit to fetch")
|
||||
|
||||
if(LLVM_ROOT)
|
||||
list(PREPEND CMAKE_PREFIX_PATH "${LLVM_ROOT}")
|
||||
endif()
|
||||
|
||||
find_package(LLVM CONFIG QUIET)
|
||||
find_package(Clang CONFIG QUIET)
|
||||
|
||||
if(LLVM_FOUND AND DEFINED LLVM_PACKAGE_VERSION AND NOT (LLVM_PACKAGE_VERSION VERSION_EQUAL REQUIRED_LLVM_VERSION))
|
||||
if(LLVM_ROOT)
|
||||
message(FATAL_ERROR "Found LLVM ${LLVM_PACKAGE_VERSION} at LLVM_ROOT, but required ${REQUIRED_LLVM_VERSION}.")
|
||||
else()
|
||||
set(LLVM_FOUND FALSE)
|
||||
set(Clang_FOUND FALSE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT (LLVM_FOUND AND Clang_FOUND))
|
||||
include(FetchContent)
|
||||
|
||||
FetchContent_Declare(
|
||||
llvm_project
|
||||
GIT_REPOSITORY https://github.com/llvm/llvm-project.git
|
||||
GIT_TAG ${LLVM_TAG}
|
||||
SOURCE_SUBDIR llvm
|
||||
)
|
||||
|
||||
set(LLVM_ENABLE_PROJECTS "clang;clang-tools-extra" CACHE STRING "" FORCE)
|
||||
FetchContent_MakeAvailable(llvm_project)
|
||||
endif()
|
||||
|
||||
add_executable(errorck "${CMAKE_CURRENT_LIST_DIR}/main.cpp")
|
||||
target_compile_options(errorck PRIVATE
|
||||
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>>:
|
||||
-Wall -Wextra>
|
||||
$<$<CXX_COMPILER_ID:MSVC>:
|
||||
/W4>)
|
||||
target_include_directories(errorck PRIVATE ${LLVM_INCLUDE_DIRS})
|
||||
target_compile_definitions(errorck PRIVATE ${LLVM_DEFINITIONS})
|
||||
if(DEFINED CLANG_INCLUDE_DIRS)
|
||||
target_include_directories(errorck PRIVATE ${CLANG_INCLUDE_DIRS})
|
||||
endif()
|
||||
if(NOT (LLVM_FOUND AND Clang_FOUND))
|
||||
target_include_directories(errorck PRIVATE
|
||||
${LLVM_SOURCE_DIR}/include
|
||||
${LLVM_BINARY_DIR}/include
|
||||
${LLVM_EXTERNAL_CLANG_SOURCE_DIR}/include
|
||||
${LLVM_BINARY_DIR}/tools/clang/include
|
||||
)
|
||||
endif()
|
||||
|
||||
if(TARGET clang-cpp)
|
||||
target_link_libraries(errorck PRIVATE clang-cpp)
|
||||
else()
|
||||
target_link_libraries(errorck PRIVATE
|
||||
clangTooling
|
||||
clangFrontend
|
||||
clangSerialization
|
||||
clangDriver
|
||||
clangParse
|
||||
clangSema
|
||||
clangAnalysis
|
||||
clangRewrite
|
||||
clangAST
|
||||
clangASTMatchers
|
||||
clangEdit
|
||||
clangLex
|
||||
clangBasic
|
||||
)
|
||||
endif()
|
||||
Loading…
Add table
Add a link
Reference in a new issue