Backed out changesets c7937fb5f4bb and cf8db9b6bd61 (bug 862986) for bustage.
authorRyan VanderMeulen <ryanvm@gmail.com>
Tue, 30 Apr 2013 21:09:41 -0400
changeset 137210 d5db4e09eeef840fd81294ab2a2a0344ea0cde96
parent 137209 c7937fb5f4bbe90cbe8fd030e40d36eeb9f34fb9
child 137211 6a0618f70be66acd5df7e40a76d41c2d95fc70cb
push id3752
push userlsblakk@mozilla.com
push dateMon, 13 May 2013 17:21:10 +0000
treeherdermozilla-aurora@1580544aef0b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs862986
milestone23.0a1
backs outc7937fb5f4bbe90cbe8fd030e40d36eeb9f34fb9
cf8db9b6bd61871b6cfe3335f95102dc89c89684
Backed out changesets c7937fb5f4bb and cf8db9b6bd61 (bug 862986) for bustage. CLOSED TREE
b2g/app/Makefile.in
b2g/app/moz.build
b2g/gaia/Makefile.in
b2g/gaia/moz.build
b2g/installer/Makefile.in
browser/app/Makefile.in
browser/app/moz.build
browser/installer/Makefile.in
browser/metro/shell/commandexecutehandler/Makefile.in
browser/metro/shell/commandexecutehandler/moz.build
browser/metro/shell/linktool/Makefile.in
browser/metro/shell/linktool/moz.build
browser/metro/shell/testing/Makefile.in
browser/metro/shell/testing/moz.build
build/win32/Makefile.in
build/win32/moz.build
configure.in
dom/plugins/ipc/hangui/Makefile.in
dom/plugins/ipc/hangui/moz.build
embedding/tests/winEmbed/Makefile.in
embedding/tests/winEmbed/moz.build
intl/unicharutil/tools/Makefile.in
intl/unicharutil/tools/moz.build
ipc/app/Makefile.in
ipc/app/defs.mk
ipc/app/moz.build
ipc/glue/Makefile.in
ipc/ipdl/test/cxx/app/Makefile.in
ipc/ipdl/test/cxx/app/moz.build
js/src/gdb/Makefile.in
js/src/gdb/moz.build
js/src/jsapi-tests/Makefile.in
js/src/jsapi-tests/moz.build
js/src/shell/Makefile.in
js/src/shell/moz.build
js/xpconnect/shell/Makefile.in
js/xpconnect/shell/moz.build
mobile/android/app/Makefile.in
mobile/android/app/moz.build
mobile/android/base/Makefile.in
mobile/android/installer/Makefile.in
modules/libmar/tool/Makefile.in
modules/libmar/tool/moz.build
netwerk/streamconv/test/Makefile.in
netwerk/streamconv/test/moz.build
python/mozbuild/mozbuild/backend/recursivemake.py
python/mozbuild/mozbuild/frontend/data.py
python/mozbuild/mozbuild/frontend/sandbox_symbols.py
python/mozbuild/mozbuild/test/frontend/data/program/moz.build
python/mozbuild/mozbuild/test/frontend/test_emitter.py
rdf/tests/rdfcat/Makefile.in
rdf/tests/rdfcat/moz.build
rdf/tests/rdfpoll/Makefile.in
rdf/tests/rdfpoll/moz.build
rdf/tests/triplescat/Makefile.in
rdf/tests/triplescat/moz.build
testing/mochitest/ssltunnel/Makefile.in
testing/mochitest/ssltunnel/moz.build
testing/tools/screenshot/Makefile.in
testing/tools/screenshot/moz.build
toolkit/components/maintenanceservice/Makefile.in
toolkit/components/maintenanceservice/moz.build
toolkit/crashreporter/client/Makefile.in
toolkit/crashreporter/client/moz.build
toolkit/mozapps/installer/packager.mk
toolkit/mozapps/update/updater/Makefile.in
toolkit/mozapps/update/updater/moz.build
tools/jprof/Makefile.in
tools/jprof/moz.build
tools/trace-malloc/Makefile.in
tools/trace-malloc/moz.build
webapprt/gtk2/Makefile.in
webapprt/gtk2/moz.build
webapprt/mac/Makefile.in
webapprt/mac/moz.build
webapprt/win/Makefile.in
webapprt/win/moz.build
widget/xremoteclient/Makefile.in
widget/xremoteclient/moz.build
xulrunner/app/Makefile.in
xulrunner/app/moz.build
xulrunner/stub/Makefile.in
xulrunner/stub/moz.build
xulrunner/tools/redit/Makefile.in
xulrunner/tools/redit/moz.build
--- a/b2g/app/Makefile.in
+++ b/b2g/app/Makefile.in
@@ -13,16 +13,21 @@ include $(topsrcdir)/config/makefiles/rc
 
 PREF_JS_EXPORTS = $(srcdir)/b2g.js
 
 ifdef ENABLE_MARIONETTE
 DEFINES += -DENABLE_MARIONETTE=1
 endif
 
 ifndef LIBXUL_SDK
+ifneq ($(GAIADIR),)
+PROGRAM=$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)
+else
+PROGRAM=$(MOZ_APP_NAME)$(BIN_SUFFIX)
+endif
 
 CPPSRCS = nsBrowserApp.cpp
 
 ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
 CPPSRCS += BootAnimation.cpp
 LIBS += \
   -lui \
   -lhardware_legacy \
--- a/b2g/app/moz.build
+++ b/b2g/app/moz.build
@@ -1,11 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-if not CONFIG['LIBXUL_SDK']:
-    if CONFIG['GAIADIR']:
-        PROGRAM = CONFIG['MOZ_APP_NAME'] + "-bin"
-    else:
-        PROGRAM = CONFIG['MOZ_APP_NAME']
--- a/b2g/gaia/Makefile.in
+++ b/b2g/gaia/Makefile.in
@@ -6,16 +6,18 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 GAIA_PATH := gaia/profile
 
