Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  moz.build   Sprache: unbekannt

 
# -*- 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.15 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge