You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

flatbuffers.cmake 2.3 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. set(flatbuffers_CXXFLAGS "-D_FORTIFY_SOURCE=2 -O2")
  2. set(flatbuffers_CFLAGS "-D_FORTIFY_SOURCE=2 -O2")
  3. if (WIN32)
  4. set(flatbuffers_USE_STATIC_LIBS ON)
  5. endif()
  6. mindspore_add_pkg(flatbuffers
  7. VER 1.11.0
  8. LIBS flatbuffers
  9. EXE flatc
  10. URL https://github.com/google/flatbuffers/archive/v1.11.0.tar.gz
  11. MD5 02c64880acb89dbd57eebacfd67200d8
  12. CMAKE_OPTION -DFLATBUFFERS_BUILD_TESTS=OFF )
  13. include_directories(${flatbuffers_INC})
  14. add_library(mindspore::flatbuffers ALIAS flatbuffers::flatbuffers)
  15. add_executable(mindspore::flatc ALIAS flatbuffers::flatc)
  16. include_directories(${flatbuffers_INC})
  17. function(ms_build_flatbuffers source_schema_files
  18. source_schema_dirs
  19. custom_target_name
  20. generated_output_dir)
  21. set(total_schema_dirs "")
  22. set(total_generated_files "")
  23. set(FLATC mindspore::flatc)
  24. foreach (schema_dir ${source_schema_dirs})
  25. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  26. endforeach()
  27. foreach(schema ${source_schema_files})
  28. get_filename_component(filename ${schema} NAME_WE)
  29. if (NOT ${generated_output_dir} STREQUAL "")
  30. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  31. add_custom_command(
  32. OUTPUT ${generated_file}
  33. COMMAND ${FLATC} --gen-mutable
  34. --reflect-names --gen-object-api -o ${generated_output_dir}
  35. ${total_schema_dirs}
  36. -c -b --reflect-types ${schema}
  37. DEPENDS ${FLATC} ${schema}
  38. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  39. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  40. list(APPEND total_generated_files ${generated_file})
  41. endif()
  42. endforeach()
  43. add_custom_target(${custom_target_name} ALL
  44. DEPENDS ${total_generated_files})
  45. if (NOT ${generated_output_dir} STREQUAL "")
  46. include_directories(${generated_output_dir})
  47. set_property(TARGET ${custom_target_name}
  48. PROPERTY GENERATED_OUTPUT_DIR
  49. ${generated_output_dir})
  50. endif()
  51. endfunction()