cmake_minimum_required(VERSION 3.20.0) project(SimpleProject) set(PROJECT_NAME llvm_c_compiler) project(${PROJECT_NAME} VERSION 1.0.0 LANGUAGES CXX) # Include LLVM as library find_package(LLVM 21.1.0 CONFIG) message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") include_directories(${LLVM_INCLUDE_DIRS}) separate_arguments(LLVM_DEFINITIONS_LIST NATIVE_COMMAND ${LLVM_DEFINITIONS}) add_definitions(${LLVM_DEFINITIONS_LIST}) # Executable add_executable(${PROJECT_NAME} src/main.cpp src/tokens.cpp src/parsing.cpp src/ast.cpp src/codegen.cpp src/types.cpp src/typechecker.cpp src/binops.cpp src/casting.cpp ) target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20) target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Weffc++ -Wextra -Wpedantic -Werror) # Find the libraries that correspond to the LLVM components # that we wish to use llvm_map_components_to_libnames(llvm_libs support core irreader) # Link target_link_libraries(${PROJECT_NAME} LLVM)