* Initial support of CMake
authorcarl <cecodere@yahoo.ca>
Mon, 18 Feb 2019 16:37:26 +0000 (00:37 +0800)
committercarl <cecodere@yahoo.ca>
Mon, 18 Feb 2019 16:54:23 +0000 (00:54 +0800)
util/LLgen/CMakeLists.txt [new file with mode: 0644]

diff --git a/util/LLgen/CMakeLists.txt b/util/LLgen/CMakeLists.txt
new file mode 100644 (file)
index 0000000..64e75c2
--- /dev/null
@@ -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)
\ No newline at end of file