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}")