* Initial support of CMake
This commit is contained in:
parent
58d0c33784
commit
f49a5a24f7
99
util/LLgen/CMakeLists.txt
Normal file
99
util/LLgen/CMakeLists.txt
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
cmake_minimum_required (VERSION 2.9)
|
||||||
|
project(LLgen)
|
||||||
|
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
|
set(SRC
|
||||||
|
src/main.c
|
||||||
|
src/gencode.c
|
||||||
|
src/compute.c
|
||||||
|
src/LLgen.c
|
||||||
|
src/tokens.c
|
||||||
|
src/check.c
|
||||||
|
src/reach.c
|
||||||
|
src/global.c
|
||||||
|
src/name.c
|
||||||
|
src/sets.c
|
||||||
|
src/Lpars.c
|
||||||
|
src/alloc.c
|
||||||
|
src/machdep.c
|
||||||
|
src/cclass.c
|
||||||
|
src/savegram.c
|
||||||
|
src/cclass.h
|
||||||
|
src/extern.h
|
||||||
|
src/io.h
|
||||||
|
src/Lpars.h
|
||||||
|
src/sets.h
|
||||||
|
src/types.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(INCLUDE_DIRS src)
|
||||||
|
|
||||||
|
include_directories(${INCLUDE_DIRS})
|
||||||
|
|
||||||
|
add_executable(${PROJECT_NAME} ${SRC})
|
||||||
|
target_compile_definitions(${PROJECT_NAME} PUBLIC NDEBUG=1 NON_CORRECTING=1 NORCSID=1)
|
||||||
|
|
||||||
|
# Correcting version.
|
||||||
|
add_executable(llgen_c ${SRC})
|
||||||
|
target_compile_definitions(llgen_c PUBLIC NORCSID=1)
|
||||||
|
|
||||||
|
file(COPY lib DESTINATION .)
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Regenerate the actual grammar files
|
||||||
|
#############################################
|
||||||
|
add_custom_target(regenerate
|
||||||
|
COMMAND
|
||||||
|
${CMAKE_COMMAND} -E copy
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/tokens.g
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/tokens.g
|
||||||
|
COMMAND
|
||||||
|
${CMAKE_COMMAND} -E copy
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/Llgen.g
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/Llgen.g
|
||||||
|
COMMAND ${PROJECT_NAME} -vvv tokens.g LLgen.g
|
||||||
|
COMMAND
|
||||||
|
${CMAKE_COMMAND} -E copy
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/Llgen.c ${CMAKE_CURRENT_SOURCE_DIR}/src/LLgen.c
|
||||||
|
COMMAND
|
||||||
|
${CMAKE_COMMAND} -E copy
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/tokens.c ${CMAKE_CURRENT_SOURCE_DIR}/src/tokens.c
|
||||||
|
COMMAND
|
||||||
|
${CMAKE_COMMAND} -E copy
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/Lpars.c ${CMAKE_CURRENT_SOURCE_DIR}/src/Lpars.c
|
||||||
|
COMMAND
|
||||||
|
${CMAKE_COMMAND} -E copy
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/Lpars.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Lpars.h
|
||||||
|
COMMENT "Regenerate grammar files and copy them to source"
|
||||||
|
)
|
||||||
|
add_dependencies(regenerate ${PROJECT_NAME})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Test targets
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
# Try to rebuild the own LLgen grammar.
|
||||||
|
add_test(NAME llgentest COMMAND ${PROJECT_NAME} -vvv
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/tokens.g
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src/LLgen.g)
|
||||||
|
|
||||||
|
############################################
|
||||||
|
# Install targets
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
install(TARGETS ${PROJECT_NAME}
|
||||||
|
RUNTIME DESTINATION bin
|
||||||
|
LIBRARY DESTINATION lib
|
||||||
|
ARCHIVE DESTINATION lib/static)
|
||||||
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/LLgen.1 DESTINATION man OPTIONAL)
|
||||||
|
install(FILES
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/incl
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/nc_incl
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/nc_rec
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/rec
|
||||||
|
DESTINATION lib)
|
||||||
|
|
Loading…
Reference in a new issue