Add flatbuffers schema compilation function (#229)
authorDmitry Mozolev/SRR-AI Tools Lab/./삼성전자 <d.mozolev@samsung.com>
Wed, 16 May 2018 23:36:24 +0000 (02:36 +0300)
committer박종현/동작제어Lab(SR)/Senior Engineer/삼성전자 <jh1302.park@samsung.com>
Wed, 16 May 2018 23:36:24 +0000 (08:36 +0900)
* Add flatbuffers schema compilation function

Now it is possible to compile flatbuffers schemas with a cmake function

Signed-off-by: Dmitry Mozolev <d.mozolev@samsung.com>
* Change var names

Signed-off-by: Dmitry Mozolev <d.mozolev@samsung.com>
cmake/packages/FlatBuffersConfig.cmake

index b36d5b3..f3749df 100644 (file)
@@ -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 "$<TARGET_FILE:flatc>" -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)