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

5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. if(MSVC)
  2. set(flatbuffers_CXXFLAGS "${CMAKE_CXX_FLAGS}")
  3. set(flatbuffers_CFLAGS "${CMAKE_C_FLAGS}")
  4. set(flatbuffers_LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
  5. else()
  6. set(flatbuffers_CXXFLAGS "-fPIC -fPIE -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-strong")
  7. set(flatbuffers_CFLAGS "-fPIC -fPIE -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-strong")
  8. endif()
  9. if(WIN32)
  10. set(flatbuffers_USE_STATIC_LIBS ON)
  11. endif()
  12. if(ENABLE_GITEE)
  13. set(REQ_URL "https://gitee.com/mirrors/flatbuffers/repository/archive/v1.11.0.tar.gz")
  14. set(MD5 "4051dc865063ffa724c4264dea8dbbe9")
  15. else()
  16. set(REQ_URL "https://github.com/google/flatbuffers/archive/v1.11.0.tar.gz")
  17. set(MD5 "02c64880acb89dbd57eebacfd67200d8")
  18. endif()
  19. if(APPLE)
  20. set(FLATBUFFERS_PATCH ${TOP_DIR}/third_party/patch/flatbuffers/flatbuffers.patch001)
  21. mindspore_add_pkg(flatbuffers
  22. VER 1.11.0
  23. LIBS flatbuffers
  24. EXE flatc
  25. URL ${REQ_URL}
  26. MD5 ${MD5}
  27. PATCHES ${FLATBUFFERS_PATCH}
  28. CMAKE_OPTION -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_INSTALL_LIBDIR=lib)
  29. else()
  30. mindspore_add_pkg(flatbuffers
  31. VER 1.11.0
  32. LIBS flatbuffers
  33. EXE flatc
  34. URL ${REQ_URL}
  35. MD5 ${MD5}
  36. CMAKE_OPTION -DCMAKE_C_COMPILER=${FLATC_GCC_COMPILER} -DCMAKE_CXX_COMPILER=${FLATC_GXX_COMPILER}
  37. -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release)
  38. endif()
  39. include_directories(${flatbuffers_INC})
  40. add_library(mindspore::flatbuffers ALIAS flatbuffers::flatbuffers)
  41. add_executable(mindspore::flatc ALIAS flatbuffers::flatc)
  42. function(ms_build_flatbuffers source_schema_files
  43. source_schema_dirs
  44. custom_target_name
  45. generated_output_dir)
  46. set(total_schema_dirs "")
  47. set(total_generated_files "")
  48. set(FLATC mindspore::flatc)
  49. foreach(schema_dir ${source_schema_dirs})
  50. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  51. endforeach()
  52. foreach(schema IN LISTS ${source_schema_files})
  53. get_filename_component(filename ${schema} NAME_WE)
  54. if(NOT ${generated_output_dir} STREQUAL "")
  55. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  56. add_custom_command(
  57. OUTPUT ${generated_file}
  58. COMMAND ${FLATC} --gen-mutable
  59. --reflect-names --gen-object-api -o ${generated_output_dir}
  60. ${total_schema_dirs}
  61. -c -b --reflect-types ${schema}
  62. DEPENDS ${FLATC} ${schema}
  63. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  64. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  65. list(APPEND total_generated_files ${generated_file})
  66. endif()
  67. endforeach()
  68. add_custom_target(${custom_target_name} ALL
  69. DEPENDS ${total_generated_files})
  70. if(NOT ${generated_output_dir} STREQUAL "")
  71. include_directories(${generated_output_dir})
  72. set_property(TARGET ${custom_target_name}
  73. PROPERTY GENERATED_OUTPUT_DIR
  74. ${generated_output_dir})
  75. endif()
  76. endfunction()
  77. function(ms_build_flatbuffers_lite
  78. source_schema_files source_schema_dirs custom_target_name generated_output_dir if_inner)
  79. set(total_schema_dirs "")
  80. set(total_generated_files "")
  81. set(FLATC mindspore::flatc)
  82. foreach(schema_dir ${source_schema_dirs})
  83. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  84. endforeach()
  85. foreach(schema IN LISTS ${source_schema_files})
  86. get_filename_component(filename ${schema} NAME_WE)
  87. if(NOT ${generated_output_dir} STREQUAL "")
  88. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  89. if(if_inner MATCHES "inner")
  90. add_custom_command(
  91. OUTPUT ${generated_file}
  92. COMMAND ${FLATC} --gen-mutable
  93. --reflect-names --gen-object-api -o ${generated_output_dir}
  94. ${total_schema_dirs}
  95. -c -b --reflect-types ${schema}
  96. DEPENDS ${FLATC} ${schema}
  97. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  98. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  99. else()
  100. add_custom_command(
  101. OUTPUT ${generated_file}
  102. COMMAND ${FLATC} -o ${generated_output_dir}
  103. ${total_schema_dirs}
  104. -c -b ${schema}
  105. DEPENDS ${FLATC} ${schema}
  106. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  107. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  108. endif()
  109. list(APPEND total_generated_files ${generated_file})
  110. endif()
  111. endforeach()
  112. add_custom_target(${custom_target_name} ALL
  113. DEPENDS ${total_generated_files})
  114. if(NOT ${generated_output_dir} STREQUAL "")
  115. include_directories(${generated_output_dir})
  116. set_property(TARGET ${custom_target_name}
  117. PROPERTY GENERATED_OUTPUT_DIR
  118. ${generated_output_dir})
  119. endif()
  120. endfunction()