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

Quelle  moz.build   Sprache: unbekannt

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

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.


@template
def Libxul_defines():
    LIBRARY_DEFINES["MOZILLA_INTERNAL_API"] = True
    LIBRARY_DEFINES["IMPL_LIBXUL"] = True
    LIBRARY_DEFINES["MOZ_SUPPORT_LEAKCHECKING"] = True
    if not CONFIG["JS_SHARED_LIBRARY"]:
        LIBRARY_DEFINES["STATIC_EXPORTABLE_JS_API"] = True


@template
def Libxul(name, output_category=None):
    if CONFIG["MOZ_WIDGET_TOOLKIT"] in ("cocoa", "uikit"):
        # This is going to be a framework named "XUL", not an ordinary library named
        # "libxul.dylib"
        GeckoFramework(name, output_category=output_category, linkage=None)
        SHARED_LIBRARY_NAME = "XUL"
    else:
        GeckoSharedLibrary(name, output_category=output_category, linkage=None)
        SHARED_LIBRARY_NAME = "xul"

    DELAYLOAD_DLLS += [
        "avrt.dll",
        "comdlg32.dll",
        "credui.dll",
        "d3d11.dll",
        "D3DCompiler_47.dll",
        "dhcpcsvc.dll",
        "dnsapi.dll",
        "dwmapi.dll",
        "dxgi.dll",
        "gdi32.dll",
        "hid.dll",
        "imm32.dll",
        "iphlpapi.dll",
        "msi.dll",
        "msimg32.dll",
        "netapi32.dll",
        "ole32.dll",
        "oleaut32.dll",
        "secur32.dll",
        "setupapi.dll",
        "shell32.dll",
        "shlwapi.dll",
        "urlmon.dll",
        "user32.dll",
        "userenv.dll",
        "usp10.dll",
        "uxtheme.dll",
        "wininet.dll",
        "winmm.dll",
        "winspool.drv",
        "wtsapi32.dll",
    ]

    if CONFIG["ACCESSIBILITY"]:
        DELAYLOAD_DLLS += ["oleacc.dll", "UIAutomationCore.dll"]

    if CONFIG["MOZ_WEBRTC"]:
        DELAYLOAD_DLLS += ["msdmo.dll"]

    if CONFIG["OS_ARCH"] == "WINNT":
        DELAYLOAD_DLLS += [
            "api-ms-win-core-winrt-l1-1-0.dll",
            "api-ms-win-core-winrt-string-l1-1-0.dll",
        ]

    if CONFIG["OS_ARCH"] == "WINNT" and CONFIG["ACCESSIBILITY"]:
        LOCAL_INCLUDES += ["!/accessible/interfaces/gecko/"]

    if CONFIG["OS_ARCH"] == "WINNT":
        LOCAL_INCLUDES += [
            "/widget/windows",
            "/xpcom/base",
        ]
        RCINCLUDE = "/toolkit/library/xulrunner.rc"

    # Show a breakdown of linker time. (Too verbose for local builds.)
    if CONFIG["CC_TYPE"] == "clang-cl" and not CONFIG["DEVELOPER_OPTIONS"]:
        LDFLAGS += ["-time"]

    Libxul_defines()

    OS_LIBS += CONFIG["LIBATOMIC_LIBS"]

    # TouchBar-related classes are only available in the 10.12.2 SDK and later.
    # We need to weak link these classes until we've upgraded our SDK to at
    # least 10.12.2.
    # We're also linking against libresolv to solve bug 1367932.
    if CONFIG["OS_ARCH"] == "Darwin":
        LDFLAGS += ["-Wl,-U,_OBJC_CLASS_$_NSTouchBar"]
        LDFLAGS += ["-Wl,-U,_OBJC_CLASS_$_NSSharingServicePickerTouchBarItem"]
        LDFLAGS += ["-Wl,-U,_OBJC_METACLASS_$_NSTouchBar"]
        LDFLAGS += ["-Wl,-U,_OBJC_CLASS_$_NSCustomTouchBarItem"]
        LDFLAGS += ["-Wl,-U,_OBJC_CLASS_$_NSPopoverTouchBarItem"]
        LDFLAGS += ["-lresolv"]
        LDFLAGS += ["-Wl,-rpath,@executable_path/../Frameworks/ChannelPrefs.framework"]

    if CONFIG["MOZ_DEBUG_SYMBOLS"] and CONFIG["CC_TYPE"] == "clang-cl":
        LDFLAGS += ["-NATVIS:%s/toolkit/library/gecko.natvis" % TOPSRCDIR]
    if CONFIG["RUSTC_NATVIS_LDFLAGS"]:
        LDFLAGS += CONFIG["RUSTC_NATVIS_LDFLAGS"]

    if CONFIG["OS_TARGET"] != "Android" and name == "xul-real":
        SYMBOLS_FILE = "../libxul.symbols"


# The real libxul definition is in ./build/moz.build, but we define a
# xul library here such that # FINAL_LIBRARY = 'xul' refers to here, which
# is then linked to both build/libxul and gtest/libxul.
Library("xul")

