BUILD.gn 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. # Copyright 2016 The Chromium Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import("//testing/test.gni")
  5. import("//third_party/flatbuffers/flatbuffer.gni")
  6. config("flatbuffers_config") {
  7. include_dirs = [ "src/include" ]
  8. # Required to prevent static initialization of locale
  9. # in util.cpp
  10. defines = [ "FLATBUFFERS_LOCALE_INDEPENDENT=0" ]
  11. }
  12. # The part of FlatBuffers that Chrome is interested in.
  13. source_set("flatbuffers") {
  14. public = [
  15. "src/include/flatbuffers/base.h",
  16. "src/include/flatbuffers/flatbuffers.h",
  17. "src/include/flatbuffers/stl_emulation.h",
  18. # Required for tflite.
  19. "src/include/flatbuffers/flexbuffers.h",
  20. "src/include/flatbuffers/util.h",
  21. ]
  22. if (is_win) {
  23. data_deps = [ "//build/win:runtime_libs" ]
  24. }
  25. configs -= [ "//build/config/compiler:chromium_code" ]
  26. configs += [ "//build/config/compiler:no_chromium_code" ]
  27. public_configs = [ ":flatbuffers_config" ]
  28. }
  29. # The complete FlatBuffers library, as required to build the flatc compiler and
  30. # some of the tests.
  31. source_set("compiler_files") {
  32. include_dirs = [ "src/grpc" ]
  33. sources = [
  34. "src/grpc/src/compiler/cpp_generator.cc",
  35. "src/grpc/src/compiler/cpp_generator.h",
  36. "src/grpc/src/compiler/go_generator.cc",
  37. "src/grpc/src/compiler/go_generator.h",
  38. "src/grpc/src/compiler/java_generator.cc",
  39. "src/grpc/src/compiler/java_generator.h",
  40. "src/grpc/src/compiler/python_generator.cc",
  41. "src/grpc/src/compiler/python_generator.h",
  42. "src/grpc/src/compiler/schema_interface.h",
  43. "src/grpc/src/compiler/swift_generator.cc",
  44. "src/grpc/src/compiler/swift_generator.h",
  45. "src/grpc/src/compiler/ts_generator.cc",
  46. "src/grpc/src/compiler/ts_generator.h",
  47. "src/include/flatbuffers/bfbs_generator.h",
  48. "src/include/flatbuffers/code_generators.h",
  49. "src/include/flatbuffers/flatc.h",
  50. "src/include/flatbuffers/grpc.h",
  51. "src/include/flatbuffers/hash.h",
  52. "src/include/flatbuffers/idl.h",
  53. "src/include/flatbuffers/minireflect.h",
  54. "src/include/flatbuffers/reflection.h",
  55. "src/include/flatbuffers/reflection_generated.h",
  56. "src/include/flatbuffers/registry.h",
  57. "src/src/annotated_binary_text_gen.cpp",
  58. "src/src/annotated_binary_text_gen.h",
  59. "src/src/bfbs_gen.h",
  60. "src/src/bfbs_gen_lua.cpp",
  61. "src/src/bfbs_gen_lua.h",
  62. "src/src/binary_annotator.cpp",
  63. "src/src/binary_annotator.h",
  64. "src/src/code_generators.cpp",
  65. "src/src/flatc.cpp",
  66. "src/src/idl_gen_cpp.cpp",
  67. "src/src/idl_gen_csharp.cpp",
  68. "src/src/idl_gen_dart.cpp",
  69. "src/src/idl_gen_fbs.cpp",
  70. "src/src/idl_gen_go.cpp",
  71. "src/src/idl_gen_grpc.cpp",
  72. "src/src/idl_gen_java.cpp",
  73. "src/src/idl_gen_json_schema.cpp",
  74. "src/src/idl_gen_kotlin.cpp",
  75. "src/src/idl_gen_lobster.cpp",
  76. "src/src/idl_gen_lua.cpp",
  77. "src/src/idl_gen_php.cpp",
  78. "src/src/idl_gen_python.cpp",
  79. "src/src/idl_gen_rust.cpp",
  80. "src/src/idl_gen_swift.cpp",
  81. "src/src/idl_gen_text.cpp",
  82. "src/src/idl_gen_ts.cpp",
  83. "src/src/idl_parser.cpp",
  84. "src/src/reflection.cpp",
  85. "src/src/util.cpp",
  86. ]
  87. configs -= [ "//build/config/compiler:chromium_code" ]
  88. configs += [ "//build/config/compiler:no_chromium_code" ]
  89. visibility = [ ":*" ]
  90. deps = [ ":flatbuffers" ]
  91. }
  92. executable("flatc") {
  93. sources = [ "src/src/flatc_main.cpp" ]
  94. deps = [
  95. ":compiler_files",
  96. ":flatbuffers",
  97. ]
  98. }
  99. # The following is just for testing.
  100. flatbuffer("flatbuffers_samplebuffer") {
  101. testonly = true
  102. sources = [
  103. "src/tests/arrays_test.fbs",
  104. "src/tests/include_test/include_test1.fbs",
  105. "src/tests/include_test/sub/include_test2.fbs",
  106. "src/tests/monster_extra.fbs",
  107. "src/tests/monster_test.fbs",
  108. "src/tests/namespace_test/namespace_test1.fbs",
  109. "src/tests/namespace_test/namespace_test2.fbs",
  110. "src/tests/native_type_test.fbs",
  111. "src/tests/optional_scalars.fbs",
  112. ]
  113. flatc_include_dirs = [ "src/tests/include_test" ]
  114. }
  115. # This combines sources, "flatbuffers" and "flatbuffers_test", specified in the
  116. # public github repo required to build the unittests. This must be separate
  117. # from ":compiler_files".
  118. source_set("flatbuffers_test_files") {
  119. include_dirs = [ "src/grpc" ]
  120. sources = [
  121. "src/include/flatbuffers/base.h",
  122. "src/include/flatbuffers/code_generators.h",
  123. "src/include/flatbuffers/flatbuffers.h",
  124. "src/include/flatbuffers/flexbuffers.h",
  125. "src/include/flatbuffers/grpc.h",
  126. "src/include/flatbuffers/hash.h",
  127. "src/include/flatbuffers/idl.h",
  128. "src/include/flatbuffers/minireflect.h",
  129. "src/include/flatbuffers/reflection.h",
  130. "src/include/flatbuffers/reflection_generated.h",
  131. "src/include/flatbuffers/registry.h",
  132. "src/include/flatbuffers/stl_emulation.h",
  133. "src/include/flatbuffers/util.h",
  134. "src/src/code_generators.cpp",
  135. "src/src/idl_gen_fbs.cpp",
  136. "src/src/idl_gen_text.cpp",
  137. "src/src/idl_parser.cpp",
  138. "src/src/reflection.cpp",
  139. "src/src/util.cpp",
  140. ]
  141. configs -= [ "//build/config/compiler:chromium_code" ]
  142. configs += [ "//build/config/compiler:no_chromium_code" ]
  143. deps = [ ":flatbuffers" ]
  144. }
  145. test("flatbuffers_unittests") {
  146. sources = [
  147. "src/tests/native_type_test_impl.cpp",
  148. "src/tests/test.cpp",
  149. "src/tests/test_assert.cpp",
  150. "src/tests/test_builder.cpp",
  151. ]
  152. deps = [
  153. ":flatbuffers",
  154. ":flatbuffers_samplebuffer",
  155. ":flatbuffers_test_files",
  156. ]
  157. data = [
  158. "src/tests/",
  159. "//testing/scripts/run_flatbuffers_unittests.py",
  160. ]
  161. data_deps = [ "//testing:test_scripts_shared" ]
  162. defines = [
  163. "FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE",
  164. # Careful, this test suite needs to be run in the actual out/<build_dir>
  165. # directory.
  166. "FLATBUFFERS_TEST_PATH_PREFIX=" +
  167. rebase_path("//third_party/flatbuffers/src/", root_build_dir),
  168. ]
  169. configs -= [ "//build/config/compiler:chromium_code" ]
  170. configs += [ "//build/config/compiler:no_chromium_code" ]
  171. }