Raw File
moz.build
# -*- 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/.

include("../components/telemetry/telemetry-constants.mozbuild")

with Files("**"):
    BUG_COMPONENT = ("Toolkit", "Startup and Profile System")

if CONFIG["OS_ARCH"] == "WINNT":
    TEST_DIRS += ["test/win"]

MOCHITEST_MANIFESTS += ["test/mochitest.ini"]
BROWSER_CHROME_MANIFESTS += ["test/browser.ini"]
XPCSHELL_TESTS_MANIFESTS += ["test/xpcshell.ini"]
MARIONETTE_UNIT_MANIFESTS += ["test/marionette/marionette.ini"]

XPIDL_SOURCES += [
    "nsINativeAppSupport.idl",
    "nsIXREDirProvider.idl",
]

if CONFIG["OS_ARCH"] == "WINNT":
    XPIDL_SOURCES += [
        "nsIWinAppHelper.idl",
    ]

XPIDL_MODULE = "xulapp"

EXPORTS += [
    "nsAppRunner.h",
]

EXPORTS.mozilla += [
    "AutoSQLiteLifetime.h",
    "Bootstrap.h",
    "CmdLineAndEnvUtils.h",
    "GeckoArgs.h",
    "MultiInstanceLock.h",
    "SafeMode.h",
]

if CONFIG["MOZ_INSTRUMENT_EVENT_LOOP"]:
    EXPORTS += ["EventTracer.h"]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
    EXPORTS.mozilla += [
        "AssembleCmdLine.h",
        "DllPrefetchExperimentRegistryInfo.h",
        "PolicyChecks.h",
        "WinTokenUtils.h",
    ]
    UNIFIED_SOURCES += [
        "/toolkit/mozapps/update/common/pathhash.cpp",
        "/toolkit/mozapps/update/common/updateutils_win.cpp",
        "DllPrefetchExperimentRegistryInfo.cpp",
        "nsNativeAppSupportWin.cpp",
        "WinTokenUtils.cpp",
    ]
    DEFINES["PROXY_PRINTING"] = 1
    LOCAL_INCLUDES += [
        "../components/printingui",
    ]
    if CONFIG["MOZ_LAUNCHER_PROCESS"]:
        EXPORTS.mozilla += [
            "LauncherRegistryInfo.h",
        ]
        UNIFIED_SOURCES += [
            "LauncherRegistryInfo.cpp",
        ]
    DIRS += [
        "dllservices",
    ]
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
    EXPORTS.mozilla += [
        "MacRunFromDmgUtils.h",
    ]
    UNIFIED_SOURCES += [
        "MacApplicationDelegate.mm",
        "MacAutoreleasePool.mm",
        "MacLaunchHelper.mm",
        "MacRunFromDmgUtils.mm",
        "nsCommandLineServiceMac.mm",
        "nsNativeAppSupportCocoa.mm",
        "updaterfileutils_osx.mm",
    ]
    DEFINES["PROXY_PRINTING"] = 1
    LOCAL_INCLUDES += [
        "../components/printingui",
    ]
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "uikit":
    UNIFIED_SOURCES += [
        "nsNativeAppSupportDefault.cpp",
        "UIKitDirProvider.mm",
    ]
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
    UNIFIED_SOURCES += [
        "nsNativeAppSupportUnix.cpp",
    ]
    CXXFLAGS += CONFIG["MOZ_X11_SM_CFLAGS"]
else:
    UNIFIED_SOURCES += [
        "nsNativeAppSupportDefault.cpp",
    ]

if CONFIG["MOZ_HAS_REMOTE"]:
    LOCAL_INCLUDES += [
        "../components/remote",
    ]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
    UNIFIED_SOURCES += [
        "nsGDKErrorHandler.cpp",
    ]

if CONFIG["MOZ_X11"]:
    EXPORTS += ["nsX11ErrorHandler.h"]
    UNIFIED_SOURCES += [
        "nsX11ErrorHandler.cpp",
    ]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
    UNIFIED_SOURCES += [
        "nsAndroidStartup.cpp",
    ]

if CONFIG["MOZ_WIDGET_TOOLKIT"] != "android":
    UNIFIED_SOURCES += [
        "MultiInstanceLock.cpp",
    ]

UNIFIED_SOURCES += [
    "/toolkit/mozapps/update/common/commonupdatedir.cpp",
    "AutoSQLiteLifetime.cpp",
    "Bootstrap.cpp",
    "CmdLineAndEnvUtils.cpp",
    "CreateAppData.cpp",
    "nsConsoleWriter.cpp",
    "nsNativeAppSupportBase.cpp",
    "nsSigHandlers.cpp",
    "nsXREDirProvider.cpp",
]

# nsAppRunner.cpp and ProfileReset.cpp cannot be built in unified mode because
# they pull in OS X system headers.
# nsEmbedFunctions.cpp cannot be built in unified mode because it pulls in X11 headers.
SOURCES += [
    "../../other-licenses/nsis/Contrib/CityHash/cityhash/city.cpp",
    "nsAppRunner.cpp",
    "nsEmbedFunctions.cpp",
    "ProfileReset.cpp",
]

