pslang/libs/parser/CMakeLists.txt

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)