+PROGRAM = $(MOZ_APP_NAME)$(BIN_SUFFIX)
+
 ifeq ($(OS_ARCH),WINNT)
 CPPSRCS = run-b2g.cpp
 DEFINES += \
   -DB2G_NAME=L\"$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)\" \
   -DGAIA_PATH=L\"$(subst /,\\\\,$(GAIA_PATH))\" \
   $(NULL)
 GAIA_MAKE=make
 else # Non-windows machines use the same wrapper program
--- a/b2g/gaia/moz.build
+++ b/b2g/gaia/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = CONFIG['MOZ_APP_NAME']
-
--- a/b2g/installer/Makefile.in
+++ b/b2g/installer/Makefile.in
@@ -28,16 +28,17 @@ MOZ_LOCALIZED_PKG_LIST = $(AB_CD) multil
 DEFINES += \
 	-DAB_CD=$(AB_CD) \
 	-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
 	-DPREF_DIR=$(PREF_DIR) \
 	$(NULL)
 
 DEFINES += -DJAREXT=
 
+include $(topsrcdir)/ipc/app/defs.mk
 DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME)
 
 # Set MSVC dlls version to package, if any.
 ifdef WIN32_REDIST_DIR
 DEFINES += -DMOZ_MSVC_REDIST=$(_MSC_VER)
 endif
 
 ifdef ENABLE_MARIONETTE
--- a/browser/app/Makefile.in
+++ b/browser/app/Makefile.in
@@ -38,16 +38,18 @@ endif
 
 ifdef LIBXUL_SDK #{
 PREF_JS_EXPORTS += $(srcdir)/profile/channel-prefs.js
 DEFINES += -DLIBXUL_SDK
 endif #} LIBXUL_SDK
 
 # Build a binary bootstrapping with XRE_main
 
+PROGRAM = $(MOZ_APP_NAME)$(BIN_SUFFIX)
+
 CPPSRCS = nsBrowserApp.cpp
 
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/toolkit/xre \
   -I$(topsrcdir)/xpcom/base \
   -I$(topsrcdir)/xpcom/build \
   -I$(DEPTH)/build \
   $(NULL)
--- a/browser/app/moz.build
+++ b/browser/app/moz.build
@@ -1,10 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 DIRS += ['profile/extensions']
-
-PROGRAM = CONFIG['MOZ_APP_NAME']
-
--- a/browser/installer/Makefile.in
+++ b/browser/installer/Makefile.in
@@ -64,16 +64,17 @@ endif
 
 DEFINES += -DJAREXT=
 
 ifdef MOZ_ANGLE_RENDERER
 DEFINES += -DMOZ_ANGLE_RENDERER=$(MOZ_ANGLE_RENDERER)
 DEFINES += -DMOZ_D3DCOMPILER_DLL=$(MOZ_D3DCOMPILER_DLL)
 endif
 
+include $(topsrcdir)/ipc/app/defs.mk
 DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME)
 
 # Set MSVC dlls version to package, if any.
 ifdef WIN32_REDIST_DIR
 DEFINES += -DMOZ_MSVC_REDIST=$(_MSC_VER)
 endif
 
 ifneq (,$(filter beta,$(MOZ_UPDATE_CHANNEL)))
--- a/browser/metro/shell/commandexecutehandler/Makefile.in
+++ b/browser/metro/shell/commandexecutehandler/Makefile.in
@@ -11,16 +11,17 @@ include $(DEPTH)/config/autoconf.mk
 
 NO_PROFILE_GUIDED_OPTIMIZE = 1
 
 include $(topsrcdir)/config/config.mk
 
 # We want this exe in dist/bin
 DIST_SUBDIR =
 
+PROGRAM = CommandExecuteHandler$(BIN_SUFFIX)
 DIST_PROGRAM = CommandExecuteHandler$(BIN_SUFFIX)
 
 # Don't link against mozglue.dll
 MOZ_GLUE_LDFLAGS =
 MOZ_GLUE_PROGRAM_LDFLAGS =
 
 CPPSRCS	= \
 	CommandExecuteHandler.cpp \
--- a/browser/metro/shell/commandexecutehandler/moz.build
+++ b/browser/metro/shell/commandexecutehandler/moz.build
@@ -1,7 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'CommandExecuteHandler'
--- a/browser/metro/shell/linktool/Makefile.in
+++ b/browser/metro/shell/linktool/Makefile.in
@@ -10,16 +10,18 @@ VPATH      = @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 NO_PROFILE_GUIDED_OPTIMIZE = 1
 
 include $(topsrcdir)/config/config.mk
 
 DIST_SUBDIR = metro/install
 
+PROGRAM = linktool$(BIN_SUFFIX)
+
 CPPSRCS    = linktool.cpp
 
 OS_LIBS = \
 	kernel32.lib \
 	user32.lib \
 	ole32.lib \
 	shlwapi.lib \
 	shell32.lib \
--- a/browser/metro/shell/linktool/moz.build
+++ b/browser/metro/shell/linktool/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'linktool'
-
--- a/browser/metro/shell/testing/Makefile.in
+++ b/browser/metro/shell/testing/Makefile.in
@@ -18,16 +18,18 @@ MOZ_GLUE_PROGRAM_LDFLAGS =
 
 NO_PROFILE_GUIDED_OPTIMIZE = 1
 
 include $(topsrcdir)/config/config.mk
 
 # We want this exe in dist/bin
 DIST_SUBDIR =
 
+PROGRAM = metrotestharness$(BIN_SUFFIX)
+
 CPPSRCS	= \
 	metrotestharness.cpp \
 	$(NULL)
 
 OS_LIBS = \
 	kernel32.lib \
 	user32.lib \
 	ole32.lib \
--- a/browser/metro/shell/testing/moz.build
+++ b/browser/metro/shell/testing/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'metrotestharness'
-
--- a/build/win32/Makefile.in
+++ b/build/win32/Makefile.in
@@ -8,16 +8,17 @@ srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 NO_PROFILE_GUIDED_OPTIMIZE = 1
 
 ifdef ENABLE_TESTS
 
