47 lines
1.6 KiB
CMake
47 lines
1.6 KiB
CMake
find_package(FLEX REQUIRED)
|
|
find_package(BISON REQUIRED)
|
|
|
|
set(PSLANG_LEXER_RULES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/rules/pslang.l")
|
|
set(PSLANG_PARSER_RULES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/rules/pslang.y")
|
|
|
|
set(PSLANG_LEXER_HEADER_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/gen_lexer.hpp")
|
|
set(PSLANG_LEXER_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/gen_lexer.cpp")
|
|
|
|
set(PSLANG_PARSER_HEADER_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/gen_parser.hpp")
|
|
set(PSLANG_PARSER_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/gen_parser.cpp")
|
|
|
|
flex_target(
|
|
generate-pslang-lexer
|
|
${PSLANG_LEXER_RULES_FILE}
|
|
${PSLANG_LEXER_SOURCE_FILE}
|
|
DEFINES_FILE ${PSLANG_LEXER_HEADER_FILE}
|
|
)
|
|
|
|
bison_target(
|
|
generate-pslang-parser
|
|
${PSLANG_PARSER_RULES_FILE}
|
|
${PSLANG_PARSER_SOURCE_FILE}
|
|
DEFINES_FILE ${PSLANG_PARSER_HEADER_FILE}
|
|
# COMPILE_FLAGS -Wcounterexamples
|
|
)
|
|
|
|
add_flex_bison_dependency(generate-pslang-lexer generate-pslang-parser)
|
|
|
|
set(PSLANG_PARSER_RULE_FILES
|
|
${PSLANG_LEXER_RULES_FILE}
|
|
${PSLANG_PARSER_RULES_FILE}
|
|
)
|
|
|
|
set(PSLANG_PARSER_GENERATED_FILES
|
|
${PSLANG_LEXER_HEADER_FILE}
|
|
${PSLANG_LEXER_SOURCE_FILE}
|
|
${PSLANG_PARSER_HEADER_FILE}
|
|
${PSLANG_PARSER_SOURCE_FILE}
|
|
)
|
|
|
|
file(GLOB_RECURSE PSLANG_PARSER_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp")
|
|
file(GLOB_RECURSE PSLANG_PARSER_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp")
|
|
|
|
add_library(pslang-parser STATIC ${PSLANG_PARSER_HEADERS} ${PSLANG_PARSER_SOURCES} ${PSLANG_PARSER_RULE_FILES} ${PSLANG_PARSER_GENERATED_FILES})
|
|
target_include_directories(pslang-parser PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" "${CMAKE_CURRENT_BINARY_DIR}/generated")
|
|
target_link_libraries(pslang-parser pslang-ast)
|