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