82 lines
2.9 KiB
Plaintext
82 lines
2.9 KiB
Plaintext
# Copyright 2020 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# This file contains the definition of the template absl_source_set which
|
|
# should be the only type of target needed in abseil's BUILD.gn files.
|
|
# This template will correctly set "configs" and "public_configs" in order
|
|
# to correctly compile abseil in Chromium.
|
|
#
|
|
# Usage:
|
|
# Most of the times its usage will be similar to the example below but all
|
|
# the arguments avilable in source_set are also available for absl_source_set.
|
|
#
|
|
# absl_source_set("foo") {
|
|
# sources = [ "foo.cc" ]
|
|
# public = [ "foo.h" ]
|
|
# deps = [ ":bar" ]
|
|
# }
|
|
|
|
import("//build_overrides/build.gni")
|
|
|
|
template("absl_source_set") {
|
|
source_set(target_name) {
|
|
forward_variables_from(invoker, "*")
|
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
configs += [
|
|
"//build/config/compiler:no_chromium_code",
|
|
"//third_party/abseil-cpp:absl_default_cflags_cc",
|
|
"//third_party/abseil-cpp:absl_define_config",
|
|
]
|
|
|
|
if (is_component_build) {
|
|
defines = [ "ABSL_BUILD_DLL" ]
|
|
if (!is_win) {
|
|
configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
|
|
configs += [ "//build/config/gcc:symbol_visibility_default" ]
|
|
}
|
|
}
|
|
|
|
if (!defined(public_configs)) {
|
|
public_configs = []
|
|
}
|
|
public_configs += [ "//third_party/abseil-cpp:absl_include_config" ]
|
|
|
|
if (!defined(visibility)) {
|
|
# Within Chromium builds, restrict direct visibility of Abseil sources, so
|
|
# users must depend on //third_party/abseil-cpp:absl. This prevents use of
|
|
# banned targets like absl/types:any. A few targets require exceptions.
|
|
# TODO(crbug.com/1096380): Consider replacing build_with_chromium with
|
|
# is_component_build for a narrower, more accurate condition.
|
|
if (build_with_chromium) {
|
|
visibility = [
|
|
# Abseil itself.
|
|
"//third_party/abseil-cpp/*",
|
|
|
|
# GTest. It unconditionally #includes any.h if pretty-print support
|
|
# for absl types is enabled.
|
|
"//third_party/googletest/*",
|
|
|
|
# WebRTC binary to run PSNR and SSIM video quality analysis. It
|
|
# statically links absl and it is used by "browser_tests" when
|
|
# is_component_build=false but it cannot depend on the absl
|
|
# component because it uses absl/flags.
|
|
"//third_party/webrtc/rtc_tools:frame_analyzer",
|
|
|
|
# WebRTC binaries used by //:chromium_builder_asan. They both
|
|
# statically link absl (because they depend on absl/flags) and are
|
|
# used by Chromium only when is_component_build=false.
|
|
"//third_party/webrtc/rtc_tools:rtp_generator",
|
|
"//third_party/webrtc/rtc_tools:video_replay",
|
|
|
|
# Not used by Chromium directly.
|
|
"//chromecast/internal/*",
|
|
"//libassistant/*",
|
|
]
|
|
} else {
|
|
visibility = [ "*" ]
|
|
}
|
|
}
|
|
}
|
|
}
|