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 4.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. function(ms_build_flatbuffers source_schema_files
  17. source_schema_dirs
  18. custom_target_name
  19. generated_output_dir)
  20. set(total_schema_dirs "")
  21. set(total_generated_files "")
  22. set(FLATC mindspore::flatc)
  23. foreach (schema_dir ${source_schema_dirs})
  24. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  25. endforeach()
  26. foreach(schema ${source_schema_files})
  27. get_filename_component(filename ${schema} NAME_WE)
  28. if (NOT ${generated_output_dir} STREQUAL "")
  29. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  30. add_custom_command(
  31. OUTPUT ${generated_file}
  32. COMMAND ${FLATC} --gen-mutable
  33. --reflect-names --gen-object-api -o ${generated_output_dir}
  34. ${total_schema_dirs}
  35. -c -b --reflect-types ${schema}
  36. DEPENDS ${FLATC} ${schema}
  37. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  38. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  39. list(APPEND total_generated_files ${generated_file})
  40. endif()
  41. endforeach()
  42. add_custom_target(${custom_target_name} ALL
  43. DEPENDS ${total_generated_files})
  44. if (NOT ${generated_output_dir} STREQUAL "")
  45. include_directories(${generated_output_dir})
  46. set_property(TARGET ${custom_target_name}
  47. PROPERTY GENERATED_OUTPUT_DIR
  48. ${generated_output_dir})
  49. endif()
  50. endfunction()
  51. function(ms_build_flatbuffers_lite source_schema_files
  52. source_schema_dirs
  53. custom_target_name
  54. generated_output_dir
  55. if_inner)
  56. set(total_schema_dirs "")
  57. set(total_generated_files "")
  58. set(FLATC mindspore::flatc)
  59. foreach (schema_dir ${source_schema_dirs})
  60. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  61. endforeach()
  62. foreach(schema IN LISTS ${source_schema_files})
  63. get_filename_component(filename ${schema} NAME_WE)
  64. if (NOT ${generated_output_dir} STREQUAL "")
  65. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  66. if (if_inner MATCHES "inner")
  67. add_custom_command(
  68. OUTPUT ${generated_file}
  69. COMMAND ${FLATC} --gen-mutable
  70. --reflect-names --gen-object-api -o ${generated_output_dir}
  71. ${total_schema_dirs}
  72. -c -b --reflect-types ${schema}
  73. DEPENDS ${FLATC} ${schema}
  74. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  75. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  76. else()
  77. add_custom_command(
  78. OUTPUT ${generated_file}
  79. COMMAND ${FLATC} -o ${generated_output_dir}
  80. ${total_schema_dirs}
  81. -c -b ${schema}
  82. DEPENDS ${FLATC} ${schema}
  83. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  84. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  85. endif()
  86. list(APPEND total_generated_files ${generated_file})
  87. endif()
  88. endforeach()
  89. add_custom_target(${custom_target_name} ALL
  90. DEPENDS ${total_generated_files})
  91. if (NOT ${generated_output_dir} STREQUAL "")
  92. include_directories(${generated_output_dir})
  93. set_property(TARGET ${custom_target_name}
  94. PROPERTY GENERATED_OUTPUT_DIR
  95. ${generated_output_dir})
  96. endif()
  97. endfunction()