summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorsjoblom65 <anders.sjoblom@gmail.com>2020-01-24 17:55:34 -0500
committerWouter van Oortmerssen <aardappel@gmail.com>2020-01-24 14:55:34 -0800
commit47026ea6ba0e3ea8c4f4ab47de880cb5665ee1b6 (patch)
treef9101bbe1ba10ba14f17d52f9a89a3ea9520c262 /CMakeLists.txt
parent3f677f241417e5797c1b786010616e63d6de5d55 (diff)
downloadflatbuffers-47026ea6ba0e3ea8c4f4ab47de880cb5665ee1b6.tar.gz
flatbuffers-47026ea6ba0e3ea8c4f4ab47de880cb5665ee1b6.tar.bz2
flatbuffers-47026ea6ba0e3ea8c4f4ab47de880cb5665ee1b6.zip
Added the code to embed the binary schema to the source (--bfbs-gen-embed). (#5701)
* Added the code to embed the binary schema to the source. This is pulled forward from a old PR #5162 that will be closed. * Update idl_gen_cpp.cpp Added a small comment to trigger a new build. The build was failing in a strange location and doesn't look like it has anything to do with the code. * Moved the EscapeAndWrapBuffer to util.cpp and did some formating. * One more camelCases removed and renamed some variables. * wrapped_line_xxx should have been passed as a const reference in the first place. * Moved the bfbs embed sample to it's own file. * Missed moving the namespace back. * Moved the embedded bfbs to test.cpp instead of using a sample. * Missed adding the generation of embedded bfbs to the build. * See if this makes the build happier. * Fixed a in-compatable cpp output of the generated header. * Did some changes to reflect the code review comments. 1. Update the EscapeAndWrapBuffer to BufferToHexText and fixed a variable name. 2. Moved the include of the embedded binary schema to all the other includes. * Moved some code to inline the instead of using a local variable. * Moved the BufferToHexText back to be a inline function in util.h
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt28
1 files changed, 28 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a1c7c00e..00c409ef 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -149,6 +149,8 @@ set(FlatBuffers_Tests_SRCS
${CMAKE_CURRENT_BINARY_DIR}/tests/native_type_test_generated.h
# file generate by running compiler on tests/monster_extra.fbs
${CMAKE_CURRENT_BINARY_DIR}/tests/monster_extra_generated.h
+ # file generate by running compiler on tests/monster_test.fbs
+ ${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_bfbs_generated.h
)
set(FlatBuffers_Tests_CPP17_SRCS
@@ -409,6 +411,31 @@ function(compile_flatbuffers_schema_to_binary SRC_FBS)
register_generated_output(${GEN_BINARY_SCHEMA})
endfunction()
+function(compile_flatbuffers_schema_to_embedded_binary SRC_FBS OPT)
+ if(FLATBUFFERS_BUILD_LEGACY)
+ set(OPT ${OPT};--cpp-std c++0x)
+ else()
+ # --cpp-std is defined by flatc default settings.
+ endif()
+ message(STATUS "`${SRC_FBS}`: add generation of C++ embedded binary schema code with '${OPT}'")
+ get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
+ string(REGEX REPLACE "\\.fbs$" "_bfbs_generated.h" GEN_BFBS_HEADER ${SRC_FBS})
+ # For details about flags see generate_code.bat(sh)
+ add_custom_command(
+ OUTPUT ${GEN_BFBS_HEADER}
+ COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}"
+ --cpp --gen-mutable --gen-object-api --reflect-names
+ --cpp-ptr-type flatbuffers::unique_ptr # Used to test with C++98 STLs
+ ${OPT}
+ --bfbs-comments --bfbs-builtins --bfbs-gen-embed
+ -I "${CMAKE_CURRENT_SOURCE_DIR}/tests/include_test"
+ -o "${SRC_FBS_DIR}"
+ "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
+ DEPENDS flatc
+ COMMENT "Run generation: '${GEN_BFBS_HEADER}'")
+ register_generated_output(${GEN_BFBS_HEADER})
+endfunction()
+
if(FLATBUFFERS_BUILD_TESTS)
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tests" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/samples" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
@@ -422,6 +449,7 @@ if(FLATBUFFERS_BUILD_TESTS)
compile_flatbuffers_schema_to_cpp_opt(tests/native_type_test.fbs "")
compile_flatbuffers_schema_to_cpp_opt(tests/arrays_test.fbs "--scoped-enums;--gen-compare")
compile_flatbuffers_schema_to_binary(tests/arrays_test.fbs)
+ compile_flatbuffers_schema_to_embedded_binary(tests/monster_test.fbs "--no-includes;--gen-compare")
if(NOT (MSVC AND (MSVC_VERSION LESS 1900)))
compile_flatbuffers_schema_to_cpp(tests/monster_extra.fbs) # Test floating-point NAN/INF.
endif()