From 7707edd8d22d21636acbd93162bd3c5e1a08bda5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Dmitry=20Mozolev/SRR-AI=20Tools=20Lab/=2E/=EC=82=BC?= =?utf8?q?=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Thu, 17 May 2018 02:36:24 +0300 Subject: [PATCH] Add flatbuffers schema compilation function (#229) * Add flatbuffers schema compilation function Now it is possible to compile flatbuffers schemas with a cmake function Signed-off-by: Dmitry Mozolev * Change var names Signed-off-by: Dmitry Mozolev --- cmake/packages/FlatBuffersConfig.cmake | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/cmake/packages/FlatBuffersConfig.cmake b/cmake/packages/FlatBuffersConfig.cmake index b36d5b3..f3749df 100644 --- a/cmake/packages/FlatBuffersConfig.cmake +++ b/cmake/packages/FlatBuffersConfig.cmake @@ -43,3 +43,31 @@ function(_FlatBuffers_import) endfunction(_FlatBuffers_import) _FlatBuffers_import() + +if(FlatBuffers_FOUND) + function(FlatBuffers_Generate PREFIX OUTPUT_DIR SCHEMA_DIR) + get_filename_component(abs_output_dir ${OUTPUT_DIR} ABSOLUTE) + get_filename_component(abs_schema_dir ${SCHEMA_DIR} ABSOLUTE) + + foreach(schema ${ARGN}) + get_filename_component(schema_fn "${schema}" NAME) + get_filename_component(dir "${schema}" DIRECTORY) + + get_filename_component(schema_fn_we "${schema_fn}" NAME_WE) + + list(APPEND SCHEMA_FILES "${abs_schema_dir}/${schema}") + list(APPEND OUTPUT_FILES "${abs_output_dir}/${schema_fn_we}_generated.h") + endforeach() + + add_custom_command(OUTPUT ${OUTPUT_FILES} + COMMAND ${CMAKE_COMMAND} -E make_directory "${abs_output_dir}" + COMMAND "$" -c --no-includes + --no-union-value-namespacing + --gen-object-api -o "${abs_output_dir}" + ${SCHEMA_FILES} + DEPENDS flatc) + + set(${PREFIX}_SOURCES ${OUTPUT_FILES} PARENT_SCOPE) + set(${PREFIX}_INCLUDE_DIRS ${abs_output_dir} PARENT_SCOPE) + endfunction(FlatBuffers_Generate) +endif(FlatBuffers_FOUND) -- 2.7.4