diff --git a/CMakeLists.txt b/CMakeLists.txt index 399c0e86..b68fdd7c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,38 +1,40 @@ cmake_minimum_required(VERSION 3.22) -project(clice) +project(CLICE) set(CMAKE_CXX_STANDARD 20) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_RELEASE} -w -g -O0 -fno-rtti") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_RELEASE} -w") -set(JSON_BuildTests OFF CACHE INTERNAL "") -set(LLVM_ENABLE_PROJECTS "clang") -set(LLVM_TARGETS_TO_BUILD "X86") -set(LLVM_USE_LINKER "lld") -set(BUILD_SHARED_LIBS ON) -set(LLVM_ABI_BREAKING_CHECKS "FORCE_OFF") +set(CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/deps/llvm/build-install") +find_package(LLVM REQUIRED CONFIG) +find_package(Clang REQUIRED CONFIG) -add_subdirectory("${CMAKE_SOURCE_DIR}/external/llvm-project/llvm") -add_subdirectory("${CMAKE_SOURCE_DIR}/external/json") -add_subdirectory("${CMAKE_SOURCE_DIR}/external/libuv") -add_subdirectory("${CMAKE_SOURCE_DIR}/external/spdlog") +message(STATUS "Found LLVM: ${LLVM_DIR}, Version: ${LLVM_PACKAGE_VERSION}") +add_definitions(${LLVM_DEFINITIONS}) -set(INCLUDE_DIRS - "${CMAKE_SOURCE_DIR}/include" - "${CMAKE_SOURCE_DIR}/external/llvm-project/clang/lib/Sema" - "${CMAKE_SOURCE_DIR}/external/json/include" - "${CMAKE_SOURCE_DIR}/external/libuv/include" - "${CMAKE_SOURCE_DIR}/external/spdlog/include" + +add_subdirectory(${CMAKE_SOURCE_DIR}/deps/libuv) +add_subdirectory(${CMAKE_SOURCE_DIR}/deps/spdlog) + +add_executable(clice) + +target_sources(clice PRIVATE + src/main.cpp ) -set(PCH_HEADER "${CMAKE_SOURCE_DIR}/include/Clang/Clang.h") +target_include_directories(clice PRIVATE + ${LLVM_INCLUDE_DIRS} + ${CMAKE_SOURCE_DIR}/deps/libuv/include + ${CMAKE_SOURCE_DIR}/deps/spdlog/include +) set(LLVM_LIBS LLVMCore LLVMSupport - LLVMIRReader +) + +set(CLANG_LIBS clangAST - clangASTMatchers clangBasic clangDependencyScanning clangDriver @@ -49,48 +51,9 @@ set(LLVM_LIBS clangToolingSyntax ) -set(LINK_LIBS - nlohmann_json::nlohmann_json +target_link_libraries(clice PRIVATE + ${LLVM_LIBS} + ${CLANG_LIBS} uv spdlog::spdlog - ${LLVM_LIBS} ) - -file(GLOB_RECURSE SOURCES "${CMAKE_SOURCE_DIR}/src/*.cpp") -list(REMOVE_ITEM SOURCES "${CMAKE_SOURCE_DIR}/src/main.cpp") - -add_executable(clice src/main.cpp ${SOURCES}) -target_precompile_headers(clice PRIVATE ${PCH_HEADER}) -target_include_directories(clice PRIVATE ${INCLUDE_DIRS}) -target_link_libraries(clice PRIVATE ${LINK_LIBS}) - -if(CLICE_TEST) - file(GLOB_RECURSE TEST_SOURCES "${CMAKE_SOURCE_DIR}/tests/*.cpp") - include_directories(${CMAKE_SOURCE_DIR}/external/googletest/googletest/include) - add_subdirectory(external/googletest) - - if(WIN32) - set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) - endif() - - add_executable(clice_test ${SOURCES} ${TEST_SOURCES}) - target_precompile_headers(clice_test PRIVATE ${PCH_HEADER}) - target_include_directories(clice_test PRIVATE ${INCLUDE_DIRS}) - target_link_libraries(clice_test PRIVATE ${LINK_LIBS} GTest::gtest_main) -endif() - -if(CLICE_EXAMPLES) - macro(add_example target) - add_executable(${target} ${ARGN}) - target_precompile_headers(${target} PRIVATE ${PCH_HEADER}) - target_include_directories(${target} PRIVATE ${INCLUDE_DIRS}) - target_link_libraries(${target} PRIVATE ${LINK_LIBS}) - endmacro() - - add_example(ASTVisitor docs/examples/ASTVisitor.cpp) - add_example(CodeCompletion docs/examples/CodeCompletion.cpp) - add_example(Module docs/examples/Module.cpp) - add_example(Preamble docs/examples/Preamble.cpp) - add_example(Preprocessor docs/examples/Preprocessor.cpp) - add_example(TreeTransform docs/examples/TreeTransform.cpp) -endif() \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 00000000..14640acb --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,5 @@ +#include + +int main(){ + +} \ No newline at end of file