@@ -12,6 +12,7 @@ option(REFLECTCPP_AVRO "Enable AVRO support" ${REFLECTCPP_ALL_FORMATS})
1212option (REFLECTCPP_BSON "Enable BSON support" ${REFLECTCPP_ALL_FORMATS} )
1313option (REFLECTCPP_CAPNPROTO "Enable Cap’n Proto support" ${REFLECTCPP_ALL_FORMATS} )
1414option (REFLECTCPP_CBOR "Enable CBOR support" ${REFLECTCPP_ALL_FORMATS} )
15+ option (REFLECTCPP_CEREAL "Enable Cereal support" ${REFLECTCPP_ALL_FORMATS} )
1516option (REFLECTCPP_CSV "Enable CSV support" ${REFLECTCPP_ALL_FORMATS} )
1617option (REFLECTCPP_FLEXBUFFERS "Enable flexbuffers support" ${REFLECTCPP_ALL_FORMATS} )
1718option (REFLECTCPP_MSGPACK "Enable msgpack support" ${REFLECTCPP_ALL_FORMATS} )
@@ -49,6 +50,7 @@ if(REFLECTCPP_BUILD_BENCHMARKS)
4950 set (REFLECTCPP_BSON ON CACHE BOOL "" FORCE )
5051 set (REFLECTCPP_CAPNPROTO ON CACHE BOOL "" FORCE )
5152 set (REFLECTCPP_CBOR ON CACHE BOOL "" FORCE )
53+ set (REFLECTCPP_CEREAL ON CACHE BOOL "" FORCE )
5254 set (REFLECTCPP_FLEXBUFFERS ON CACHE BOOL "" FORCE )
5355 set (REFLECTCPP_MSGPACK ON CACHE BOOL "" FORCE )
5456 set (REFLECTCPP_XML ON CACHE BOOL "" FORCE )
@@ -57,11 +59,25 @@ if(REFLECTCPP_BUILD_BENCHMARKS)
5759 set (REFLECTCPP_YAML ON CACHE BOOL "" FORCE )
5860endif ()
5961
60- if (REFLECTCPP_BUILD_TESTS OR REFLECTCPP_BUILD_BENCHMARKS OR REFLECTCPP_CHECK_HEADERS OR
61- (REFLECTCPP_JSON AND NOT REFLECTCPP_USE_BUNDLED_DEPENDENCIES) OR REFLECTCPP_AVRO OR
62- REFLECTCPP_BSON OR REFLECTCPP_CAPNPROTO OR REFLECTCPP_CBOR OR REFLECTCPP_CSV OR
63- REFLECTCPP_FLEXBUFFERS OR REFLECTCPP_MSGPACK OR REFLECTCPP_PARQUET OR REFLECTCPP_XML OR
64- REFLECTCPP_TOML OR REFLECTCPP_UBJSON OR REFLECTCPP_YAML)
62+ if (
63+ REFLECTCPP_BUILD_TESTS OR
64+ REFLECTCPP_BUILD_BENCHMARKS OR
65+ REFLECTCPP_CHECK_HEADERS OR
66+ (REFLECTCPP_JSON AND NOT REFLECTCPP_USE_BUNDLED_DEPENDENCIES) OR
67+ REFLECTCPP_AVRO OR
68+ REFLECTCPP_BSON OR
69+ REFLECTCPP_CAPNPROTO OR
70+ REFLECTCPP_CBOR OR
71+ REFLECTCPP_CEREAL OR
72+ REFLECTCPP_CSV OR
73+ REFLECTCPP_FLEXBUFFERS OR
74+ REFLECTCPP_MSGPACK OR
75+ REFLECTCPP_PARQUET OR
76+ REFLECTCPP_XML OR
77+ REFLECTCPP_TOML OR
78+ REFLECTCPP_UBJSON OR
79+ REFLECTCPP_YAML
80+ )
6581 # enable vcpkg per default if features other than JSON are required
6682 set (REFLECTCPP_USE_VCPKG_DEFAULT ON )
6783endif ()
@@ -98,7 +114,11 @@ if (REFLECTCPP_USE_VCPKG)
98114 if (REFLECTCPP_CBOR OR REFLECTCPP_CHECK_HEADERS)
99115 list (APPEND VCPKG_MANIFEST_FEATURES "cbor" )
100116 endif ()
101-
117+
118+ if (REFLECTCPP_CEREAL OR REFLECTCPP_CHECK_HEADERS)
119+ list (APPEND VCPKG_MANIFEST_FEATURES "cereal" )
120+ endif ()
121+
102122 if (REFLECTCPP_CSV OR REFLECTCPP_CHECK_HEADERS)
103123 list (APPEND VCPKG_MANIFEST_FEATURES "csv" )
104124 endif ()
@@ -172,10 +192,6 @@ else()
172192 target_compile_options (reflectcpp PRIVATE
173193 $<$<CONFIG :Debug >:
174194 -Wall -Wextra -Wpedantic -Wshadow -Wconversion
175- #-Wnull -dereference -Wold -style -cast
176- #-g3 -fno -omit -frame -pointer
177- #-fsanitize =address ,undefined
178- #-fno -sanitize -recover =undefined
179195 >
180196 )
181197 endif ()
@@ -312,6 +328,16 @@ if (REFLECTCPP_CBOR OR REFLECTCPP_CHECK_HEADERS)
312328 include_directories (PUBLIC ${jsoncons_INCLUDE_DIRS} )
313329endif ()
314330
331+ if (REFLECTCPP_CEREAL OR REFLECTCPP_CHECK_HEADERS)
332+ list (APPEND REFLECT_CPP_SOURCES
333+ src/reflectcpp_cereal.cpp
334+ )
335+ if (NOT TARGET cereal::cereal)
336+ find_package (cereal CONFIG REQUIRED )
337+ endif ()
338+ target_link_libraries (reflectcpp PUBLIC cereal::cereal )
339+ endif ()
340+
315341if (REFLECTCPP_CSV OR REFLECTCPP_CHECK_HEADERS)
316342 if (NOT TARGET Arrow)
317343 find_package (Arrow CONFIG REQUIRED )
0 commit comments