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.6 kB

5 years ago
5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. if(ENABLE_GITEE)
  7. set(REQ_URL "https://gitee.com/mirrors/flatbuffers/repository/archive/v1.11.0.tar.gz")
  8. set(MD5 "4051dc865063ffa724c4264dea8dbbe9")
  9. else()
  10. set(REQ_URL "https://github.com/google/flatbuffers/archive/v1.11.0.tar.gz")
  11. set(MD5 "02c64880acb89dbd57eebacfd67200d8")
  12. endif()
  13. mindspore_add_pkg(flatbuffers
  14. VER 1.11.0
  15. LIBS flatbuffers
  16. EXE flatc
  17. URL ${REQ_URL}
  18. MD5 ${MD5}
  19. CMAKE_OPTION -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_INSTALL_LIBDIR=lib)
  20. include_directories(${flatbuffers_INC})
  21. add_library(mindspore::flatbuffers ALIAS flatbuffers::flatbuffers)
  22. add_executable(mindspore::flatc ALIAS flatbuffers::flatc)
  23. function(ms_build_flatbuffers source_schema_files
  24. source_schema_dirs
  25. custom_target_name
  26. generated_output_dir)
  27. set(total_schema_dirs "")
  28. set(total_generated_files "")
  29. set(FLATC mindspore::flatc)
  30. foreach(schema_dir ${source_schema_dirs})
  31. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  32. endforeach()
  33. foreach(schema ${source_schema_files})
  34. get_filename_component(filename ${schema} NAME_WE)
  35. if(NOT ${generated_output_dir} STREQUAL "")
  36. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  37. add_custom_command(
  38. OUTPUT ${generated_file}
  39. COMMAND ${FLATC} --gen-mutable
  40. --reflect-names --gen-object-api -o ${generated_output_dir}
  41. ${total_schema_dirs}
  42. -c -b --reflect-types ${schema}
  43. DEPENDS ${FLATC} ${schema}
  44. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  45. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  46. list(APPEND total_generated_files ${generated_file})
  47. endif()
  48. endforeach()
  49. add_custom_target(${custom_target_name} ALL
  50. DEPENDS ${total_generated_files})
  51. if(NOT ${generated_output_dir} STREQUAL "")
  52. include_directories(${generated_output_dir})
  53. set_property(TARGET ${custom_target_name}
  54. PROPERTY GENERATED_OUTPUT_DIR
  55. ${generated_output_dir})
  56. endif()
  57. endfunction()
  58. function(ms_build_flatbuffers_lite
  59. source_schema_files source_schema_dirs custom_target_name generated_output_dir if_inner)
  60. set(total_schema_dirs "")
  61. set(total_generated_files "")
  62. set(FLATC mindspore::flatc)
  63. foreach(schema_dir ${source_schema_dirs})
  64. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  65. endforeach()
  66. foreach(schema IN LISTS ${source_schema_files})
  67. get_filename_component(filename ${schema} NAME_WE)
  68. if(NOT ${generated_output_dir} STREQUAL "")
  69. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  70. if(if_inner MATCHES "inner")
  71. add_custom_command(
  72. OUTPUT ${generated_file}
  73. COMMAND ${FLATC} --gen-mutable
  74. --reflect-names --gen-object-api -o ${generated_output_dir}
  75. ${total_schema_dirs}
  76. -c -b --reflect-types ${schema}
  77. DEPENDS ${FLATC} ${schema}
  78. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  79. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  80. else()
  81. add_custom_command(
  82. OUTPUT ${generated_file}
  83. COMMAND ${FLATC} -o ${generated_output_dir}
  84. ${total_schema_dirs}
  85. -c -b ${schema}
  86. DEPENDS ${FLATC} ${schema}
  87. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  88. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  89. endif()
  90. list(APPEND total_generated_files ${generated_file})
  91. endif()
  92. endforeach()
  93. add_custom_target(${custom_target_name} ALL
  94. DEPENDS ${total_generated_files})
  95. if(NOT ${generated_output_dir} STREQUAL "")
  96. include_directories(${generated_output_dir})
  97. set_property(TARGET ${custom_target_name}
  98. PROPERTY GENERATED_OUTPUT_DIR
  99. ${generated_output_dir})
  100. endif()
  101. endfunction()