Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/abseil-cpp/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 5 kB image not shown  

Quelle  absl.gni   Sprache: unbekannt

 
Spracherkennung für: .gni vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

# Copyright 2020 The Chromium Authors
# 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")

declare_args() {
  absl_build_tests = build_with_chromium
  moz_webrtc_build = true
}

template("absl_source_set") {
  source_set(target_name) {
    if (defined(invoker.testonly) && invoker.testonly && !absl_build_tests) {
      not_needed(invoker, "*")
    } else {
      forward_variables_from(invoker, "*")
      configs -= [ "//chromium/build/config/compiler:chromium_code" ]
      configs += [
        "//chromium/build/config/compiler:no_chromium_code",
        "//chromium/build/config/compiler:prevent_unsafe_narrowing",
        "//abseil-cpp:absl_default_cflags_cc",
        "//abseil-cpp:absl_define_config",
      ]

      if (is_component_build) {
        defines = [ "ABSL_BUILD_DLL" ]
        if (!is_win && current_os != "aix") {
          configs -= [ "//chromium/build/config/gcc:symbol_visibility_hidden" ]
          configs += [ "//chromium/build/config/gcc:symbol_visibility_default" ]
        }
      }

      if (!defined(public_configs)) {
        public_configs = []
      }
      public_configs += [ "//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 = [ "*" ]
        }
      }
      visibility += [ "//abseil-cpp/*" ]

      # Now that abseil-cpp lives under Mozilla's third_party instead
      # of under libwebrtc's third_party and is built as a stand-alone
      # library, we need to "re-root" the dependency paths.  We can
      # modify the dependencies here to avoid modifying most, if not
      # all, of the BUILD.gn files.
      if (defined(deps)) {
        modified_deps = []
        foreach (dep, deps) {
          newdep = string_replace(dep, "//third_party/abseil-cpp/", "//")
          newdep = string_replace(newdep, "//build", "//chromium/build")
          modified_deps += [ newdep ]
        }
        deps = []
        deps = modified_deps
      }

      # Same for public_deps
      if (defined(public_deps)) {
        modified_deps = []
        foreach (dep, public_deps) {
          newdep = string_replace(dep, "//third_party/abseil-cpp/", "//")
          modified_deps += [ newdep ]
        }
        public_deps = []
        public_deps = modified_deps
      }

      # Same for visibility
      if (defined(visibility)) {
        modified_deps = []
        foreach (dep, visibility) {
          newdep = string_replace(dep, "//third_party/abseil-cpp/", "//")
          modified_deps += [ newdep ]
        }
        visibility = []
        visibility = modified_deps
      }
    }
  }
}

template("absl_test") {
  source_set(target_name) {
    if (!absl_build_tests) {
      not_needed(invoker, "*")
    } else {
      forward_variables_from(invoker, "*")
      testonly = true
      configs -= [ "//chromium/build/config/compiler:chromium_code" ]
      configs += [
        "//chromium/build/config/compiler:no_chromium_code",
        "//abseil-cpp:absl_default_cflags_cc",
        "//abseil-cpp:absl_define_config",
        "//abseil-cpp:absl_test_config",
      ]

      if (!defined(public_configs)) {
        public_configs = []
      }
      public_configs += [ "//abseil-cpp:absl_include_config" ]

      visibility = [ "//third_party/abseil-cpp/:*" ]
      deps += [
        "//third_party/googletest:gmock",
        "//third_party/googletest:gtest",
      ]
    }

    # Now that abseil-cpp lives under Mozilla's third_party instead
    # of under libwebrtc's third_party and is built as a stand-alone
    # library, we need to "re-root" the dependency paths.  We can
    # modify the dependencies here to avoid modifying most, if not
    # all, of the BUILD.gn files.
    if (defined(deps)) {
      modified_deps = []
      foreach (dep, deps) {
        newdep = string_replace(dep, "//third_party/abseil-cpp/", "//")
        modified_deps += [ newdep ]
      }
      deps = []
      deps = modified_deps
    }
  }
}

[ Dauer der Verarbeitung: 0.69 Sekunden  ]