STATIC_LIBRARY_NAME = "xul_s"

# Use a FINAL_LIBRARY for Libxul_defines to propagate from there. They wouldn't
# propagate from here.
FINAL_LIBRARY = "xul-real"

if CONFIG["OS_ARCH"] == "WINNT":
    SOURCES += [
        "nsDllMain.cpp",
    ]

LOCAL_INCLUDES += [
    "/config",
    # need widget/windows for resource.h (included from widget.rc)
    "/widget/windows",
]

if CONFIG["OS_ARCH"] == "WINNT" and CONFIG["CC_TYPE"] not in ("clang", "gcc"):
    LOCAL_INCLUDES += [
        "/xpcom/base",
    ]

DIRS += [
    "build",
    "buildid_reader",
    "gtest",
]

# js needs to come after xul for now, because it is an archive and its content
# is discarded when it comes first.
USE_LIBS += [
    "js",
]

USE_LIBS += [
    "gkcodecs",
    "lgpllibs",
    "nspr",
    "nss",
    "psshparser",
    "sqlite",
]

if not CONFIG["USE_LIBZ_RS"]:
    USE_LIBS += [
        "zlib",
    ]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
    # The mozgtk library is a workaround that makes Gtk+ use libwayland-client
    # instead of mozwayland. The reason it works is that by being a dependency
    # of libxul, mozgtk appears in dependentlibs.list, preceding mozwayland
    # (which is important and guaranteed by the USE_LIBS order in this file).
    # That, in turn, makes firefox dlopen() mozgtk before mozwayland, which
    # will trigger the loading of the Gtk+ libraries (mozgtk depending on them).
    # Those libraries, if they depend on libwayland-client, will use the symbols
    # from libwayland-client because mozwayland is not loaded yet.
    # When eventually libxul is loaded after both mozgtk and mozwayland, it will
    # get symbols from libwayland-client too.
    # In the case where Gtk+ doesn't have wayland support, libwayland-client is
    # not loaded, and libxul ends up using the mozwayland symbols.
    USE_LIBS += [
        "mozgtk",
    ]
    OS_LIBS += CONFIG["MOZ_GTK3_LIBS"]

if CONFIG["MOZ_WAYLAND"]:
    USE_LIBS += [
        "mozwayland",
    ]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk" or CONFIG["MOZ_TREE_FREETYPE"]:
    USE_LIBS += [
        "freetype",
    ]

if CONFIG["MOZ_WEBRTC"]:
    if CONFIG["OS_TARGET"] == "WINNT":
        OS_LIBS += [
            "secur32",
            "iphlpapi",
            "strmiids",
            "dmoguids",
            "wmcodecdspuuid",
            "amstrmid",
            "msdmo",
            "wininet",
        ]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
    OS_LIBS += [
        "-framework Foundation",
        "-framework CoreFoundation",
        "-framework CoreLocation",
        "-framework QuartzCore",
        "-framework Carbon",
        "-framework CoreAudio",
        "-framework CoreVideo",
        "-framework AudioToolbox",
        "-framework AudioUnit",
        "-framework AddressBook",
        "-framework OpenGL",
        "-framework Security",
        "-framework ServiceManagement",
        "-framework CoreServices",
        "-framework ApplicationServices",
        "-framework AppKit",
        "-framework CoreMIDI",
        "-framework SystemConfiguration",
        "-framework AVFoundation",
        "-framework CoreMedia",
        "-framework IOKit",
        "-framework ScreenCaptureKit",
        "-F%s" % CONFIG["MACOS_PRIVATE_FRAMEWORKS_DIR"],
        "-framework CoreUI",
        "-framework CoreSymbolication",
        "cups",
    ]
    USE_LIBS += [
        "ChannelPrefs",
    ]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "uikit":
    OS_LIBS += [
        "-framework Foundation",
        "-framework CoreFoundation",
        "-framework CoreGraphics",
        "-framework CoreText",
        "-framework AVFoundation",
        "-framework AudioToolbox",
        "-framework CoreMedia",
        "-framework CoreVideo",
        "-framework OpenGLES",
        "-framework QuartzCore",
        "-framework Security",
    ]

if CONFIG["MOZ_WMF"]:
    OS_LIBS += [
        "mfuuid",
        "wmcodecdspuuid",
        "strmiids",
    ]

if CONFIG["OS_ARCH"] == "FreeBSD":
    OS_LIBS += [
        "util",
    ]

if CONFIG["OS_ARCH"] == "WINNT":
    OS_LIBS += [
        "crypt32",
        "gdi32",
        "shell32",
        "ntdll",
        "ole32",
        "version",
        "winspool",
        "userenv",
        "uuid",
    ]

if CONFIG["OS_ARCH"] == "Linux" and CONFIG["OS_TARGET"] != "Android":
    OS_LIBS += [
        "rt",
    ]

if CONFIG["MOZ_ANDROID_GOOGLE_VR"]:
    OS_LIBS += [
        "-L%s" % CONFIG["MOZ_ANDROID_GOOGLE_VR_LIBS"],
        "-lgvr",
    ]

