diff options
Diffstat (limited to 'src/parser/CMakeLists.txt')
-rw-r--r-- | src/parser/CMakeLists.txt | 74 |
1 files changed, 55 insertions, 19 deletions
diff --git a/src/parser/CMakeLists.txt b/src/parser/CMakeLists.txt index 52fa55f9d..c2b3d76ad 100644 --- a/src/parser/CMakeLists.txt +++ b/src/parser/CMakeLists.txt @@ -1,3 +1,9 @@ +set(ANTLR_HOME ${ANTLR_DIR}) +find_package(ANTLR REQUIRED) + +# Java runtime is required for ANTLR +find_package(Java COMPONENTS Runtime REQUIRED) + set(cvc4parser_src_files antlr_input.cpp antlr_input.h @@ -10,6 +16,8 @@ set(cvc4parser_src_files bounded_token_buffer.h bounded_token_factory.cpp bounded_token_factory.h + cvc/cvc_input.cpp + cvc/cvc_input.h input.cpp input.h line_buffer.cpp @@ -21,29 +29,57 @@ set(cvc4parser_src_files parser_builder.cpp parser_builder.h parser_exception.h + smt1/smt1.cpp + smt1/smt1.h + smt1/smt1_input.cpp + smt1/smt1_input.h + smt2/smt2.cpp + smt2/smt2.h + smt2/smt2_input.cpp + smt2/smt2_input.h + smt2/sygus_input.cpp + smt2/sygus_input.h + tptp/TptpLexer.c + tptp/TptpParser.c + tptp/tptp.cpp + tptp/tptp.h + tptp/tptp_input.cpp + tptp/tptp_input.h ) -set(ANTLR_HOME ${ANTLR_DIR}) -find_package(ANTLR REQUIRED) +# Generate parsers for all supported languages +foreach(lang Cvc Smt1 Smt2 Tptp) + string(TOLOWER ${lang} lang_dir) + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir}) + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir}/${lang}Lexer.c + ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir}/${lang}Lexer.h + ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir}/${lang}Parser.c + ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir}/${lang}Parser.h + ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir}/${lang}.tokens + COMMAND + ${ANTLR_BINARY} + ${CMAKE_CURRENT_SOURCE_DIR}/${lang_dir}/${lang}.g + -fo ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir} + DEPENDS + ${lang_dir}/${lang}.g + ) + set(gen_src_files + ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir}/${lang}Lexer.c + ${CMAKE_CURRENT_BINARY_DIR}/${lang_dir}/${lang}Parser.c) -# Java runtime is required for ANTLR -find_package(Java COMPONENTS Runtime REQUIRED) + # Tell cmake that generated source files are actually c++ files + set_source_files_properties(${gen_src_files} PROPERTIES LANGUAGE CXX) + set_source_files_properties(${gen_src_files} PROPERTIES GENERATED TRUE) -add_library(cvc4parser ${cvc4parser_src_files}) + # Add generated source files to the parser source files + list(APPEND cvc4parser_src_files ${gen_src_files}) +endforeach() +add_library(cvc4parser ${cvc4parser_src_files}) set_target_properties(cvc4parser - PROPERTIES - VERSION ${CVC4_VERSION} - SOVERSION ${CVC4_SOVERSION} -) - + PROPERTIES VERSION ${CVC4_VERSION} SOVERSION ${CVC4_SOVERSION}) target_compile_definitions(cvc4parser PRIVATE -D__BUILDING_CVC4PARSERLIB) -target_link_libraries(cvc4parser parsercvc parsersmt1 parsersmt2 parsertptp cvc4) -target_link_libraries(cvc4parser ${ANTLR_LIBRARIES}) - -# ANTLR includes required for all subdirectories -include_directories(${ANTLR_INCLUDE_DIR}) -add_subdirectory(cvc) -add_subdirectory(smt1) -add_subdirectory(smt2) -add_subdirectory(tptp) +target_link_libraries(cvc4parser cvc4 ${ANTLR_LIBRARIES}) +target_include_directories(cvc4parser PRIVATE ${ANTLR_INCLUDE_DIR}) |