aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2022-09-29 21:06:46 +0200
committerPřemysl Eric Janouch <p@janouch.name>2022-09-30 03:06:36 +0200
commitebbe7a1672c5a8750a57019c4df6d259dda12a28 (patch)
tree854749f4ae4ec0157f62b4ea05deaa282784e280 /CMakeLists.txt
parent4c3837ae2cb4dcecfcfc54ed3d590b94ad685d22 (diff)
downloadliberty-ebbe7a1672c5a8750a57019c4df6d259dda12a28.tar.gz
liberty-ebbe7a1672c5a8750a57019c4df6d259dda12a28.tar.xz
liberty-ebbe7a1672c5a8750a57019c4df6d259dda12a28.zip
Import protocol code generator from xK, add tests
Also add a VIM syntax highlighting file. This also fixes some previously untriggered bugs.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt41
1 files changed, 41 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index af9c910..eb1d2d9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -53,6 +53,47 @@ foreach (name ${tests})
add_test (NAME test-${name} COMMAND test-${name})
endforeach ()
+# Test CMake script parsing
add_test (test-cmake-parser
env LC_ALL=C awk -f ${PROJECT_SOURCE_DIR}/tools/cmake-parser.awk
-f ${PROJECT_SOURCE_DIR}/tools/cmake-dump.awk ${CMAKE_CURRENT_LIST_FILE})
+
+# Test protocol code generation
+set (lxdrgen_outputs)
+set (lxdrgen_base "${PROJECT_BINARY_DIR}/lxdrgen.lxdr")
+foreach (backend c go mjs)
+ list (APPEND lxdrgen_outputs ${lxdrgen_base}.${backend})
+ add_custom_command (OUTPUT ${lxdrgen_base}.${backend}
+ COMMAND env LC_ALL=C awk
+ -f ${PROJECT_SOURCE_DIR}/tools/lxdrgen.awk
+ -f ${PROJECT_SOURCE_DIR}/tools/lxdrgen-${backend}.awk
+ -v PrefixCamel=ProtoGen
+ ${PROJECT_SOURCE_DIR}/tests/lxdrgen.lxdr
+ > ${lxdrgen_base}.${backend}
+ DEPENDS
+ ${PROJECT_SOURCE_DIR}/tools/lxdrgen.awk
+ ${PROJECT_SOURCE_DIR}/tools/lxdrgen-${backend}.awk
+ ${PROJECT_SOURCE_DIR}/tests/lxdrgen.lxdr
+ COMMENT "Generating test protocol code (${backend})" VERBATIM)
+endforeach ()
+add_custom_target (test-lxdrgen-outputs ALL DEPENDS ${lxdrgen_outputs})
+
+set_source_files_properties (${lxdrgen_base}.c
+ PROPERTIES HEADER_FILE_ONLY TRUE)
+add_executable (test-lxdrgen tests/lxdrgen.c ${lxdrgen_base}.c)
+target_include_directories (test-lxdrgen PUBLIC ${PROJECT_BINARY_DIR})
+add_test (NAME test-lxdrgen-c COMMAND test-lxdrgen)
+
+find_program (GO_EXECUTABLE go)
+if (GO_EXECUTABLE)
+ add_test (test-lxdrgen-go ${GO_EXECUTABLE} vet ${lxdrgen_base}.go)
+else ()
+ message (WARNING "Cannot test generated protocol code for Go")
+endif ()
+
+find_program (NODE_EXECUTABLE node)
+if (NODE_EXECUTABLE)
+ add_test (test-lxdrgen-mjs ${NODE_EXECUTABLE} -c ${lxdrgen_base}.mjs)
+else ()
+ message (WARNING "Cannot test generated protocol code for Javascript")
+endif ()