Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/chromium/build/config/nacl/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 4 kB image not shown  

Quelle  BUILD.gn   Sprache: unbekannt

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

# Copyright (c) 2014 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//chromium/build/config/nacl/config.gni")

# Native Client Definitions
config("nacl_defines") {
  if (is_linux || is_chromeos || is_android || is_nacl) {
    defines = [
      "_POSIX_C_SOURCE=199506",
      "_XOPEN_SOURCE=600",
      "_GNU_SOURCE=1",
      "__STDC_LIMIT_MACROS=1",
    ]
  } else if (is_win) {
    defines = [ "__STDC_LIMIT_MACROS=1" ]
  }

  if (target_cpu == "pnacl" && !is_nacl_nonsfi) {
    # TODO: Remove the following definition once NACL_BUILD_ARCH and
    # NACL_BUILD_SUBARCH are defined by the PNaCl toolchain.
    defines += [ "NACL_BUILD_ARCH=pnacl" ]
  }
}

config("nexe_defines") {
  defines = [
    "DYNAMIC_ANNOTATIONS_ENABLED=1",
    "DYNAMIC_ANNOTATIONS_PREFIX=NACL_",
  ]
}

config("nacl_warnings") {
  if (is_win) {
    # Some NaCl code uses forward declarations of static const variables,
    # with initialized definitions later on.  (The alternative would be
    # many, many more forward declarations of everything used in that
    # const variable's initializer before the definition.)  The Windows
    # compiler is too stupid to notice that there is an initializer later
    # in the file, and warns about the forward declaration.
    cflags = [ "/wd4132" ]
  }
}

# The base target that all targets in the NaCl build should depend on.
# This allows configs to be modified for everything in the NaCl build, even when
# the NaCl build is composed into the Chrome build.  (GN has no functionality to
# add flags to everything in //native_client, having a base target works around
# that limitation.)
source_set("nacl_base") {
  public_configs = [
    ":nacl_defines",
    ":nacl_warnings",
  ]
  if (current_os == "nacl") {
    public_configs += [ ":nexe_defines" ]
  }
}

config("compiler") {
  configs = []
  cflags = []
  ldflags = []
  libs = []

  if (is_clang && target_cpu != "pnacl") {
    # -no-integrated-as is the default in nacl-clang for historical
    # compatibility with inline assembly code and so forth.  But there
    # are no such cases in Chromium code, and -integrated-as is nicer in
    # general.  Moreover, the IRT must be built using LLVM's assembler
    # on x86-64 to preserve sandbox base address hiding.  Use it
    # everywhere for consistency (and possibly quicker builds).
    cflags += [ "-integrated-as" ]
  }
  if (is_nacl_nonsfi) {
    cflags += [ "--pnacl-allow-translate" ]
    ldflags += [
      "--pnacl-allow-translate",
      "--pnacl-allow-native",
      "-Wl,--noirt",
      "-Wt,--noirt",
      "-Wt,--noirtshim",

      # The clang driver automatically injects -lpthread when using libc++, but
      # the toolchain doesn't have it yet.  To get around this, use
      # -nodefaultlibs and make each executable target depend on
      # "//native_client/src/nonsfi/irt:nacl_sys_private".
      "-nodefaultlibs",
    ]
    libs += [
      "c++",
      "m",
      "c",
      "pnaclmm",
    ]
    include_dirs = [ "//native_client/src/public/linux_syscalls" ]
  }

  asmflags = cflags
}

config("compiler_codegen") {
  cflags = []

  if (is_nacl_irt) {
    cflags += [
      # A debugger should be able to unwind IRT call frames.  This is
      # the default behavior on x86-64 and when compiling C++ with
      # exceptions enabled; the change is for the benefit of x86-32 C.
      # The frame pointer is unnecessary when unwind tables are used.
      "-fasynchronous-unwind-tables",
      "-fomit-frame-pointer",
    ]

    if (target_cpu == "x86") {
      # The x86-32 IRT needs to be callable with an under-aligned
      # stack; so we disable SSE instructions, which can fault on
      # misaligned addresses.  See
      # https://code.google.com/p/nativeclient/issues/detail?id=3935
      cflags += [
        "-mstackrealign",
        "-mno-sse",
      ]
    }
  }

  asmflags = cflags
}

config("irt_optimize") {
  cflags = [
    # Optimize for space, keep the IRT nexe small.
    "-Os",

    # These are omitted from non-IRT libraries to keep the libraries
    # themselves small.
    "-ffunction-sections",
    "-fdata-sections",
  ]

  ldflags = [ "-Wl,--gc-sections" ]
}

[ Dauer der Verarbeitung: 0.40 Sekunden  ]