aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2023-07-07 12:25:14 +0200
committerPřemysl Eric Janouch <p@janouch.name>2023-07-07 16:43:52 +0200
commit2edc9c6fd10e34ca1da0d25d3ceb9b67a6b9c73c (patch)
tree83e3f3c9cd4b4200946ec2428672cecfd6d3d311 /CMakeLists.txt
parentf78f8a70f1753d687cae4a23659995b65e91fb3e (diff)
downloadliberty-2edc9c6fd10e34ca1da0d25d3ceb9b67a6b9c73c.tar.gz
liberty-2edc9c6fd10e34ca1da0d25d3ceb9b67a6b9c73c.tar.xz
liberty-2edc9c6fd10e34ca1da0d25d3ceb9b67a6b9c73c.zip
Add a C++ backend for LibertyXDR
Also change the C backend so that it also de/serializes unions without any other fields besides the tag.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt22
1 files changed, 17 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 42590a1..0da5470 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
cmake_minimum_required (VERSION 2.8.12)
-project (liberty C)
+project (liberty C CXX)
# Moar warnings
if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
@@ -72,7 +72,7 @@ add_test (test-cmake-parser
# Test protocol code generation
set (lxdrgen_outputs)
set (lxdrgen_base "${PROJECT_BINARY_DIR}/lxdrgen.lxdr")
-foreach (backend c go mjs swift)
+foreach (backend c cpp go mjs swift)
list (APPEND lxdrgen_outputs ${lxdrgen_base}.${backend})
add_custom_command (OUTPUT ${lxdrgen_base}.${backend}
COMMAND env LC_ALL=C awk
@@ -91,9 +91,21 @@ 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)
+add_executable (test-lxdrgen-c tests/lxdrgen.c ${lxdrgen_base}.c)
+target_include_directories (test-lxdrgen-c PUBLIC ${PROJECT_BINARY_DIR})
+add_test (NAME test-lxdrgen-c COMMAND test-lxdrgen-c)
+
+set_source_files_properties (${lxdrgen_base}.cpp
+ PROPERTIES HEADER_FILE_ONLY TRUE)
+if (WIN32)
+ add_executable (test-lxdrgen-cpp tests/lxdrgen.cpp
+ ${lxdrgen_base}.cpp tools/lxdrgen-cpp-win32.cpp)
+else ()
+ add_executable (test-lxdrgen-cpp tests/lxdrgen.cpp
+ ${lxdrgen_base}.cpp tools/lxdrgen-cpp-posix.cpp)
+endif ()
+target_include_directories (test-lxdrgen-cpp PUBLIC ${PROJECT_BINARY_DIR})
+add_test (NAME test-lxdrgen-cpp COMMAND test-lxdrgen-cpp)
find_program (GO_EXECUTABLE go)
if (GO_EXECUTABLE)