# -*- 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/. with Files("**"): BUG_COMPONENT = ("Firefox", "General") with Files("firefox.exe.manifest"): BUG_COMPONENT = ("Core", "Widget: Win32") with Files("module.ver"): BUG_COMPONENT = ("Core", "Widget: Win32") with Files("splash.rc"): BUG_COMPONENT = ("Core", "Widget: Win32") with Files("macversion.py"): BUG_COMPONENT = ("Core", "Widget: Cocoa") with Files("macbuild/**"): BUG_COMPONENT = ("Core", "Widget: Cocoa") with Files("moz.build"): BUG_COMPONENT = ("Firefox Build System", "General") with Files("Makefile.in"): BUG_COMPONENT = ("Firefox Build System", "General") with Files("profile/channel-prefs.js"): BUG_COMPONENT = ("Firefox", "Installer") with Files("profile/firefox.js"): BUG_COMPONENT = ("Firefox", "General") if CONFIG["MOZ_MACBUNDLE_NAME"]: DIRS += ["macbuild/Contents"] if CONFIG["MOZ_NO_PIE_COMPAT"]: GeckoProgram(CONFIG["MOZ_APP_NAME"] + "-bin") DIRS += ["no-pie"] else: GeckoProgram(CONFIG["MOZ_APP_NAME"]) SOURCES += [ "nsBrowserApp.cpp", ] # Neither channel-prefs.js nor firefox.exe want to end up in dist/bin/browser. DIST_SUBDIR = "" LOCAL_INCLUDES += [ "!/build", "/toolkit/xre", "/xpcom/base", "/xpcom/build", ] # The pthred_create() interposer needs to be linked as early as possible so # that it will appear before libpthread when resolving symbols. if CONFIG["OS_ARCH"] == "Linux" and CONFIG["MOZ_CRASHREPORTER"]: USE_LIBS += ["pthread_create_interposer"] if CONFIG["LIBFUZZER"]: USE_LIBS += ["fuzzer"] LOCAL_INCLUDES += [ "/tools/fuzzing/libfuzzer", ] if CONFIG["MOZ_GECKODRIVER"]: DEFINES["MOZ_GECKODRIVER"] = True if CONFIG["CC_TYPE"] == "clang-cl": # Always enter a Windows program through wmain, whether or not we're # a console application. WIN32_EXE_LDFLAGS += ["-ENTRY:wmainCRTStartup"] if CONFIG["OS_ARCH"] == "WINNT": RCINCLUDE = "splash.rc" DIRS += [ "winlauncher", ] USE_LIBS += [ "winlauncher", ] LOCAL_INCLUDES += [ "/browser/app/winlauncher", ] OS_LIBS += [ "advapi32", "uuid", ] DELAYLOAD_DLLS += [ "advapi32.dll", "oleaut32.dll", "ole32.dll", "rpcrt4.dll", "version.dll", ] if CONFIG["CC_TYPE"] == "clang-cl": libpath_flag = "-LIBPATH:" else: libpath_flag = "-L" WIN32_EXE_LDFLAGS += [ libpath_flag + OBJDIR + "/winlauncher/freestanding", ] # Don't build firefox.exe with CETCOMPAT, because we need to be able to # only enable it for processes that are not using JIT in xul.dll. LINK_FLAGS["CETCOMPAT"] = [] if CONFIG["OS_ARCH"] == "Darwin": OS_LIBS += [ "-framework CoreFoundation", ] if CONFIG["MOZ_SANDBOX"] and CONFIG["OS_ARCH"] == "WINNT": # For sandbox includes and the include dependencies those have LOCAL_INCLUDES += [ "/security/sandbox/chromium", "/security/sandbox/chromium-shim", ] USE_LIBS += [ "sandbox_s", ] OS_LIBS += [ "winmm", ] DELAYLOAD_DLLS += [ "winmm.dll", "user32.dll", "usp10.dll", ] # Control the default heap size. # This is the heap returned by GetProcessHeap(). # As we use the CRT heap, the default size is too large and wastes VM. # # The default heap size is 1MB on Win32. # The heap will grow if need be. # # Set it to 256k. See bug 127069. if CONFIG["OS_ARCH"] == "WINNT" and CONFIG["CC_TYPE"] not in ("clang", "gcc"): LDFLAGS += ["/HEAP:0x40000"] DisableStlWrapping() if CONFIG["HAVE_CLOCK_MONOTONIC"]: OS_LIBS += CONFIG["REALTIME_LIBS"] if CONFIG["MOZ_LINUX_32_SSE2_STARTUP_ERROR"]: DEFINES["MOZ_LINUX_32_SSE2_STARTUP_ERROR"] = True COMPILE_FLAGS["OS_CXXFLAGS"] = [ f for f in COMPILE_FLAGS.get("OS_CXXFLAGS", []) if not f.startswith("-march=") and f not in ("-msse", "-msse2", "-mfpmath=sse") ] + [ "-mno-sse", "-mno-sse2", "-mfpmath=387", ] for icon in ("firefox", "document", "newwindow", "newtab", "pbmode"): DEFINES[icon.upper() + "_ICO"] = '"%s/%s/%s.ico"' % ( TOPSRCDIR, CONFIG["MOZ_BRANDING_DIRECTORY"], icon, )