+PROGRAM = crashinject$(BIN_SUFFIX)
 USE_STATIC_LIBS = 1
 CPPSRCS = crashinject.cpp
 
 endif # ENABLE_TESTS
 
 MOZ_GLUE_LDFLAGS =
 
 include $(topsrcdir)/config/rules.mk
--- a/build/win32/moz.build
+++ b/build/win32/moz.build
@@ -4,10 +4,8 @@
 # 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/.
 
 if CONFIG['_MSC_VER'] and CONFIG['OS_TEST'] != 'x86_64':
     TEST_DIRS += ['vmwarerecordinghelper']
 
 TEST_DIRS += ['crashinjectdll']
 
-if CONFIG['ENABLE_TESTS']:
-    PROGRAM = 'crashinject'
--- a/configure.in
+++ b/configure.in
@@ -8645,33 +8645,16 @@ MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYN
 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
 if test "$MOZ_DEBUG"; then
   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
 fi
 
 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
 AC_SUBST(MOZ_MACBUNDLE_ID)
 
-dnl ========================================================
-dnl = Child Process Name for IPC
-dnl ========================================================
-if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
-  MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
-else
-  # We want to let Android unpack the file at install time, but it only does
-  # so if the file is named libsomething.so. The lib/ path is also required
-  # because the unpacked file will be under the lib/ subdirectory and will
-  # need to be executed from that path.
-  MOZ_CHILD_PROCESS_NAME="lib/libplugin-container.so"
-fi
-MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
-
-AC_SUBST(MOZ_CHILD_PROCESS_NAME)
-AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
-
 # The following variables are available to branding and application
 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
 # impacts profile location and user-visible fields.
 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
 # versions of a given application (e.g. Aurora and Firefox both use
 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
 # for application.ini's "Name" field, which controls profile location in
--- a/dom/plugins/ipc/hangui/Makefile.in
+++ b/dom/plugins/ipc/hangui/Makefile.in
@@ -10,16 +10,18 @@ FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 CPPSRCS = \
   MiniShmChild.cpp \
   PluginHangUIChild.cpp \
   $(NULL)
 
+PROGRAM = plugin-hang-ui$(BIN_SUFFIX)
+
 OS_LIBS = $(call EXPAND_LIBNAME,comctl32)
 
 RCINCLUDE = HangUIDlg.rc
 
 include $(topsrcdir)/config/config.mk
 
 DEFINES += \
   -DNS_NO_XPCOM \
--- a/dom/plugins/ipc/hangui/moz.build
+++ b/dom/plugins/ipc/hangui/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'plugin-hang-ui'
-
--- a/embedding/tests/winEmbed/Makefile.in
+++ b/embedding/tests/winEmbed/Makefile.in
@@ -31,16 +31,17 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPI_NAME	= winembed
 
+PROGRAM		= winEmbed$(BIN_SUFFIX)
 RESFILE		= winEmbed.res
 
 CPPSRCS		= \
 		winEmbed.cpp \
 		WebBrowserChrome.cpp \
 		WindowCreator.cpp \
 		$(NULL)
 
--- a/embedding/tests/winEmbed/moz.build
+++ b/embedding/tests/winEmbed/moz.build
@@ -1,10 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'winEmbed'
 
-PROGRAM = 'winEmbed'
-
--- a/intl/unicharutil/tools/Makefile.in
+++ b/intl/unicharutil/tools/Makefile.in
@@ -5,16 +5,18 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM		= ucgendat
+
 CSRCS		= ucgendat.c
 
 # XXX need configure test
 EX_LIBS		= $(shell $(GLIB_CONFIG) --libs)
 
 include $(topsrcdir)/config/rules.mk
 
 # XXX replace with proper configure test for glib
--- a/intl/unicharutil/tools/moz.build
+++ b/intl/unicharutil/tools/moz.build
@@ -1,10 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'ucgendat'
 
-PROGRAM = 'ucgendat'
-
--- a/ipc/app/Makefile.in
+++ b/ipc/app/Makefile.in
@@ -4,16 +4,19 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+include $(topsrcdir)/ipc/app/defs.mk
+PROGRAM = $(MOZ_CHILD_PROCESS_NAME)
+
 ifneq ($(dir $(PROGRAM)),./)
   GENERATED_DIRS = $(dir $(PROGRAM))
 endif
 
 CPPSRCS = \
   MozillaRuntimeMain.cpp \
   $(NULL)
 
new file mode 100644
--- /dev/null
+++ b/ipc/app/defs.mk
@@ -0,0 +1,14 @@
+# 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/.
+
+ifneq (android,$(MOZ_WIDGET_TOOLKIT))
+MOZ_CHILD_PROCESS_NAME := plugin-container$(BIN_SUFFIX)
+else
+# We want to let Android unpack the file at install time, but it only does
+# so if the file is named libsomething.so. The lib/ path is also required
+# because the unpacked file will be under the lib/ subdirectory and will
+# need to be executed from that path.
+MOZ_CHILD_PROCESS_NAME := lib/libplugin-container.so
+endif
+MOZ_CHILD_PROCESS_BUNDLE := plugin-container.app/Contents/MacOS/
--- a/ipc/app/moz.build
+++ b/ipc/app/moz.build
@@ -1,10 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'ipc'
 
-PROGRAM = CONFIG['MOZ_CHILD_PROCESS_NAME']
-
--- a/ipc/glue/Makefile.in
+++ b/ipc/glue/Makefile.in
@@ -56,15 +56,20 @@ CPPSRCS += SharedMemoryBasic_android.cpp
 endif #}
 
 ifeq ($(OS_ARCH),Linux)
 CPPSRCS += ProcessUtils_linux.cpp
 else
 CPPSRCS += ProcessUtils_none.cpp
 endif
 
