summaryrefslogtreecommitdiff
path: root/infra/cmake/packages/FlatBuffersConfig.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'infra/cmake/packages/FlatBuffersConfig.cmake')
-rw-r--r--infra/cmake/packages/FlatBuffersConfig.cmake116
1 files changed, 0 insertions, 116 deletions
diff --git a/infra/cmake/packages/FlatBuffersConfig.cmake b/infra/cmake/packages/FlatBuffersConfig.cmake
deleted file mode 100644
index da084e7d3..000000000
--- a/infra/cmake/packages/FlatBuffersConfig.cmake
+++ /dev/null
@@ -1,116 +0,0 @@
-function(_FlatBuffers_import)
- find_package(Flatbuffers QUIET)
- set(FlatBuffers_FOUND ${Flatbuffers_FOUND} PARENT_SCOPE)
-endfunction(_FlatBuffers_import)
-
-function(_FlatBuffers_build)
- if(NOT BUILD_FLATBUFFERS)
- return()
- endif(NOT BUILD_FLATBUFFERS)
-
- nnas_find_package(FlatBuffersSource EXACT 1.10 QUIET)
-
- if(NOT FlatBuffersSource_FOUND)
- # Source is not available
- return()
- endif(NOT FlatBuffersSource_FOUND)
-
- set(ADDITIONAL_CXX_FLAGS "")
- if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0)
- set(ADDITIONAL_CXX_FLAGS "-Wno-error=class-memaccess")
- endif()
-
- nnas_include(ExternalBuildTools)
- ExternalBuild_CMake(CMAKE_DIR ${FlatBuffersSource_DIR}
- BUILD_DIR ${CMAKE_BINARY_DIR}/externals/FLATBUFFERS/build
- INSTALL_DIR ${EXT_OVERLAY_DIR}
- BUILD_FLAGS ${ADDITIONAL_CXX_FLAGS}
- IDENTIFIER "1.10-fix2"
- EXTRA_OPTS "-DFLATBUFFERS_BUILD_TESTS:BOOL=OFF"
- PKG_NAME "FLATBUFFERS")
-
-endfunction(_FlatBuffers_build)
-
-_FlatBuffers_build()
-_FlatBuffers_import()
-
-if(FlatBuffers_FOUND)
- if(NOT TARGET flatbuffers)
- add_library(flatbuffers INTERFACE)
- target_link_libraries(flatbuffers INTERFACE flatbuffers::flatbuffers)
- message(STATUS "Found FlatBuffers: TRUE")
- endif(NOT TARGET flatbuffers)
-
- 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:flatbuffers::flatc>" -c --no-includes
- --no-union-value-namespacing
- --gen-object-api -o "${abs_output_dir}"
- ${SCHEMA_FILES}
- DEPENDS flatbuffers::flatc)
-
- set(${PREFIX}_SOURCES ${OUTPUT_FILES} PARENT_SCOPE)
- set(${PREFIX}_INCLUDE_DIRS ${abs_output_dir} PARENT_SCOPE)
- endfunction(FlatBuffers_Generate)
-
- function(FlatBuffers_Target TGT)
- set(oneValueArgs OUTPUT_DIR SCHEMA_DIR INCLUDE_DIR)
- set(multiValueArgs SCHEMA_FILES)
- cmake_parse_arguments(ARG "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
- # Use OUTPUT_DIR as INCLUDE_DIR if INCLUDE_DIR is not specified
- if(NOT ARG_INCLUDE_DIR)
- set(ARG_INCLUDE_DIR ${ARG_OUTPUT_DIR})
- endif(NOT ARG_INCLUDE_DIR)
-
- get_filename_component(abs_output_dir ${ARG_OUTPUT_DIR} ABSOLUTE)
- get_filename_component(abs_include_dir ${ARG_INCLUDE_DIR} ABSOLUTE)
- get_filename_component(abs_schema_dir ${ARG_SCHEMA_DIR} ABSOLUTE)
-
- # Let's reset list variables before using them
- # NOTE THIS DOES NOT AFFECT parent scope
- unset(SCHEMA_FILES)
- unset(OUTPUT_FILES)
-
- foreach(schema ${ARG_SCHEMA_FILES})
- 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()
-
- # Generate headers
- add_custom_command(OUTPUT ${OUTPUT_FILES}
- COMMAND ${CMAKE_COMMAND} -E make_directory "${abs_output_dir}"
- COMMAND "$<TARGET_FILE:flatbuffers::flatc>" -c --no-includes
- --no-union-value-namespacing
- --gen-object-api -o "${abs_output_dir}"
- ${SCHEMA_FILES}
- DEPENDS ${SCHEMA_FILES}
- COMMENT "Generate '${TGT}' headers")
-
- # NOTE This header-only library is deliberately declared as STATIC library
- # to avoid possible scope issues related with generated files
- add_library(${TGT} STATIC ${OUTPUT_FILES})
- set_target_properties(${TGT} PROPERTIES LINKER_LANGUAGE CXX)
- target_include_directories(${TGT} PUBLIC "${ARG_INCLUDE_DIR}")
- target_link_libraries(${TGT} PUBLIC flatbuffers)
- endfunction(FlatBuffers_Target)
-endif(FlatBuffers_FOUND)