-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
31 lines (26 loc) · 1.95 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
cmake_minimum_required(VERSION 3.6)
project(Compiler)
include_directories(include ${CMAKE_CURRENT_BINARY_DIR})
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall -Wextra -Wpedantic -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare")
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wall -Wextra -Wpedantic -Wno-unused-function -Wno-unused-parameter -Wno-sign-compare")
find_package(FLEX)
find_package(BISON)
flex_target(Scanner lex/lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.c COMPILE_FLAGS --header-file=${CMAKE_CURRENT_BINARY_DIR}/lexer.h)
bison_target(Parser parser/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.c COMPILE_FLAGS --defines=${CMAKE_CURRENT_BINARY_DIR}/parser.h)
add_flex_bison_dependency(Scanner Parser)
set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/lexer.h")
set(SOURCE_FILES ${BISON_Parser_OUTPUTS} ${FLEX_Scanner_OUTPUTS} lex/lexer.l parser/parser.y src/main.c src/error.c include/error.h src/tree.c include/tree.h src/semantics.c include/semantics.h src/symbol.cpp include/symbol.h src/ir.cpp include/ir.h src/code.cpp include/code.h include/version.h)
add_executable(CompilerLab1 ${SOURCE_FILES})
add_executable(CompilerLab2 ${SOURCE_FILES})
add_executable(CompilerLab3 ${SOURCE_FILES})
add_executable(CompilerLab4 ${SOURCE_FILES})
set_target_properties(CompilerLab1 PROPERTIES COMPILE_DEFINITIONS "COMPILER_VERSION=1")
set_target_properties(CompilerLab2 PROPERTIES COMPILE_DEFINITIONS "COMPILER_VERSION=2")
set_target_properties(CompilerLab3 PROPERTIES COMPILE_DEFINITIONS "COMPILER_VERSION=3")
set_target_properties(CompilerLab4 PROPERTIES COMPILE_DEFINITIONS "COMPILER_VERSION=4")
target_link_libraries(CompilerLab1 ${FLEX_LIBRARIES} ${BISON_LIBRARIES})
target_link_libraries(CompilerLab2 ${FLEX_LIBRARIES} ${BISON_LIBRARIES})
target_link_libraries(CompilerLab3 ${FLEX_LIBRARIES} ${BISON_LIBRARIES})
target_link_libraries(CompilerLab4 ${FLEX_LIBRARIES} ${BISON_LIBRARIES})