-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
52 lines (43 loc) · 1.85 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
cmake_minimum_required(VERSION 3.12)
project(MoonFlower)
find_package(FLEX REQUIRED)
find_package(BISON REQUIRED)
find_library(REFLEX_LIB reflex)
flex_target(asmlexer src/asmlexer.l ${CMAKE_CURRENT_BINARY_DIR}/asmlexer.cpp
DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/asmlexer.hpp)
bison_target(asmparser src/asmparser.y ${CMAKE_CURRENT_BINARY_DIR}/asmparser.cpp
DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/asmparser.hpp)
add_flex_bison_dependency(asmlexer asmparser)
add_executable(mfasm
${BISON_asmparser_OUTPUTS}
${FLEX_asmlexer_OUTPUTS}
src/mfasm.cpp
src/assembler.cpp)
set_target_properties(mfasm PROPERTIES CXX_STANDARD 17)
target_include_directories(mfasm PUBLIC src ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(mfasm ${REFLEX_LIB})
flex_target(scriptlexer src/scriptlexer.l ${CMAKE_CURRENT_BINARY_DIR}/scriptlexer.cpp
DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/scriptlexer.hpp)
bison_target(scriptparser src/scriptparser.y ${CMAKE_CURRENT_BINARY_DIR}/scriptparser.cpp
DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/scriptparser.hpp)
add_flex_bison_dependency(scriptlexer scriptparser)
add_library(scriptcompiler
${BISON_scriptparser_OUTPUTS}
${FLEX_scriptlexer_OUTPUTS})
set_target_properties(scriptcompiler PROPERTIES CXX_STANDARD 17)
target_include_directories(scriptcompiler PUBLIC src ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(scriptcompiler ${REFLEX_LIB})
add_executable(moonflower
src/main.cpp
src/interp.cpp
src/state.cpp
src/script_context.cpp
src/compile.cpp)
set_target_properties(moonflower PROPERTIES CXX_STANDARD 17)
target_link_libraries(moonflower scriptcompiler)
add_executable(mfsc
src/mfsc.cpp)
set_target_properties(mfsc PROPERTIES CXX_STANDARD 17)
target_link_libraries(mfsc scriptcompiler)
add_executable(mfdisass src/mfdisass.cpp)
set_target_properties(mfdisass PROPERTIES CXX_STANDARD 17)