1*6777b538SAndroid Build Coastguard Worker# Copyright 2020 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 Worker 5*6777b538SAndroid Build Coastguard Worker# This file contains the definition of the template absl_source_set which 6*6777b538SAndroid Build Coastguard Worker# should be the only type of target needed in abseil's BUILD.gn files. 7*6777b538SAndroid Build Coastguard Worker# This template will correctly set "configs" and "public_configs" in order 8*6777b538SAndroid Build Coastguard Worker# to correctly compile abseil in Chromium. 9*6777b538SAndroid Build Coastguard Worker# 10*6777b538SAndroid Build Coastguard Worker# Usage: 11*6777b538SAndroid Build Coastguard Worker# Most of the times its usage will be similar to the example below but all 12*6777b538SAndroid Build Coastguard Worker# the arguments avilable in source_set are also available for absl_source_set. 13*6777b538SAndroid Build Coastguard Worker# 14*6777b538SAndroid Build Coastguard Worker# absl_source_set("foo") { 15*6777b538SAndroid Build Coastguard Worker# sources = [ "foo.cc" ] 16*6777b538SAndroid Build Coastguard Worker# public = [ "foo.h" ] 17*6777b538SAndroid Build Coastguard Worker# deps = [ ":bar" ] 18*6777b538SAndroid Build Coastguard Worker# } 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Workerimport("//build_overrides/build.gni") 21*6777b538SAndroid Build Coastguard Worker 22*6777b538SAndroid Build Coastguard Workerdeclare_args() { 23*6777b538SAndroid Build Coastguard Worker absl_build_tests = build_with_chromium 24*6777b538SAndroid Build Coastguard Worker} 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Workertemplate("absl_source_set") { 27*6777b538SAndroid Build Coastguard Worker source_set(target_name) { 28*6777b538SAndroid Build Coastguard Worker if (defined(invoker.testonly) && invoker.testonly && !absl_build_tests) { 29*6777b538SAndroid Build Coastguard Worker not_needed(invoker, "*") 30*6777b538SAndroid Build Coastguard Worker } else { 31*6777b538SAndroid Build Coastguard Worker forward_variables_from(invoker, "*") 32*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 33*6777b538SAndroid Build Coastguard Worker configs += [ 34*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 35*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:prevent_unsafe_narrowing", 36*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp:absl_default_cflags_cc", 37*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp:absl_define_config", 38*6777b538SAndroid Build Coastguard Worker ] 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker if (is_component_build) { 41*6777b538SAndroid Build Coastguard Worker defines = [ "ABSL_BUILD_DLL" ] 42*6777b538SAndroid Build Coastguard Worker if (!is_win && current_os != "aix") { 43*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/gcc:symbol_visibility_hidden" ] 44*6777b538SAndroid Build Coastguard Worker configs += [ "//build/config/gcc:symbol_visibility_default" ] 45*6777b538SAndroid Build Coastguard Worker } 46*6777b538SAndroid Build Coastguard Worker } 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Worker if (!defined(public_configs)) { 49*6777b538SAndroid Build Coastguard Worker public_configs = [] 50*6777b538SAndroid Build Coastguard Worker } 51*6777b538SAndroid Build Coastguard Worker public_configs += [ 52*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp:absl_include_config", 53*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp:absl_public_cflags_cc", 54*6777b538SAndroid Build Coastguard Worker ] 55*6777b538SAndroid Build Coastguard Worker 56*6777b538SAndroid Build Coastguard Worker if (!defined(visibility)) { 57*6777b538SAndroid Build Coastguard Worker # Within Chromium builds, restrict direct visibility of Abseil sources, so 58*6777b538SAndroid Build Coastguard Worker # users must depend on //third_party/abseil-cpp:absl. This prevents use of 59*6777b538SAndroid Build Coastguard Worker # banned targets like absl/types:any. A few targets require exceptions. 60*6777b538SAndroid Build Coastguard Worker # TODO(crbug.com/1096380): Consider replacing build_with_chromium with 61*6777b538SAndroid Build Coastguard Worker # is_component_build for a narrower, more accurate condition. 62*6777b538SAndroid Build Coastguard Worker if (build_with_chromium) { 63*6777b538SAndroid Build Coastguard Worker visibility = [ 64*6777b538SAndroid Build Coastguard Worker # Abseil itself. 65*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp/*", 66*6777b538SAndroid Build Coastguard Worker 67*6777b538SAndroid Build Coastguard Worker # GTest. It unconditionally #includes any.h if pretty-print support 68*6777b538SAndroid Build Coastguard Worker # for absl types is enabled. 69*6777b538SAndroid Build Coastguard Worker "//third_party/googletest/*", 70*6777b538SAndroid Build Coastguard Worker 71*6777b538SAndroid Build Coastguard Worker # WebRTC binary to run PSNR and SSIM video quality analysis. It 72*6777b538SAndroid Build Coastguard Worker # statically links absl and it is used by "browser_tests" when 73*6777b538SAndroid Build Coastguard Worker # is_component_build=false but it cannot depend on the absl 74*6777b538SAndroid Build Coastguard Worker # component because it uses absl/flags. 75*6777b538SAndroid Build Coastguard Worker "//third_party/webrtc/rtc_tools:frame_analyzer", 76*6777b538SAndroid Build Coastguard Worker 77*6777b538SAndroid Build Coastguard Worker # WebRTC binaries used by //:chromium_builder_asan. They both 78*6777b538SAndroid Build Coastguard Worker # statically link absl (because they depend on absl/flags) and are 79*6777b538SAndroid Build Coastguard Worker # used by Chromium only when is_component_build=false. 80*6777b538SAndroid Build Coastguard Worker "//third_party/webrtc/rtc_tools:rtp_generator", 81*6777b538SAndroid Build Coastguard Worker "//third_party/webrtc/rtc_tools:video_replay", 82*6777b538SAndroid Build Coastguard Worker 83*6777b538SAndroid Build Coastguard Worker # Not used by Chromium directly. 84*6777b538SAndroid Build Coastguard Worker "//chromecast/internal/*", 85*6777b538SAndroid Build Coastguard Worker "//libassistant/*", 86*6777b538SAndroid Build Coastguard Worker 87*6777b538SAndroid Build Coastguard Worker # Not built into Chrome. 88*6777b538SAndroid Build Coastguard Worker "//components/optimization_guide/internal/*", 89*6777b538SAndroid Build Coastguard Worker ] 90*6777b538SAndroid Build Coastguard Worker } else { 91*6777b538SAndroid Build Coastguard Worker visibility = [ "*" ] 92*6777b538SAndroid Build Coastguard Worker } 93*6777b538SAndroid Build Coastguard Worker } 94*6777b538SAndroid Build Coastguard Worker } 95*6777b538SAndroid Build Coastguard Worker } 96*6777b538SAndroid Build Coastguard Worker} 97*6777b538SAndroid Build Coastguard Worker 98*6777b538SAndroid Build Coastguard Workertemplate("absl_test") { 99*6777b538SAndroid Build Coastguard Worker source_set(target_name) { 100*6777b538SAndroid Build Coastguard Worker if (!absl_build_tests) { 101*6777b538SAndroid Build Coastguard Worker not_needed(invoker, "*") 102*6777b538SAndroid Build Coastguard Worker } else { 103*6777b538SAndroid Build Coastguard Worker forward_variables_from(invoker, "*") 104*6777b538SAndroid Build Coastguard Worker testonly = true 105*6777b538SAndroid Build Coastguard Worker configs -= [ "//build/config/compiler:chromium_code" ] 106*6777b538SAndroid Build Coastguard Worker configs += [ 107*6777b538SAndroid Build Coastguard Worker "//build/config/compiler:no_chromium_code", 108*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp:absl_default_cflags_cc", 109*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp:absl_define_config", 110*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp:absl_test_config", 111*6777b538SAndroid Build Coastguard Worker ] 112*6777b538SAndroid Build Coastguard Worker 113*6777b538SAndroid Build Coastguard Worker if (!defined(public_configs)) { 114*6777b538SAndroid Build Coastguard Worker public_configs = [] 115*6777b538SAndroid Build Coastguard Worker } 116*6777b538SAndroid Build Coastguard Worker public_configs += [ 117*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp:absl_include_config", 118*6777b538SAndroid Build Coastguard Worker "//third_party/abseil-cpp:absl_public_cflags_cc", 119*6777b538SAndroid Build Coastguard Worker ] 120*6777b538SAndroid Build Coastguard Worker 121*6777b538SAndroid Build Coastguard Worker visibility = [ "//third_party/abseil-cpp/:*" ] 122*6777b538SAndroid Build Coastguard Worker deps += [ 123*6777b538SAndroid Build Coastguard Worker "//third_party/googletest:gmock", 124*6777b538SAndroid Build Coastguard Worker "//third_party/googletest:gtest", 125*6777b538SAndroid Build Coastguard Worker ] 126*6777b538SAndroid Build Coastguard Worker } 127*6777b538SAndroid Build Coastguard Worker } 128*6777b538SAndroid Build Coastguard Worker} 129