# Parsodus - A language agnostic parser generator # Copyright © 2016-2017 Thomas Avé, Robin Jadoul, Kobe Wullaert # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h @ONLY) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) if (NOT LEXESIS_FOUND) add_custom_command(DEPENDS ext-lexesis "${CMAKE_CURRENT_SOURCE_DIR}/parsodusLexer.lxs" COMMAND ${LEXESIS_EXE} ARGS -d "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/parsodusLexer.lxs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ParsodusLexer.h" "${CMAKE_CURRENT_BINARY_DIR}/ParsodusLexer.cpp" ) else() add_custom_command(DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/parsodusLexer.lxs" COMMAND ${LEXESIS_EXE} ARGS -d "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/parsodusLexer.lxs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ParsodusLexer.h" "${CMAKE_CURRENT_BINARY_DIR}/ParsodusLexer.cpp" ) endif() include_directories("${CMAKE_CURRENT_BINARY_DIR}") add_library(Parsodus-util util/firstset.cpp util/followset.cpp ) add_library(Parsodus-tables lrtables/LR0Item.cpp lrtables/LR0Itemset.cpp lrtables/SLR1Itemset.cpp lrtables/LR1Item.cpp lrtables/LR1Itemset.cpp lrtables/LALR1Itemset.cpp ) add_library(pds backend.cpp driver.cpp inputparser.cpp backendmanager.cpp parsodusParser.cpp parser.cpp "${CMAKE_CURRENT_BINARY_DIR}/ParsodusLexer.cpp" ) add_dependencies(pds mstch::mstch) add_executable(Parsodus main.cpp ) target_link_libraries(Parsodus Parsodus-util Parsodus-tables # Parsodus-backends templ pds lxsinput mstch::mstch ${G3LOG_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ) install(TARGETS Parsodus pds Parsodus-util Parsodus-tables EXPORT ParsodusTargets RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib INCLUDES DESTINATION include )