+include $(topsrcdir)/ipc/app/defs.mk
 DEFINES += -DMOZ_CHILD_PROCESS_NAME=\"$(MOZ_CHILD_PROCESS_NAME)\"
 DEFINES += -DMOZ_CHILD_PROCESS_BUNDLE=\"$(MOZ_CHILD_PROCESS_BUNDLE)\"
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 include $(topsrcdir)/config/rules.mk
+
+# Since we get the value of MOZ_CHILD_PROCESS_NAME from another file make sure
+# to rebuild if that file changes.
+$(CPPSRCS:%.cpp=%.$(OBJ_SUFFIX)): $(topsrcdir)/ipc/app/defs.mk
--- a/ipc/ipdl/test/cxx/app/Makefile.in
+++ b/ipc/ipdl/test/cxx/app/Makefile.in
@@ -4,16 +4,18 @@
 
 DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM = $(MODULE)$(BIN_SUFFIX)
+
 NSDISTMODE = copy
 
 LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base
 
 CPPSRCS = \
   TestIPDL.cpp \
   $(NULL)
--- a/ipc/ipdl/test/cxx/app/moz.build
+++ b/ipc/ipdl/test/cxx/app/moz.build
@@ -1,10 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'ipdlunittest'
 
-PROGRAM = 'ipdlunittest'
-
--- a/js/src/gdb/Makefile.in
+++ b/js/src/gdb/Makefile.in
@@ -6,16 +6,17 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@ @srcdir@/tests
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM = gdb-tests$(BIN_SUFFIX)
 CPPSRCS =					\
   gdb-tests.cpp					\
   test-jsid.cpp					\
   test-JSString.cpp				\
   test-JSObject.cpp				\
   test-jsval.cpp				\
   test-prettyprinters.cpp			\
   test-Root.cpp					\
--- a/js/src/gdb/moz.build
+++ b/js/src/gdb/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'gdb-tests'
-
--- a/js/src/jsapi-tests/Makefile.in
+++ b/js/src/jsapi-tests/Makefile.in
@@ -6,16 +6,18 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM         = jsapi-tests$(BIN_SUFFIX)
+
 CPPSRCS = \
   tests.cpp \
   selfTest.cpp \
   testAddPropertyPropcache.cpp \
   testArrayBuffer.cpp \
   testArgumentsObject.cpp \
   testBindCallable.cpp \
   testBug604087.cpp \
--- a/js/src/jsapi-tests/moz.build
+++ b/js/src/jsapi-tests/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'jsapi-tests'
-
--- a/js/src/shell/Makefile.in
+++ b/js/src/shell/Makefile.in
@@ -6,16 +6,17 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM         = $(JS_SHELL_NAME)$(BIN_SUFFIX)
 CPPSRCS		= \
   js.cpp \
   jsoptparse.cpp \
   jsheaptools.cpp \
   $(NULL)
 
 ifdef _MSC_VER
 # unnecessary PGO for js shell.  But gcc cannot turn off pgo because it is
--- a/js/src/shell/moz.build
+++ b/js/src/shell/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = CONFIG['JS_SHELL_NAME']
-
--- a/js/xpconnect/shell/Makefile.in
+++ b/js/xpconnect/shell/Makefile.in
@@ -5,16 +5,17 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM		= xpcshell$(BIN_SUFFIX)
 SDK_BINARY	= $(PROGRAM)
 
 CPPSRCS		= xpcshell.cpp
 
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/toolkit/xre \
   $(NULL)
 
--- a/js/xpconnect/shell/moz.build
+++ b/js/xpconnect/shell/moz.build
@@ -1,10 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'xpcshell'
 
-PROGRAM = 'xpcshell'
-
--- a/mobile/android/app/Makefile.in
+++ b/mobile/android/app/Makefile.in
@@ -11,16 +11,17 @@ include $(DEPTH)/config/autoconf.mk
 
 dist_dest = $(DIST)/$(APP_NAME).app
 
 PREF_JS_EXPORTS = $(srcdir)/mobile.js
 DIST_FILES = recommended-addons.json
 
 ifndef LIBXUL_SDK
 ifneq (Android,$(OS_TARGET))
+PROGRAM=$(MOZ_APP_NAME)$(BIN_SUFFIX)
 
 LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
 LOCAL_INCLUDES += -I$(DEPTH)/build
 
 DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
--- a/mobile/android/app/moz.build
+++ b/mobile/android/app/moz.build
@@ -1,9 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-if not CONFIG['LIBXUL_SDK']:
-    if CONFIG['OS_TARGET'] != 'Android':
-        PROGRAM = CONFIG['MOZ_APP_NAME']
--- a/mobile/android/base/Makefile.in
+++ b/mobile/android/base/Makefile.in
@@ -3,16 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
+include $(topsrcdir)/ipc/app/defs.mk
 
 DIST_FILES = package-name.txt
 
 include $(topsrcdir)/mobile/android/base/android-services-files.mk
 
 MOZGLUE_JAVA_FILES := \
   mozglue/ByteBufferInputStream.java \
   mozglue/DirectBufferAllocator.java \
--- a/mobile/android/installer/Makefile.in
+++ b/mobile/android/installer/Makefile.in
@@ -32,16 +32,18 @@ MOZ_LOCALIZED_PKG_LIST = $(AB_CD) multil
 
 DEFINES += \
 	-DAB_CD=$(AB_CD) \
 	-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
 	-DPREF_DIR=$(PREF_DIR) \
 	$(NULL)
 
 DEFINES += -DJAREXT=
+
+include $(topsrcdir)/ipc/app/defs.mk
 DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME)
 
 ifdef MOZ_PKG_MANIFEST_P
 MOZ_PKG_MANIFEST = package-manifest
 endif
 
 MOZ_PACKAGER_MINIFY=1
 
--- a/modules/libmar/tool/Makefile.in
+++ b/modules/libmar/tool/Makefile.in
@@ -15,16 +15,20 @@ ifeq ($(OS_ARCH),WINNT)
 USE_STATIC_LIBS = 1
 endif
 
 # The mar executable is output into dist/host/bin since it is something that
 # would only be used by our build system and should not itself be included in a
 # Mozilla distribution.
 HOST_PROGRAM = mar$(HOST_BIN_SUFFIX)
 
