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