fxos/CMakeLists.txt

72 lines
1.4 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(fxos LANGUAGES C CXX)
find_package(FLEX 2.6)
add_compile_options(
-Wall -Wextra -D_GNU_SOURCE -std=c++17 -O2
-fmacro-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}/=)
#---
# fxos core
#---
flex_target(LoadAsm lib/load-asm.l
"${CMAKE_CURRENT_BINARY_DIR}/load-asm.yy.cpp" COMPILE_FLAGS -s)
set(fxos_core_SOURCES
lib/AbstractMemory.cpp
lib/disassembly.cpp
lib/lang.cpp
lib/memory.cpp
lib/os.cpp
lib/passes/cfg.cpp
lib/passes/pcrel.cpp
lib/passes/print.cpp
lib/passes/syscall.cpp
lib/semantics.cpp
lib/symbols.cpp
lib/vspace.cpp
lib/ai/RelConst.cpp
lib/util/Buffer.cpp
lib/util/log.cpp
lib/util/Timer.cpp)
add_library(fxos-core ${fxos_core_SOURCES} ${FLEX_LoadAsm_OUTPUTS})
target_include_directories(fxos-core PUBLIC include)
#---
# fxos shell
#---
flex_target(Lexer shell/lexer.l
"${CMAKE_CURRENT_BINARY_DIR}/lexer.yy.cpp" COMPILE_FLAGS -s)
set(fxos_shell_SOURCES
shell/main.cpp
shell/parser.cpp
shell/session.cpp
shell/theme.cpp
shell/dot.cpp
shell/a.cpp
shell/d.cpp
shell/e.cpp
shell/g.cpp
shell/h.cpp
shell/i.cpp
shell/m.cpp
shell/s.cpp
shell/v.cpp
${FLEX_Lexer_OUTPUTS}
)
add_executable(fxos ${fxos_shell_SOURCES})
target_include_directories(fxos PRIVATE shell)
target_link_libraries(fxos fxos-core -lreadline -lfmt)
#---
# Install
#---
install(TARGETS fxos DESTINATION "${CMAKE_INSTALL_BINDIR}")