# CMake最低版本
cmake_minimum_required(VERSION 3.21)

# 工程名、版本号、工程描述
project(Compiler
        VERSION 0.1
        DESCRIPTION "ST / toml 编译器")

# 词法、语法、符号表、类型检查、codegen、链接都留在 compiler 一个库里
# 指令 opcode / 类型 / FB 布局来自 machine.toml（MachineConfig），不依赖 isa
add_library(compiler STATIC
            ./src/Lexer.cpp
            ./src/Project.cpp
            ./src/Parser.cpp
            ./src/Linker.cpp
            ./src/Typecheck.cpp
            ./src/Codegen.cpp
            ./src/MachineConfig.cpp
            ./src/Stb.cpp
            ./src/Codec.cpp)

target_include_directories(compiler PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(compiler PRIVATE ${CMAKE_SOURCE_DIR}/third_party/tomlplusplus/include)

# 可执行入口：STCompiler <project.toml> -o <name>.stb
add_executable(STCompiler
               ./src/main.cpp)

target_link_libraries(STCompiler PRIVATE compiler)