+ifdef MOZ_ENABLE_SIGNMAR
+PROGRAM = signmar$(BIN_SUFFIX)
+endif
+
 # Don't link the against libmozglue because we don't need it.
 MOZ_GLUE_LDFLAGS =
 MOZ_GLUE_PROGRAM_LDFLAGS =
 
 DEFINES += \
   -DMAR_CHANNEL_ID='"$(MAR_CHANNEL_ID)"' \
   -DMOZ_APP_VERSION='"$(MOZ_APP_VERSION)"' \
   $(NULL)
--- a/modules/libmar/tool/moz.build
+++ b/modules/libmar/tool/moz.build
@@ -1,10 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'mar'
 
-if CONFIG['MOZ_ENABLE_SIGNMAR']:
-    PROGRAM = 'signmar'
--- a/netwerk/streamconv/test/Makefile.in
+++ b/netwerk/streamconv/test/Makefile.in
@@ -6,16 +6,18 @@
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM		= TestStreamConv$(BIN_SUFFIX)
+
 CPPSRCS		= \
 		Converters.cpp \
 		TestStreamConv.cpp \
 		$(NULL)
 
 LIBS		= \
 		$(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
 		$(XPCOM_LIBS) \
--- a/netwerk/streamconv/test/moz.build
+++ b/netwerk/streamconv/test/moz.build
@@ -1,10 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'TestStreamConv'
 
-PROGRAM = 'TestStreamConv'
-
--- a/python/mozbuild/mozbuild/backend/recursivemake.py
+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
@@ -11,17 +11,16 @@ import types
 
 from .base import BuildBackend
 from ..frontend.data import (
     ConfigFileSubstitution,
     DirectoryTraversal,
     SandboxDerived,
     VariablePassthru,
     Exports,
-    Program,
     XpcshellManifests,
 )
 from ..util import FileAvoidWrite
 
 
 STUB_MAKEFILE = '''
 # THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.
 
@@ -210,19 +209,16 @@ class RecursiveMakeBackend(BuildBackend)
                     for item in v:
                         backend_file.write('%s += %s\n' % (k, item))
 
                 else:
                     backend_file.write('%s := %s\n' % (k, v))
         elif isinstance(obj, Exports):
             self._process_exports(obj.exports, backend_file)
 
-        elif isinstance(obj, Program):
-            self._process_program(obj.program, backend_file)
-
         elif isinstance(obj, XpcshellManifests):
             self._process_xpcshell_manifests(obj.xpcshell_manifests, backend_file)
 
         self._backend_files[obj.srcdir] = backend_file
 
     def consume_finished(self):
         for srcdir in sorted(self._backend_files.keys()):
             bf = self._backend_files[srcdir]
@@ -324,13 +320,10 @@ class RecursiveMakeBackend(BuildBackend)
         if strings:
             backend_file.write('%s += %s\n' % (export_name, ' '.join(strings)))
 
         children = exports.get_children()
         for subdir in sorted(children):
             self._process_exports(children[subdir], backend_file,
                                   namespace=namespace + subdir)
 
-    def _process_program(self, program, backend_file):
-        backend_file.write('PROGRAM = %s\n' % program)
-
     def _process_xpcshell_manifests(self, manifest, backend_file, namespace=""):
         backend_file.write('XPCSHELL_TESTS += %s\n' % os.path.dirname(manifest))
--- a/python/mozbuild/mozbuild/frontend/data.py
+++ b/python/mozbuild/mozbuild/frontend/data.py
@@ -144,34 +144,16 @@ class Exports(SandboxDerived):
     HierarchicalStringList, which is created when parsing EXPORTS.
     """
     __slots__ = ('exports')
 
     def __init__(self, sandbox, exports):
         SandboxDerived.__init__(self, sandbox)
         self.exports = exports
 
-class Program(SandboxDerived):
-    """Sandbox container object for PROGRAM, which is a unicode string.
-
-    This class handles automatically appending BIN_SUFFIX to the PROGRAM value.
-    If BIN_SUFFIX is not defined, PROGRAM is unchanged.
-    Otherwise, if PROGRAM ends in BIN_SUFFIX, it is unchanged
-    Otherwise, BIN_SUFFIX is appended to PROGRAM
-    """
-    __slots__ = ('program')
-
-    def __init__(self, sandbox, program, bin_suffix):
-        SandboxDerived.__init__(self, sandbox)
-
-        bin_suffix = bin_suffix or ''
-        if not program.endswith(bin_suffix):
-            program += bin_suffix
-        self.program = program
-
 class XpcshellManifests(SandboxDerived):
     """Build object container for XPCSHELL_TESTS_MANIFESTS (was: XPCSHELL_TESTS).
 
     This object contains a list of xpcshell.ini manifest files.
     """
     __slots__ = ('xpcshell_manifests')
 
     def __init__(self, sandbox, manifests):
--- a/python/mozbuild/mozbuild/frontend/sandbox_symbols.py
+++ b/python/mozbuild/mozbuild/frontend/sandbox_symbols.py
@@ -162,24 +162,16 @@ VARIABLES = {
         subdirectory they should be exported to. For example, to export 'foo.h'
         to the top-level directory, and 'bar.h' to mozilla/dom/, append to
         EXPORTS like so:
 
         EXPORTS += ['foo.h']
         EXPORTS.mozilla.dom += ['bar.h']
         """),
 
-    'PROGRAM' : (unicode, "",
-        """Compiled executable name.
-
-        If the configuration token 'BIN_SUFFIX' is set, its value will be
-        automatically appended to PROGRAM. If PROGRAM already ends with
-        BIN_SUFFIX, PROGRAM will remain unchanged.
-        """),
-
     # IDL Generation.
     'XPIDL_SOURCES': (list, [],
         """XPCOM Interface Definition Files (xpidl).
 
         This is a list of files that define XPCOM interface definitions.
         Entries must be files that exist. Entries are almost certainly .idl
         files.
         """),
deleted file mode 100644
--- a/python/mozbuild/mozbuild/test/frontend/data/program/moz.build
+++ /dev/null
@@ -1,4 +0,0 @@
-# Any copyright is dedicated to the Public Domain.
-# http://creativecommons.org/publicdomain/zero/1.0/
-
-PROGRAM = 'test_program'
--- a/python/mozbuild/mozbuild/test/frontend/test_emitter.py
+++ b/python/mozbuild/mozbuild/test/frontend/test_emitter.py
@@ -10,34 +10,32 @@ import unittest
 from mozunit import main
 
 from mozbuild.frontend.data import (
     ConfigFileSubstitution,
     DirectoryTraversal,
     ReaderSummary,
     VariablePassthru,
     Exports,
-    Program,
     XpcshellManifests,
 )
 from mozbuild.frontend.emitter import TreeMetadataEmitter
 from mozbuild.frontend.reader import BuildReader
 
 from mozbuild.test.common import MockConfig
 
 
 data_path = os.path.abspath(os.path.dirname(__file__))
 data_path = os.path.join(data_path, 'data')
 
 
 class TestEmitterBasic(unittest.TestCase):
     def reader(self, name):
         config = MockConfig(os.path.join(data_path, name))
         config.substs['ENABLE_TESTS'] = '1'
-        config.substs['BIN_SUFFIX'] = '.prog'
 
         return BuildReader(config)
 
     def read_topsrcdir(self, reader):
         emitter = TreeMetadataEmitter(reader.config)
 
         objs = list(emitter.emit(reader.read_topsrcdir()))
         self.assertGreater(len(objs), 0)
@@ -167,27 +165,16 @@ class TestEmitterBasic(unittest.TestCase
         self.assertIn('private', nspr._children)
         private = nspr._children['private']
         self.assertEqual(private.get_strings(), ['pprio.h', 'pprthred.h'])
 
         self.assertIn('overwrite', exports._children)
         overwrite = exports._children['overwrite']
         self.assertEqual(overwrite.get_strings(), ['new.h'])
 
-    def test_program(self):
-        reader = self.reader('program')
-        objs = self.read_topsrcdir(reader)
-
-        self.assertEqual(len(objs), 2)
-        self.assertIsInstance(objs[0], DirectoryTraversal)
-        self.assertIsInstance(objs[1], Program)
-
-        program = objs[1].program
-        self.assertEqual(program, 'test_program.prog')
-
     def test_xpcshell_manifests(self):
         reader = self.reader('xpcshell_manifests')
         objs = self.read_topsrcdir(reader)
 
         inis = []
         for o in objs:
             if isinstance(o, XpcshellManifests):
                 inis.append(o.xpcshell_manifests)
--- a/rdf/tests/rdfcat/Makefile.in
+++ b/rdf/tests/rdfcat/Makefile.in
@@ -5,16 +5,18 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM		= rdfcat$(BIN_SUFFIX)
+
 CPPSRCS		= rdfcat.cpp
 
 LIBS		= \
 		$(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
 		$(LIBS_DIR) \
 		$(XPCOM_LIBS) \
 		$(NSPR_LIBS) \
 		$(NULL)
--- a/rdf/tests/rdfcat/moz.build
+++ b/rdf/tests/rdfcat/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'rdfcat'
-
--- a/rdf/tests/rdfpoll/Makefile.in
+++ b/rdf/tests/rdfpoll/Makefile.in
@@ -5,16 +5,17 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM		= rdfpoll$(BIN_SUFFIX)
 CPPSRCS		= rdfpoll.cpp
 
 
 LIBS		= \
 		$(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
 		$(LIBS_DIR) \
 		$(XPCOM_LIBS) \
 		$(NSPR_LIBS) \
--- a/rdf/tests/rdfpoll/moz.build
+++ b/rdf/tests/rdfpoll/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'rdfpoll'
-
--- a/rdf/tests/triplescat/Makefile.in
+++ b/rdf/tests/triplescat/Makefile.in
@@ -5,16 +5,18 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM		= triplescat$(BIN_SUFFIX)
+
 CPPSRCS		= triplescat.cpp
 
 LIBS		= \
 		$(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
 		$(LIBS_DIR) \
 		$(XPCOM_LIBS) \
 		$(NSPR_LIBS) \
 		$(NULL)
--- a/rdf/tests/triplescat/moz.build
+++ b/rdf/tests/triplescat/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'triplescat'
-
--- a/testing/mochitest/ssltunnel/Makefile.in
+++ b/testing/mochitest/ssltunnel/Makefile.in
@@ -9,16 +9,18 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 # This isn't XPCOM code, but it wants to use STL, so disable the STL
 # wrappers
 STL_FLAGS =
 
+PROGRAM = ssltunnel$(BIN_SUFFIX)
+
 CPPSRCS = ssltunnel.cpp
 
 LIBS = \
   $(NSPR_LIBS) \
   $(NSS_LIBS) \
   $(MOZALLOC_LIB) \
   $(NULL)
 
--- a/testing/mochitest/ssltunnel/moz.build
+++ b/testing/mochitest/ssltunnel/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'ssltunnel'
-
--- a/testing/tools/screenshot/Makefile.in
+++ b/testing/tools/screenshot/Makefile.in
@@ -7,25 +7,27 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
 ifdef MOZ_X11
 
+PROGRAM = screentopng
 CPPSRCS = gdk-screenshot.cpp
 LOCAL_INCLUDES = $(MOZ_GTK2_CFLAGS)
 OS_LIBS = $(MOZ_GTK2_LIBS) $(XSS_LIBS)
 
 endif # X11
 endif # GTK2
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
 
+PROGRAM = screenshot$(BIN_SUFFIX)
 CPPSRCS = win32-screenshot.cpp
 OS_LIBS += $(call EXPAND_LIBNAME,gdiplus)
 MOZ_GLUE_PROGRAM_LDFLAGS =
 USE_STATIC_LIBS = 1
 
 ifdef GNU_CC
 WIN32_EXE_LDFLAGS = -municode
 endif
--- a/testing/tools/screenshot/moz.build
+++ b/testing/tools/screenshot/moz.build
@@ -1,10 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2' and CONFIG['MOZ_X11']:
-    PROGRAM = 'screentopng'
-elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
-    PROGRAM = 'screenshot'
--- a/toolkit/components/maintenanceservice/Makefile.in
+++ b/toolkit/components/maintenanceservice/Makefile.in
@@ -16,16 +16,17 @@ CPPSRCS = \
   certificatecheck.cpp \
   servicebase.cpp \
   registrycertificates.cpp \
   $(NULL)
 
 # For debugging purposes only
 #DEFINES += -DDISABLE_UPDATER_AUTHENTICODE_CHECK
 
+PROGRAM = maintenanceservice$(BIN_SUFFIX)
 DIST_PROGRAM = maintenanceservice$(BIN_SUFFIX)
 
 # Don't link the maintenanceservice against mozglue.dll. See bug 687139 and
 # bug 725876
 MOZ_GLUE_LDFLAGS =
 MOZ_GLUE_PROGRAM_LDFLAGS =
 
 LIBS += \
--- a/toolkit/components/maintenanceservice/moz.build
+++ b/toolkit/components/maintenanceservice/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'maintenanceservice'
-
--- a/toolkit/crashreporter/client/Makefile.in
+++ b/toolkit/crashreporter/client/Makefile.in
@@ -11,16 +11,17 @@ relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 # Don't use the STL wrappers in the crashreporter clients; they don't
 # link with -lmozalloc, and it really doesn't matter here anyway.
 STL_FLAGS =
 
 ifneq ($(OS_TARGET),Android)
+PROGRAM = crashreporter$(BIN_SUFFIX)
 DIST_PROGRAM = crashreporter$(BIN_SUFFIX)
 
 # Don't link the updater against libmozglue.
 MOZ_GLUE_LDFLAGS =
 MOZ_GLUE_PROGRAM_LDFLAGS =
 endif
 
 LOCAL_INCLUDES = -I$(srcdir)/../google-breakpad/src
--- a/toolkit/crashreporter/client/moz.build
+++ b/toolkit/crashreporter/client/moz.build
@@ -1,13 +1,11 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'crashreporter'
 
-if CONFIG['OS_TARGET'] != 'Android':
-    PROGRAM = 'crashreporter'
 # The xpcshell test case here verifies that the CA certificate list
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2' and CONFIG['MOZ_PLATFORM_MAEMO']:
     XPCSHELL_TESTS_MANIFESTS += ['maemo-unit/xpcshell.ini']
--- a/toolkit/mozapps/installer/packager.mk
+++ b/toolkit/mozapps/installer/packager.mk
@@ -302,16 +302,18 @@ DIST_FILES += \
   $(NULL)
 
 NON_DIST_FILES = \
   classes.dex \
   $(NULL)
 
 UPLOAD_EXTRA_FILES += gecko-unsigned-unaligned.apk
 
+include $(MOZILLA_DIR)/ipc/app/defs.mk
+
 DIST_FILES += $(MOZ_CHILD_PROCESS_NAME)
 
 ifeq ($(CPU_ARCH),x86)
 ABI_DIR = x86
 else
 ifdef MOZ_THUMB2
 ABI_DIR = armeabi-v7a
 else
--- a/toolkit/mozapps/update/updater/Makefile.in
+++ b/toolkit/mozapps/update/updater/Makefile.in
@@ -17,16 +17,18 @@ CPPSRCS = \
   $(NULL)
 
 ifeq ($(OS_ARCH),WINNT)
 CPPSRCS += \
   loaddlls.cpp \
   $(NULL)
 endif
 
+PROGRAM = updater$(BIN_SUFFIX)
+
 # Don't link the updater against libmozglue. See bug 687139
 MOZ_GLUE_LDFLAGS =
 MOZ_GLUE_PROGRAM_LDFLAGS =
 
 LOCAL_INCLUDES += \
   -I$(srcdir)/../common \
   $(NULL)
 
--- a/toolkit/mozapps/update/updater/moz.build
+++ b/toolkit/mozapps/update/updater/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'updater'
-
--- a/tools/jprof/Makefile.in
+++ b/tools/jprof/Makefile.in
@@ -6,16 +6,18 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+PROGRAM = jprof
+
 CPPSRCS = \
 	bfd.cpp    \
 	coff.cpp   \
 	elf.cpp	   \
 	leaky.cpp  \
 	strset.cpp \
 	intcnt.cpp \
 	$(NULL)
--- a/tools/jprof/moz.build
+++ b/tools/jprof/moz.build
@@ -1,10 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 DIRS += ['stub']
-
-PROGRAM = 'jprof'
-
--- a/tools/trace-malloc/Makefile.in
+++ b/tools/trace-malloc/Makefile.in
@@ -25,16 +25,17 @@ SIMPLE_PROGRAMS	= \
 		$(SIMPLECSRCS:.c=$(BIN_SUFFIX)) \
 		$(SIMPLECPPSRCS:.cpp=$(BIN_SUFFIX)) \
 		$(NULL)
 
 EXTRACSRCS = tmreader.c
 EXTRACPPSRCS = adreader.cpp
 
 ifndef MOZ_PROFILE_GENERATE
+PROGRAM		= spacetrace$(BIN_SUFFIX)
 
 PROGCSRCS = \
   spacetrace.c \
   spacecategory.c \
   formdata.c \
   $(NULL)
 
 PROGOBJS = $(PROGCSRCS:.c=.$(OBJ_SUFFIX))
--- a/tools/trace-malloc/moz.build
+++ b/tools/trace-malloc/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-if not CONFIG['MOZ_PROFILE_GENERATE']:
-    PROGRAM = 'spacetrace'
--- a/webapprt/gtk2/Makefile.in
+++ b/webapprt/gtk2/Makefile.in
@@ -6,16 +6,18 @@ DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 # Build a binary bootstrapping with XRE_main
+PROGRAM = webapprt-stub
+
 CPPSRCS = webapprt.cpp
 
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/toolkit/xre \
   -I$(topsrcdir)/xpcom/base \
   -I$(topsrcdir)/xpcom/build \
   -I$(DEPTH)/build \
   $(NULL)
--- a/webapprt/gtk2/moz.build
+++ b/webapprt/gtk2/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'webapprt-stub'
-
--- a/webapprt/mac/Makefile.in
+++ b/webapprt/mac/Makefile.in
@@ -8,16 +8,18 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 # This switches $(INSTALL) to copy mode, like $(SYSINSTALL), so things that
 # shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall.
 NSDISTMODE = copy
 
+PROGRAM = webapprt-stub$(BIN_SUFFIX)
+
 CMMSRCS = webapprt.mm
 
 # Don't create a dependency on mozglue, which is impossible (difficult?)
 # to dynamically link into our executable, as we copy it to arbitrary locations.
 MOZ_GLUE_LDFLAGS =
 MOZ_GLUE_PROGRAM_LDFLAGS =
 
 LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
--- a/webapprt/mac/moz.build
+++ b/webapprt/mac/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'webapprt-stub'
-
--- a/webapprt/win/Makefile.in
+++ b/webapprt/win/Makefile.in
@@ -5,16 +5,18 @@
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 # Build a binary bootstrapping with XRE_main
+PROGRAM   = webapprt-stub$(BIN_SUFFIX)
+
 CPPSRCS   = webapprt.cpp
 
 # Statically link against the CRT
 USE_STATIC_LIBS = 1
 # Don't create a dependency on mozglue, which is impossible (difficult?)
 # to dynamically link into our executable, as we copy it to arbitrary locations.
 MOZ_GLUE_LDFLAGS =
 
--- a/webapprt/win/moz.build
+++ b/webapprt/win/moz.build
@@ -1,8 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
-PROGRAM = 'webapprt-stub'
-
--- a/widget/xremoteclient/Makefile.in
+++ b/widget/xremoteclient/Makefile.in
@@ -23,16 +23,18 @@ LIBCPPSRCS = XRemoteClient.cpp
 
 OBJS = $(LIBCPPSRCS:.cpp=.$(OBJ_SUFFIX))
 
 EXTRA_DSO_LDOPTS = \
 		$(XLIBS) $(XLDFLAGS)  \
 		$(MOZ_COMPONENT_LIBS) \
 		$(NULL)
 
+PROGRAM         = mozilla-xremote-client$(BIN_SUFFIX)
+
 PROGCPPSRCS = \
   mozilla-xremote-client.cpp \
   XRemoteClient.cpp \
   $(NULL)
 
 PROGOBJS = $(PROGCPPSRCS:.cpp=.$(OBJ_SUFFIX))
 
 CPPSRCS = $(filter-out $(LIBCPPSRCS),$(PROGCPPSRCS)) $(LIBCPPSRCS)
--- a/widget/xremoteclient/moz.build
+++ b/widget/xremoteclient/moz.build
@@ -1,10 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'xremoteclient'
 
-PROGRAM = 'mozilla-xremote-client'
-
--- a/xulrunner/app/Makefile.in
+++ b/xulrunner/app/Makefile.in
@@ -10,16 +10,18 @@ VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 PREF_JS_EXPORTS = $(srcdir)/xulrunner.js
 GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/,xulrunner.js)
 
 DEFINES += -DAB_CD=$(AB_CD)
 
+PROGRAM = xulrunner$(BIN_SUFFIX)
+
 DEFINES += -DXULRUNNER_PROGNAME=\"xulrunner\"
 
 ifdef TARGET_XPCOM_ABI
 DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\"
 endif
 
 DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
--- a/xulrunner/app/moz.build
+++ b/xulrunner/app/moz.build
@@ -1,10 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 DIRS += ['profile']
-
-PROGRAM = 'xulrunner'
-
--- a/xulrunner/stub/Makefile.in
+++ b/xulrunner/stub/Makefile.in
@@ -11,16 +11,22 @@ include $(DEPTH)/config/autoconf.mk
 
 # Statically link against the RTL on windows
 USE_STATIC_LIBS = 1
 # Don't create a dependency on mozglue
 MOZ_GLUE_LDFLAGS =
 
 CPPSRCS   = nsXULStub.cpp
 
+# The value of XULRUNNER_STUB_NAME is generated by configure to allow XULRunner
+# apps to override it using the --with-xulrunner-stub-name=<appname> argument.
+# If this configure argument is not present then the default name is 'xulrunner'
+# for Mac OS X and 'xulrunner-stub' for all other platforms.
+PROGRAM   = $(XULRUNNER_STUB_NAME)$(BIN_SUFFIX)
+
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/xpcom/build \
   -I$(topsrcdir)/xpcom/base \
   $(NULL)
 
 DEFINES  += -DXPCOM_GLUE
 STL_FLAGS=
 
--- a/xulrunner/stub/moz.build
+++ b/xulrunner/stub/moz.build
@@ -1,14 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'xulrunner'
 
-# The value of XULRUNNER_STUB_NAME is generated by configure to allow XULRunner
-# apps to override it using the --with-xulrunner-stub-name=<appname> argument.
-# If this configure argument is not present then the default name is 'xulrunner'
-# for Mac OS X and 'xulrunner-stub' for all other platforms.
-PROGRAM = CONFIG['XULRUNNER_STUB_NAME']
-
--- a/xulrunner/tools/redit/Makefile.in
+++ b/xulrunner/tools/redit/Makefile.in
@@ -6,16 +6,17 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 ifeq ($(OS_ARCH),WINNT)
 CPPSRCS    = redit.cpp
+PROGRAM    = redit$(BIN_SUFFIX)
 
 SDK_BINARY =  \
 	$(PROGRAM) \
 	$(NULL)
 
 DEFINES += -DWIN32_LEAN_AND_MEAN \
 					 -DUNICODE \
 					 -D_UNICODE \
--- a/xulrunner/tools/redit/moz.build
+++ b/xulrunner/tools/redit/moz.build
@@ -1,10 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; 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/.
 
 MODULE = 'redit'
 
-if CONFIG['OS_ARCH'] == 'WINNT':
-    PROGRAM  = 'redit'