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

5 years ago
5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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 source_schema_files
  59. source_schema_dirs
  60. custom_target_name
  61. generated_output_dir
  62. if_inner)
  63. set(total_schema_dirs "")
  64. set(total_generated_files "")
  65. set(FLATC mindspore::flatc)
  66. foreach(schema_dir ${source_schema_dirs})
  67. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  68. endforeach()
  69. foreach(schema IN LISTS ${source_schema_files})
  70. get_filename_component(filename ${schema} NAME_WE)
  71. if(NOT ${generated_output_dir} STREQUAL "")
  72. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  73. if(if_inner MATCHES "inner")
  74. add_custom_command(
  75. OUTPUT ${generated_file}
  76. COMMAND ${FLATC} --gen-mutable
  77. --reflect-names --gen-object-api -o ${generated_output_dir}
  78. ${total_schema_dirs}
  79. -c -b --reflect-types ${schema}
  80. DEPENDS ${FLATC} ${schema}
  81. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  82. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  83. else()
  84. add_custom_command(
  85. OUTPUT ${generated_file}
  86. COMMAND ${FLATC} -o ${generated_output_dir}
  87. ${total_schema_dirs}
  88. -c -b ${schema}
  89. DEPENDS ${FLATC} ${schema}
  90. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  91. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  92. endif()
  93. list(APPEND total_generated_files ${generated_file})
  94. endif()
  95. endforeach()
  96. add_custom_target(${custom_target_name} ALL
  97. DEPENDS ${total_generated_files})
  98. if(NOT ${generated_output_dir} STREQUAL "")
  99. include_directories(${generated_output_dir})
  100. set_property(TARGET ${custom_target_name}
  101. PROPERTY GENERATED_OUTPUT_DIR
  102. ${generated_output_dir})
  103. endif()
  104. endfunction()