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
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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/v2.0.0.tar.gz")
  14. set(MD5 "5c23d17c0486b81d4c11907e8f7bf36b")
  15. else()
  16. set(REQ_URL "https://github.com/google/flatbuffers/archive/v2.0.0.tar.gz")
  17. set(MD5 "a27992324c3cbf86dd888268a23d17bd")
  18. endif()
  19. if(APPLE)
  20. set(flatbuffers_CXXFLAGS "${flatbuffers_CXXFLAGS} -Wno-deprecated")
  21. endif()
  22. if(APPLE)
  23. mindspore_add_pkg(flatbuffers
  24. VER 2.0.0
  25. LIBS flatbuffers
  26. EXE flatc
  27. URL ${REQ_URL}
  28. MD5 ${MD5}
  29. CMAKE_OPTION -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_INSTALL_LIBDIR=lib)
  30. else()
  31. mindspore_add_pkg(flatbuffers
  32. VER 2.0.0
  33. LIBS flatbuffers
  34. EXE flatc
  35. URL ${REQ_URL}
  36. MD5 ${MD5}
  37. CMAKE_OPTION -DCMAKE_C_COMPILER=${FLATC_GCC_COMPILER} -DCMAKE_CXX_COMPILER=${FLATC_GXX_COMPILER}
  38. -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release)
  39. endif()
  40. include_directories(${flatbuffers_INC})
  41. add_library(mindspore::flatbuffers ALIAS flatbuffers::flatbuffers)
  42. add_executable(mindspore::flatc ALIAS flatbuffers::flatc)
  43. function(ms_build_flatbuffers source_schema_files
  44. source_schema_dirs
  45. custom_target_name
  46. generated_output_dir)
  47. set(total_schema_dirs "")
  48. set(total_generated_files "")
  49. set(FLATC mindspore::flatc)
  50. foreach(schema_dir ${source_schema_dirs})
  51. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  52. endforeach()
  53. foreach(schema IN LISTS ${source_schema_files})
  54. get_filename_component(filename ${schema} NAME_WE)
  55. if(NOT ${generated_output_dir} STREQUAL "")
  56. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  57. add_custom_command(
  58. OUTPUT ${generated_file}
  59. COMMAND ${FLATC} --gen-mutable
  60. --reflect-names --gen-object-api -o ${generated_output_dir}
  61. ${total_schema_dirs}
  62. -c -b --reflect-types ${schema}
  63. DEPENDS ${FLATC} ${schema}
  64. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  65. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  66. list(APPEND total_generated_files ${generated_file})
  67. endif()
  68. endforeach()
  69. add_custom_target(${custom_target_name} ALL
  70. DEPENDS ${total_generated_files})
  71. if(NOT ${generated_output_dir} STREQUAL "")
  72. include_directories(${generated_output_dir})
  73. set_property(TARGET ${custom_target_name}
  74. PROPERTY GENERATED_OUTPUT_DIR
  75. ${generated_output_dir})
  76. endif()
  77. endfunction()
  78. function(ms_build_flatbuffers_lite
  79. source_schema_files source_schema_dirs custom_target_name generated_output_dir if_inner)
  80. set(total_schema_dirs "")
  81. set(total_generated_files "")
  82. set(FLATC mindspore::flatc)
  83. foreach(schema_dir ${source_schema_dirs})
  84. set(total_schema_dirs -I ${schema_dir} ${total_schema_dirs})
  85. endforeach()
  86. foreach(schema IN LISTS ${source_schema_files})
  87. get_filename_component(filename ${schema} NAME_WE)
  88. if(NOT ${generated_output_dir} STREQUAL "")
  89. set(generated_file ${generated_output_dir}/${filename}_generated.h)
  90. if(if_inner MATCHES "inner")
  91. add_custom_command(
  92. OUTPUT ${generated_file}
  93. COMMAND ${FLATC} --gen-mutable
  94. --reflect-names --gen-object-api -o ${generated_output_dir}
  95. ${total_schema_dirs}
  96. -c -b --reflect-types ${schema}
  97. DEPENDS ${FLATC} ${schema}
  98. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  99. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  100. else()
  101. add_custom_command(
  102. OUTPUT ${generated_file}
  103. COMMAND ${FLATC} -o ${generated_output_dir}
  104. ${total_schema_dirs}
  105. -c -b ${schema}
  106. DEPENDS ${FLATC} ${schema}
  107. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  108. COMMENT "Running C++ flatbuffers compiler on ${schema}" VERBATIM)
  109. endif()
  110. list(APPEND total_generated_files ${generated_file})
  111. endif()
  112. endforeach()
  113. add_custom_target(${custom_target_name} ALL
  114. DEPENDS ${total_generated_files})
  115. if(NOT ${generated_output_dir} STREQUAL "")
  116. include_directories(${generated_output_dir})
  117. set_property(TARGET ${custom_target_name}
  118. PROPERTY GENERATED_OUTPUT_DIR
  119. ${generated_output_dir})
  120. endif()
  121. endfunction()