if CONFIG["MOZ_SYSTEM_JPEG"]:
    OS_LIBS += CONFIG["MOZ_JPEG_LIBS"]

if CONFIG["MOZ_SYSTEM_PNG"]:
    OS_LIBS += CONFIG["MOZ_PNG_LIBS"]

if CONFIG["MOZ_SYSTEM_WEBP"]:
    OS_LIBS += CONFIG["MOZ_WEBP_LIBS"]

if CONFIG["MOZ_SYSTEM_LIBEVENT"]:
    OS_LIBS += CONFIG["MOZ_LIBEVENT_LIBS"]

if CONFIG["MOZ_SYSTEM_LIBVPX"]:
    OS_LIBS += CONFIG["MOZ_LIBVPX_LIBS"]

if CONFIG["MOZ_SYSTEM_AV1"]:
    OS_LIBS += CONFIG["MOZ_SYSTEM_LIBAOM_LIBS"]
    OS_LIBS += CONFIG["MOZ_SYSTEM_LIBDAV1D_LIBS"]

if not CONFIG["MOZ_TREE_PIXMAN"]:
    OS_LIBS += CONFIG["MOZ_PIXMAN_LIBS"]

if CONFIG["HAVE_CLOCK_MONOTONIC"]:
    OS_LIBS += CONFIG["REALTIME_LIBS"]

OS_LIBS += CONFIG["ICONV_LIBS"]

if CONFIG["OS_ARCH"] == "OpenBSD":
    OS_LIBS += [
        "sndio",
    ]

if CONFIG["MOZ_ENABLE_DBUS"]:
    OS_LIBS += CONFIG["MOZ_DBUS_LIBS"]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk" and CONFIG["COMPILE_ENVIRONMENT"]:
    OS_LIBS += [l for l in CONFIG["MOZ_GTK3_LIBS"] if l not in ("-lgtk-3", "-lgdk-3")]
    OS_LIBS += CONFIG["MOZ_X11_LIBS"]
    OS_LIBS += CONFIG["MOZ_PANGO_LIBS"]

if CONFIG["MOZ_ENABLE_LIBPROXY"]:
    OS_LIBS += CONFIG["MOZ_LIBPROXY_LIBS"]

if CONFIG["OS_ARCH"] == "FreeBSD":
    OS_LIBS += [
        "util",
    ]

if CONFIG["OS_ARCH"] == "Darwin":
    OS_LIBS += [
        # Link to Metal as required by the Metal gfx-hal backend
        "-weak_framework Metal",
        "-weak_framework MediaPlayer",
    ]


if CONFIG["OS_ARCH"] == "WINNT":
    OS_LIBS += [
        "shell32",
        "ole32",
        "version",
        "winspool",
        "comdlg32",
        "imm32",
        "msimg32",
        "netapi32",
        "shlwapi",
        "ws2_32",
        "dnsapi",
        "dwmapi",
        "iphlpapi",
        "uxtheme",
        "setupapi",
        "secur32",
        "sensorsapi",
        "portabledeviceguids",
        "wininet",
        "wintrust",
        "wtsapi32",
        "locationapi",
        "sapi",
        "dxguid",
        "dhcpcsvc",
        # gfx-rs supports D3D11 and D3D12, but we are not linking to them implicitly
        # "d3d11", # should be explicitly linked by gfx-backend-d3d11
        #'d3d12', # should be explicitly linked by d3d12-rs
        "d3dcompiler",
        "runtimeobject",
    ]

    if CONFIG["ACCESSIBILITY"]:
        OS_LIBS += [
            "oleacc",
            "uiautomationcore",
        ]

    # Prevent winapi-rs from statically linking
    LIBRARY_DEFINES["WINAPI_NO_BUNDLED_LIBRARIES"] = True

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
    OS_LIBS += [
        "usp10",
        "oleaut32",
    ]

# The buildid is refreshed on every (incremental) build. But we want to avoid
# rebuilding libxul every time, so instead of having a source file that
# #include's buildid.h, which would have a dependency on it, and that would
# thus trigger make to rebuild everything, we generate a source with the
# buildid hard coded in it. Then we make that source file depend on all the
# objects files that constitute libxul, so that if any of the files linked into
# libxul is rebuilt, we refresh the buildid and link it into libxul.

if CONFIG["COMPILE_ENVIRONMENT"]:
    SOURCES += ["!buildid.cpp"]
    if CONFIG["MOZ_WIDGET_TOOLKIT"] in ("cocoa", "uikit"):
        libxul_list = "XUL"
    else:
        libxul_list = "%sxul_%s" % (
            CONFIG["DLL_PREFIX"],
            CONFIG["DLL_SUFFIX"].lstrip(".").replace(".", "_"),
        )
    GeneratedFile(
        "buildid.cpp", script="gen_buildid.py", inputs=["!build/%s.list" % libxul_list]
    )

    EXPORTS += [
        "buildid_section.h",
    ]

[ Dauer der Verarbeitung: 0.34 Sekunden  ]