cmake_minimum_required(VERSION 3.18...3.22) project(sapphire-compiler LANGUAGES CXX C) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(LLVM REQUIRED 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}) add_executable( sapphirec src/sapphire.cpp src/Lexer.cpp src/Lexer.h src/Token.h src/Token.cpp src/Location.h src/Location.cpp src/Error.h src/Error.cpp src/FormatString/FormatString.hpp src/FileIO.h src/FileIO.cpp src/Importer.cpp src/Importer.h src/Arguments.cpp src/Arguments.h src/Normalizer.cpp src/Normalizer.h src/AST/ASTNode.cpp src/AST/ASTNode.h src/AST/BinaryOpNode.cpp src/AST/BinaryOpNode.h src/AST/ExprNode.cpp src/AST/ExprNode.h src/AST/MulNode.cpp src/AST/MulNode.h src/AST/StatementNode.cpp src/AST/StatementNode.h src/AST/NumberNode.cpp src/AST/NumberNode.h src/AST/SumNode.cpp src/AST/SumNode.h src/AST/SyscallNode.cpp src/AST/SyscallNode.h src/utils.cpp src/utils.h src/Parser.cpp src/Parser.h src/sapphirepch.h src/IRBuilder.cpp src/IRBuilder.h ) target_include_directories(sapphirec PUBLIC src) target_include_directories(sapphirec PUBLIC src/tclap-1.2.5/include) target_precompile_headers(sapphirec PUBLIC src/sapphirepch.h) llvm_map_components_to_libnames(llvm_libs support core irreader) # Link against LLVM libraries target_link_libraries(sapphirec ${llvm_libs}) install(TARGETS sapphirec) include_directories(src src/tclap-1.2.5/include) include(cmake/clang-dev-tools.cmake)