xref: /aosp_15_r20/external/angle/third_party/flatbuffers/BUILD.gn (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1# Copyright 2016 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//testing/test.gni")
6import("//third_party/flatbuffers/flatbuffer.gni")
7
8config("flatbuffers_config") {
9  include_dirs = [
10    "src/include",
11    "src/src",
12    "src",
13    "generated",
14  ]
15
16  # Required to prevent static initialization of locale
17  # in util.cpp
18  defines = [ "FLATBUFFERS_LOCALE_INDEPENDENT=0" ]
19
20  if (is_clang) {
21    cflags = [
22      "-Wno-constant-conversion",
23      "-Wno-shorten-64-to-32",
24    ]
25  }
26}
27
28# The part of FlatBuffers that Chrome is interested in.
29source_set("flatbuffers") {
30  public = [
31    "src/include/flatbuffers/base.h",
32    "src/include/flatbuffers/flatbuffers.h",
33    "src/include/flatbuffers/stl_emulation.h",
34
35    # Required for tflite.
36    "src/include/flatbuffers/flexbuffers.h",
37    "src/include/flatbuffers/util.h",
38  ]
39
40  if (is_win) {
41    data_deps = [ "//build/win:runtime_libs" ]
42  }
43
44  configs -= [ "//build/config/compiler:chromium_code" ]
45  configs += [ "//build/config/compiler:no_chromium_code" ]
46
47  public_configs = [ ":flatbuffers_config" ]
48}
49
50# The complete FlatBuffers library, as required to build the flatc compiler and
51# some of the tests.
52source_set("compiler_files") {
53  include_dirs = [ "src/grpc" ]
54  sources = [
55    "src/grpc/src/compiler/cpp_generator.cc",
56    "src/grpc/src/compiler/cpp_generator.h",
57    "src/grpc/src/compiler/go_generator.cc",
58    "src/grpc/src/compiler/go_generator.h",
59    "src/grpc/src/compiler/java_generator.cc",
60    "src/grpc/src/compiler/java_generator.h",
61    "src/grpc/src/compiler/python_generator.cc",
62    "src/grpc/src/compiler/python_generator.h",
63    "src/grpc/src/compiler/schema_interface.h",
64    "src/grpc/src/compiler/swift_generator.cc",
65    "src/grpc/src/compiler/swift_generator.h",
66    "src/grpc/src/compiler/ts_generator.cc",
67    "src/grpc/src/compiler/ts_generator.h",
68    "src/include/codegen/python.cc",
69    "src/include/codegen/python.h",
70    "src/include/flatbuffers/code_generators.h",
71    "src/include/flatbuffers/flatc.h",
72    "src/include/flatbuffers/grpc.h",
73    "src/include/flatbuffers/hash.h",
74    "src/include/flatbuffers/idl.h",
75    "src/include/flatbuffers/minireflect.h",
76    "src/include/flatbuffers/reflection.h",
77    "src/include/flatbuffers/reflection_generated.h",
78    "src/include/flatbuffers/registry.h",
79    "src/src/annotated_binary_text_gen.cpp",
80    "src/src/annotated_binary_text_gen.h",
81    "src/src/bfbs_gen.h",
82    "src/src/bfbs_gen_lua.cpp",
83    "src/src/bfbs_gen_lua.h",
84    "src/src/bfbs_gen_nim.cpp",
85    "src/src/bfbs_gen_nim.h",
86    "src/src/bfbs_namer.h",
87    "src/src/binary_annotator.cpp",
88    "src/src/binary_annotator.h",
89    "src/src/code_generators.cpp",
90    "src/src/flatc.cpp",
91    "src/src/idl_gen_binary.cpp",
92    "src/src/idl_gen_binary.h",
93    "src/src/idl_gen_cpp.cpp",
94    "src/src/idl_gen_cpp.h",
95    "src/src/idl_gen_csharp.cpp",
96    "src/src/idl_gen_csharp.h",
97    "src/src/idl_gen_dart.cpp",
98    "src/src/idl_gen_dart.h",
99    "src/src/idl_gen_fbs.cpp",
100    "src/src/idl_gen_go.cpp",
101    "src/src/idl_gen_go.h",
102    "src/src/idl_gen_grpc.cpp",
103    "src/src/idl_gen_java.cpp",
104    "src/src/idl_gen_java.h",
105    "src/src/idl_gen_json_schema.cpp",
106    "src/src/idl_gen_json_schema.h",
107    "src/src/idl_gen_kotlin.cpp",
108    "src/src/idl_gen_kotlin.h",
109    "src/src/idl_gen_kotlin_kmp.cpp",
110    "src/src/idl_gen_lobster.cpp",
111    "src/src/idl_gen_lobster.h",
112    "src/src/idl_gen_php.cpp",
113    "src/src/idl_gen_php.h",
114    "src/src/idl_gen_python.cpp",
115    "src/src/idl_gen_python.h",
116    "src/src/idl_gen_rust.cpp",
117    "src/src/idl_gen_rust.h",
118    "src/src/idl_gen_swift.cpp",
119    "src/src/idl_gen_swift.h",
120    "src/src/idl_gen_text.cpp",
121    "src/src/idl_gen_text.h",
122    "src/src/idl_gen_ts.cpp",
123    "src/src/idl_gen_ts.h",
124    "src/src/idl_namer.h",
125    "src/src/idl_parser.cpp",
126    "src/src/namer.h",
127    "src/src/reflection.cpp",
128    "src/src/util.cpp",
129  ]
130  configs -= [ "//build/config/compiler:chromium_code" ]
131  configs += [ "//build/config/compiler:no_chromium_code" ]
132  visibility = [ ":*" ]
133  deps = [ ":flatbuffers" ]
134}
135
136executable("flatc") {
137  sources = [ "src/src/flatc_main.cpp" ]
138  deps = [
139    ":compiler_files",
140    ":flatbuffers",
141  ]
142}
143
144# The following is just for testing.
145
146flatbuffer("flatbuffers_samplebuffer") {
147  testonly = true
148  sources = [
149    "src/tests/alignment_test.fbs",
150    "src/tests/arrays_test.fbs",
151    "src/tests/include_test/include_test1.fbs",
152    "src/tests/include_test/sub/include_test2.fbs",
153    "src/tests/monster_extra.fbs",
154    "src/tests/monster_test.fbs",
155    "src/tests/namespace_test/namespace_test1.fbs",
156    "src/tests/namespace_test/namespace_test2.fbs",
157    "src/tests/native_inline_table_test.fbs",
158    "src/tests/native_type_test.fbs",
159    "src/tests/optional_scalars.fbs",
160  ]
161  flatc_include_dirs = [ "src/tests/include_test" ]
162}
163
164# This combines sources, "flatbuffers" and "flatbuffers_test", specified in the
165# public github repo required to build the unittests. This must be separate
166# from ":compiler_files".
167source_set("flatbuffers_test_files") {
168  include_dirs = [ "src/grpc" ]
169  sources = [
170    "src/include/flatbuffers/base.h",
171    "src/include/flatbuffers/code_generators.h",
172    "src/include/flatbuffers/flatbuffers.h",
173    "src/include/flatbuffers/flexbuffers.h",
174    "src/include/flatbuffers/grpc.h",
175    "src/include/flatbuffers/hash.h",
176    "src/include/flatbuffers/idl.h",
177    "src/include/flatbuffers/minireflect.h",
178    "src/include/flatbuffers/reflection.h",
179    "src/include/flatbuffers/reflection_generated.h",
180    "src/include/flatbuffers/registry.h",
181    "src/include/flatbuffers/stl_emulation.h",
182    "src/include/flatbuffers/util.h",
183    "src/src/code_generators.cpp",
184    "src/src/idl_gen_fbs.cpp",
185    "src/src/idl_gen_text.cpp",
186    "src/src/idl_gen_text.h",
187    "src/src/idl_parser.cpp",
188    "src/src/reflection.cpp",
189    "src/src/util.cpp",
190  ]
191
192  configs -= [ "//build/config/compiler:chromium_code" ]
193  configs += [ "//build/config/compiler:no_chromium_code" ]
194  deps = [ ":flatbuffers" ]
195}
196
197test("flatbuffers_unittests") {
198  sources = [
199    "src/tests/64bit/offset64_test.cpp",
200    "src/tests/64bit/offset64_test.h",
201    "src/tests/alignment_test.cpp",
202    "src/tests/alignment_test.h",
203    "src/tests/evolution_test.cpp",
204    "src/tests/evolution_test.h",
205    "src/tests/flexbuffers_test.cpp",
206    "src/tests/flexbuffers_test.h",
207    "src/tests/fuzz_test.cpp",
208    "src/tests/fuzz_test.h",
209    "src/tests/is_quiet_nan.h",
210    "src/tests/json_test.cpp",
211    "src/tests/json_test.h",
212    "src/tests/key_field_test.cpp",
213    "src/tests/key_field_test.h",
214    "src/tests/monster_test.cpp",
215    "src/tests/monster_test.h",
216    "src/tests/native_type_test_impl.cpp",
217    "src/tests/native_type_test_impl.h",
218    "src/tests/optional_scalars_test.cpp",
219    "src/tests/optional_scalars_test.h",
220    "src/tests/parser_test.cpp",
221    "src/tests/parser_test.h",
222    "src/tests/proto_test.cpp",
223    "src/tests/proto_test.h",
224    "src/tests/reflection_test.cpp",
225    "src/tests/reflection_test.h",
226    "src/tests/test.cpp",
227    "src/tests/test_assert.cpp",
228    "src/tests/test_assert.h",
229    "src/tests/test_builder.cpp",
230    "src/tests/test_builder.h",
231    "src/tests/util_test.cpp",
232    "src/tests/util_test.h",
233  ]
234  deps = [
235    ":flatbuffers",
236    ":flatbuffers_samplebuffer",
237    ":flatbuffers_test_files",
238  ]
239  data = [
240    "src/tests/",
241
242    "//testing/scripts/run_flatbuffers_unittests.py",
243  ]
244
245  data_deps = [ "//testing:test_scripts_shared" ]
246
247  defines = [
248    "FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE",
249
250    # Careful, this test suite needs to be run in the actual out/<build_dir>
251    # directory.
252    "FLATBUFFERS_TEST_PATH_PREFIX=" +
253        rebase_path("//third_party/flatbuffers/src/", root_build_dir),
254  ]
255  configs -= [ "//build/config/compiler:chromium_code" ]
256  configs += [ "//build/config/compiler:no_chromium_code" ]
257  libs = [ "log" ]
258}
259
260if (is_android) {
261  import("//build/config/android/rules.gni")
262
263  android_library("flatbuffers_java") {
264    chromium_code = false
265    sources = [
266      "src/java/src/main/java/com/google/flatbuffers/ArrayReadWriteBuf.java",
267      "src/java/src/main/java/com/google/flatbuffers/BaseVector.java",
268      "src/java/src/main/java/com/google/flatbuffers/BooleanVector.java",
269      "src/java/src/main/java/com/google/flatbuffers/ByteBufferReadWriteBuf.java",
270      "src/java/src/main/java/com/google/flatbuffers/ByteBufferUtil.java",
271      "src/java/src/main/java/com/google/flatbuffers/ByteVector.java",
272      "src/java/src/main/java/com/google/flatbuffers/Constants.java",
273      "src/java/src/main/java/com/google/flatbuffers/DoubleVector.java",
274      "src/java/src/main/java/com/google/flatbuffers/FlatBufferBuilder.java",
275      "src/java/src/main/java/com/google/flatbuffers/FlexBuffers.java",
276      "src/java/src/main/java/com/google/flatbuffers/FlexBuffersBuilder.java",
277      "src/java/src/main/java/com/google/flatbuffers/FloatVector.java",
278      "src/java/src/main/java/com/google/flatbuffers/IntVector.java",
279      "src/java/src/main/java/com/google/flatbuffers/LongVector.java",
280      "src/java/src/main/java/com/google/flatbuffers/ReadBuf.java",
281      "src/java/src/main/java/com/google/flatbuffers/ReadWriteBuf.java",
282      "src/java/src/main/java/com/google/flatbuffers/ShortVector.java",
283      "src/java/src/main/java/com/google/flatbuffers/StringVector.java",
284      "src/java/src/main/java/com/google/flatbuffers/Struct.java",
285      "src/java/src/main/java/com/google/flatbuffers/Table.java",
286      "src/java/src/main/java/com/google/flatbuffers/UnionVector.java",
287      "src/java/src/main/java/com/google/flatbuffers/Utf8.java",
288      "src/java/src/main/java/com/google/flatbuffers/Utf8Old.java",
289      "src/java/src/main/java/com/google/flatbuffers/Utf8Safe.java",
290    ]
291  }
292}
293