if CONFIG["MOZ_INSTRUMENT_EVENT_LOOP"]:
    UNIFIED_SOURCES += [
        "EventTracer.cpp",
    ]

if CONFIG["MOZ_UPDATER"]:
    if CONFIG["MOZ_WIDGET_TOOLKIT"] != "android":
        UNIFIED_SOURCES += [
            "nsUpdateDriver.cpp",
            "nsUpdateSyncManager.cpp",
        ]

if CONFIG["MOZ_PDF_PRINTING"]:
    DEFINES["PROXY_PRINTING"] = 1
    LOCAL_INCLUDES += [
        "../components/printingui",
    ]

XPCOM_MANIFESTS += [
    "components.conf",
]

include("/ipc/chromium/chromium-config.mozbuild")

FINAL_LIBRARY = "xul"

if CONFIG["MOZ_X11"] or CONFIG["MOZ_WAYLAND"]:
    DEFINES["USE_GLX_TEST"] = True
    DIRS += ["glxtest"]

for var in (
    "MOZ_APP_NAME",
    "MOZ_APP_BASENAME",
    "MOZ_APP_DISPLAYNAME",
    "MOZ_APP_VENDOR",
    "MOZ_APP_VERSION",
    "OS_TARGET",
    "MOZ_WIDGET_TOOLKIT",
):
    DEFINES[var] = '"%s"' % CONFIG[var]

if CONFIG["MOZ_DEFAULT_BROWSER_AGENT"] and CONFIG["OS_ARCH"] == "WINNT":
    DEFINES["MOZ_DEFAULT_BROWSER_AGENT"] = CONFIG["MOZ_DEFAULT_BROWSER_AGENT"]

if CONFIG["MOZ_UPDATER"] and CONFIG["MOZ_WIDGET_TOOLKIT"] != "android":
    DEFINES["MOZ_UPDATER"] = True

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
    DEFINES["WIN32_LEAN_AND_MEAN"] = True
    DEFINES["UNICODE"] = True
    DEFINES["_UNICODE"] = True

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
    DEFINES["ANDROID_PACKAGE_NAME"] = '"%s"' % CONFIG["ANDROID_PACKAGE_NAME"]

DEFINES["MOZ_DISTRIBUTION_ID"] = '"%s"' % CONFIG["MOZ_DISTRIBUTION_ID"]

if CONFIG["TARGET_XPCOM_ABI"]:
    DEFINES["TARGET_OS_ABI"] = '"%s_%s"' % (
        CONFIG["OS_TARGET"],
        CONFIG["TARGET_XPCOM_ABI"],
    )

if CONFIG["OS_ARCH"] == "Linux" and "lib64" in CONFIG["libdir"]:
    DEFINES["HAVE_USR_LIB64_DIR"] = True

DEFINES["GRE_MILESTONE"] = CONFIG["GRE_MILESTONE"]
DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"]

for var in ("APP_VERSION", "APP_ID"):
    DEFINES[var] = CONFIG["MOZ_%s" % var]

if CONFIG["MOZ_BUILD_APP"] == "browser":
    DEFINES["MOZ_BUILD_APP_IS_BROWSER"] = True

LOCAL_INCLUDES += [
    "../../other-licenses/nsis/Contrib/CityHash/cityhash",
    "../components/find",
    "../components/printingui/ipc",
    "../components/windowwatcher",
    "../mozapps/update/common",
    "../profile",
    "/config",
    "/dom/base",
    "/dom/commandhandler",
    "/dom/ipc",
    "/dom/webbrowserpersist",
    "/testing/gtest/mozilla",
    "/toolkit/crashreporter",
    "/xpcom/build",
]

if CONFIG["MOZ_SANDBOX"] and CONFIG["OS_ARCH"] == "WINNT":
    LOCAL_INCLUDES += [
        "/security/sandbox/chromium",
        "/security/sandbox/chromium-shim",
    ]

if CONFIG["MOZ_SANDBOX"] and CONFIG["OS_ARCH"] == "Linux":
    USE_LIBS += [
        "mozsandbox",
    ]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
    LOCAL_INCLUDES += [
        "/widget",
        "/widget/cocoa",
        "/xpcom/base",
    ]

CXXFLAGS += CONFIG["MOZ_DBUS_CFLAGS"]
CXXFLAGS += CONFIG["MOZ_DBUS_GLIB_CFLAGS"]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
    CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
    CXXFLAGS += CONFIG["MOZ_PANGO_CFLAGS"]

DEFINES["TOPOBJDIR"] = TOPOBJDIR
FINAL_TARGET_PP_FILES += ["platform.ini"]

if CONFIG["ENABLE_TESTS"]:
    DIRS += ["test/gtest"]
back to top