1*6777b538SAndroid Build Coastguard Worker# Copyright 2014 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Workerimport("//build/config/linux/gtk/gtk.gni") 5*6777b538SAndroid Build Coastguard Workerimport("//build/config/sanitizers/sanitizers.gni") 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker# Includes default args like 'enable_js_protobuf'. 8*6777b538SAndroid Build Coastguard Workerimport("proto_library.gni") 9*6777b538SAndroid Build Coastguard Workerimport("proto_sources.gni") 10*6777b538SAndroid Build Coastguard Workerif (enable_js_protobuf) { 11*6777b538SAndroid Build Coastguard Worker import("//third_party/closure_compiler/compile_js.gni") 12*6777b538SAndroid Build Coastguard Worker} 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Workerconfig("protobuf_config") { 15*6777b538SAndroid Build Coastguard Worker include_dirs = [ "src" ] 16*6777b538SAndroid Build Coastguard Worker defines = [ 17*6777b538SAndroid Build Coastguard Worker "GOOGLE_PROTOBUF_NO_RTTI", 18*6777b538SAndroid Build Coastguard Worker "GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER", 19*6777b538SAndroid Build Coastguard Worker "GOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0", 20*6777b538SAndroid Build Coastguard Worker ] 21*6777b538SAndroid Build Coastguard Worker if (!is_win) { 22*6777b538SAndroid Build Coastguard Worker defines += [ "HAVE_PTHREAD" ] 23*6777b538SAndroid Build Coastguard Worker } 24*6777b538SAndroid Build Coastguard Worker} 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Workerconfig("protobuf_warnings") { 27*6777b538SAndroid Build Coastguard Worker cflags = [] 28*6777b538SAndroid Build Coastguard Worker if (is_clang) { 29*6777b538SAndroid Build Coastguard Worker # protobuf-3 contains a few functions that are unused. 30*6777b538SAndroid Build Coastguard Worker cflags += [ "-Wno-unused-function" ] 31*6777b538SAndroid Build Coastguard Worker } 32*6777b538SAndroid Build Coastguard Worker} 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Workerconfig("protoc_warnings") { 35*6777b538SAndroid Build Coastguard Worker cflags = [] 36*6777b538SAndroid Build Coastguard Worker if (is_clang) { 37*6777b538SAndroid Build Coastguard Worker # Some generates contain a few fields that are not used. 38*6777b538SAndroid Build Coastguard Worker cflags += [ "-Wno-unused-private-field" ] 39*6777b538SAndroid Build Coastguard Worker } 40*6777b538SAndroid Build Coastguard Worker} 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Workerif (is_component_build) { 43*6777b538SAndroid Build Coastguard Worker config("protobuf_use_dlls") { 44*6777b538SAndroid Build Coastguard Worker defines = [ "PROTOBUF_USE_DLLS" ] 45*6777b538SAndroid Build Coastguard Worker } 46*6777b538SAndroid Build Coastguard Worker} 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Worker# This config should be applied to targets using generated code from the proto 49*6777b538SAndroid Build Coastguard Worker# compiler. It sets up the include directories properly. 50*6777b538SAndroid Build Coastguard Workerconfig("using_proto") { 51*6777b538SAndroid Build Coastguard Worker include_dirs = [ 52*6777b538SAndroid Build Coastguard Worker "src", 53*6777b538SAndroid Build Coastguard Worker "$root_gen_dir/protoc_out", 54*6777b538SAndroid Build Coastguard Worker ] 55*6777b538SAndroid Build Coastguard Worker} 56*6777b538SAndroid Build Coastguard Worker 57*6777b538SAndroid Build Coastguard Workerconfig("allow_deprecated_proto_fields") { 58*6777b538SAndroid Build Coastguard Worker if (is_clang) { 59*6777b538SAndroid Build Coastguard Worker cflags = [ "-DPROTOBUF_ALLOW_DEPRECATED=1" ] 60*6777b538SAndroid Build Coastguard Worker } 61*6777b538SAndroid Build Coastguard Worker} 62*6777b538SAndroid Build Coastguard Worker 63*6777b538SAndroid Build Coastguard Workerprotobuf_lite_cflags = [] 64*6777b538SAndroid Build Coastguard Workerif (is_win) { 65*6777b538SAndroid Build Coastguard Worker protobuf_lite_cflags = [ 66*6777b538SAndroid Build Coastguard Worker "/wd4018", # signed/unsigned mismatch in comparison 67*6777b538SAndroid Build Coastguard Worker "/wd4065", # switch statement contains 'default' but no 'case' labels 68*6777b538SAndroid Build Coastguard Worker "/wd4146", # unary minus operator applied to unsigned type 69*6777b538SAndroid Build Coastguard Worker "/wd4244", # implicit conversion, possible loss of data 70*6777b538SAndroid Build Coastguard Worker "/wd4267", # size_t to int truncation 71*6777b538SAndroid Build Coastguard Worker "/wd4291", # no matching operator delete for a placement new. 72*6777b538SAndroid Build Coastguard Worker "/wd4305", # double to float truncation 73*6777b538SAndroid Build Coastguard Worker "/wd4355", # 'this' used in base member initializer list 74*6777b538SAndroid Build Coastguard Worker "/wd4506", # no definition for inline function (protobuf issue #240) 75*6777b538SAndroid Build Coastguard Worker "/wd4715", # not all control paths return a value (fixed in trunk) 76*6777b538SAndroid Build Coastguard Worker ] 77*6777b538SAndroid Build Coastguard Worker} 78*6777b538SAndroid Build Coastguard Worker 79*6777b538SAndroid Build Coastguard Workercomponent("protobuf_lite") { 80*6777b538SAndroid Build Coastguard Worker sources = protobuf_lite_sources + protobuf_headers 81*6777b538SAndroid Build Coastguard Worker 82*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 83*6777b538SAndroid Build Coastguard Worker configs += [ 84*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 85*6777b538SAndroid Build Coastguard Worker 86*6777b538SAndroid Build Coastguard Worker # Must be after no_chromium_code for warning flags to be ordered 87*6777b538SAndroid Build Coastguard Worker # correctly. 88*6777b538SAndroid Build Coastguard Worker ":protobuf_warnings", 89*6777b538SAndroid Build Coastguard Worker ] 90*6777b538SAndroid Build Coastguard Worker 91*6777b538SAndroid Build Coastguard Worker # Build protobuf_lite with full optimizations so Clang can optimize the 92*6777b538SAndroid Build Coastguard Worker # initializer out. See 0029-make-initializers-optimizable.patch. 93*6777b538SAndroid Build Coastguard Worker if (!is_debug && is_android) { 94*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:default_optimization" ] 95*6777b538SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:optimize_max" ] 96*6777b538SAndroid Build Coastguard Worker } 97*6777b538SAndroid Build Coastguard Worker 98*6777b538SAndroid Build Coastguard Worker # Remove coverage and Sanitizers other than ASan for a performance boost when 99*6777b538SAndroid Build Coastguard Worker # fuzzing. ASan can't be removed here because of a bug preventing unsanitized 100*6777b538SAndroid Build Coastguard Worker # code from using libc++, which protobuf_full uses. 101*6777b538SAndroid Build Coastguard Worker configs -= not_fuzzed_remove_nonasan_configs 102*6777b538SAndroid Build Coastguard Worker configs += [ "//build/config/sanitizers:not_fuzzed" ] 103*6777b538SAndroid Build Coastguard Worker 104*6777b538SAndroid Build Coastguard Worker if (is_win) { 105*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/win:lean_and_mean" ] 106*6777b538SAndroid Build Coastguard Worker } 107*6777b538SAndroid Build Coastguard Worker 108*6777b538SAndroid Build Coastguard Worker public_configs = [ ":protobuf_config" ] 109*6777b538SAndroid Build Coastguard Worker 110*6777b538SAndroid Build Coastguard Worker if (is_android) { 111*6777b538SAndroid Build Coastguard Worker libs = [ "log" ] # Used by src/google/protobuf/stubs/common.cc 112*6777b538SAndroid Build Coastguard Worker } 113*6777b538SAndroid Build Coastguard Worker 114*6777b538SAndroid Build Coastguard Worker cflags = protobuf_lite_cflags 115*6777b538SAndroid Build Coastguard Worker 116*6777b538SAndroid Build Coastguard Worker # Required for component builds. See http://crbug.com/172800. 117*6777b538SAndroid Build Coastguard Worker if (is_component_build) { 118*6777b538SAndroid Build Coastguard Worker public_configs += [ ":protobuf_use_dlls" ] 119*6777b538SAndroid Build Coastguard Worker defines = [ "LIBPROTOBUF_EXPORTS" ] 120*6777b538SAndroid Build Coastguard Worker } 121*6777b538SAndroid Build Coastguard Worker} 122*6777b538SAndroid Build Coastguard Worker 123*6777b538SAndroid Build Coastguard Worker# This is the full, heavy protobuf lib that's needed for c++ .protos that don't 124*6777b538SAndroid Build Coastguard Worker# specify the LITE_RUNTIME option. The protocol compiler itself (protoc) falls 125*6777b538SAndroid Build Coastguard Worker# into that category. Do not use in Chrome code. 126*6777b538SAndroid Build Coastguard Workerstatic_library("protobuf_full") { 127*6777b538SAndroid Build Coastguard Worker if (defined(build_with_chromium) && build_with_chromium) { 128*6777b538SAndroid Build Coastguard Worker # Prevent people from depending on this outside our file. 129*6777b538SAndroid Build Coastguard Worker visibility = [ 130*6777b538SAndroid Build Coastguard Worker ":*", 131*6777b538SAndroid Build Coastguard Worker 132*6777b538SAndroid Build Coastguard Worker # Used for testing protobuf generation. 133*6777b538SAndroid Build Coastguard Worker "//base/test:proto_test_support", 134*6777b538SAndroid Build Coastguard Worker 135*6777b538SAndroid Build Coastguard Worker # requires descriptors & reflection; testonly. 136*6777b538SAndroid Build Coastguard Worker "//third_party/libprotobuf-mutator:*", 137*6777b538SAndroid Build Coastguard Worker 138*6777b538SAndroid Build Coastguard Worker # Chromecast requires descriptors and reflection. 139*6777b538SAndroid Build Coastguard Worker "//chromecast/*", 140*6777b538SAndroid Build Coastguard Worker 141*6777b538SAndroid Build Coastguard Worker # libassistant requires descriptors and reflection for testing. 142*6777b538SAndroid Build Coastguard Worker "//libassistant/*", 143*6777b538SAndroid Build Coastguard Worker 144*6777b538SAndroid Build Coastguard Worker # Perfetto uses the full library for testing. 145*6777b538SAndroid Build Coastguard Worker "//third_party/perfetto/gn:protobuf_full", 146*6777b538SAndroid Build Coastguard Worker 147*6777b538SAndroid Build Coastguard Worker # Some tests inside ChromeOS need reflection to parse golden files. 148*6777b538SAndroid Build Coastguard Worker # Not included in production code. 149*6777b538SAndroid Build Coastguard Worker "//chrome/test:usage_time_limit_unittests", 150*6777b538SAndroid Build Coastguard Worker 151*6777b538SAndroid Build Coastguard Worker # The protobuf-based SQLite and GPU fuzzers need protobuf_full and are not 152*6777b538SAndroid Build Coastguard Worker # included in Chrome. 153*6777b538SAndroid Build Coastguard Worker "//gpu:gl_lpm_fuzzer_proto", 154*6777b538SAndroid Build Coastguard Worker "//gpu:gl_lpm_fuzzer_proto_gen", 155*6777b538SAndroid Build Coastguard Worker "//gpu:gl_lpm_shader_to_string_unittest", 156*6777b538SAndroid Build Coastguard Worker "//testing/libfuzzer/fuzzers:command_buffer_lpm_fuzzer_proto", 157*6777b538SAndroid Build Coastguard Worker "//testing/libfuzzer/fuzzers:command_buffer_lpm_fuzzer_proto_gen", 158*6777b538SAndroid Build Coastguard Worker "//third_party/sqlite:sqlite3_lpm_corpus_gen", 159*6777b538SAndroid Build Coastguard Worker 160*6777b538SAndroid Build Coastguard Worker # The protobuf-based Mojo LPM fuzzer needs protobuf_full and is not included 161*6777b538SAndroid Build Coastguard Worker # in Chrome. 162*6777b538SAndroid Build Coastguard Worker "//mojo/public/tools/fuzzers:mojolpm", 163*6777b538SAndroid Build Coastguard Worker 164*6777b538SAndroid Build Coastguard Worker # The root store tool is not part of Chrome itself, and needs to parse 165*6777b538SAndroid Build Coastguard Worker # human-readable protobufs. Protobuf is stored in //net/cert however as 166*6777b538SAndroid Build Coastguard Worker # browser needs to be able to parse serialized protobuf (which is exposed 167*6777b538SAndroid Build Coastguard Worker # as a separate lite BUILD rule). 168*6777b538SAndroid Build Coastguard Worker "//net/cert:root_store_proto_full", 169*6777b538SAndroid Build Coastguard Worker 170*6777b538SAndroid Build Coastguard Worker # The spirv-fuzz fuzzer tool needs protobuf_full and is not included in 171*6777b538SAndroid Build Coastguard Worker # Chrome. 172*6777b538SAndroid Build Coastguard Worker "//third_party/vulkan-deps/spirv-tools/src:spirv-fuzz", 173*6777b538SAndroid Build Coastguard Worker "//third_party/vulkan-deps/spirv-tools/src:spvtools_fuzz", 174*6777b538SAndroid Build Coastguard Worker "//third_party/vulkan-deps/spirv-tools/src:spvtools_fuzz_proto", 175*6777b538SAndroid Build Coastguard Worker 176*6777b538SAndroid Build Coastguard Worker # Some fuzzers for tint need protobuf_full and are not included in Chrome. 177*6777b538SAndroid Build Coastguard Worker "//third_party/dawn/src/tint/*", 178*6777b538SAndroid Build Coastguard Worker 179*6777b538SAndroid Build Coastguard Worker # Dawn LPM Fuzzers 180*6777b538SAndroid Build Coastguard Worker "//third_party/dawn/src/dawn/fuzzers:dawn_lpm_proto", 181*6777b538SAndroid Build Coastguard Worker "//third_party/dawn/src/dawn/fuzzers:dawn_lpm_proto_gen", 182*6777b538SAndroid Build Coastguard Worker 183*6777b538SAndroid Build Coastguard Worker # The Cast Core gRPC generator tool. 184*6777b538SAndroid Build Coastguard Worker "//third_party/cast_core/public/src/build/chromium:cast_core_grpc_generator", 185*6777b538SAndroid Build Coastguard Worker ] 186*6777b538SAndroid Build Coastguard Worker } 187*6777b538SAndroid Build Coastguard Worker 188*6777b538SAndroid Build Coastguard Worker deps = [ "//third_party/zlib" ] 189*6777b538SAndroid Build Coastguard Worker 190*6777b538SAndroid Build Coastguard Worker # In component build, protobuf_full can't depend on protobuf_lite because 191*6777b538SAndroid Build Coastguard Worker # it uses non-PROTOBUF_EXPORT symbols; in non-component build, protobuf_full 192*6777b538SAndroid Build Coastguard Worker # must have protobuf_lite as a dependency instead of building 193*6777b538SAndroid Build Coastguard Worker # protobuf_lite_sources to avoid ODR violations in targets that link both. 194*6777b538SAndroid Build Coastguard Worker # See crbug.com/1338164. 195*6777b538SAndroid Build Coastguard Worker if (is_component_build) { 196*6777b538SAndroid Build Coastguard Worker sources = protobuf_lite_sources + protobuf_sources + protobuf_headers 197*6777b538SAndroid Build Coastguard Worker } else { 198*6777b538SAndroid Build Coastguard Worker sources = protobuf_sources + protobuf_headers 199*6777b538SAndroid Build Coastguard Worker deps += [ ":protobuf_lite" ] 200*6777b538SAndroid Build Coastguard Worker } 201*6777b538SAndroid Build Coastguard Worker 202*6777b538SAndroid Build Coastguard Worker if (is_android) { 203*6777b538SAndroid Build Coastguard Worker libs = [ "log" ] # Used by src/google/protobuf/stubs/common.cc 204*6777b538SAndroid Build Coastguard Worker } 205*6777b538SAndroid Build Coastguard Worker 206*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 207*6777b538SAndroid Build Coastguard Worker configs += [ 208*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 209*6777b538SAndroid Build Coastguard Worker 210*6777b538SAndroid Build Coastguard Worker # Must be after no_chromium_code for warning flags to be ordered 211*6777b538SAndroid Build Coastguard Worker # correctly. 212*6777b538SAndroid Build Coastguard Worker ":protobuf_warnings", 213*6777b538SAndroid Build Coastguard Worker ] 214*6777b538SAndroid Build Coastguard Worker 215*6777b538SAndroid Build Coastguard Worker # Remove coverage and Sanitizers other than ASan for a performance boost when 216*6777b538SAndroid Build Coastguard Worker # fuzzing. ASan can't be removed here because of a bug preventing unsanitized 217*6777b538SAndroid Build Coastguard Worker # code from using libc++, which protobuf_full uses. 218*6777b538SAndroid Build Coastguard Worker configs -= not_fuzzed_remove_nonasan_configs 219*6777b538SAndroid Build Coastguard Worker configs += [ "//build/config/sanitizers:not_fuzzed" ] 220*6777b538SAndroid Build Coastguard Worker 221*6777b538SAndroid Build Coastguard Worker if (is_win) { 222*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/win:lean_and_mean" ] 223*6777b538SAndroid Build Coastguard Worker } 224*6777b538SAndroid Build Coastguard Worker public_configs = [ ":protobuf_config" ] 225*6777b538SAndroid Build Coastguard Worker 226*6777b538SAndroid Build Coastguard Worker cflags = protobuf_lite_cflags 227*6777b538SAndroid Build Coastguard Worker 228*6777b538SAndroid Build Coastguard Worker defines = [ "HAVE_ZLIB" ] 229*6777b538SAndroid Build Coastguard Worker} 230*6777b538SAndroid Build Coastguard Worker 231*6777b538SAndroid Build Coastguard Worker# Only compile the compiler for the host architecture. 232*6777b538SAndroid Build Coastguard Workerif (current_toolchain == host_toolchain) { 233*6777b538SAndroid Build Coastguard Worker # protoc compiler is separated into protoc library and executable targets to 234*6777b538SAndroid Build Coastguard Worker # support protoc plugins that need to link libprotoc, but not the main() 235*6777b538SAndroid Build Coastguard Worker # itself. See src/google/protobuf/compiler/plugin.h 236*6777b538SAndroid Build Coastguard Worker source_set("protoc_java") { 237*6777b538SAndroid Build Coastguard Worker sources = protoc_java_sources + protoc_java_headers 238*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 239*6777b538SAndroid Build Coastguard Worker configs += [ 240*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 241*6777b538SAndroid Build Coastguard Worker 242*6777b538SAndroid Build Coastguard Worker # Must be after no_chromium_code for warning flags to be ordered 243*6777b538SAndroid Build Coastguard Worker # correctly. 244*6777b538SAndroid Build Coastguard Worker ":protobuf_warnings", 245*6777b538SAndroid Build Coastguard Worker ":protoc_warnings", 246*6777b538SAndroid Build Coastguard Worker ] 247*6777b538SAndroid Build Coastguard Worker 248*6777b538SAndroid Build Coastguard Worker public_configs = [ ":protobuf_config" ] 249*6777b538SAndroid Build Coastguard Worker 250*6777b538SAndroid Build Coastguard Worker cflags = protobuf_lite_cflags 251*6777b538SAndroid Build Coastguard Worker 252*6777b538SAndroid Build Coastguard Worker public_deps = [ ":protobuf_full" ] 253*6777b538SAndroid Build Coastguard Worker } 254*6777b538SAndroid Build Coastguard Worker source_set("protoc_python") { 255*6777b538SAndroid Build Coastguard Worker sources = protoc_python_sources + protoc_python_headers 256*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 257*6777b538SAndroid Build Coastguard Worker configs += [ 258*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 259*6777b538SAndroid Build Coastguard Worker 260*6777b538SAndroid Build Coastguard Worker # Must be after no_chromium_code for warning flags to be ordered 261*6777b538SAndroid Build Coastguard Worker # correctly. 262*6777b538SAndroid Build Coastguard Worker ":protobuf_warnings", 263*6777b538SAndroid Build Coastguard Worker ":protoc_warnings", 264*6777b538SAndroid Build Coastguard Worker ] 265*6777b538SAndroid Build Coastguard Worker 266*6777b538SAndroid Build Coastguard Worker public_configs = [ ":protobuf_config" ] 267*6777b538SAndroid Build Coastguard Worker 268*6777b538SAndroid Build Coastguard Worker cflags = protobuf_lite_cflags 269*6777b538SAndroid Build Coastguard Worker 270*6777b538SAndroid Build Coastguard Worker public_deps = [ ":protobuf_full" ] 271*6777b538SAndroid Build Coastguard Worker } 272*6777b538SAndroid Build Coastguard Worker static_library("protoc_lib") { 273*6777b538SAndroid Build Coastguard Worker sources = protoc_sources + protoc_headers 274*6777b538SAndroid Build Coastguard Worker 275*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 276*6777b538SAndroid Build Coastguard Worker configs += [ 277*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 278*6777b538SAndroid Build Coastguard Worker 279*6777b538SAndroid Build Coastguard Worker # Must be after no_chromium_code for warning flags to be ordered 280*6777b538SAndroid Build Coastguard Worker # correctly. 281*6777b538SAndroid Build Coastguard Worker ":protobuf_warnings", 282*6777b538SAndroid Build Coastguard Worker ":protoc_warnings", 283*6777b538SAndroid Build Coastguard Worker ] 284*6777b538SAndroid Build Coastguard Worker if (is_win) { 285*6777b538SAndroid Build Coastguard Worker # This is defined internally, don't warn on duplicate. 286*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/win:lean_and_mean" ] 287*6777b538SAndroid Build Coastguard Worker } 288*6777b538SAndroid Build Coastguard Worker 289*6777b538SAndroid Build Coastguard Worker public_configs = [ ":protobuf_config" ] 290*6777b538SAndroid Build Coastguard Worker 291*6777b538SAndroid Build Coastguard Worker cflags = protobuf_lite_cflags 292*6777b538SAndroid Build Coastguard Worker 293*6777b538SAndroid Build Coastguard Worker public_deps = [ ":protobuf_full" ] 294*6777b538SAndroid Build Coastguard Worker deps = [ 295*6777b538SAndroid Build Coastguard Worker ":protoc_java", 296*6777b538SAndroid Build Coastguard Worker ":protoc_python", 297*6777b538SAndroid Build Coastguard Worker ] 298*6777b538SAndroid Build Coastguard Worker } 299*6777b538SAndroid Build Coastguard Worker 300*6777b538SAndroid Build Coastguard Worker executable("protoc") { 301*6777b538SAndroid Build Coastguard Worker sources = [ "src/google/protobuf/compiler/main.cc" ] 302*6777b538SAndroid Build Coastguard Worker 303*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 304*6777b538SAndroid Build Coastguard Worker configs += [ "//build/config/compiler:no_chromium_code" ] 305*6777b538SAndroid Build Coastguard Worker 306*6777b538SAndroid Build Coastguard Worker cflags = protobuf_lite_cflags 307*6777b538SAndroid Build Coastguard Worker 308*6777b538SAndroid Build Coastguard Worker deps = [ 309*6777b538SAndroid Build Coastguard Worker ":protoc_lib", 310*6777b538SAndroid Build Coastguard Worker 311*6777b538SAndroid Build Coastguard Worker # Default manifest on Windows (a no-op elsewhere). 312*6777b538SAndroid Build Coastguard Worker "//build/win:default_exe_manifest", 313*6777b538SAndroid Build Coastguard Worker ] 314*6777b538SAndroid Build Coastguard Worker if (enable_js_protobuf) { 315*6777b538SAndroid Build Coastguard Worker deps += [ "//third_party/protobuf-javascript:protoc-gen-js" ] 316*6777b538SAndroid Build Coastguard Worker } 317*6777b538SAndroid Build Coastguard Worker } 318*6777b538SAndroid Build Coastguard Worker} 319*6777b538SAndroid Build Coastguard Worker 320*6777b538SAndroid Build Coastguard Workergoogle_python_dir = "$root_out_dir/pyproto/google" 321*6777b538SAndroid Build Coastguard Worker 322*6777b538SAndroid Build Coastguard Workercopy("copy_google_protobuf") { 323*6777b538SAndroid Build Coastguard Worker # TODO(ncarter): protoc's python generator treats descriptor.proto 324*6777b538SAndroid Build Coastguard Worker # specially, but only when the input path is exactly 325*6777b538SAndroid Build Coastguard Worker # "google/protobuf/descriptor.proto". I'm not sure how to execute a rule 326*6777b538SAndroid Build Coastguard Worker # from a different directory. For now, use a manually-generated copy of 327*6777b538SAndroid Build Coastguard Worker # descriptor_pb2.py. 328*6777b538SAndroid Build Coastguard Worker sources = pyproto_sources + [ "python/google/protobuf/descriptor_pb2.py" ] 329*6777b538SAndroid Build Coastguard Worker outputs = [ "$google_python_dir/protobuf/{{source_file_part}}" ] 330*6777b538SAndroid Build Coastguard Worker} 331*6777b538SAndroid Build Coastguard Worker 332*6777b538SAndroid Build Coastguard Workercopy("copy_google_protobuf_internal") { 333*6777b538SAndroid Build Coastguard Worker sources = pyproto_internal_sources 334*6777b538SAndroid Build Coastguard Worker outputs = [ "$google_python_dir/protobuf/internal/{{source_file_part}}" ] 335*6777b538SAndroid Build Coastguard Worker} 336*6777b538SAndroid Build Coastguard Worker 337*6777b538SAndroid Build Coastguard Worker# Build time dependency for action rules. 338*6777b538SAndroid Build Coastguard Workergroup("py_proto") { 339*6777b538SAndroid Build Coastguard Worker public_deps = [ 340*6777b538SAndroid Build Coastguard Worker ":copy_google_protobuf", 341*6777b538SAndroid Build Coastguard Worker ":copy_google_protobuf_internal", 342*6777b538SAndroid Build Coastguard Worker ] 343*6777b538SAndroid Build Coastguard Worker} 344*6777b538SAndroid Build Coastguard Worker 345*6777b538SAndroid Build Coastguard Worker# Runtime dependency if the target needs the python scripts. 346*6777b538SAndroid Build Coastguard Workergroup("py_proto_runtime") { 347*6777b538SAndroid Build Coastguard Worker deps = [ ":py_proto" ] 348*6777b538SAndroid Build Coastguard Worker 349*6777b538SAndroid Build Coastguard Worker # Targets that depend on this should depend on the copied data files. 350*6777b538SAndroid Build Coastguard Worker data = get_target_outputs(":copy_google_protobuf") 351*6777b538SAndroid Build Coastguard Worker data += get_target_outputs(":copy_google_protobuf_internal") 352*6777b538SAndroid Build Coastguard Worker} 353*6777b538SAndroid Build Coastguard Worker 354*6777b538SAndroid Build Coastguard Worker# JS protobuf library. 355*6777b538SAndroid Build Coastguard Workerif (enable_js_protobuf) { 356*6777b538SAndroid Build Coastguard Worker js_library("js_proto") { 357*6777b538SAndroid Build Coastguard Worker sources = [ 358*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/array/array.js", 359*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/asserts/asserts.js", 360*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/base.js", 361*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/crypt/base64.js", 362*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/crypt/crypt.js", 363*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/debug/error.js", 364*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/dom/asserts.js", 365*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/dom/browserfeature.js", 366*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/dom/dom.js", 367*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/dom/htmlelement.js", 368*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/dom/nodetype.js", 369*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/dom/safe.js", 370*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/dom/tagname.js", 371*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/dom/tags.js", 372*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/fs/blob.js", 373*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/fs/url.js", 374*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/functions/functions.js", 375*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/goog.js", 376*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/html/safehtml.js", 377*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/html/safescript.js", 378*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/html/safestyle.js", 379*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/html/safestylesheet.js", 380*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/html/safeurl.js", 381*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/html/trustedresourceurl.js", 382*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/html/trustedtypes.js", 383*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/html/uncheckedconversions.js", 384*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/i18n/bidi.js", 385*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/labs/useragent/browser.js", 386*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/labs/useragent/engine.js", 387*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/labs/useragent/platform.js", 388*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/labs/useragent/useragent.js", 389*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/labs/useragent/util.js", 390*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/math/coordinate.js", 391*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/math/math.js", 392*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/math/size.js", 393*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/memoize/memoize.js", 394*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/object/object.js", 395*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/reflect/reflect.js", 396*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/string/const.js", 397*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/string/internal.js", 398*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/string/string.js", 399*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/string/typedstring.js", 400*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/useragent/product.js", 401*6777b538SAndroid Build Coastguard Worker "//third_party/google-closure-library/closure/goog/useragent/useragent.js", 402*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/asserts.js", 403*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/binary/arith.js", 404*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/binary/constants.js", 405*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/binary/decoder.js", 406*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/binary/encoder.js", 407*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/binary/reader.js", 408*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/binary/utils.js", 409*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/binary/writer.js", 410*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/map.js", 411*6777b538SAndroid Build Coastguard Worker "//third_party/protobuf-javascript/src/message.js", 412*6777b538SAndroid Build Coastguard Worker ] 413*6777b538SAndroid Build Coastguard Worker } 414*6777b538SAndroid Build Coastguard Worker} 415