diff --git a/accessible/public/ia2/Makefile.in b/accessible/public/ia2/Makefile.in
index b00410aa64dcfbc7da5ce66e136f77ba0a291148..2aa0cc1d12d58ca0844456f5670b147dc8b3a189 100644
--- a/accessible/public/ia2/Makefile.in
+++ b/accessible/public/ia2/Makefile.in
@@ -6,8 +6,6 @@ DEFFILE       = $(win_srcdir)/IA2Marshal.def
 
 IA2DIR        = $(topsrcdir)/other-licenses/ia2
 
-DEFINES       += -DREGISTER_PROXY_DLL
-
 GARBAGE       += $(MIDL_GENERATED_FILES)
 
 # Please keep this list in sync with the moz.build file until the rest of this
diff --git a/accessible/public/ia2/moz.build b/accessible/public/ia2/moz.build
index be2265e8d1a21176aa944c21c428004e1f39faff..d715a08b23e7dca0d94c9771c28133c2229a4b25 100644
--- a/accessible/public/ia2/moz.build
+++ b/accessible/public/ia2/moz.build
@@ -7,3 +7,5 @@
 LIBRARY_NAME = 'IA2Marshal'
 
 FORCE_SHARED_LIB = True
+
+DEFINES['REGISTER_PROXY_DLL'] = True
diff --git a/accessible/public/msaa/Makefile.in b/accessible/public/msaa/Makefile.in
index fed4aaf8c52256c8d7ed4e25401f1933dcfcc6b5..b27fa0a385717cf31499e7bd6c8970f2bb01820a 100644
--- a/accessible/public/msaa/Makefile.in
+++ b/accessible/public/msaa/Makefile.in
@@ -4,8 +4,6 @@
 
 DEFFILE = $(win_srcdir)/AccessibleMarshal.def
 
-DEFINES += -DREGISTER_PROXY_DLL
-
 GARBAGE += $(MIDL_GENERATED_FILES) done_gen dlldata.c
 
 MIDL_GENERATED_FILES = \
diff --git a/accessible/public/msaa/moz.build b/accessible/public/msaa/moz.build
index 6321c5d31d52086fb0e0ab5648a01b5e3a3673e7..40c26ff79a603af53447f53874f0741d3af34904 100644
--- a/accessible/public/msaa/moz.build
+++ b/accessible/public/msaa/moz.build
@@ -17,3 +17,5 @@ GENERATED_SOURCES += [
 ]
 
 FORCE_SHARED_LIB = True
+
+DEFINES['REGISTER_PROXY_DLL'] = True
diff --git a/b2g/app/Makefile.in b/b2g/app/Makefile.in
index e67a17f30c98b607a02243c543b3d77baf3d75eb..40fdebae4c96effce802a7d6f36138d6d755661c 100644
--- a/b2g/app/Makefile.in
+++ b/b2g/app/Makefile.in
@@ -7,10 +7,6 @@ include $(topsrcdir)/config/makefiles/rcs.mk
 
 PREF_JS_EXPORTS = $(srcdir)/b2g.js
 
-ifdef ENABLE_MARIONETTE
-DEFINES += -DENABLE_MARIONETTE=1
-endif
-
 ifndef LIBXUL_SDK
 
 ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
@@ -39,7 +35,6 @@ LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
 LOCAL_INCLUDES += -I$(DEPTH)/build
 
-DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
 
 LIBS += $(JEMALLOC_LIBS)
@@ -83,12 +78,6 @@ include $(topsrcdir)/config/rules.mk
 
 APP_ICON = b2g
 
-DEFINES += \
-  -DAPP_NAME=$(MOZ_APP_NAME) \
-  -DAPP_VERSION=$(MOZ_APP_VERSION) \
-  -DMOZ_UPDATER=$(MOZ_UPDATER) \
-  $(NULL)
-
 source_repo ?= $(call getSourceRepo,$(srcdir)/..)
 ifneq (,$(filter http%,$(source_repo)))
   DEFINES += -DMOZ_SOURCE_REPO="$(source_repo)"
diff --git a/b2g/app/moz.build b/b2g/app/moz.build
index f8966c2fdd2df9550a59310a3ee91d31c63b5770..cd85ac98523eee22184b54b24848c984481d872f 100644
--- a/b2g/app/moz.build
+++ b/b2g/app/moz.build
@@ -12,3 +12,11 @@ if not CONFIG['LIBXUL_SDK']:
     SOURCES += [
         'nsBrowserApp.cpp',
     ]
+
+if CONFIG['ENABLE_MARIONETTE']:
+    DEFINES['ENABLE_MARIONETTE'] = 1
+
+DEFINES['XPCOM_GLUE'] = True
+
+for var in ('MOZ_APP_NAME', 'MOZ_APP_VERSION', 'MOZ_UPDATER'):
+    DEFINES[var] = CONFIG[var]
diff --git a/b2g/chrome/Makefile.in b/b2g/chrome/Makefile.in
deleted file mode 100644
index 382dc360ce94592f8f7ff3d5e5f2f95a6a6ec824..0000000000000000000000000000000000000000
--- a/b2g/chrome/Makefile.in
+++ /dev/null
@@ -1,8 +0,0 @@
-# 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/.
-
-DEFINES += -DAB_CD=$(MOZ_UI_LOCALE) \
-           -DPACKAGE=browser \
-           -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
-           $(NULL)
diff --git a/b2g/chrome/moz.build b/b2g/chrome/moz.build
index 895d11993cfbb162d47a99608e92843c5a06e999..27be5477130b403076cda5ef2e737d53364e8033 100644
--- a/b2g/chrome/moz.build
+++ b/b2g/chrome/moz.build
@@ -4,3 +4,6 @@
 # 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/.
 
+DEFINES['AB_CD'] = CONFIG['MOZ_UI_LOCALE']
+DEFINES['PACKAGE'] = 'browser'
+DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
diff --git a/b2g/gaia/Makefile.in b/b2g/gaia/Makefile.in
index 47e4713ad1b7d3e87264dbe5910ebccb1ca89f8e..368e83e66d71d3267e629321d5fc2f19d0135423 100644
--- a/b2g/gaia/Makefile.in
+++ b/b2g/gaia/Makefile.in
@@ -4,18 +4,6 @@
 
 GAIA_PATH := gaia/profile
 
-ifeq ($(OS_ARCH),WINNT)
-DEFINES += \
-  -DB2G_NAME=L\"$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)\" \
-  -DGAIA_PATH=L\"$(subst /,\\\\,$(GAIA_PATH))\" \
-  $(NULL)
-else # Non-windows machines use the same wrapper program
-DEFINES += \
-  -DB2G_NAME=\"$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)\" \
-  -DGAIA_PATH=\"$(GAIA_PATH)\" \
-  $(NULL)
-endif
-
 ifdef .PYMAKE
 # For use of GNU make in pymake builds.
 GAIA_MAKE=$(GMAKE)
diff --git a/b2g/gaia/moz.build b/b2g/gaia/moz.build
index 6713659202d2e54258229aad35a04214e004dadc..282c716c25f2234f2fe029b0a3567ad585d03546 100644
--- a/b2g/gaia/moz.build
+++ b/b2g/gaia/moz.build
@@ -10,7 +10,11 @@ if CONFIG['OS_ARCH'] == 'WINNT':
     SOURCES += [
         'run-b2g.cpp',
     ]
+    DEFINES['B2G_NAME'] = 'L"%s-bin%s"' % (PROGRAM, CONFIG['BIN_SUFFIX'])
+    DEFINES['GAIA_PATH'] = 'L"gaia\\\\profile"'
 else:
     SOURCES += [
         'run-b2g.c',
     ]
+    DEFINES['B2G_NAME'] = '"%s-bin%s"' % (PROGRAM, CONFIG['BIN_SUFFIX'])
+    DEFINES['GAIA_PATH'] = '"gaia/profile"'
diff --git a/browser/app/Makefile.in b/browser/app/Makefile.in
index bf74c1e9dc012babbe6928b3f5c76ac18aefc856..03086d51a023e18bc3acc29be098741183181195 100644
--- a/browser/app/Makefile.in
+++ b/browser/app/Makefile.in
@@ -4,10 +4,6 @@
 
 dist_dest   = $(DIST)/$(MOZ_MACBUNDLE_NAME)
 
-ifdef ENABLE_MARIONETTE
-DEFINES += -DENABLE_MARIONETTE=1
-endif
-
 PREF_JS_EXPORTS = $(srcdir)/profile/firefox.js \
 		  $(NULL)
 
@@ -17,7 +13,6 @@ AB_CD = en-US
 
 DEFINES += \
   -DAB_CD=$(AB_CD) \
-  -DAPP_VERSION="$(MOZ_APP_VERSION)" \
   -DFIREFOX_ICO=\"$(DIST)/branding/firefox.ico\" \
   -DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\" \
   -DNEWWINDOW_ICO=\"$(DIST)/branding/newwindow.ico\" \
@@ -25,13 +20,8 @@ DEFINES += \
   -DPBMODE_ICO=\"$(DIST)/branding/pbmode.ico\" \
   $(NULL)
 
-ifdef MOZILLA_OFFICIAL
-DEFINES += -DMOZILLA_OFFICIAL
-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
@@ -43,7 +33,6 @@ LOCAL_INCLUDES += \
   -I$(DEPTH)/build \
   $(NULL)
 
-DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
 
 LIBS += \
diff --git a/browser/app/moz.build b/browser/app/moz.build
index 45412588115bcef90b7ce851fc41fcad0a0461a8..d76996f73d4f4a2014a901d6b89de109306e7551 100644
--- a/browser/app/moz.build
+++ b/browser/app/moz.build
@@ -11,3 +11,14 @@ PROGRAM = CONFIG['MOZ_APP_NAME']
 SOURCES += [
     'nsBrowserApp.cpp',
 ]
+
+if CONFIG['ENABLE_MARIONETTE']:
+    DEFINES['ENABLE_MARIONETTE'] = 1
+
+DEFINES['APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
+
+for var in ('MOZILLA_OFFICIAL', 'LIBXUL_SDK'):
+    if CONFIG[var]:
+        DEFINES[var] = True
+
+DEFINES['XPCOM_GLUE'] = True
diff --git a/browser/base/Makefile.in b/browser/base/Makefile.in
deleted file mode 100644
index 160b1a60c4569bc32af53759380bfb60f320033d..0000000000000000000000000000000000000000
--- a/browser/base/Makefile.in
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# 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 $(topsrcdir)/config/config.mk
-
-abs_srcdir = $(abspath $(srcdir))
-
-include $(topsrcdir)/config/rules.mk
-
-DEFINES += \
-	-DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
-	-DAPP_LICENSE_BLOCK=$(abs_srcdir)/content/overrides/app-license.html \
-	$(NULL)
-
-ifneq (,$(filter windows gtk2 gtk3 cocoa, $(MOZ_WIDGET_TOOLKIT)))
-DEFINES += -DHAVE_SHELL_SERVICE=1
-endif
-
-ifneq (,$(filter windows cocoa gtk2 gtk3, $(MOZ_WIDGET_TOOLKIT)))
-DEFINES += -DCONTEXT_COPY_IMAGE_CONTENTS=1
-endif
-
-ifneq (,$(filter windows cocoa, $(MOZ_WIDGET_TOOLKIT)))
-DEFINES += -DCAN_DRAW_IN_TITLEBAR=1
-endif
-
-ifneq (,$(filter windows gtk2 gtk3, $(MOZ_WIDGET_TOOLKIT)))
-DEFINES += -DMENUBAR_CAN_AUTOHIDE=1
-endif
diff --git a/browser/base/moz.build b/browser/base/moz.build
index b945757d4d37e02711f1c61df7fdb38a6ee79d6b..cb1a787f1996e071a88231d48c94af6d0c9890ec 100644
--- a/browser/base/moz.build
+++ b/browser/base/moz.build
@@ -21,3 +21,16 @@ BROWSER_CHROME_MANIFESTS += [
     'content/test/newtab/browser.ini',
     'content/test/social/browser.ini',
 ]
+
+DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
+DEFINES['APP_LICENSE_BLOCK'] = '%s/content/overrides/app-license.html' % SRCDIR
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'gtk3', 'cocoa'):
+    DEFINES['HAVE_SHELL_SERVICE'] = 1
+    DEFINES['CONTEXT_COPY_IMAGE_CONTENTS'] = 1
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'cocoa'):
+    DEFINES['CAN_DRAW_IN_TITLEBAR'] = 1
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'gtk3'):
+    DEFINES['MENUBAR_CAN_AUTOHIDE'] = 1
diff --git a/browser/branding/aurora/locales/Makefile.in b/browser/branding/aurora/locales/Makefile.in
index 778f74dd0f1599905766a89e24b1b236dcae5f42..82f614ecea2921246603e37f88571ef425e37473 100644
--- a/browser/branding/aurora/locales/Makefile.in
+++ b/browser/branding/aurora/locales/Makefile.in
@@ -2,4 +2,4 @@
 # 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/.
 
-DEFINES += -DAB_CD=$(AB_CD) -DMOZ_DISTRIBUTION_ID_UNQUOTED=$(MOZ_DISTRIBUTION_ID)
+DEFINES += -DAB_CD=$(AB_CD)
diff --git a/browser/branding/aurora/locales/moz.build b/browser/branding/aurora/locales/moz.build
index 895d11993cfbb162d47a99608e92843c5a06e999..062fc309ba370ce81ba9d64d69ce95e16456542e 100644
--- a/browser/branding/aurora/locales/moz.build
+++ b/browser/branding/aurora/locales/moz.build
@@ -4,3 +4,4 @@
 # 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/.
 
+DEFINES['MOZ_DISTRIBUTION_ID_UNQUOTED'] = CONFIG['MOZ_DISTRIBUTION_ID']
diff --git a/browser/branding/nightly/locales/Makefile.in b/browser/branding/nightly/locales/Makefile.in
index 778f74dd0f1599905766a89e24b1b236dcae5f42..82f614ecea2921246603e37f88571ef425e37473 100644
--- a/browser/branding/nightly/locales/Makefile.in
+++ b/browser/branding/nightly/locales/Makefile.in
@@ -2,4 +2,4 @@
 # 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/.
 
-DEFINES += -DAB_CD=$(AB_CD) -DMOZ_DISTRIBUTION_ID_UNQUOTED=$(MOZ_DISTRIBUTION_ID)
+DEFINES += -DAB_CD=$(AB_CD)
diff --git a/browser/branding/nightly/locales/moz.build b/browser/branding/nightly/locales/moz.build
index 895d11993cfbb162d47a99608e92843c5a06e999..062fc309ba370ce81ba9d64d69ce95e16456542e 100644
--- a/browser/branding/nightly/locales/moz.build
+++ b/browser/branding/nightly/locales/moz.build
@@ -4,3 +4,4 @@
 # 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/.
 
+DEFINES['MOZ_DISTRIBUTION_ID_UNQUOTED'] = CONFIG['MOZ_DISTRIBUTION_ID']
diff --git a/browser/branding/unofficial/locales/Makefile.in b/browser/branding/unofficial/locales/Makefile.in
index 778f74dd0f1599905766a89e24b1b236dcae5f42..82f614ecea2921246603e37f88571ef425e37473 100644
--- a/browser/branding/unofficial/locales/Makefile.in
+++ b/browser/branding/unofficial/locales/Makefile.in
@@ -2,4 +2,4 @@
 # 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/.
 
-DEFINES += -DAB_CD=$(AB_CD) -DMOZ_DISTRIBUTION_ID_UNQUOTED=$(MOZ_DISTRIBUTION_ID)
+DEFINES += -DAB_CD=$(AB_CD)
diff --git a/browser/branding/unofficial/locales/moz.build b/browser/branding/unofficial/locales/moz.build
index 895d11993cfbb162d47a99608e92843c5a06e999..062fc309ba370ce81ba9d64d69ce95e16456542e 100644
--- a/browser/branding/unofficial/locales/moz.build
+++ b/browser/branding/unofficial/locales/moz.build
@@ -4,3 +4,4 @@
 # 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/.
 
+DEFINES['MOZ_DISTRIBUTION_ID_UNQUOTED'] = CONFIG['MOZ_DISTRIBUTION_ID']
diff --git a/browser/components/feeds/src/Makefile.in b/browser/components/feeds/src/Makefile.in
index c92d8b0ec58daa893f8f070498f12bce82d50377..c82bbbac0f03db13ff18a4e293cf92585b21418b 100644
--- a/browser/components/feeds/src/Makefile.in
+++ b/browser/components/feeds/src/Makefile.in
@@ -2,10 +2,4 @@
 # 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/.
 
-DEFINES += \
-	-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
-	-DMOZ_MACBUNDLE_NAME=$(MOZ_MACBUNDLE_NAME) \
-	$(NULL)
-
-
 LOCAL_INCLUDES = -I$(srcdir)/../../build
diff --git a/browser/components/feeds/src/moz.build b/browser/components/feeds/src/moz.build
index 777f012ceea19fd40265605839500c78db0647d0..03cd8b94407821ecc1213bf6d5db34e35f3a299b 100644
--- a/browser/components/feeds/src/moz.build
+++ b/browser/components/feeds/src/moz.build
@@ -19,3 +19,6 @@ EXTRA_PP_COMPONENTS += [
 ]
 
 FINAL_LIBRARY = 'browsercomps'
+
+for var in ('MOZ_APP_NAME', 'MOZ_MACBUNDLE_NAME'):
+    DEFINES[var] = CONFIG[var]
diff --git a/browser/components/migration/src/Makefile.in b/browser/components/migration/src/Makefile.in
deleted file mode 100644
index a15fafea2c94733b11b8208e47dfeb7f8c6ad1c8..0000000000000000000000000000000000000000
--- a/browser/components/migration/src/Makefile.in
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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/.
-
-ifeq ($(OS_ARCH),WINNT)
-
-DEFINES += -DHAS_IE_MIGRATOR -DHAS_SAFARI_MIGRATOR
-endif
-
-ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-DEFINES += -DHAS_SAFARI_MIGRATOR
-endif
diff --git a/browser/components/migration/src/moz.build b/browser/components/migration/src/moz.build
index bf0a8cc53f63ee21b3576a7e7632ee4890b35457..43d08fe9e2501cce7d0eae873ad588a4a53af85f 100644
--- a/browser/components/migration/src/moz.build
+++ b/browser/components/migration/src/moz.build
@@ -18,6 +18,7 @@ if CONFIG['OS_ARCH'] == 'WINNT':
     EXTRA_COMPONENTS += [
         'IEProfileMigrator.js',
     ]
+    DEFINES['HAS_IE_MIGRATOR'] = True
 
 EXTRA_PP_COMPONENTS += [
     'BrowserProfileMigrators.manifest',
@@ -28,11 +29,13 @@ if CONFIG['OS_ARCH'] == 'WINNT':
     EXTRA_PP_COMPONENTS += [
         'SafariProfileMigrator.js',
     ]
+    DEFINES['HAS_SAFARI_MIGRATOR'] = True
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     EXTRA_PP_COMPONENTS += [
         'SafariProfileMigrator.js',
     ]
+    DEFINES['HAS_SAFARI_MIGRATOR'] = True
 
 EXTRA_PP_JS_MODULES += [
     'MigrationUtils.jsm',
diff --git a/browser/components/preferences/Makefile.in b/browser/components/preferences/Makefile.in
deleted file mode 100644
index 8bc21d8d486319600a3d33491babeae351530423..0000000000000000000000000000000000000000
--- a/browser/components/preferences/Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-# 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 $(topsrcdir)/config/rules.mk
-
-DEFINES += \
-	-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
-	-DMOZ_MACBUNDLE_NAME=$(MOZ_MACBUNDLE_NAME) \
-	$(NULL)
-
-ifneq (,$(filter windows gtk2 gtk3 cocoa, $(MOZ_WIDGET_TOOLKIT)))
-DEFINES += -DHAVE_SHELL_SERVICE=1
-endif
diff --git a/browser/components/preferences/in-content/Makefile.in b/browser/components/preferences/in-content/Makefile.in
deleted file mode 100644
index 9a8d9616efbf4878f2f71ca37486db66f457dd1e..0000000000000000000000000000000000000000
--- a/browser/components/preferences/in-content/Makefile.in
+++ /dev/null
@@ -1,14 +0,0 @@
-# -- 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 $(topsrcdir)/config/rules.mk
-
-DEFINES += \
-	-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
-	-DMOZ_MACBUNDLE_NAME=$(MOZ_MACBUNDLE_NAME) \
-	$(NULL)
-
-ifneq (,$(filter windows gtk2 cocoa, $(MOZ_WIDGET_TOOLKIT)))
-DEFINES += -DHAVE_SHELL_SERVICE=1
-endif
diff --git a/browser/components/preferences/in-content/moz.build b/browser/components/preferences/in-content/moz.build
index 895d11993cfbb162d47a99608e92843c5a06e999..e6bdbaf44a726435f2835595c30bfbf33491235f 100644
--- a/browser/components/preferences/in-content/moz.build
+++ b/browser/components/preferences/in-content/moz.build
@@ -4,3 +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/.
 
+for var in ('MOZ_APP_NAME', 'MOZ_MACBUNDLE_NAME'):
+    DEFINES[var] = CONFIG[var]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'cocoa'):
+    DEFINES['HAVE_SHELL_SERVICE'] = 1
diff --git a/browser/components/preferences/moz.build b/browser/components/preferences/moz.build
index b11ffebf15f99c7fb24841a055c5465ba9f35046..e35d8f9bb25f1e88fc87b1f8cb9b88389ae79572 100644
--- a/browser/components/preferences/moz.build
+++ b/browser/components/preferences/moz.build
@@ -10,3 +10,9 @@ BROWSER_CHROME_MANIFESTS += [
     'in-content/tests/browser.ini',
     'tests/browser.ini',
 ]
+
+for var in ('MOZ_APP_NAME', 'MOZ_MACBUNDLE_NAME'):
+    DEFINES[var] = CONFIG[var]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2', 'gtk3', 'cocoa'):
+    DEFINES['HAVE_SHELL_SERVICE'] = 1
diff --git a/browser/components/shell/src/Makefile.in b/browser/components/shell/src/Makefile.in
index 4425699c95ab6f4482a097068e11da4a63b755ee..df084b709de0a926ad5c6ca3b8efd10987ebe183 100644
--- a/browser/components/shell/src/Makefile.in
+++ b/browser/components/shell/src/Makefile.in
@@ -5,9 +5,6 @@
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DMOZ_APP_NAME=\"$(MOZ_APP_NAME)\" \
-  -DMOZ_APP_VERSION=\"$(MOZ_APP_VERSION)\"
-
 CXXFLAGS += $(TK_CFLAGS)
 
 clobber::
diff --git a/browser/components/shell/src/moz.build b/browser/components/shell/src/moz.build
index d426904cc24d837720110fc85268df781249669b..61ed38f5e441077995d750c9dbcc2de73336da33 100644
--- a/browser/components/shell/src/moz.build
+++ b/browser/components/shell/src/moz.build
@@ -24,3 +24,6 @@ EXTRA_COMPONENTS += [
     'nsSetDefaultBrowser.js',
     'nsSetDefaultBrowser.manifest',
 ]
+
+for var in ('MOZ_APP_NAME', 'MOZ_APP_VERSION'):
+    DEFINES[var] = '"%s"' % CONFIG[var]
diff --git a/browser/metro/Makefile.in b/browser/metro/Makefile.in
index 4aaeac6862d1d8249c4f429bf58934f06311f746..3ce51911d3b579344f5dcc848b55170002b70e8a 100644
--- a/browser/metro/Makefile.in
+++ b/browser/metro/Makefile.in
@@ -7,12 +7,8 @@ include $(topsrcdir)/config/rules.mk
 #########################################
 # application.ini
 
-ifdef MOZILLA_OFFICIAL
-DEFINES += -DMOZILLA_OFFICIAL
-endif
-
 GRE_BUILDID := $(shell cat $(DEPTH)/config/buildid)
-DEFINES += -DGRE_MILESTONE=$(GRE_MILESTONE) -DGRE_BUILDID=$(GRE_BUILDID)
+DEFINES += -DGRE_BUILDID=$(GRE_BUILDID)
 
 # 'application.ini' breaks firefox build config. So we use something different.
 metroapp.ini: metroapp.ini.in $(DEPTH)/config/buildid $(topsrcdir)/config/milestone.txt
diff --git a/browser/metro/base/Makefile.in b/browser/metro/base/Makefile.in
deleted file mode 100644
index baebac1ccb8fab75b0372125dc4e76cb9f05402b..0000000000000000000000000000000000000000
--- a/browser/metro/base/Makefile.in
+++ /dev/null
@@ -1,10 +0,0 @@
-# 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 $(topsrcdir)/config/config.mk
-
-DEFINES += -DAB_CD=$(MOZ_UI_LOCALE) \
-           -DPACKAGE=browser \
-           -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
-           $(NULL)
diff --git a/browser/metro/base/moz.build b/browser/metro/base/moz.build
index cad3b48d9a9e4626fe062d0b7c27bc53535c7f1e..1bba6b849a9928d9486f4226f97f727c69f4b3f5 100644
--- a/browser/metro/base/moz.build
+++ b/browser/metro/base/moz.build
@@ -8,3 +8,7 @@ METRO_CHROME_MANIFESTS += ['tests/mochiperf/metro.ini', 'tests/mochitest/metro.i
 XPCSHELL_TESTS_MANIFESTS += ['tests/unit/xpcshell.ini']
 
 DIST_SUBDIR = 'metro'
+
+DEFINES['AB_CD'] = CONFIG['MOZ_UI_LOCALE']
+DEFINES['PACKAGE'] = 'browser'
+DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
diff --git a/browser/metro/moz.build b/browser/metro/moz.build
index a9000ff375aaa96b71a75cc371f7bdfa10654f24..d3eee1797cae3c701a166ddfa026d7c9537a6f5c 100644
--- a/browser/metro/moz.build
+++ b/browser/metro/moz.build
@@ -17,3 +17,8 @@ if CONFIG['OS_ARCH'] == 'WINNT':
     DIRS += ['shell']
 
 DIST_SUBDIR = 'metro'
+
+if CONFIG['MOZILLA_OFFICIAL']:
+    DEFINES['MOZILLA_OFFICIAL'] = True
+
+DEFINES['GRE_MILESTONE'] = CONFIG['GRE_MILESTONE']
diff --git a/browser/metro/shell/commandexecutehandler/Makefile.in b/browser/metro/shell/commandexecutehandler/Makefile.in
index 7a040be9c963cc8b131a259a1580951406a40712..2f8e55fbe4a2b7d3fd8d87fc4014ac7c12cd8b44 100644
--- a/browser/metro/shell/commandexecutehandler/Makefile.in
+++ b/browser/metro/shell/commandexecutehandler/Makefile.in
@@ -21,5 +21,3 @@ OS_LIBS = \
 	advapi32.lib \
 	wininet.lib \
 	$(NULL)
-
-DEFINES += -DUNICODE -D_UNICODE -DNS_NO_XPCOM
diff --git a/browser/metro/shell/commandexecutehandler/moz.build b/browser/metro/shell/commandexecutehandler/moz.build
index 6af0a3fa0d3fe7cf83564ebd982ef171df496b43..89a07cf1bcba34015615e0a15ffe85545c3560d2 100644
--- a/browser/metro/shell/commandexecutehandler/moz.build
+++ b/browser/metro/shell/commandexecutehandler/moz.build
@@ -13,3 +13,6 @@ SOURCES += [
 
 # We want this exe in dist/bin
 DIST_SUBDIR = ''
+
+for var in ('UNICODE', '_UNICODE', 'NS_NO_XPCOM'):
+    DEFINES[var] = True
diff --git a/browser/metro/shell/linktool/Makefile.in b/browser/metro/shell/linktool/Makefile.in
index 1160f3eff2140655a6384562de9ea160bf830408..786ce3c83c72a37aabe1184bd1b70cb31318bc1c 100644
--- a/browser/metro/shell/linktool/Makefile.in
+++ b/browser/metro/shell/linktool/Makefile.in
@@ -14,5 +14,3 @@ OS_LIBS = \
 	shell32.lib \
 	propsys.lib \
 	$(NULL)
-
-DEFINES += -DUNICODE -D_UNICODE
diff --git a/browser/metro/shell/linktool/moz.build b/browser/metro/shell/linktool/moz.build
index 596ac046a0cfacf1fb21ef7374cee00a4fa06647..7d93db9dc8568718664496d97f11606ec4bbb8b4 100644
--- a/browser/metro/shell/linktool/moz.build
+++ b/browser/metro/shell/linktool/moz.build
@@ -11,3 +11,6 @@ SOURCES += [
 ]
 
 DIST_SUBDIR = 'metro/install'
+
+for var in ('UNICODE', '_UNICODE'):
+    DEFINES[var] = True
diff --git a/browser/metro/shell/testing/Makefile.in b/browser/metro/shell/testing/Makefile.in
index bfbb75abafc7f56feb4a34d56642649bb9bbfdc9..230a7912fa81379d0765e45b0a7a205fe66ddf74 100644
--- a/browser/metro/shell/testing/Makefile.in
+++ b/browser/metro/shell/testing/Makefile.in
@@ -21,5 +21,3 @@ OS_LIBS = \
 	propsys.lib \
 	advapi32.lib \
 	$(NULL)
-
-DEFINES += -DUNICODE -D_UNICODE
diff --git a/browser/metro/shell/testing/moz.build b/browser/metro/shell/testing/moz.build
index 53cf7fa15610b07486c31c69ddf51f0b5e18a776..fb7c08870f11fa68e620d0a1789cff54e4723457 100644
--- a/browser/metro/shell/testing/moz.build
+++ b/browser/metro/shell/testing/moz.build
@@ -12,3 +12,6 @@ SOURCES += [
 
 # We want this exe in dist/bin
 DIST_SUBDIR = ''
+
+for var in ('UNICODE', '_UNICODE'):
+    DEFINES[var] = True
diff --git a/browser/modules/Makefile.in b/browser/modules/Makefile.in
deleted file mode 100644
index 02871c0e72870f482f52ed32d9393e14e207c832..0000000000000000000000000000000000000000
--- a/browser/modules/Makefile.in
+++ /dev/null
@@ -1,9 +0,0 @@
-# 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 $(topsrcdir)/config/config.mk
-
-ifdef MOZILLA_OFFICIAL
-DEFINES += -DMOZILLA_OFFICIAL=1
-endif
diff --git a/browser/modules/moz.build b/browser/modules/moz.build
index 297fa9a082bed6dc53b8e9828d6ff5c27082d9d4..0ee0c2191ee0b79c17c7e80c9e34b162f5610103 100644
--- a/browser/modules/moz.build
+++ b/browser/modules/moz.build
@@ -34,3 +34,5 @@ EXTRA_PP_JS_MODULES += [
     'RecentWindow.jsm',
 ]
 
+if CONFIG['MOZILLA_OFFICIAL']:
+    DEFINES['MOZILLA_OFFICIAL'] = 1
diff --git a/build/Makefile.in b/build/Makefile.in
index 348f1f67e07f2c2805023f40c0ddf312b77a322e..15b9773b8dc827e704aa01bc3b1cd2e46b7cf334 100644
--- a/build/Makefile.in
+++ b/build/Makefile.in
@@ -24,9 +24,8 @@ endif
 APP_BUILDID := $(shell cat $(DEPTH)/config/buildid)
 APP_INI_DEPS += $(DEPTH)/config/buildid
 
-DEFINES += -DGRE_MILESTONE=$(GRE_MILESTONE) -DAPP_BUILDID=$(APP_BUILDID)
+DEFINES += -DAPP_BUILDID=$(APP_BUILDID)
 
-DEFINES += -DMOZ_APP_VERSION="$(MOZ_APP_VERSION)"
 APP_INI_DEPS += $(DEPTH)/config/autoconf.mk
 
 MOZ_SOURCE_STAMP := $(firstword $(shell cd $(topsrcdir)/$(MOZ_BUILD_APP)/.. && hg parent --template="{node|short}\n" 2>/dev/null))
@@ -39,34 +38,6 @@ ifneq (,$(source_repo))
   DEFINES += -DMOZ_SOURCE_REPO="$(source_repo)"
 endif
 
-DEFINES += \
-  -DMOZ_APP_BASENAME="$(MOZ_APP_BASENAME)" \
-  -DMOZ_APP_VENDOR="$(MOZ_APP_VENDOR)" \
-  -DMOZ_APP_ID="$(MOZ_APP_ID)" \
-  -DMAR_CHANNEL_ID="$(MAR_CHANNEL_ID)" \
-  -DACCEPTED_MAR_CHANNEL_IDS="$(ACCEPTED_MAR_CHANNEL_IDS)" \
-  $(NULL)
-
-ifeq ($(MOZ_BUILD_APP),browser)
-DEFINES += -DMOZ_BUILD_APP_IS_BROWSER
-endif
-
-ifdef MOZ_APP_PROFILE
-DEFINES += -DMOZ_APP_PROFILE="$(MOZ_APP_PROFILE)"
-endif
-
-ifdef MOZ_CRASHREPORTER
-DEFINES += -DMOZ_CRASHREPORTER
-endif
-
-ifdef MOZ_PROFILE_MIGRATOR
-DEFINES += -DMOZ_PROFILE_MIGRATOR
-endif
-
-ifdef MOZ_EXTENSION_MANAGER
-DEFINES += -DMOZ_EXTENSION_MANAGER
-endif
-
 endif
 
 # Put a useful .gdbinit in the bin directory, to be picked up automatically
@@ -123,8 +94,6 @@ ifdef MOZ_APP_BASENAME
 $(FINAL_TARGET)/application.ini: $(APP_INI_DEPS)
 
 ifdef MOZ_APP_STATIC_INI
-DEFINES += -DMOZ_APP_STATIC_INI
-
 application.ini.h: appini_header.py $(FINAL_TARGET)/application.ini
 	$(PYTHON) $^ > $@
 export:: application.ini.h
diff --git a/build/mobile/robocop/Makefile.in b/build/mobile/robocop/Makefile.in
index 9637882795c6d4baea7037e7b75ccddbbea459b8..f405607ec66c26a29e2eb9086bdc2beff477fd05 100644
--- a/build/mobile/robocop/Makefile.in
+++ b/build/mobile/robocop/Makefile.in
@@ -75,10 +75,6 @@ JAVAFILES += \
   $(testconstants-dep) \
   $(NULL)
 
-DEFINES += \
-  -DANDROID_PACKAGE_NAME=$(ANDROID_PACKAGE_NAME) \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 tools:: $(ANDROID_APK_NAME).apk
diff --git a/build/mobile/robocop/moz.build b/build/mobile/robocop/moz.build
index c9ab6ecd17d5ac94e2dc6caabe4b16287837cbcd..df3ab1e557d2c4d3383fb3edceff4186d97fa1eb 100644
--- a/build/mobile/robocop/moz.build
+++ b/build/mobile/robocop/moz.build
@@ -7,3 +7,5 @@
 ANDROID_RESFILES = [
     'res/values/strings.xml',
 ]
+
+DEFINES['ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME']
diff --git a/build/moz.build b/build/moz.build
index 6b9c35ad5ddfc933e900bb0f7202d1fa5fb57d1e..d76748b881d727ae39d2340694503701a5ab652e 100644
--- a/build/moz.build
+++ b/build/moz.build
@@ -22,3 +22,19 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
         'mobile/robocop',
     ]
 
+for var in ('GRE_MILESTONE', 'MOZ_APP_VERSION', 'MOZ_APP_BASENAME',
+            'MOZ_APP_VENDOR', 'MOZ_APP_ID', 'MAR_CHANNEL_ID',
+            'ACCEPTED_MAR_CHANNEL_IDS'):
+    DEFINES[var] = CONFIG[var]
+
+if CONFIG['MOZ_BUILD_APP'] == 'browser':
+    DEFINES['MOZ_BUILD_APP_IS_BROWSER'] = True
+
+if CONFIG['MOZ_APP_PROFILE']:
+    DEFINES['MOZ_APP_PROFILE'] = CONFIG['MOZ_APP_PROFILE']
+
+for var in ('MOZ_CRASHREPORTER', 'MOZ_PROFILE_MIGRATOR',
+            'MOZ_EXTENSION_MANAGER', 'MOZ_APP_STATIC_INI'):
+    if CONFIG[var]:
+        DEFINES[var] = True
+
diff --git a/build/stlport/Makefile.in b/build/stlport/Makefile.in
index cca81f61da3cef9eea657c320502ad4fa7086210..e105f0af6835e482d451da2b30c7e2894f23167c 100644
--- a/build/stlport/Makefile.in
+++ b/build/stlport/Makefile.in
@@ -11,6 +11,5 @@ LIBRARY = $(LIB_PREFIX)$(LIBRARY_NAME).$(LIB_SUFFIX)
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -D_GNU_SOURCE
 CXXFLAGS += -fuse-cxa-atexit
 INCLUDES += -I$(srcdir)/stlport
diff --git a/build/stlport/moz.build b/build/stlport/moz.build
index 77277e67949aa21a164d55fccc67164ccbd6c2da..78c12f00bcbfce3050ae070230036a6ab3a90012 100644
--- a/build/stlport/moz.build
+++ b/build/stlport/moz.build
@@ -45,3 +45,5 @@ SOURCES += [
     'src/c_locale.c',
     'src/cxa.c',
 ]
+
+DEFINES['_GNU_SOURCE'] = True
diff --git a/build/unix/elfhack/Makefile.in b/build/unix/elfhack/Makefile.in
index 1421c4e80047d5e018e69160603b16af325e49bb..44bea9317f53b59dbe56b716f7256c0f7424278a 100644
--- a/build/unix/elfhack/Makefile.in
+++ b/build/unix/elfhack/Makefile.in
@@ -15,8 +15,6 @@ WRAP_LDFLAGS=
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DELFHACK_BUILD
-
 test-array$(DLL_SUFFIX) test-ctors$(DLL_SUFFIX): %$(DLL_SUFFIX): %.$(OBJ_SUFFIX) elfhack
 	$(MKSHLIB) $(LDFLAGS) $< -nostartfiles
 	@echo ===
diff --git a/build/unix/elfhack/inject/Makefile.in b/build/unix/elfhack/inject/Makefile.in
index ac0017104c9add6992ad6d32fb0362efd5078214..79831fcc411bbe51a38b0d9b2373a56054bb5be9 100644
--- a/build/unix/elfhack/inject/Makefile.in
+++ b/build/unix/elfhack/inject/Makefile.in
@@ -15,6 +15,4 @@ $(CSRCS): %.c: ../inject.c
 
 GARBAGE += $(CSRCS)
 
-DEFINES += -DELFHACK_BUILD
-
 CFLAGS := -O2 -fno-stack-protector $(filter -m% -I%,$(CFLAGS))
diff --git a/build/unix/elfhack/inject/moz.build b/build/unix/elfhack/inject/moz.build
index f7d0df5e8edf71d2527be2218ce2c7d4b6a1bd50..b560c8f69b9bc2402c6127521381cf29b4ff8ed5 100644
--- a/build/unix/elfhack/inject/moz.build
+++ b/build/unix/elfhack/inject/moz.build
@@ -16,3 +16,5 @@ else:
 GENERATED_SOURCES += [
     "%s.c" % cpu,
 ]
+
+DEFINES['ELFHACK_BUILD'] = True
diff --git a/build/unix/elfhack/moz.build b/build/unix/elfhack/moz.build
index ca759aa8a7a7aa5541a175b17675a3b720f48d23..4a96904f228760c3bdf0ed90b882be00e9e766de 100644
--- a/build/unix/elfhack/moz.build
+++ b/build/unix/elfhack/moz.build
@@ -23,3 +23,5 @@ HOST_SOURCES += [
 ]
 
 HOST_PROGRAM = 'elfhack'
+
+DEFINES['ELFHACK_BUILD'] = True
diff --git a/db/sqlite3/src/Makefile.in b/db/sqlite3/src/Makefile.in
index b7ee80f20808ab30f63162a075104097fefc6153..54b0ced3de671768e04bfbf02dcf2ce5c7b354ba 100644
--- a/db/sqlite3/src/Makefile.in
+++ b/db/sqlite3/src/Makefile.in
@@ -46,68 +46,11 @@ ifeq ($(OS_ARCH),WINNT)
 MODULE_OPTIMIZE_FLAGS = -O2
 endif
 
-# -DSQLITE_SECURE_DELETE=1 will cause SQLITE to 0-fill delete data so we
-# don't have to vacuum to make sure the data is not visible in the file.
-# -DSQLITE_ENABLE_FTS3=1 enables the full-text index module.
-# -DSQLITE_CORE=1 statically links that module into the SQLite library.
-# -DSQLITE_DEFAULT_PAGE_SIZE=32768 and SQLITE_MAX_DEFAULT_PAGE_SIZE=32768
-# increases the page size from 1k, see bug 416330.  It must be kept in sync with
-# the value of PREF_TS_PAGESIZE_DEFAULT in mozStorageService.cpp.  The value can
-# be overridden on a per-platform basis through the use of the PREF_TS_PAGESIZE
-# hidden preference.  If that preference is missing or invalid then this value
-# will be used.
-# -DSQLITE_MAX_SCHEMA_RETRY increases the times SQLite may try to reparse
-# statements when the schema changes. This is important when supporting lots of
-# concurrent connections, especially when they use shared cache.
-# Note: Be sure to update the configure.in checks when these change!
-DEFINES = \
-  -DSQLITE_SECURE_DELETE=1 \
-  -DSQLITE_THREADSAFE=1 \
-  -DSQLITE_CORE=1 \
-  -DSQLITE_ENABLE_FTS3=1 \
-  -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 \
-  -DSQLITE_DEFAULT_PAGE_SIZE=32768 \
-  -DSQLITE_MAX_DEFAULT_PAGE_SIZE=32768 \
-  -DSQLITE_MAX_SCHEMA_RETRY=25 \
-  $(NULL)
-
-# -DSQLITE_ENABLE_LOCKING_STYLE=1 to help with AFP folders
-ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
-DEFINES += -DSQLITE_ENABLE_LOCKING_STYLE=1
-endif
-
-# Turn on SQLite's assertions in debug builds.
-ifdef MOZ_DEBUG
-DEFINES += -DSQLITE_DEBUG=1
-endif
-
 # disable PGO for Sun Studio
 ifdef SOLARIS_SUNPRO_CC
 NO_PROFILE_GUIDED_OPTIMIZE = 1
 endif
 
-ifeq ($(OS_ARCH),OS2)
-ifdef MOZ_OS2_HIGH_MEMORY
-DEFINES += -DOS2_HIGH_MEMORY
-endif
-endif
-
-ifeq ($(OS_TARGET),Android)
-# default to user readable only to fit Android security model
-DEFINES += -DSQLITE_DEFAULT_FILE_PERMISSIONS=0600
-endif
-
-# Force using malloc_usable_size when building with jemalloc because _msize
-# causes assertions on Win64. See bug 719579.
-ifeq ($(OS_ARCH),WINNT)
-ifdef MOZ_MEMORY
-DEFINES += \
-  -DHAVE_MALLOC_USABLE_SIZE \
-  -DSQLITE_WITHOUT_MSIZE \
-  $(NULL)
-endif
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 # next line allows use of MOZ_OBJDIR in .mozconfig with older gcc on BeOS, maybe others
diff --git a/db/sqlite3/src/moz.build b/db/sqlite3/src/moz.build
index ca936206f56f70a9035a3edf5129e845689ce15e..962ce496be065191a431ad857332450ca1c32720 100644
--- a/db/sqlite3/src/moz.build
+++ b/db/sqlite3/src/moz.build
@@ -19,3 +19,46 @@ if CONFIG['MOZ_FOLD_LIBS']:
     FORCE_STATIC_LIB = True
 else:
     FORCE_SHARED_LIB = True
+
+# -DSQLITE_SECURE_DELETE=1 will cause SQLITE to 0-fill delete data so we
+# don't have to vacuum to make sure the data is not visible in the file.
+# -DSQLITE_ENABLE_FTS3=1 enables the full-text index module.
+# -DSQLITE_CORE=1 statically links that module into the SQLite library.
+# -DSQLITE_DEFAULT_PAGE_SIZE=32768 and SQLITE_MAX_DEFAULT_PAGE_SIZE=32768
+# increases the page size from 1k, see bug 416330.  It must be kept in sync with
+# the value of PREF_TS_PAGESIZE_DEFAULT in mozStorageService.cpp.  The value can
+# be overridden on a per-platform basis through the use of the PREF_TS_PAGESIZE
+# hidden preference.  If that preference is missing or invalid then this value
+# will be used.
+# -DSQLITE_MAX_SCHEMA_RETRY increases the times SQLite may try to reparse
+# statements when the schema changes. This is important when supporting lots of
+# concurrent connections, especially when they use shared cache.
+# Note: Be sure to update the configure.in checks when these change!
+for var in ('SQLITE_SECURE_DELETE', 'SQLITE_THREADSAFE', 'SQLITE_CORE',
+            'SQLITE_ENABLE_FTS3', 'SQLITE_ENABLE_UNLOCK_NOTIFY'):
+    DEFINES[var] = 1
+
+DEFINES['SQLITE_DEFAULT_PAGE_SIZE'] = 32768
+DEFINES['SQLITE_MAX_DEFAULT_PAGE_SIZE'] = 32768
+DEFINES['SQLITE_MAX_SCHEMA_RETRY'] = 25
+
+# -DSQLITE_ENABLE_LOCKING_STYLE=1 to help with AFP folders
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    DEFINES['SQLITE_ENABLE_LOCKING_STYLE'] = 1
+
+# Turn on SQLite's assertions in debug builds.
+if CONFIG['MOZ_DEBUG']:
+    DEFINES['SQLITE_DEBUG'] = 1
+
+if CONFIG['OS_ARCH'] == 'OS2' and CONFIG['MOZ_OS2_HIGH_MEMORY']:
+    DEFINES['OS2_HIGH_MEMORY'] = True
+
+if CONFIG['OS_TARGET'] == 'Android':
+    # default to user readable only to fit Android security model
+    DEFINES['SQLITE_DEFAULT_FILE_PERMISSIONS'] = '0600'
+
+# Force using malloc_usable_size when building with jemalloc because _msize
+# causes assertions on Win64. See bug 719579.
+if CONFIG['OS_ARCH'] == 'WINNT' and CONFIG['MOZ_MEMORY']:
+    DEFINES['HAVE_MALLOC_USABLE_SIZE'] = True
+    DEFINES['SQLITE_WITHOUT_MSIZE'] = True
diff --git a/dom/base/Makefile.in b/dom/base/Makefile.in
index 1aabfd5785bf471d1c3595712eefdd18d67b0199..7f0c43fe736acefeb609c8aad89f3b215228e4e0 100644
--- a/dom/base/Makefile.in
+++ b/dom/base/Makefile.in
@@ -2,18 +2,6 @@
 # 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/.
 
-ifdef MOZ_JSDEBUGGER
-DEFINES += -DMOZ_JSDEBUGGER
-endif
-
-ifdef MOZ_B2G_RIL
-DEFINES += -DMOZ_B2G_RIL
-endif
-
-ifdef MOZ_B2G_FM
-DEFINES += -DMOZ_B2G_FM
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 ifdef MOZ_X11
diff --git a/dom/base/moz.build b/dom/base/moz.build
index 3796ceaecf1cabf043fa70916cf35f4722ced83a..6f5bdaef6e4d39c94833e9a065b2fdc780b7540d 100644
--- a/dom/base/moz.build
+++ b/dom/base/moz.build
@@ -164,3 +164,6 @@ LOCAL_INCLUDES += [
     '/xpcom/ds',
 ]
 
+for var in ('MOZ_JSDEBUGGER', 'MOZ_B2G_RIL', 'MOZ_B2G_FM'):
+    if CONFIG[var]:
+        DEFINES[var] = True
diff --git a/dom/bluetooth/Makefile.in b/dom/bluetooth/Makefile.in
index 1646ade62d72ff91e89ead43057686a4bce717d2..876ef12e0515aeb1d5f4c7daecb0c4ae17750d1a 100644
--- a/dom/bluetooth/Makefile.in
+++ b/dom/bluetooth/Makefile.in
@@ -19,18 +19,12 @@ ifneq (,$(MOZ_B2G_BT))
 ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
 ifdef MOZ_B2G_BT_BLUEZ
 LOCAL_INCLUDES += $(MOZ_DBUS_CFLAGS)
-DEFINES += -DMOZ_B2G_BT_BLUEZ
-else
-ifdef MOZ_B2G_BT_BLUEDROID
-DEFINES += -DMOZ_B2G_BT_BLUEDROID
-endif #MOZ_B2G_BT_BLUEDROID
 endif #MOZ_B2G_BT_BLUEZ
 else
 ifdef MOZ_ENABLE_DBUS
 LOCAL_INCLUDES += $(MOZ_DBUS_CFLAGS)
 CFLAGS += $(MOZ_DBUS_GLIB_CFLAGS)
 CXXFLAGS += $(MOZ_DBUS_GLIB_CFLAGS) -DHAVE_PTHREADS
-DEFINES += -DMOZ_BLUETOOTH_DBUS
 endif #MOZ_ENABLE_DBUS
 endif #MOZ_WIDGET_TOOLKIT
 
@@ -39,5 +33,3 @@ endif #MOZ_WIDGET_TOOLKIT
 LOCAL_INCLUDES += $(VPATH:%=-I%)
 
 endif #MOZ_B2G_BT
-
-include $(topsrcdir)/config/rules.mk
diff --git a/dom/bluetooth/moz.build b/dom/bluetooth/moz.build
index 4b4451ca9369465adab3cf39088d564c3d5446cc..8a36a593d35323d26dd1b2bca57f3b91f6d3ac0b 100644
--- a/dom/bluetooth/moz.build
+++ b/dom/bluetooth/moz.build
@@ -45,6 +45,7 @@ if CONFIG['MOZ_B2G_BT']:
                 'bluez/gonk',
                 'bluez/linux',
             ]
+            DEFINES['MOZ_B2G_BT_BLUEZ'] = True
         elif CONFIG['MOZ_B2G_BT_BLUEDROID']:
             SOURCES += [
                 'bluedroid/BluetoothA2dpManager.cpp',
@@ -55,6 +56,7 @@ if CONFIG['MOZ_B2G_BT']:
                 'bluedroid',
                 'bluedroid/gonk',
             ]
+            DEFINES['MOZ_B2G_BT_BLUEDROID'] = True
     elif CONFIG['MOZ_ENABLE_DBUS']:
         SOURCES += [
             'bluez/BluetoothHfpManager.cpp',
@@ -64,6 +66,7 @@ if CONFIG['MOZ_B2G_BT']:
             'bluez',
             'bluez/linux',
         ]
+        DEFINES['MOZ_BLUETOOTH_DBUS'] = True
 
     FINAL_LIBRARY = 'gklayout'
 
diff --git a/dom/ipc/Makefile.in b/dom/ipc/Makefile.in
index dfef49a48eb36f383219a59c5066a814089a6483..c97efbc03e9ec9c862feac3120da2df99f7b285f 100644
--- a/dom/ipc/Makefile.in
+++ b/dom/ipc/Makefile.in
@@ -4,18 +4,4 @@
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DBIN_SUFFIX='"$(BIN_SUFFIX)"'
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),$(findstring $(MOZ_WIDGET_TOOLKIT),android gtk2 gonk qt))
-DEFINES += -DMOZ_ENABLE_FREETYPE
-endif
-
-ifdef MOZ_PERMISSIONS
-DEFINES += -DMOZ_PERMISSIONS
-endif
-
-ifdef MOZ_CHILD_PERMISSIONS
-DEFINES += -DMOZ_CHILD_PERMISSIONS
-endif
-
 CXXFLAGS += $(TK_CFLAGS)
diff --git a/dom/ipc/moz.build b/dom/ipc/moz.build
index 9a1c353aeeb54cce689254e2074a8d719d7932c5..e1b4c5429d0642bedd09f824640252c671d88564 100644
--- a/dom/ipc/moz.build
+++ b/dom/ipc/moz.build
@@ -108,3 +108,11 @@ LOCAL_INCLUDES += [
     '/xpcom/base',
 ]
 
+DEFINES['BIN_SUFFIX'] = '"%s"' % CONFIG['BIN_SUFFIX']
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gonk', 'qt'):
+    DEFINES['MOZ_ENABLE_FREETYPE'] = True
+
+for var in ('MOZ_PERMISSIONS', 'MOZ_CHILD_PERMISSIONS'):
+    if CONFIG[var]:
+        DEFINES[var] = True
diff --git a/dom/plugins/ipc/hangui/Makefile.in b/dom/plugins/ipc/hangui/Makefile.in
index d8abe21ad8e34568fb0af86be5383f67217725d6..101c8a710db408274ed2f89f2a3fd1c9c0a597ec 100644
--- a/dom/plugins/ipc/hangui/Makefile.in
+++ b/dom/plugins/ipc/hangui/Makefile.in
@@ -6,10 +6,6 @@ OS_LIBS = $(call EXPAND_LIBNAME,comctl32)
 
 RCINCLUDE = HangUIDlg.rc
 
-DEFINES += \
-  -DNS_NO_XPCOM \
-  $(NULL)
-
 STL_FLAGS = \
   -D_HAS_EXCEPTIONS=0 \
   $(NULL)
diff --git a/dom/plugins/ipc/hangui/moz.build b/dom/plugins/ipc/hangui/moz.build
index 1fb693c8cb8e6fa3f582b28b774682d854dc6823..8197adf59dfe5b891f4754e3fa2b90393782ee6f 100644
--- a/dom/plugins/ipc/hangui/moz.build
+++ b/dom/plugins/ipc/hangui/moz.build
@@ -14,3 +14,4 @@ UNIFIED_SOURCES += [
 ]
 include('/ipc/chromium/chromium-config.mozbuild')
 
+DEFINES['NS_NO_XPCOM'] = True
diff --git a/embedding/tests/winEmbed/Makefile.in b/embedding/tests/winEmbed/Makefile.in
index f1038d5c48111c20866904fa25bc6544e9b34f57..65e17169c504f0026f131b1861861921c770ed65 100644
--- a/embedding/tests/winEmbed/Makefile.in
+++ b/embedding/tests/winEmbed/Makefile.in
@@ -34,7 +34,6 @@ LIBS = \
 	$(XPCOM_STANDALONE_GLUE_LDOPTS) \
 	$(NULL)
 
-DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
 
 OS_LIBS		+= $(call EXPAND_LIBNAME,ole32 comdlg32 shell32 version)
diff --git a/embedding/tests/winEmbed/moz.build b/embedding/tests/winEmbed/moz.build
index 25cc4ba25a5a91050a275b3e48ba471d010a3cff..28d8d175996c59cedae4bb6df1f14de8426fbac0 100644
--- a/embedding/tests/winEmbed/moz.build
+++ b/embedding/tests/winEmbed/moz.build
@@ -13,3 +13,5 @@ SOURCES += [
 ]
 
 XPI_NAME = 'winembed'
+
+DEFINES['XPCOM_GLUE'] = True
diff --git a/extensions/spellcheck/hunspell/src/Makefile.in b/extensions/spellcheck/hunspell/src/Makefile.in
index 36003d8e03b40aedf61b6c0a470acfa7bab32d83..dcdcc97adab83fa20ce6c460b8bcc84ad8ec29bc 100644
--- a/extensions/spellcheck/hunspell/src/Makefile.in
+++ b/extensions/spellcheck/hunspell/src/Makefile.in
@@ -2,12 +2,6 @@
 # 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/.
 
-ifndef MOZ_NATIVE_HUNSPELL
-# This variable is referenced in configure.in.  Make sure to change that file
-# too if you need to change this variable.
-DEFINES = -DHUNSPELL_STATIC
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 INCLUDES        += -I$(topsrcdir)/extensions/spellcheck/src
diff --git a/extensions/spellcheck/hunspell/src/moz.build b/extensions/spellcheck/hunspell/src/moz.build
index c052431203c662758fb7e4fbc7089fe05abfd425..b8be90549401bbbb7a3da07501d5f969df927c70 100644
--- a/extensions/spellcheck/hunspell/src/moz.build
+++ b/extensions/spellcheck/hunspell/src/moz.build
@@ -23,5 +23,8 @@ if not CONFIG['MOZ_NATIVE_HUNSPELL']:
         'replist.cpp',
         'suggestmgr.cpp',
     ]
+    # This variable is referenced in configure.in.  Make sure to change that file
+    # too if you need to change this variable.
+    DEFINES['HUNSPELL_STATIC'] = True
 
 FINAL_LIBRARY = 'spellchecker'
diff --git a/gfx/2d/Makefile.in b/gfx/2d/Makefile.in
index b0741152c8b56b9f75018f3a2b9d990a3de15895..ef690caab47499308c5c2a0d84ad71095280bd2f 100644
--- a/gfx/2d/Makefile.in
+++ b/gfx/2d/Makefile.in
@@ -5,40 +5,10 @@
 
 VPATH		=  $(srcdir) $(srcdir)/unittest
 
-DEFINES += -DMOZ_GFX -DUSE_CAIRO -DGFX2D_INTERNAL -DMOZ2D_HAS_MOZ_CAIRO
-
 ifeq ($(MOZ_WIDGET_TOOLKIT),$(findstring $(MOZ_WIDGET_TOOLKIT),android gtk2 gtk3 gonk qt))
-DEFINES += -DMOZ_ENABLE_FREETYPE
 OS_CXXFLAGS += $(CAIRO_FT_CFLAGS)
 endif
 
-DEFINES += -DSK_A32_SHIFT=24 -DSK_R32_SHIFT=16 -DSK_G32_SHIFT=8 -DSK_B32_SHIFT=0
-
-ifdef MOZ_DEBUG
-DEFINES += -DGFX_LOG_DEBUG -DGFX_LOG_WARNING
-endif
-
-# Are we targeting x86 or x64?  If so, build SSE2 files.
-ifneq (,$(INTEL_ARCHITECTURE))
-# VC2005 doesn't support _mm_castsi128_ps, so SSE2 is turned off
-ifneq (1400,$(_MSC_VER))
-DEFINES += -DUSE_SSE2
-endif
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-DEFINES += -DWIN32 -DINITGUID
-
-ifdef MOZ_ENABLE_SKIA
-DEFINES += -DSKIA_IMPLEMENTATION=1 -DGR_IMPLEMENTATION=1
-endif
-
-# For Direct2D 1.1 we require WINSDK_MAXVER 0x06020000 or higher.
-ifdef MOZ_ENABLE_DIRECT2D1_1
-DEFINES += -DUSE_D2D1_1
-endif
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 # Due to bug 796023, we can't have -DUNICODE and -D_UNICODE; defining those
diff --git a/gfx/2d/moz.build b/gfx/2d/moz.build
index cc822dd193ebb2fefd5214b9dd56e634a2dedd38..ecf71a92e18befb491966e67b850213512339881 100644
--- a/gfx/2d/moz.build
+++ b/gfx/2d/moz.build
@@ -51,6 +51,9 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
         'SourceSurfaceD2D.cpp',
         'SourceSurfaceD2DTarget.cpp',
     ]
+    DEFINES['WIN32'] = True
+    DEFINES['INITGUID'] = True
+    # For Direct2D 1.1 we require WINSDK_MAXVER 0x06020000 or higher.
     if CONFIG['MOZ_ENABLE_DIRECT2D1_1']:
         SOURCES += [
             'DrawTargetD2D1.cpp',
@@ -58,10 +61,13 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
             'RadialGradientEffectD2D1.cpp',
             'SourceSurfaceD2D1.cpp'
         ]
+        DEFINES['USE_D2D1_1'] = True
     if CONFIG['MOZ_ENABLE_SKIA']:
         SOURCES += [
             'ScaledFontWin.cpp',
         ]
+        DEFINES['SKIA_IMPLEMENTATION'] = 1
+        DEFINES['GR_IMPLEMENTATION'] = 1
 
 if CONFIG['MOZ_ENABLE_SKIA']:
     UNIFIED_SOURCES += [
@@ -83,6 +89,7 @@ if CONFIG['INTEL_ARCHITECTURE']:
             'FilterProcessingSSE2.cpp',
             'ImageScalingSSE2.cpp',
         ]
+        DEFINES['USE_SSE2'] = True
 
 UNIFIED_SOURCES += [
     'Blur.cpp',
@@ -122,3 +129,18 @@ MSVC_ENABLE_PGO = True
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'gkmedias'
+
+for var in ('MOZ_GFX', 'USE_CAIRO', 'GFX2D_INTERNAL', 'MOZ2D_HAS_MOZ_CAIRO'):
+    DEFINES[var] = True
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3', 'gonk', 'qt'):
+    DEFINES['MOZ_ENABLE_FREETYPE'] = True
+
+DEFINES['SK_A32_SHIFT'] = 24
+DEFINES['SK_R32_SHIFT'] = 16
+DEFINES['SK_G32_SHIFT'] = 8
+DEFINES['SK_B32_SHIFT'] = 0
+
+if CONFIG['MOZ_DEBUG']:
+    DEFINES['GFX_LOG_DEBUG'] = True
+    DEFINES['GFX_LOG_WARNING'] = True
diff --git a/gfx/angle/Makefile.in b/gfx/angle/Makefile.in
index 76cfb92a09f673e9bba66f581cddc7fc5a2b0fdf..220f27d7e7d91caff2afae1440a88e31215d78d6 100644
--- a/gfx/angle/Makefile.in
+++ b/gfx/angle/Makefile.in
@@ -3,9 +3,6 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # The below is a rough translation of build_angle.gypi:
-DEFINES += -DANGLE_DISABLE_TRACE
-DEFINES += -DANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL1
-
 # Target: 'preprocessor'
 # src/compiler/preprocessor:
 VPATH += $(srcdir)/src/compiler/preprocessor
@@ -17,8 +14,6 @@ LOCAL_INCLUDES += \
   -I$(srcdir)/include/KHR \
   -I$(srcdir)/src
 
-DEFINES += -DCOMPILER_IMPLEMENTATION
-
 VPATH += $(srcdir)/src/compiler
 VPATH += $(srcdir)/src/compiler/depgraph
 VPATH += $(srcdir)/src/compiler/timing
diff --git a/gfx/angle/moz.build b/gfx/angle/moz.build
index 5f9419f0a50e096853b7dfd92375c72d39982a29..d88b96a296d72bd016d6f9765a35f4c18ca3353a 100644
--- a/gfx/angle/moz.build
+++ b/gfx/angle/moz.build
@@ -123,3 +123,7 @@ if CONFIG['OS_TARGET'] == 'WINNT':
     NO_VISIBILITY_FLAGS = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+DEFINES['ANGLE_DISABLE_TRACE'] = True
+DEFINES['ANGLE_COMPILE_OPTIMIZATION_LEVEL'] = 'D3DCOMPILE_OPTIMIZATION_LEVEL1'
+DEFINES['COMPILER_IMPLEMENTATION'] = True
diff --git a/gfx/angle/src/libEGL/Makefile.in b/gfx/angle/src/libEGL/Makefile.in
index d9967c25bd2d747b9bcc5512d214ee63944df52b..6890bca08c4b69068b40292282e282b15dc0c60e 100644
--- a/gfx/angle/src/libEGL/Makefile.in
+++ b/gfx/angle/src/libEGL/Makefile.in
@@ -16,17 +16,7 @@ endif
 OS_COMPILE_CFLAGS   = $(OS_CPPFLAGS)
 OS_COMPILE_CXXFLAGS = $(OS_CPPFLAGS)
 
-DEFINES += -DLIBEGL_EXPORTS
-DEFINES += -DANGLE_BUILD -DNOMINMAX -D_CRT_SECURE_NO_DEPRECATE
-
-ifndef MOZ_DEBUG
-DEFINES += -D_SECURE_SCL=0
-endif
-
 # Below is a transcription of the EGL target from build_angle.gypi.
-DEFINES += -DANGLE_DISABLE_TRACE
-DEFINES += -DANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL1
-
 # Target: 'libEGL'
 #   Links with: 'libGLESv2'
 LOCAL_INCLUDES = \
diff --git a/gfx/angle/src/libEGL/moz.build b/gfx/angle/src/libEGL/moz.build
index b795ed41d937e36b2c9d1de5181cd4ea53981f7a..f5a380fd2f8bf5d3590376cf45a5b819462520c1 100644
--- a/gfx/angle/src/libEGL/moz.build
+++ b/gfx/angle/src/libEGL/moz.build
@@ -25,3 +25,12 @@ SOURCES += [
 LIBRARY_NAME = 'libEGL'
 
 FORCE_SHARED_LIB = True
+
+for var in ('LIBEGL_EXPORTS', 'ANGLE_BUILD', 'NOMINMAX',
+            '_CRT_SECURE_NO_DEPRECATE', 'ANGLE_DISABLE_TRACE'):
+    DEFINES[var] = True
+
+if not CONFIG['MOZ_DEBUG']:
+    DEFINES['_SECURE_SCL'] = 0
+
+DEFINES['ANGLE_COMPILE_OPTIMIZATION_LEVEL'] = 'D3DCOMPILE_OPTIMIZATION_LEVEL1'
diff --git a/gfx/angle/src/libGLESv2/Makefile.in b/gfx/angle/src/libGLESv2/Makefile.in
index 1115d7296698fff9dfcef16d203347b489dd8f26..fc0e98e5e3c336cef119c77509c3452962d16884 100644
--- a/gfx/angle/src/libGLESv2/Makefile.in
+++ b/gfx/angle/src/libGLESv2/Makefile.in
@@ -16,17 +16,8 @@ endif
 OS_COMPILE_CFLAGS   = $(OS_CPPFLAGS)
 OS_COMPILE_CXXFLAGS = $(OS_CPPFLAGS)
 
-DEFINES += -DLIBGLESV2_EXPORTS
-DEFINES += -DANGLE_BUILD -DNOMINMAX -D_CRT_SECURE_NO_DEPRECATE
-
-ifndef MOZ_DEBUG
-DEFINES += -D_SECURE_SCL=0
-endif
-
 # The below is a rough translation of build_angle.gypi,
 # copied from src/Makefile.in.
-DEFINES += -DANGLE_DISABLE_TRACE
-DEFINES += -DANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL1
 
 # Target: 'preprocessor'
 # src/compiler/preprocessor:
@@ -40,8 +31,6 @@ LOCAL_INCLUDES += \
   -I$(srcdir)/.. \
   -I"$(MOZ_DIRECTX_SDK_PATH)/include"
 
-DEFINES += -DCOMPILER_IMPLEMENTATION
-
 VPATH += $(srcdir)/renderer
 VPATH += $(srcdir)/..
 VPATH += $(srcdir)/../compiler
diff --git a/gfx/angle/src/libGLESv2/moz.build b/gfx/angle/src/libGLESv2/moz.build
index d9efc4b90dacc485a243c0eff43e85c56601212a..9b5014958c0056d2e6b5223ab172d5a809f0d34c 100644
--- a/gfx/angle/src/libGLESv2/moz.build
+++ b/gfx/angle/src/libGLESv2/moz.build
@@ -179,3 +179,13 @@ SOURCES += ['renderer/' + src for src in [
 LIBRARY_NAME = 'libGLESv2'
 
 FORCE_SHARED_LIB = True
+
+for var in ('LIBGLESV2_EXPORTS', 'ANGLE_BUILD', 'NOMINMAX',
+            '_CRT_SECURE_NO_DEPRECATE', 'ANGLE_DISABLE_TRACE',
+            'COMPILER_IMPLEMENTATION'):
+    DEFINES[var] = True
+
+if not CONFIG['MOZ_DEBUG']:
+    DEFINES['_SECURE_SCL'] = 0
+
+DEFINES['ANGLE_COMPILE_OPTIMIZATION_LEVEL'] = 'D3DCOMPILE_OPTIMIZATION_LEVEL1'
diff --git a/gfx/cairo/cairo/src/Makefile.in b/gfx/cairo/cairo/src/Makefile.in
index d39295392424d9bdb6853272715aa984aa3ab898..0e6f456e45a43a22653c97feaf0062fce96cea0d 100644
--- a/gfx/cairo/cairo/src/Makefile.in
+++ b/gfx/cairo/cairo/src/Makefile.in
@@ -9,20 +9,6 @@ endif
 endif
 
 
-ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-DEFINES += -DDISABLE_SOME_FLOATING_POINT
-ifndef NS_PRINTING
-DEFINES += -DCAIRO_OMIT_WIN32_PRINTING
-endif
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
-DEFINES += -DOS2_USE_PLATFORM_ALLOC
-ifdef MOZ_OS2_HIGH_MEMORY
-DEFINES += -DOS2_HIGH_MEMORY
-endif
-endif
-
 ifeq ($(MOZ_WIDGET_TOOLKIT),qt)
 OS_INCLUDES += $(MOZ_QT_CFLAGS)
 endif
@@ -52,25 +38,7 @@ CFLAGS += -Wno-missing-field-initializers
 CFLAGS += -Wno-conversion
 endif # GNU_CC
 
-DEFINES += -DPACKAGE_VERSION="\"moz\"" -DPACKAGE_BUGREPORT="\"http://bugzilla.mozilla.org/\""
-
-DEFINES += -DCAIRO_HAS_PTHREAD -D_GNU_SOURCE
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-DEFINES += -DCAIRO_WIN32_STATIC_BUILD
-endif
-
-ifdef MOZ_TREE_CAIRO
-DEFINES += -DMOZ_TREE_CAIRO
-endif
-
 ifndef MOZ_TREE_PIXMAN
 CFLAGS += $(MOZ_PIXMAN_CFLAGS)
 CXXFLAGS += $(MOZ_PIXMAN_CFLAGS)
-else
-DEFINES += -DMOZ_TREE_PIXMAN
-endif
-
-ifdef MOZ_TREE_FREETYPE
-DEFINES += -DHAVE_FT_LIBRARY_SETLCDFILTER -DFT_LCD_FILTER_H="$(topsrcdir)/modules/freetype2/include/freetype/ftlcdfil.h"
 endif
diff --git a/gfx/cairo/cairo/src/moz.build b/gfx/cairo/cairo/src/moz.build
index 62ec1beb0e0b1f2764b78a7ffb6de9aa37ae7a3d..fb83858265a1d554eb274cf5746483ed3a461699 100644
--- a/gfx/cairo/cairo/src/moz.build
+++ b/gfx/cairo/cairo/src/moz.build
@@ -48,10 +48,14 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
         'cairo-win32-font.c',
         'cairo-win32-surface.c',
     ]
+    DEFINES['DISABLE_SOME_FLOATING_POINT'] = True
+    DEFINES['CAIRO_WIN32_STATIC_BUILD'] = True
     if CONFIG['NS_PRINTING']:
         SOURCES += [
             'cairo-win32-printing-surface.c',
         ]
+    else:
+        DEFINES['CAIRO_OMIT_WIN32_PRINTING'] = True
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'os2':
     EXPORTS.cairo += [
         'cairo-os2-private.h',
@@ -60,6 +64,9 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'os2':
     SOURCES += [
         'cairo-os2-surface.c',
     ]
+    DEFINES['OS2_USE_PLATFORM_ALLOC'] = True
+    if CONFIG['MOZ_OS2_HIGH_MEMORY']:
+        DEFINES['OS2_HIGH_MEMORY'] = True
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     EXPORTS.cairo += [
         'cairo-quartz-image.h',
@@ -192,3 +199,17 @@ UNIFIED_SOURCES += [
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+DEFINES['PACKAGE_VERSION'] = '"moz"'
+DEFINES['PACKAGE_BUGREPORT'] = '"http://bugzilla.mozilla.org/"'
+
+for var in ('CAIRO_HAS_PTHREAD', '_GNU_SOURCE'):
+    DEFINES[var] = True
+
+for var in ('MOZ_TREE_CAIRO', 'MOZ_TREE_PIXMAN'):
+    if CONFIG[var]:
+        DEFINES[var] = True
+
+if CONFIG['MOZ_TREE_FREETYPE']:
+    DEFINES['HAVE_FT_LIBRARY_SETLCDFILTER'] = True
+    DEFINES['FT_LCD_FILTER_H'] = '%s/modules/freetype2/include/freetype/ftlcdfil.h' % TOPSRCDIR
diff --git a/gfx/cairo/libpixman/src/Makefile.in b/gfx/cairo/libpixman/src/Makefile.in
index 59d6cb0b2fc52e53992115cf6cdcdb7853c56cf7..9af8995da28824bd39c7e08bcdb0bcc5b8dbe3fa 100644
--- a/gfx/cairo/libpixman/src/Makefile.in
+++ b/gfx/cairo/libpixman/src/Makefile.in
@@ -6,14 +6,6 @@ ifeq ($(OS_TARGET),Android)
 MODULE_OPTIMIZE_FLAGS = -O2
 endif
 
-ifdef MOZ_USE_PTHREADS
-DEFINES += -DHAVE_PTHREAD_SETSPECIFIC
-endif
-
-ifdef _MSC_VER
-DEFINES += -DPIXMAN_USE_XP_DLL_TLS_WORKAROUND
-endif
-
 # Build MMX code either with VC or with gcc-on-x86
 ifdef _MSC_VER
 ifeq (86,$(findstring 86,$(OS_TEST)))
@@ -105,8 +97,6 @@ LOCAL_INCLUDES	+= -I$(srcdir) -I$(srcdir)/../../cairo/src
 
 include $(topsrcdir)/config/rules.mk
 
-CFLAGS += -DPACKAGE="mozpixman" -D_USE_MATH_DEFINES
-
 # Disable spammy "missing initializer" GCC warning
 ifdef GNU_CC
 CFLAGS += -Wno-missing-field-initializers
diff --git a/gfx/cairo/libpixman/src/moz.build b/gfx/cairo/libpixman/src/moz.build
index bdcc8d8e2375ce8f4da8a359787a3bcc1d7a4cd7..6d54fc3053529f2fff6783a588db635a14ab1910 100644
--- a/gfx/cairo/libpixman/src/moz.build
+++ b/gfx/cairo/libpixman/src/moz.build
@@ -61,3 +61,13 @@ SOURCES += [
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+if CONFIG['MOZ_USE_PTHREADS']:
+    DEFINES['HAVE_PTHREAD_SETSPECIFIC'] = True
+
+if CONFIG['_MSC_VER']:
+    DEFINES['PIXMAN_USE_XP_DLL_TLS_WORKAROUND'] = True
+
+DEFINES['PACKAGE'] = 'mozpixman'
+
+DEFINES['_USE_MATH_DEFINES'] = True
diff --git a/gfx/gl/Makefile.in b/gfx/gl/Makefile.in
index 6a728dab116246913a8d2a9227ef2ed3e1cb357e..56409c55c0e144495a80d210ea7ac075538d7766 100644
--- a/gfx/gl/Makefile.in
+++ b/gfx/gl/Makefile.in
@@ -2,21 +2,11 @@
 # 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/.
 
-ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-ifdef MOZ_WEBGL
-DEFINES += -DMOZ_D3DCOMPILER_DLL=$(MOZ_D3DCOMPILER_DLL)
-endif
-endif
-
 ifeq ($(MOZ_WIDGET_TOOLKIT),gonk)
 LOCAL_INCLUDES = -I$(topsrcdir)/widget/gonk
 LOCAL_INCLUDES += -I$(ANDROID_SOURCE)/hardware/libhardware/include
 endif
 
-ifdef MOZ_ANDROID_OMTC
-DEFINES += -DMOZ_ANDROID_OMTC
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 DEFINES := $(filter-out -DUNICODE,$(DEFINES))
diff --git a/gfx/gl/moz.build b/gfx/gl/moz.build
index df92abcc4ec95602fc5a98175d705b1830cdb26e..e73d94c74ede9ec8606c2e452f0a980e21454f89 100644
--- a/gfx/gl/moz.build
+++ b/gfx/gl/moz.build
@@ -127,3 +127,9 @@ MSVC_ENABLE_PGO = True
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows' and CONFIG['MOZ_WEBGL']:
+    DEFINES['MOZ_D3DCOMPILER_DLL'] = CONFIG['MOZ_D3DCOMPILER_DLL']
+
+if CONFIG['MOZ_ANDROID_OMTC']:
+    DEFINES['MOZ_ANDROID_OMTC'] = True
diff --git a/gfx/graphite2/src/Makefile.in b/gfx/graphite2/src/Makefile.in
index a58563f6c5bb212df521a117b80cffe597f2d1df..acdfc2c375a65f005de0f0d28338a119f3df67dd 100644
--- a/gfx/graphite2/src/Makefile.in
+++ b/gfx/graphite2/src/Makefile.in
@@ -13,26 +13,3 @@ endif
 
 # get the lists of source files and exported headers
 include $(srcdir)/files.mk
-
-# on Windows, we're going to link graphite with gkmedias instead of libxul
-ifeq (WINNT,$(OS_TARGET))
-endif
-
-ifeq (WINNT,$(OS_TARGET))
-DEFINES += -DGRAPHITE2_EXPORTING
-else
-# tell graphite2 not to export symbols, we'll be linking it directly with thebes
-DEFINES += -DGRAPHITE2_STATIC
-endif
-
-include $(topsrcdir)/config/rules.mk
-
-DEFINES += -DPACKAGE_VERSION="\"moz\""
-DEFINES += -DPACKAGE_BUGREPORT="\"http://bugzilla.mozilla.org/\""
-
-# disable features we don't need in the graphite2 code, to reduce code size
-DEFINES += -DGRAPHITE2_NFILEFACE -DGRAPHITE2_NTRACING -DGRAPHITE2_NSEGCACHE
-
-# provide a custom header that overrides malloc() and friends,
-# to ensure safe OOM handling
-DEFINES += -DGRAPHITE2_CUSTOM_HEADER="\"MozGrMalloc.h\""
diff --git a/gfx/graphite2/src/moz.build b/gfx/graphite2/src/moz.build
index f75fe45bc1b96eb10038af730ab27a2d16795b61..1c7f104b74c0082f0de4d4d245b3ad6dbd6442bb 100644
--- a/gfx/graphite2/src/moz.build
+++ b/gfx/graphite2/src/moz.build
@@ -59,5 +59,21 @@ MSVC_ENABLE_PGO = True
 
 if CONFIG['OS_TARGET'] == 'WINNT':
     NO_VISIBILITY_FLAGS = True
+    DEFINES['GRAPHITE2_EXPORTING'] = True
+else:
+    # tell graphite2 not to export symbols, we'll be linking it directly with
+    # thebes
+    DEFINES['GRAPHITE2_STATIC'] = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+DEFINES['PACKAGE_VERSION'] = '"moz"'
+DEFINES['PACKAGE_BUGREPORT'] = '"http://bugzilla.mozilla.org/"'
+
+# disable features we don't need in the graphite2 code, to reduce code size
+for var in ('GRAPHITE2_NFILEFACE', 'GRAPHITE2_NTRACING', 'GRAPHITE2_NSEGCACHE'):
+    DEFINES[var] = True
+
+# provide a custom header that overrides malloc() and friends,
+# to ensure safe OOM handling
+DEFINES['GRAPHITE2_CUSTOM_HEADER'] = '"MozGrMalloc.h"'
diff --git a/gfx/harfbuzz/src/Makefile.in b/gfx/harfbuzz/src/Makefile.in
index 342774743a7af54449fd04738a6f49ffbf53d934..8d483293a904f1a3819e12dc86c42a63352b491e 100644
--- a/gfx/harfbuzz/src/Makefile.in
+++ b/gfx/harfbuzz/src/Makefile.in
@@ -29,10 +29,6 @@ LOCAL_INCLUDES  += -I$(srcdir)
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DPACKAGE_VERSION="\"moz\""
-DEFINES += -DPACKAGE_BUGREPORT="\"http://bugzilla.mozilla.org/\""
-DEFINES += -DHAVE_OT=1 -DHB_NO_MT -DHB_NO_UNICODE_FUNCS
-
 # Cancel the effect of the -DDEBUG macro if present,
 # because harfbuzz uses that name for its own purposes
 COMPILE_CXXFLAGS += -UDEBUG
diff --git a/gfx/harfbuzz/src/moz.build b/gfx/harfbuzz/src/moz.build
index 132264e182f17c907a7bd6f0ea6bc0c3274eed1a..632545ce1c62b837fc9103b4b3f5031e8b1bae95 100644
--- a/gfx/harfbuzz/src/moz.build
+++ b/gfx/harfbuzz/src/moz.build
@@ -56,3 +56,9 @@ UNIFIED_SOURCES += [
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+DEFINES['PACKAGE_VERSION'] = '"moz"'
+DEFINES['PACKAGE_BUGREPORT'] = '"http://bugzilla.mozilla.org/"'
+DEFINES['HAVE_OT'] = 1
+DEFINES['HB_NO_MT'] = True
+DEFINES['HB_NO_UNICODE_FUNCS'] = True
diff --git a/gfx/layers/Makefile.in b/gfx/layers/Makefile.in
index febfc7cf8f53daf97512ee02e0b66bc3c895a515..7064c57b262a52c388a3eaa022e09d2caa460054 100644
--- a/gfx/layers/Makefile.in
+++ b/gfx/layers/Makefile.in
@@ -15,14 +15,6 @@ VPATH       = \
   $(srcdir)/ipc \
   $(NULL)
 
-ifdef MOZ_DEBUG
-DEFINES += -DD3D_DEBUG_INFO
-endif
-
-ifdef MOZ_ENABLE_D3D10_LAYER
-DEFINES	+= -DMOZ_ENABLE_D3D10_LAYER
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 LOCAL_INCLUDES += \
diff --git a/gfx/layers/moz.build b/gfx/layers/moz.build
index 76b6251d5f33764b3bf41ba1ad45b678e2369823..527bbf0489cf3e716e4fcb83e2459a5fd179e79a 100644
--- a/gfx/layers/moz.build
+++ b/gfx/layers/moz.build
@@ -293,3 +293,9 @@ MSVC_ENABLE_PGO = True
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'thebes'
+
+if CONFIG['MOZ_DEBUG']:
+    DEFINES['D3D_DEBUG_INFO'] = True
+
+if CONFIG['MOZ_ENABLE_D3D10_LAYER']:
+    DEFINES['MOZ_ENABLE_D3D10_LAYER'] = True
diff --git a/gfx/ots/src/Makefile.in b/gfx/ots/src/Makefile.in
deleted file mode 100644
index 0435a64872c483e75c71131709065d2cb198708b..0000000000000000000000000000000000000000
--- a/gfx/ots/src/Makefile.in
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (C) 2010  Mozilla Foundation
-#
-#  This is used to integrate the OTS library with the Mozilla build.
-#
-# Permission is hereby granted, without written agreement and without
-# license or royalty fees, to use, copy, modify, and distribute this
-# software and its documentation for any purpose, provided that the
-# above copyright notice and the following two paragraphs appear in
-# all copies of this software.
-#
-# IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
-# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
-# IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-# DAMAGE.
-#
-# THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
-# ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
-# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-#
-# Mozilla author(s): Jonathan Kew
-#
-
-
-ifeq (WINNT,$(OS_TARGET))
-endif
-
-include $(topsrcdir)/config/rules.mk
-
-DEFINES += -DPACKAGE_VERSION="\"moz\""
-DEFINES += -DPACKAGE_BUGREPORT="\"http://bugzilla.mozilla.org/\""
-DEFINES += -DNOMINMAX
-DEFINES += -DMOZ_OTS_REPORT_ERRORS
-
-ifeq (WINNT,$(OS_TARGET))
-DEFINES += -DOTS_DLL -DOTS_DLL_EXPORTS
-endif
diff --git a/gfx/ots/src/moz.build b/gfx/ots/src/moz.build
index ab39e428e64ed60c935b829956d22babd78aa64e..ffe1b088b6f060b261155d06170d943a4267a1aa 100644
--- a/gfx/ots/src/moz.build
+++ b/gfx/ots/src/moz.build
@@ -53,3 +53,12 @@ if CONFIG['OS_TARGET'] == 'WINNT':
     NO_VISIBILITY_FLAGS = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+DEFINES['PACKAGE_VERSION'] = '"moz"'
+DEFINES['PACKAGE_BUGREPORT'] = '"http://bugzilla.mozilla.org/"'
+DEFINES['NOMINMAX'] = True
+DEFINES['MOZ_OTS_REPORT_ERRORS'] = True
+
+if CONFIG['OS_TARGET'] == 'WINNT':
+    DEFINES['OTS_DLL'] = True
+    DEFINES['OTS_DLL_EXPORTS'] = True
diff --git a/gfx/skia/Makefile.in b/gfx/skia/Makefile.in
index de867668a929f9f59af4df4954c1a3e8bab92b78..ebd09eb0e485916f15e3fa0829c3af7368d71572 100644
--- a/gfx/skia/Makefile.in
+++ b/gfx/skia/Makefile.in
@@ -3,8 +3,6 @@
 # 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/.
 
-DEFINES += -DSK_A32_SHIFT=24 -DSK_R32_SHIFT=16 -DSK_G32_SHIFT=8 -DSK_B32_SHIFT=0
-
 LOCAL_INCLUDES += \
 	-I$(srcdir)/include/core \
 	-I$(srcdir)/include/config \
@@ -50,7 +48,6 @@ VPATH += \
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),$(findstring $(MOZ_WIDGET_TOOLKIT),android gonk))
 OS_CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(CAIRO_FT_CFLAGS)
-DEFINES += -DSK_FONTHOST_CAIRO_STANDALONE=0
 endif
 
 ifdef MOZ_WIDGET_GTK
@@ -59,23 +56,6 @@ endif
 
 ifeq (qt,$(MOZ_WIDGET_TOOLKIT))
 OS_CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PANGO_CFLAGS) $(CAIRO_FT_CFLAGS)
-ifeq (Linux,$(OS_TARGET))
-DEFINES += -DSK_USE_POSIX_THREADS=1
-endif
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),$(findstring $(MOZ_WIDGET_TOOLKIT),android gtk2 gtk3 gonk cocoa))
-DEFINES += -DSK_USE_POSIX_THREADS=1
-endif
-
-ifeq (windows,$(MOZ_WIDGET_TOOLKIT))
-DEFINES += -DSKIA_IMPLEMENTATION=1 -DGR_IMPLEMENTATION=1
-endif
-
-ifneq (,$(INTEL_ARCHITECTURE))
-ifdef HAVE_TOOLCHAIN_SUPPORT_MSSSE3
-DEFINES += -DSK_BUILD_SSSE3
-endif
 endif
 
 include $(topsrcdir)/config/rules.mk
diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build
index 1ca4e60992d8d77d7f536d63b157083695f77f1b..815473271f532ed45281f6051603e7893130e6f9 100644
--- a/gfx/skia/moz.build
+++ b/gfx/skia/moz.build
@@ -175,6 +175,8 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
         'src/ports/SkFontHost_sandbox_none.cpp',
         'src/ports/SkFontHost_win.cpp',
     ]
+    DEFINES['SKIA_IMPLEMENTATION'] = 1
+    DEFINES['GR_IMPLEMENTATION'] = 1
 elif CONFIG['MOZ_WIDGET_GTK']:
     EXPORTS.skia += [
         'include/ports/SkTypeface_cairo.h',
@@ -217,6 +219,7 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt':
             'src/utils/SkThreadUtils_pthread.cpp',
             'src/utils/SkThreadUtils_pthread_linux.cpp',
         ]
+        DEFINES['SK_USE_POSIX_THREADS'] = 1
 # Separate 'if' from above, since the else below applies to all != 'android'
 # toolkits.
 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gonk'):
@@ -240,6 +243,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gonk'):
         'src/ports/SkFontHost_FreeType_common.cpp',
         'src/ports/SkFontHost_linux.cpp',
     ]
+    DEFINES['SK_FONTHOST_CAIRO_STANDALONE'] = 0
 else:
     UNIFIED_SOURCES += [
         'src/ports/SkDebug_stdio.cpp',
@@ -586,3 +590,14 @@ if not CONFIG['INTEL_ARCHITECTURE'] and CONFIG['CPU_ARCH'] == 'arm' and CONFIG['
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+DEFINES['SK_A32_SHIFT'] = 24
+DEFINES['SK_R32_SHIFT'] = 16
+DEFINES['SK_G32_SHIFT'] = 8
+DEFINES['SK_B32_SHIFT'] = 0
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3', 'gonk', 'cocoa'):
+    DEFINES['SK_USE_POSIX_THREADS'] = 1
+
+if CONFIG['INTEL_ARCHITECTURE'] and CONFIG['HAVE_TOOLCHAIN_SUPPORT_MSSSE3']:
+    DEFINES['SK_BUILD_SSSE3'] = 1
diff --git a/gfx/thebes/Makefile.in b/gfx/thebes/Makefile.in
index 666efb63cb9b95c31413cd9a565036841f7b3efe..85d20c24d942a1cfebadef1d1ba5e81978b74ff4 100644
--- a/gfx/thebes/Makefile.in
+++ b/gfx/thebes/Makefile.in
@@ -6,38 +6,10 @@ LOCAL_INCLUDES += \
 	-I$(topsrcdir)/content/xml/document/src \
 	$(NULL)
 
-ifeq ($(MOZ_WIDGET_TOOLKIT),$(findstring $(MOZ_WIDGET_TOOLKIT),android gtk2 gtk3 gonk qt))
-DEFINES += -DMOZ_ENABLE_FREETYPE
-endif
-
 ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-
-ifdef MOZ_ENABLE_D3D9_LAYER
-DEFINES +=	-DMOZ_ENABLE_D3D9_LAYER
-endif
-
-ifdef MOZ_ENABLE_D3D10_LAYER
-DEFINES +=	-DMOZ_ENABLE_D3D10_LAYER
-endif
-
 ACDEFINES +=	-UWIN32_LEAN_AND_MEAN
 endif
 
-ifeq ($(MOZ_WIDGET_TOOLKIT),android)
-# This is set for "normal Android", that is, when Gecko is running on
-# top of the android java runtime.
-DEFINES +=	-DMOZ_USING_ANDROID_JAVA_WIDGETS
-endif
-
-DEFINES += \
-	-DMOZ_OTS_REPORT_ERRORS \
-	-DGRAPHITE2_STATIC \
-	$(NULL)
-
-ifeq (WINNT,$(OS_TARGET))
-DEFINES += -DOTS_DLL
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 DEFINES := $(filter-out -DUNICODE,$(DEFINES))
diff --git a/gfx/thebes/moz.build b/gfx/thebes/moz.build
index b3a993b34a92c2ae5e94d88deb7c842b3a7c6f2e..010d23640e788cf53d579b7dc2c992caf6940e7a 100644
--- a/gfx/thebes/moz.build
+++ b/gfx/thebes/moz.build
@@ -299,3 +299,22 @@ FINAL_LIBRARY = 'xul'
 GENERATED_FILES = [
     'PremultiplyTables.h',
 ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3', 'gonk', 'qt'):
+    DEFINES['MOZ_ENABLE_FREETYPE'] = True
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+    for var in ('MOZ_ENABLE_D3D9_LAYER', 'MOZ_ENABLE_D3D10_LAYER'):
+        if CONFIG[var]:
+            DEFINES[var] = True
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
+    # This is set for "normal Android", that is, when Gecko is running on
+    # top of the android java runtime.
+    DEFINES['MOZ_USING_ANDROID_JAVA_WIDGETS'] = True
+
+DEFINES['MOZ_OTS_REPORT_ERRORS'] = True
+DEFINES['GRAPHITE2_STATIC'] = True
+
+if CONFIG['OS_TARGET'] == 'WINNT':
+    DEFINES['OTS_DLL'] = True
diff --git a/intl/locale/src/unix/Makefile.in b/intl/locale/src/unix/Makefile.in
index aab47c262506d10fc342ce5a766f2e212423d7d6..f93f939d67601cf787be81d260b0dcd9dafbd1cc 100644
--- a/intl/locale/src/unix/Makefile.in
+++ b/intl/locale/src/unix/Makefile.in
@@ -7,14 +7,5 @@ include $(topsrcdir)/config/rules.mk
 
 INCLUDES	+= -I$(srcdir)/..
 
-# CODESET is not automatically defined on some older versions of Redhat.
-# Define _XOPEN_SOURCE so CODESET will get defined and thus allow
-# nl_langinfo(CODESET) to compile on these systems.
-ifeq ($(OS_ARCH), Linux)
-DEFINES		+= -D_XOPEN_SOURCE=500
-endif
-
-DEFINES += -DOSTYPE=\"$(OS_CONFIG)\"
-
 unixcharset.properties.h: $(srcdir)/../props2arrays.py unixcharset.properties
 	$(PYTHON) $^ $@
diff --git a/intl/locale/src/unix/moz.build b/intl/locale/src/unix/moz.build
index df6c6f30574108a87303641c8f1d1877dd695f16..8a9af0295ebf9f5251619e5ede87ec71ac429769 100644
--- a/intl/locale/src/unix/moz.build
+++ b/intl/locale/src/unix/moz.build
@@ -24,3 +24,11 @@ FINAL_LIBRARY = 'i18n'
 GENERATED_FILES = [
     'unixcharset.properties.h',
 ]
+
+# CODESET is not automatically defined on some older versions of Redhat.
+# Define _XOPEN_SOURCE so CODESET will get defined and thus allow
+# nl_langinfo(CODESET) to compile on these systems.
+if CONFIG['OS_ARCH'] == 'Linux':
+    DEFINES['_XOPEN_SOURCE'] = 500
+
+DEFINES['OSTYPE'] = '"%s"' % CONFIG['OS_CONFIG']
diff --git a/intl/unicharutil/util/Makefile.in b/intl/unicharutil/util/Makefile.in
index 88ac54b85f3e032592d293fccc21066bdff84388..4ebb3f04e85bb2dafc35f79e05ccd5477bca3239 100644
--- a/intl/unicharutil/util/Makefile.in
+++ b/intl/unicharutil/util/Makefile.in
@@ -20,5 +20,4 @@ ifdef _MSC_VER
 # Don't include directives about which CRT to use
 OS_COMPILE_CXXFLAGS += -Zl
 OS_COMPILE_CFLAGS += -Zl
-DEFINES += -D_USE_ANSI_CPP
 endif
diff --git a/intl/unicharutil/util/moz.build b/intl/unicharutil/util/moz.build
index 9824ea1f4c94547b857cdade2c08e1f154591554..0275264e1b039503c43df57ac93dd5f3c1f21ebc 100644
--- a/intl/unicharutil/util/moz.build
+++ b/intl/unicharutil/util/moz.build
@@ -21,3 +21,6 @@ UNIFIED_SOURCES += intl_unicharutil_util_cppsrcs
 LIBRARY_NAME = 'unicharutil_external_s'
 
 FORCE_STATIC_LIB = True
+
+if CONFIG['_MSC_VER']:
+    DEFINES['_USE_ANSI_CPP'] = True
diff --git a/ipc/chromium/Makefile.in b/ipc/chromium/Makefile.in
index 4ec2f6313b80139b31288bbd1bfa367813681ccc..21dd07e5e0b56c7caae426b21684154637fc2752 100644
--- a/ipc/chromium/Makefile.in
+++ b/ipc/chromium/Makefile.in
@@ -26,12 +26,6 @@ vpath %.mm \
   $(srcdir)/src/chrome/common \
   $(NULL)
 
-ifneq ($(OS_ARCH),WINNT) # (if OS_POSIX) {
-ifeq ($(OS_TARGET),Android)
-DEFINES += -DANDROID -D_POSIX_MONOTONIC_CLOCK=0
-endif # Android
-endif # } Not WINNT (OS_POSIX)
-
 # libevent
 
 ifndef MOZ_NATIVE_LIBEVENT # {
@@ -40,7 +34,6 @@ ifneq ($(OS_ARCH),WINNT) # (if OS_POSIX) {
 
 LOCAL_INCLUDES += -I$(srcdir)/src/third_party/libevent
 LOCAL_INCLUDES += -I$(srcdir)/src/third_party/libevent/include
-DEFINES += -DHAVE_CONFIG_H
 
 ifeq ($(OS_ARCH),Darwin) # (OS_MACOSX) {
 LOCAL_INCLUDES += -I$(srcdir)/src/third_party/libevent/mac
@@ -56,9 +49,6 @@ endif # }
 
 else # } else (OS_BSD)  {
 
-ifneq (,$(filter DragonFly FreeBSD,$(OS_ARCH))) # (not OS_DRAGONFLY and not OS_FREEBSD) {
-DEFINES += -D_EVENT_HAVE_SENDFILE
-endif # }
 LOCAL_INCLUDES += -I$(srcdir)/src/third_party/libevent/bsd
 
 endif # }
diff --git a/ipc/chromium/moz.build b/ipc/chromium/moz.build
index c898fe2ca43156cfc9352e5f138520a9822be728..ab21c075eee5145ab3eea4958f85f0230c84c197 100644
--- a/ipc/chromium/moz.build
+++ b/ipc/chromium/moz.build
@@ -146,6 +146,7 @@ elif not CONFIG['MOZ_NATIVE_LIBEVENT']:
         'src/third_party/libevent/signal.c',
         'src/third_party/libevent/strlcpy.c',
     ]
+    DEFINES['HAVE_CONFIG_H'] = True
 
 if os_posix:
     SOURCES += [
@@ -177,6 +178,8 @@ if os_posix:
         SOURCES += [
             'src/base/message_pump_android.cc',
         ]
+        DEFINES['ANDROID'] = True
+        DEFINES['_POSIX_MONOTONIC_CLOCK'] = 0
 
 if os_macosx:
     UNIFIED_SOURCES += [
@@ -265,6 +268,8 @@ if os_bsd:
         SOURCES += [
             'src/third_party/libevent/kqueue.c',
         ]
+        if not os_freebsd and not os_dragonfly:
+            DEFINES['_EVENT_HAVE_SENDFILE'] = True
 
 if CONFIG['_MSC_VER']:
     SOURCES += [
diff --git a/ipc/glue/Makefile.in b/ipc/glue/Makefile.in
index ca6b5ec2295457bbbcd06b87ec3390e5b2d63178..38bf1b4ba94adb59debc63dd53dc8a31c49e3246 100644
--- a/ipc/glue/Makefile.in
+++ b/ipc/glue/Makefile.in
@@ -4,9 +4,6 @@
 
 LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/crashreporter
 
-DEFINES += -DMOZ_CHILD_PROCESS_NAME=\"$(MOZ_CHILD_PROCESS_NAME)\"
-DEFINES += -DMOZ_CHILD_PROCESS_BUNDLE=\"$(MOZ_CHILD_PROCESS_BUNDLE)\"
-
 include $(topsrcdir)/config/rules.mk
 
 ifdef MOZ_CONTENT_SANDBOX
diff --git a/ipc/glue/moz.build b/ipc/glue/moz.build
index e35e9c50996821af690a3d6ef8b6200217f519ca..6e6e2745bfadee25c074a4281a68e9b85a6688c9 100644
--- a/ipc/glue/moz.build
+++ b/ipc/glue/moz.build
@@ -106,3 +106,6 @@ IPDL_SOURCES = [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+for var in ('MOZ_CHILD_PROCESS_NAME', 'MOZ_CHILD_PROCESS_BUNDLE'):
+    DEFINES[var] = '"%s"' % CONFIG[var]
diff --git a/js/ipc/Makefile.in b/js/ipc/Makefile.in
index a4efa73794968870ae7c0bb452384b39e35b88c5..f4920440a76d02c81baeb0612186a2a3d649d694 100644
--- a/js/ipc/Makefile.in
+++ b/js/ipc/Makefile.in
@@ -10,5 +10,3 @@ LOCAL_INCLUDES += \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
-
-DEFINES += -DBIN_SUFFIX='"$(BIN_SUFFIX)"'
diff --git a/js/ipc/moz.build b/js/ipc/moz.build
index 986797bc4002cedcf54d6861a6f4f72a462c7bcd..a453826476ecfb486a358eb860cc210e259d6a00 100644
--- a/js/ipc/moz.build
+++ b/js/ipc/moz.build
@@ -20,3 +20,5 @@ FAIL_ON_WARNINGS = True
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['BIN_SUFFIX'] = '"%s"' % CONFIG['BIN_SUFFIX']
diff --git a/js/src/Makefile.in b/js/src/Makefile.in
index ceb1be9aa5f40a3f98d71c577b2f59b7d93d7d20..84f591be6cd9b102f7b3000570661902f7f5f722 100644
--- a/js/src/Makefile.in
+++ b/js/src/Makefile.in
@@ -46,14 +46,6 @@ VPATH		+= \
 ###############################################
 # BEGIN enable non-releasable features
 #
-ifdef NIGHTLY_BUILD
-DEFINES += -DENABLE_PARALLEL_JS
-endif
-
-ifdef NIGHTLY_BUILD
-DEFINES += -DENABLE_BINARYDATA
-endif
-
 # Ion
 ifdef ENABLE_ION
 VPATH +=	$(srcdir)/jit
@@ -367,19 +359,8 @@ DIST_GARBAGE = config.cache config.log config.status* \
 distclean::
 	$(RM) $(DIST_GARBAGE)
 
-DEFINES		+= -DEXPORT_JS_API
-
 INCLUDES	+= -I$(srcdir)
 
-ifdef JS_THREADSAFE
-DEFINES		+= -DJS_THREADSAFE
-endif
-
-ifdef JS_HAS_CTYPES
-DEFINES		+= -DJS_HAS_CTYPES
-DEFINES         += -DDLL_PREFIX=\"$(DLL_PREFIX)\" -DDLL_SUFFIX=\"$(DLL_SUFFIX)\"
-endif
-
 ifneq ($(findstring -L,$(NSPR_LIBS)),)
 NSPR_STATIC_PATH = $(subst -L,,$(findstring -L,$(NSPR_LIBS)))
 else
@@ -405,10 +386,6 @@ ifneq (,$(MOZ_ZLIB_LIBS)$(MOZ_GLUE_LDFLAGS))
 DEFINES += -DUSE_ZLIB
 endif
 
-ifdef MOZ_LINKER
-DEFINES += -DMOZ_LINKER
-endif
-
 ifdef MOZ_NATIVE_ICU
 EXTRA_DSO_LDOPTS += $(MOZ_ICU_LIBS)
 else
diff --git a/js/src/config/Makefile.in b/js/src/config/Makefile.in
index 6195d37d8422a699ebc68a89e5d821a0df029d3b..3a0a7a528245beb1fb3dd2201dbe370506177308 100644
--- a/js/src/config/Makefile.in
+++ b/js/src/config/Makefile.in
@@ -15,11 +15,6 @@ endif
 
 include $(topsrcdir)/config/config.mk
 
-# Force wrap zlib system header if building js as a shared library.
-ifneq (,$(JS_SHARED_LIBRARY)$(MOZ_NATIVE_ZLIB))
-DEFINES += -DMOZ_NATIVE_ZLIB=1
-endif
-
 ifneq (WINNT,$(HOST_OS_ARCH))
 # Ensure nsinstall is atomically created
 nsinstall$(HOST_BIN_SUFFIX): $(HOST_PROGRAM)
diff --git a/js/src/config/moz.build b/js/src/config/moz.build
index d303d6c56595d0ad6abe53cb32e5f24a1264e7a0..838c705d6524ac9b71e00106828bb90195b307fd 100644
--- a/js/src/config/moz.build
+++ b/js/src/config/moz.build
@@ -20,3 +20,7 @@ if CONFIG['HOST_OS_ARCH'] != 'WINNT':
         'pathsub.c',
     ]
     HOST_PROGRAM = 'nsinstall_real'
+
+# Force wrap zlib system header if building js as a shared library.
+if CONFIG['JS_SHARED_LIBRARY'] or CONFIG['MOZ_NATIVE_ZLIB']:
+    DEFINES['MOZ_NATIVE_ZLIB'] = 1
diff --git a/js/src/editline/Makefile.in b/js/src/editline/Makefile.in
deleted file mode 100644
index 20928b808299236a9b0f85e75fecc138d79df497..0000000000000000000000000000000000000000
--- a/js/src/editline/Makefile.in
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# 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/.
-
-DEFINES += -DANSI_ARROWS -DHAVE_TCGETATTR -DHIDE -DUSE_DIRENT -DSYS_UNIX \
-	-DHAVE_STDLIB -DUNIQUE_HISTORY
diff --git a/js/src/editline/moz.build b/js/src/editline/moz.build
index cf307701ea89c88eca4d2c4b49610918b4dba6e1..63afd7f4042a3f4c1d648fbd35e9ac017183e643 100644
--- a/js/src/editline/moz.build
+++ b/js/src/editline/moz.build
@@ -12,3 +12,7 @@ UNIFIED_SOURCES += [
 ]
 
 FORCE_STATIC_LIB = True
+
+for var in ('ANSI_ARROWS', 'HAVE_TCGETATTR', 'HIDE', 'USE_DIRENT', 'SYS_UNIX',
+            'HAVE_STDLIB', 'UNIQUE_HISTORY'):
+    DEFINES[var] = True
diff --git a/js/src/gdb/Makefile.in b/js/src/gdb/Makefile.in
index 29b6823d954dc1e390fc820ba167654e68084dde..d2eff85a956e8c7956e28f7db4f2eccc1bd4e934 100644
--- a/js/src/gdb/Makefile.in
+++ b/js/src/gdb/Makefile.in
@@ -6,10 +6,6 @@
 
 VPATH		= @srcdir@ @srcdir@/tests
 
-# Building against js_static requires that we declare mfbt sybols "exported"
-# on its behalf.
-DEFINES += -DEXPORT_JS_API -DIMPL_MFBT
-
 LIBS = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLIB_LIBS)
 
 LOCAL_INCLUDES += -I$(topsrcdir) -I..
diff --git a/js/src/gdb/moz.build b/js/src/gdb/moz.build
index 7fdf06e31b45a22163663a42f23704acf53f719d..4b8a796a8fecdd81d5a239ac42e9103a6ba9f1d4 100644
--- a/js/src/gdb/moz.build
+++ b/js/src/gdb/moz.build
@@ -16,3 +16,8 @@ UNIFIED_SOURCES += [
     'tests/test-Root.cpp',
     'tests/typedef-printers.cpp',
 ]
+
+# Building against js_static requires that we declare mfbt sybols "exported"
+# on its behalf.
+for var in ('EXPORT_JS_API', 'IMPL_MFBT'):
+    DEFINES[var] = True
diff --git a/js/src/jsapi-tests/Makefile.in b/js/src/jsapi-tests/Makefile.in
index e5d7c6eb935bffef1c52734a643a963c2593eb92..ad73608b32c4b4d233a3959849004b875b2b106b 100644
--- a/js/src/jsapi-tests/Makefile.in
+++ b/js/src/jsapi-tests/Makefile.in
@@ -4,11 +4,6 @@
 # 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/.
 
-DEFINES         += -DEXPORT_JS_API
-# Building against js_static requires that we declare mfbt sybols "exported"
-# on its behalf.
-DEFINES         += -DIMPL_MFBT
-
 LIBS      = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLIB_LIBS)
 
 LOCAL_INCLUDES += -I$(topsrcdir) -I..
diff --git a/js/src/jsapi-tests/moz.build b/js/src/jsapi-tests/moz.build
index 8aa75a044045afb14e23abda79dddb3b239a6476..29bb02f28332188cec4bb1731682f5ca9217cc21 100644
--- a/js/src/jsapi-tests/moz.build
+++ b/js/src/jsapi-tests/moz.build
@@ -70,3 +70,8 @@ UNIFIED_SOURCES += [
     'testUTF8.cpp',
     'testXDR.cpp',
 ]
+
+DEFINES['EXPORT_JS_API'] = True
+# Building against js_static requires that we declare mfbt sybols "exported"
+# on its behalf.
+DEFINES['IMPL_MFBT'] = True
diff --git a/js/src/moz.build b/js/src/moz.build
index ccf8839cf9b451b5162c8ccf56817f23790efc4c..2f2d6b317f671be9543b5c6818829a64357ecfa6 100644
--- a/js/src/moz.build
+++ b/js/src/moz.build
@@ -402,3 +402,20 @@ if CONFIG['MOZ_ETW']:
     GENERATED_FILES = [
         'ETWProvider.h',
     ]
+
+if CONFIG['NIGHTLY_BUILD']:
+    DEFINES['ENABLE_PARALLEL_JS'] = True
+    DEFINES['ENABLE_BINARYDATA'] = True
+
+DEFINES['EXPORT_JS_API'] = True
+
+if CONFIG['JS_THREADSAFE']:
+    DEFINES['JS_THREADSAFE'] = True
+
+if CONFIG['JS_HAS_CTYPES']:
+    DEFINES['JS_HAS_CTYPES'] = True
+    for var in ('DLL_PREFIX', 'DLL_SUFFIX'):
+        DEFINES[var] = '"%s"' % CONFIG[var]
+
+if CONFIG['MOZ_LINKER']:
+    DEFINES['MOZ_LINKER'] = True
diff --git a/js/src/shell/Makefile.in b/js/src/shell/Makefile.in
index 260aa21bbd2c8f15821731a3e2a2766b8cad95e9..68f1db5f2e014e5fa48a4d0e743989103bfb3051 100644
--- a/js/src/shell/Makefile.in
+++ b/js/src/shell/Makefile.in
@@ -11,11 +11,6 @@ ifdef _MSC_VER
 NO_PROFILE_GUIDED_OPTIMIZE := 1
 endif
 
-DEFINES         += -DEXPORT_JS_API
-# Building against js_static requires that we declare mfbt sybols "exported"
-# on its behalf.
-DEFINES         += -DIMPL_MFBT
-
 LIBS      = $(NSPR_LIBS) $(EDITLINE_LIBS) $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(MOZ_ZLIB_LIBS)
 ifdef MOZ_NATIVE_FFI
 EXTRA_LIBS += $(MOZ_FFI_LIBS)
diff --git a/js/src/shell/moz.build b/js/src/shell/moz.build
index 28528ff26a3a1565d87c282b904c7c01ff5a48aa..5ede1ed468a7150a55046e85d138c21a791f39dd 100644
--- a/js/src/shell/moz.build
+++ b/js/src/shell/moz.build
@@ -11,3 +11,8 @@ UNIFIED_SOURCES += [
     'jsheaptools.cpp',
     'jsoptparse.cpp',
 ]
+
+# Building against js_static requires that we declare mfbt sybols "exported"
+# on its behalf.
+for var in ('EXPORT_JS_API', 'IMPL_MFBT'):
+    DEFINES[var] = True
diff --git a/js/xpconnect/loader/Makefile.in b/js/xpconnect/loader/Makefile.in
index 653fe904e22f24607bd553b7e9badb6edfcffc36..cdcd75cc1b72e95192f5a4ad5ee0b8403e6fedd1 100644
--- a/js/xpconnect/loader/Makefile.in
+++ b/js/xpconnect/loader/Makefile.in
@@ -7,9 +7,3 @@ LOCAL_INCLUDES += \
   -I$(srcdir)/../wrappers \
   -I$(topsrcdir)/content/base/src \
   $(NULL)
-
-include $(topsrcdir)/config/rules.mk
-
-DEFINES += \
-  -DJS_THREADSAFE \
-  $(NULL)
diff --git a/js/xpconnect/loader/moz.build b/js/xpconnect/loader/moz.build
index 38fa13e1275d6a891aa0dadec96e5106541501e2..75dacdd34022c67efedd583b8044ce82b2d8e58b 100644
--- a/js/xpconnect/loader/moz.build
+++ b/js/xpconnect/loader/moz.build
@@ -22,3 +22,5 @@ FAIL_ON_WARNINGS = True
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'xpconnect_s'
+
+DEFINES['JS_THREADSAFE'] = True
diff --git a/js/xpconnect/src/Makefile.in b/js/xpconnect/src/Makefile.in
index dc3f3a3515f9088c54fb15cc567321db47ba13ad..b45acbe3476f1bcf5f60fb773262932b5b343600 100644
--- a/js/xpconnect/src/Makefile.in
+++ b/js/xpconnect/src/Makefile.in
@@ -37,32 +37,8 @@ extra_export_files_FILES := \
 extra_export_files_DEST = $(DIST)/include
 extra_export_files_TARGET := export
 
-# XPCShellImpl.cpp requires hardcoded vendor/profile/appname stuff on Windows
-# This sucks, bug 921148 tracks this.
-ifeq (windows,$(MOZ_WIDGET_TOOLKIT))
-  ifdef MOZ_APP_PROFILE
-    DEFINES += -DMOZ_APP_PROFILE='"$(MOZ_APP_PROFILE)"'
-  else
-    ifdef MOZ_APP_VENDOR
-      DEFINES += -DMOZ_APP_VENDOR='"$(MOZ_APP_VENDOR)"'
-    endif
-    ifdef MOZ_APP_BASENAME
-      DEFINES += -DMOZ_APP_BASENAME='"$(MOZ_APP_BASENAME)"'
-    endif
-    DEFINES += -DMOZ_APP_NAME='"$(MOZ_APP_NAME)"'
-  endif
-endif
-
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += \
-  -DJS_THREADSAFE \
-  $(NULL)
-
-ifdef MOZ_JSDEBUGGER
-DEFINES += -DMOZ_JSDEBUGGER
-endif
-
 dom_quickstubs.h: dom_quickstubs.cpp
 
 dom_quickstubs.cpp: $(srcdir)/dom_quickstubs.qsconf \
diff --git a/js/xpconnect/src/moz.build b/js/xpconnect/src/moz.build
index 7cf3c7416ac016bc84e40c0f31748367848eb3aa..f1319cb59cd783161ad57f8e45671f17394aa2be 100644
--- a/js/xpconnect/src/moz.build
+++ b/js/xpconnect/src/moz.build
@@ -74,3 +74,20 @@ GENERATED_FILES = [
     'GeneratedEventClasses.h',
     'GeneratedEvents.h',
 ]
+
+# XPCShellImpl.cpp requires hardcoded vendor/profile/appname stuff on Windows
+# This sucks, bug 921148 tracks this.
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+    if CONFIG['MOZ_APP_PROFILE']:
+        DEFINES['MOZ_APP_PROFILE'] = '"%s"' % CONFIG['MOZ_APP_PROFILE']
+    else:
+        if CONFIG['MOZ_APP_VENDOR']:
+            DEFINES['MOZ_APP_VENDOR'] = '"%s"' % CONFIG['MOZ_APP_VENDOR']
+        if CONFIG['MOZ_APP_BASENAME']:
+            DEFINES['MOZ_APP_BASENAME'] = '"%s"' % CONFIG['MOZ_APP_BASENAME']
+        DEFINES['MOZ_APP_NAME'] = '"%s"' % CONFIG['MOZ_APP_NAME']
+
+DEFINES['JS_THREADSAFE'] = True
+
+if CONFIG['MOZ_JSDEBUGGER']:
+    DEFINES['MOZ_JSDEBUGGER'] = True
diff --git a/js/xpconnect/tests/components/native/Makefile.in b/js/xpconnect/tests/components/native/Makefile.in
index b1bd81e88b6b960b594cf6ef6d00d791541b2112..576df68547608665604f75c481d1fe725f279b23 100644
--- a/js/xpconnect/tests/components/native/Makefile.in
+++ b/js/xpconnect/tests/components/native/Makefile.in
@@ -14,8 +14,6 @@ EXTRA_DSO_LDOPTS += \
   $(MOZ_COMPONENT_LIBS) \
   $(NULL)
 
-DEFINES += -DLIBRARY_FILENAME="$(SHARED_LIBRARY)"
-
 LIB_FILES = $(SHARED_LIBRARY)
 LIB_DEST = $(testxpcobjdir)/$(componentdir)
 INSTALL_TARGETS += LIB
diff --git a/js/xpconnect/tests/components/native/moz.build b/js/xpconnect/tests/components/native/moz.build
index bb6c4e8040de5be8619258eee4fd4a8d3af77e31..504e63c33f8783f717733a05d9f9d87005e4a672 100644
--- a/js/xpconnect/tests/components/native/moz.build
+++ b/js/xpconnect/tests/components/native/moz.build
@@ -17,3 +17,9 @@ LIBRARY_NAME = 'xpctest'
 IS_COMPONENT = True
 
 FORCE_SHARED_LIB = True
+
+DEFINES['LIBRARY_FILENAME'] = '%s%s%s' % (
+    CONFIG['DLL_PREFIX'],
+    LIBRARY_NAME,
+    CONFIG['DLL_SUFFIX']
+)
diff --git a/layout/style/test/Makefile.in b/layout/style/test/Makefile.in
index 3549d34ddb4b67cea873a170ea01658ace6ce298..4831fa8f37cbc84d0590f7f6449c40cff447b7e8 100644
--- a/layout/style/test/Makefile.in
+++ b/layout/style/test/Makefile.in
@@ -222,8 +222,6 @@ VISITED_REFTEST_FILES = \
 VISITED_REFTEST_DEST = $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)/css-visited/
 INSTALL_TARGETS += VISITED_REFTEST
 
-DEFINES += -DMOZILLA_INTERNAL_API
-
 ifdef COMPILE_ENVIRONMENT
 MOCHITEST_FILES += \
 		test_property_database.html \
diff --git a/layout/style/test/moz.build b/layout/style/test/moz.build
index ded35afe30cdd97b58d8cafa6694022d38f5a990..7d1ab04c5c85a0d1cbdc2f5c6435e55b5c8be0e3 100644
--- a/layout/style/test/moz.build
+++ b/layout/style/test/moz.build
@@ -16,3 +16,4 @@ HOST_SIMPLE_PROGRAMS += [
 
 BROWSER_CHROME_MANIFESTS += ['browser.ini']
 
+DEFINES['MOZILLA_INTERNAL_API'] = True
diff --git a/layout/tables/Makefile.in b/layout/tables/Makefile.in
index 696156bfb5c285c325ef83c0800b88b7199797bb..632d13a530e34ba7658c22b49a93500a52cfe9c9 100644
--- a/layout/tables/Makefile.in
+++ b/layout/tables/Makefile.in
@@ -5,8 +5,6 @@
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES         += -DDEBUG_TABLE_STRATEGY_off
-
 LOCAL_INCLUDES	= \
 		-I$(srcdir)/../base \
 		-I$(srcdir)/../generic \
diff --git a/layout/tables/moz.build b/layout/tables/moz.build
index 534b19fed00af9fd050c415c7d20c4285911e582..b75a389218704f234013e63d154c8eac1729ccc9 100644
--- a/layout/tables/moz.build
+++ b/layout/tables/moz.build
@@ -30,3 +30,5 @@ FAIL_ON_WARNINGS = True
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'gklayout'
+
+DEFINES['DEBUG_TABLE_STRATEGY_off'] = True
diff --git a/media/libcubeb/src/Makefile.in b/media/libcubeb/src/Makefile.in
index b4e378e0a4598d6685302dee9bebf3dc210ec946..fd2b8db6097a3b9f3a2763e220b22acc31f3c47e 100644
--- a/media/libcubeb/src/Makefile.in
+++ b/media/libcubeb/src/Makefile.in
@@ -3,36 +3,6 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 
-ifeq ($(OS_TARGET),WINNT)
-DEFINES         += -DUSE_WINMM -DUSE_WASAPI
-endif
-
-ifeq ($(OS_TARGET),Android)
-ifneq ($(MOZ_WIDGET_TOOLKIT),gonk)
-DEFINES         += -DUSE_AUDIOTRACK
-endif
-DEFINES         += -DUSE_OPENSL
-endif
-
-ifeq ($(OS_TARGET),Darwin)
-DEFINES         += -DUSE_AUDIOUNIT
-endif
-
-ifeq ($(OS_ARCH),OpenBSD)
-DEFINES         += -DUSE_SNDIO
-endif
-
-ifdef MOZ_ALSA
-DEFINES         += -DUSE_ALSA
-endif
-
-ifdef MOZ_PULSEAUDIO
-DEFINES         += -DUSE_PULSE
-ifeq ($(MOZ_WIDGET_TOOLKIT),gonk)
-DEFINES         += -DDISABLE_LIBPULSE_DLOPEN
-endif
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 CFLAGS += \
diff --git a/media/libcubeb/src/moz.build b/media/libcubeb/src/moz.build
index 8f553c97a4d3626537052047c101e838b0b3c3cb..fad4b3c047f6876d229235ee6f165ab9f56cee06 100644
--- a/media/libcubeb/src/moz.build
+++ b/media/libcubeb/src/moz.build
@@ -12,38 +12,46 @@ if CONFIG['MOZ_ALSA']:
     SOURCES += [
         'cubeb_alsa.c',
     ]
+    DEFINES['USE_ALSA'] = True
 
 if CONFIG['MOZ_PULSEAUDIO']:
     SOURCES += [
         'cubeb_pulse.c',
     ]
+    DEFINES['USE_PULSE'] = True
+    if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+        DEFINES['DISABLE_LIBPULSE_DLOPEN'] = True
 
 if CONFIG['OS_ARCH'] == 'OpenBSD':
     SOURCES += [
         'cubeb_sndio.c',
     ]
+    DEFINES['USE_SNDIO'] = True
 
 if CONFIG['OS_TARGET'] == 'Darwin':
     SOURCES += [
         'cubeb_audiounit.c',
     ]
+    DEFINES['USE_AUDIOUNIT'] = True
 
 if CONFIG['OS_TARGET'] == 'WINNT':
     SOURCES += [
+        'cubeb_wasapi.cpp',
         'cubeb_winmm.c',
     ]
-    SOURCES += [
-        'cubeb_wasapi.cpp'
-    ]
+    DEFINES['USE_WINMM'] = True
+    DEFINES['USE_WASAPI'] = True
 
 if CONFIG['OS_TARGET'] == 'Android':
     SOURCES += [
         'cubeb_opensl.c',
     ]
+    DEFINES['USE_OPENSL'] = True
     if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gonk':
         SOURCES += [
             'cubeb_audiotrack.c',
         ]
+        DEFINES['USE_AUDIOTRACK'] = True
 
 MSVC_ENABLE_PGO = True
 
diff --git a/media/libopus/Makefile.in b/media/libopus/Makefile.in
index bf8b0ff61e7322536315f951e98c4525800dd45d..9fa04f2107d671dd877aa8ecd2b9b6e65f6d0d38 100644
--- a/media/libopus/Makefile.in
+++ b/media/libopus/Makefile.in
@@ -2,28 +2,6 @@
 # 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/.
 
-DEFINES += \
-  -DOPUS_BUILD \
-  -DOPUS_VERSION='"v1.1-beta-23-gf2446c2-mozilla"' \
-  -DUSE_ALLOCA \
-  $(NULL)
-
-ifneq ($(filter $(OS_ARCH),Linux Darwin DragonFly FreeBSD NetBSD OpenBSD),)
-  DEFINES += -DHAVE_LRINTF
-endif
-ifeq ($(OS_ARCH), WINNT)
-  DEFINES += -Dinline=__inline
-ifdef GNU_CC
-  DEFINES += -DHAVE_LRINTF
-endif
-endif
-ifeq ($(OS_ARCH),AIX)
-DEFINES += -Dalloca=__alloca
-endif
-ifeq ($(OS_ARCH),SunOS)
-DEFINES += -DHAVE_ALLOCA_H
-endif
-
 LOCAL_INCLUDES += \
   -I$(srcdir)/include \
   -I$(srcdir)/celt \
@@ -52,7 +30,6 @@ ifndef MOZ_SAMPLE_TYPE_FLOAT32
 endif
 
 ifdef MOZ_OPUS_FIXED
-DEFINES += -DFIXED_POINT=1 -DDISABLE_FLOAT_API
 LOCAL_INCLUDES += -I$(srcdir)/silk/fixed
 VPATH += $(srcdir)/silk/fixed
 CSRCS += $(notdir $(SILK_SOURCES_FIXED))
diff --git a/media/libopus/moz.build b/media/libopus/moz.build
index 1f9fd64d6b3bbc4beefb7b5d51ccca46353cf092..0f21c2fc2c85fb452b357970ff93d16f3c90b1e8 100644
--- a/media/libopus/moz.build
+++ b/media/libopus/moz.build
@@ -14,3 +14,26 @@ EXPORTS.opus += [
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+DEFINES['OPUS_BUILD'] = True
+DEFINES['OPUS_VERSION'] = '"v1.1-beta-23-gf2446c2-mozilla"'
+DEFINES['USE_ALLOCA'] = True
+
+if CONFIG['OS_ARCH'] in ('Linux', 'Darwin', 'DragonFly', 'FreeBSD',
+                         'NetBSD', 'OpenBSD'):
+    DEFINES['HAVE_LRINTF'] = True
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+    DEFINES['inline'] = '__inline'
+    if CONFIG['GNU_CC']:
+        DEFINES['HAVE_LRINTF'] = True
+
+if CONFIG['OS_ARCH'] == 'AIX':
+    DEFINES['alloca'] = '__alloca'
+
+if CONFIG['OS_ARCH'] == 'SunOS':
+    DEFINES['HAVE_ALLOCA_H'] = True
+
+if not CONFIG['MOZ_SAMPLE_TYPE_FLOAT32']:
+    DEFINES['FIXED_POINT'] = 1
+    DEFINES['DISABLE_FLOAT_API'] = True
diff --git a/media/libsoundtouch/src/Makefile.in b/media/libsoundtouch/src/Makefile.in
index 889f169f3c1b35744edfef2e907dc98084960c65..e91148624f4ef512f22159c678f236e5984c5271 100644
--- a/media/libsoundtouch/src/Makefile.in
+++ b/media/libsoundtouch/src/Makefile.in
@@ -2,9 +2,6 @@
 # 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/.
 
-# Use abort() instead of exception in SoundTouch.
-DEFINES += -DST_NO_EXCEPTION_HANDLING=1
-
 include $(topsrcdir)/config/rules.mk
 
 ifneq (,$(INTEL_ARCHITECTURE))
diff --git a/media/libsoundtouch/src/moz.build b/media/libsoundtouch/src/moz.build
index efbc89590907d0f4c303c6ca30d42f383467ec2a..83c49bed977070df172f0728fb4883cc6e68eb7a 100644
--- a/media/libsoundtouch/src/moz.build
+++ b/media/libsoundtouch/src/moz.build
@@ -35,3 +35,6 @@ MSVC_ENABLE_PGO = True
 NO_VISIBILITY_FLAGS = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+# Use abort() instead of exception in SoundTouch.
+DEFINES['ST_NO_EXCEPTION_HANDLING'] = 1
diff --git a/media/libspeex_resampler/src/Makefile.in b/media/libspeex_resampler/src/Makefile.in
index 85398040bbe5e53f28ddbf9978ba591c0cf5cf8c..f5e24435a878b3bd9aa3a96562c1ee8ecdb4392c 100644
--- a/media/libspeex_resampler/src/Makefile.in
+++ b/media/libspeex_resampler/src/Makefile.in
@@ -2,26 +2,11 @@
 # 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/.
 
-# We don't compile the full speex codec, only the resampler.
-DEFINES += -DOUTSIDE_SPEEX
-# Speex wants a random prefix when building in another program, to avoid name
-# clashes
-DEFINES += -DRANDOM_PREFIX=speex
-# We don't use -fvisibility=hidden
-DEFINES += -DSPX_RESAMPLE_EXPORT=
-
-ifeq ($(OS_TARGET),Android)
-DEFINES += -DFIXED_POINT
-else
-DEFINES += -DFLOATING_POINT
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 # Only use SSE code when using floating point samples, and on x86
 ifneq (,$(INTEL_ARCHITECTURE))
 ifneq ($(OS_TARGET),Android)
-DEFINES += -D_USE_SSE -D_USE_SSE2
 ifdef GNU_CC
 resample.$(OBJ_SUFFIX): CFLAGS+=-msse2
 endif
diff --git a/media/libspeex_resampler/src/moz.build b/media/libspeex_resampler/src/moz.build
index d4acfac1d8936f950cfd120bdda76eb104334ab6..184065498143e3ca63d0cd423c3705b12d9d174d 100644
--- a/media/libspeex_resampler/src/moz.build
+++ b/media/libspeex_resampler/src/moz.build
@@ -21,3 +21,21 @@ SOURCES += [
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+# We don't compile the full speex codec, only the resampler.
+DEFINES['OUTSIDE_SPEEX'] = True
+# Speex wants a random prefix when building in another program, to avoid name
+# clashes
+DEFINES['RANDOM_PREFIX'] = 'speex'
+# We don't use -fvisibility=hidden
+DEFINES['SPX_RESAMPLE_EXPORT'] = ''
+
+if CONFIG['OS_TARGET'] == 'Android':
+    DEFINES['FIXED_POINT'] = True
+else:
+    DEFINES['FLOATING_POINT'] = True
+
+# Only use SSE code when using floating point samples, and on x86
+if CONFIG['INTEL_ARCHITECTURE'] and CONFIG['OS_TARGET'] != 'Android':
+    DEFINES['_USE_SSE'] = True
+    DEFINES['_USE_SSE2'] = True
diff --git a/media/libtheora/lib/Makefile.in b/media/libtheora/lib/Makefile.in
index fced5ac16fe8ef62d00bfecc796995f994ca682c..fdfbcdf00b615ff210d2b86293823435165fd676 100644
--- a/media/libtheora/lib/Makefile.in
+++ b/media/libtheora/lib/Makefile.in
@@ -3,31 +3,9 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 
-# The encoder is currently not included.
-DEFINES += -DTHEORA_DISABLE_ENCODE
-
-ifeq ($(findstring 86,$(OS_TEST)), 86)
-ifneq ($(OS_ARCH),SunOS)
-ifneq ($(OS_ARCH)$(OS_TEST),WINNTx86_64)
-DEFINES += -DOC_X86_ASM
-ifeq (64,$(findstring 64,$(OS_TEST)))
-DEFINES += -DOC_X86_64_ASM
-endif
-endif
-endif
-endif
-
 ifdef GNU_AS
 ifeq ($(findstring arm,$(OS_TEST)), arm)
 
-DEFINES += -DOC_ARM_ASM -DOC_ARM_ASM_EDSP -DOC_ARM_ASM_MEDIA -DOC_ARM_ASM_NEON
-
-# The Android NDK doesn't pre-define anything to indicate the OS it's on, so
-# do it for them.
-ifeq ($(OS_TARGET),Android)
-DEFINES += -D__linux__
-endif
-
 # These flags are a lie; they're just used to enable the requisite
 # opcodes; actual arch detection is done at runtime.
 ASFLAGS = -march=armv7-a -mfpu=neon
diff --git a/media/libtheora/lib/moz.build b/media/libtheora/lib/moz.build
index 98cf6b14a4a14c220d0fcf82444425ace8fb9fd4..de7ccb0b54cede920eb32c75c429052c8fcb69e1 100644
--- a/media/libtheora/lib/moz.build
+++ b/media/libtheora/lib/moz.build
@@ -29,6 +29,11 @@ if CONFIG['OS_TEST'] == 'arm' and CONFIG['GNU_AS']:
     ]]
 
 if '86' in CONFIG['OS_TEST']:
+    if CONFIG['OS_ARCH'] != 'SunOS':
+        if CONFIG['OS_ARCH'] != 'WINNT' or CONFIG['OS_TEST'] != 'x86_64':
+            DEFINES['OC_X86_ASM'] = True
+            if '64' in CONFIG['OS_TEST']:
+                DEFINES['OC_X86_64_ASM'] = True
     if CONFIG['_MSC_VER']:
         if '64' not in CONFIG['OS_TEST']:
             SOURCES += [
@@ -54,6 +59,13 @@ if CONFIG['GNU_AS']:
             'arm/armcpu.c',
             'arm/armstate.c',
         ]
+        for var in ('OC_ARM_ASM', 'OC_ARM_ASM_EDSP', 'OC_ARM_ASM_MEDIA',
+                    'OC_ARM_ASM_NEON'):
+            DEFINES[var] = True
+        # The Android NDK doesn't pre-define anything to indicate the OS it's
+        # on, so do it for them.
+        if CONFIG['OS_TARGET'] == 'Android':
+            DEFINES['__linux__'] = True
 
 MSVC_ENABLE_PGO = True
 
@@ -61,3 +73,6 @@ if CONFIG['OS_TARGET'] == 'WINNT':
     NO_VISIBILITY_FLAGS = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+# The encoder is currently not included.
+DEFINES['THEORA_DISABLE_ENCODE'] = True
diff --git a/media/libtremor/lib/Makefile.in b/media/libtremor/lib/Makefile.in
index 4ac11abbba38b6e425524f02841b1e4f74401ad2..abe61c3118655b53c3466851b85145dc05aa8701 100644
--- a/media/libtremor/lib/Makefile.in
+++ b/media/libtremor/lib/Makefile.in
@@ -3,11 +3,3 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 LOCAL_INCLUDES += -I$(topsrcdir)/media/libtremor/include/tremor
-
-ifeq ($(OS_ARCH),AIX)
-DEFINES += -Dalloca=__alloca
-endif
-
-ifeq (arm_1_, $(TARGET_CPU)_$(GNU_CC)_$(MOZ_THUMB2))
-DEFINES += -D_ARM_ASSEM_
-endif
diff --git a/media/libtremor/lib/moz.build b/media/libtremor/lib/moz.build
index 2e078a808c8a53220f4d290292863233fdf98b3b..0f4aba1b43c477bfd4da9c801ef7a5945d297e59 100644
--- a/media/libtremor/lib/moz.build
+++ b/media/libtremor/lib/moz.build
@@ -20,3 +20,9 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'gkmedias'
+
+if CONFIG['OS_ARCH'] == 'AIX':
+    DEFINES['alloca'] = '__alloca'
+
+if CONFIG['TARGET_CPU'] == 'arm' and CONFIG['GNU_CC'] and not CONFIG['MOZ_THUMB2']:
+    DEFINES['_ARM_ASSEM_'] = True
diff --git a/media/libvpx/Makefile.in b/media/libvpx/Makefile.in
index 73521f5977b05b7648e41d3a615079cbbe9908f1..447d14ff461e9a37ed178f125541a6641e7b4043 100644
--- a/media/libvpx/Makefile.in
+++ b/media/libvpx/Makefile.in
@@ -2,10 +2,6 @@
 # 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/.
 
-
-DEFINES += -DHAVE_CONFIG_H=vpx_config.h
-
-
 LOCAL_INCLUDES += \
   -I. \
   -I$(topsrcdir)/media/libvpx \
@@ -186,11 +182,6 @@ ifdef VPX_ARM_ASM
 # the optimized assembly in the build.
 
 ifeq ($(OS_TARGET),Android)
-
-# Older versions of the Android NDK don't pre-define anything to indicate the
-# OS they're on, so do it for them.
-DEFINES += -D__linux__
-
 # For cpu-features.h
 LOCAL_INCLUDES += -I$(ANDROID_NDK)/sources/android/cpufeatures
 ifndef MOZ_WEBRTC
diff --git a/media/libvpx/moz.build b/media/libvpx/moz.build
index a55399d2f2efbab0cc15a9e283bdbf2aa3620282..f4c09ca724888e69365747632d96bdc831075219 100644
--- a/media/libvpx/moz.build
+++ b/media/libvpx/moz.build
@@ -94,3 +94,10 @@ if CONFIG['OS_TARGET'] == 'WINNT':
     NO_VISIBILITY_FLAGS = True
 
 FINAL_LIBRARY = 'gkmedias'
+
+DEFINES['HAVE_CONFIG_H'] = 'vpx_config.h'
+
+if CONFIG['OS_TARGET'] == 'Android':
+    # Older versions of the Android NDK don't pre-define anything to indicate
+    # the OS they're on, so do it for them.
+    DEFINES['__linux__'] = True
diff --git a/media/mtransport/build/Makefile.in b/media/mtransport/build/Makefile.in
deleted file mode 100644
index d6d1f8f44efe035490970178aa1434f925872671..0000000000000000000000000000000000000000
--- a/media/mtransport/build/Makefile.in
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*- Mode: makefile; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- #
-# 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/.
-
-DEFINES += -DHAVE_STRDUP -DNR_SOCKET_IS_VOID_PTR
-
-ifneq (,$(filter Darwin DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET)))
-ifeq ($(OS_TARGET), Darwin)
-DEFINES += -DDARWIN
-else
-DEFINES += -DBSD
-endif
-endif
-
-ifeq ($(OS_TARGET), Linux)
-DEFINES += -DLINUX -DUSE_INTERFACE_PRIORITIZER
-endif
-
-ifeq ($(OS_TARGET), Android)
-DEFINES += -DLINUX -DANDROID
-endif
-
-ifeq ($(OS_TARGET), WINNT)
-DEFINES += -DWIN
-endif
-
-DEFINES += \
-   -DR_DEFINED_INT2=int16_t -DR_DEFINED_UINT2=uint16_t \
-   -DR_DEFINED_INT4=int32_t -DR_DEFINED_UINT4=uint32_t \
-   -DR_DEFINED_INT8=int64_t -DR_DEFINED_UINT8=uint64_t \
-   $(NULL)
-
-ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
-DEFINES += -DUSE_INTERFACE_PRIORITIZER
-endif
-
-# for stun.h
-ifeq (WINNT,$(OS_TARGET))
-DEFINES += \
-  -DWIN32 \
-  -DNOMINMAX \
-  $(NULL)
-else ifeq (Linux,$(OS_TARGET))
-DEFINES += -DLINUX
-endif
diff --git a/media/mtransport/build/moz.build b/media/mtransport/build/moz.build
index 0deb9c394af0c5cfbee19f3f8f01fe74e5e1ae45..58a7d0010ac2e75062185311fc387736dd54e8cd 100644
--- a/media/mtransport/build/moz.build
+++ b/media/mtransport/build/moz.build
@@ -55,18 +55,30 @@ LOCAL_INCLUDES += [
 ]
 
 if CONFIG['OS_TARGET'] in ['Darwin', 'DragonFly', 'FreeBSD', 'NetBSD', 'OpenBSD']:
+    if CONFIG['OS_TARGET'] == 'Darwin':
+        DEFINES['DARWIN'] = True
+    else:
+        DEFINES['BSD'] = True
     LOCAL_INCLUDES += [
         '/media/mtransport/third_party/nrappkit/src/port/darwin/include',
     ]
 elif CONFIG['OS_TARGET'] == 'Linux':
+    DEFINES['LINUX'] = True
+    DEFINES['USE_INTERFACE_PRIORITIZER'] = True
     LOCAL_INCLUDES += [
         '/media/mtransport/third_party/nrappkit/src/port/linux/include',
     ]
 elif CONFIG['OS_TARGET'] == 'Android':
+    DEFINES['LINUX'] = True
+    DEFINES['ANDROID'] = True
     LOCAL_INCLUDES += [
         '/media/mtransport/third_party/nrappkit/src/port/android/include',
     ]
 elif CONFIG['OS_TARGET'] == 'WINNT':
+    DEFINES['WIN'] = True
+    # for stun.h
+    DEFINES['WIN32'] = True
+    DEFINES['NOMINMAX'] = True
     LOCAL_INCLUDES += [
         '/media/mtransport/third_party/nrappkit/src/port/win32/include',
     ]
@@ -75,3 +87,16 @@ if CONFIG['OS_TARGET'] == 'WINNT':
     NO_VISIBILITY_FLAGS = True
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+    DEFINES['USE_INTERFACE_PRIORITIZER'] = True
+
+for var in ('HAVE_STRDUP', 'NR_SOCKET_IS_VOID_PTR'):
+    DEFINES[var] = True
+
+DEFINES['R_DEFINED_INT2'] = 'int16_t'
+DEFINES['R_DEFINED_UINT2'] = 'uint16_t'
+DEFINES['R_DEFINED_INT4'] = 'int32_t'
+DEFINES['R_DEFINED_UINT4'] = 'uint32_t'
+DEFINES['R_DEFINED_INT8'] = 'int64_t'
+DEFINES['R_DEFINED_UINT8'] = 'uint64_t'
diff --git a/media/mtransport/standalone/Makefile.in b/media/mtransport/standalone/Makefile.in
deleted file mode 100644
index 651f9ca059b5e47240cae1c308beeba06cfe778d..0000000000000000000000000000000000000000
--- a/media/mtransport/standalone/Makefile.in
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- Mode: makefile; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- #
-# 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/.
-
-
-DEFINES += -DHAVE_STRDUP -DNR_SOCKET_IS_VOID_PTR
-
-ifneq (,$(filter Darwin DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET)))
-ifeq ($(OS_TARGET), Darwin)
-DEFINES += -DDARWIN
-else
-DEFINES += -DBSD
-endif
-endif
-
-ifeq ($(OS_TARGET), Linux)
-DEFINES += -DLINUX -DUSE_INTERFACE_PRIORITIZER
-endif
-
-ifeq ($(OS_TARGET), Android)
-DEFINES += -DLINUX -DANDROID
-endif
-
-ifeq ($(OS_TARGET), WINNT)
-DEFINES += -DWIN
-endif
-
-DEFINES += \
-   -DR_DEFINED_INT2=int16_t -DR_DEFINED_UINT2=uint16_t \
-   -DR_DEFINED_INT4=int32_t -DR_DEFINED_UINT4=uint32_t \
-   -DR_DEFINED_INT8=int64_t -DR_DEFINED_UINT8=uint64_t \
-   $(NULL)
-
-ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
-DEFINES += -DUSE_INTERFACE_PRIORITIZER
-endif
-
-# for stun.h
-ifeq (WINNT,$(OS_TARGET))
-DEFINES += \
-  -DWIN32 \
-  -DNOMINMAX \
-  $(NULL)
-else ifeq (Linux,$(OS_TARGET))
-DEFINES += -DLINUX
-endif
-
diff --git a/media/mtransport/standalone/moz.build b/media/mtransport/standalone/moz.build
index d287e07aba92d2eac24c9a1a56ee1e77c8be0cda..9049dd8d99b9f568b6950dc0aa61614071ab7410 100644
--- a/media/mtransport/standalone/moz.build
+++ b/media/mtransport/standalone/moz.build
@@ -33,18 +33,30 @@ LOCAL_INCLUDES += [
 ]
 
 if CONFIG['OS_TARGET'] in ['Darwin', 'DragonFly', 'FreeBSD', 'NetBSD', 'OpenBSD']:
+    if CONFIG['OS_TARGET'] == 'Darwin':
+        DEFINES['DARWIN'] = True
+    else:
+        DEFINES['BSD'] = True
     LOCAL_INCLUDES += [
         '/media/mtransport/third_party/nrappkit/src/port/darwin/include',
     ]
 elif CONFIG['OS_TARGET'] == 'Linux':
+    DEFINES['LINUX'] = True
+    DEFINES['USE_INTERFACE_PRIORITIZER'] = True
     LOCAL_INCLUDES += [
         '/media/mtransport/third_party/nrappkit/src/port/linux/include',
     ]
 elif CONFIG['OS_TARGET'] == 'Android':
+    DEFINES['LINUX'] = True
+    DEFINES['ANDROID'] = True
     LOCAL_INCLUDES += [
         '/media/mtransport/third_party/nrappkit/src/port/android/include',
     ]
 elif CONFIG['OS_TARGET'] == 'WINNT':
+    DEFINES['WIN'] = True
+    # for stun.h
+    DEFINES['WIN32'] = True
+    DEFINES['NOMINMAX'] = True
     LOCAL_INCLUDES += [
         '/media/mtransport/third_party/nrappkit/src/port/win32/include',
     ]
@@ -53,3 +65,16 @@ FORCE_STATIC_LIB = True
 
 if CONFIG['OS_TARGET'] == 'WINNT':
     NO_VISIBILITY_FLAGS = True
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+    DEFINES['USE_INTERFACE_PRIORITIZER'] = True
+
+for var in ('HAVE_STRDUP', 'NR_SOCKET_IS_VOID_PTR'):
+    DEFINES[var] = True
+
+DEFINES['R_DEFINED_INT2'] = 'int16_t'
+DEFINES['R_DEFINED_UINT2'] = 'uint16_t'
+DEFINES['R_DEFINED_INT4'] = 'int32_t'
+DEFINES['R_DEFINED_UINT4'] = 'uint32_t'
+DEFINES['R_DEFINED_INT8'] = 'int64_t'
+DEFINES['R_DEFINED_UINT8'] = 'uint64_t'
diff --git a/media/mtransport/test/Makefile.in b/media/mtransport/test/Makefile.in
index 0322d419aa096fc8f487bfe63c930ebda8834395..a04f8c8184b6483a405fad2cfe77138319f13bd8 100644
--- a/media/mtransport/test/Makefile.in
+++ b/media/mtransport/test/Makefile.in
@@ -2,12 +2,6 @@
 # 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/.
-DEFINES += \
-  -DHAVE_STRDUP -DNR_SOCKET_IS_VOID_PTR -DSCTP_DEBUG -DINET
-
-ifneq ($(OS_TARGET),Android)
-DEFINES += -DINET6
-endif
 
 LIBS = \
   $(XPCOM_LIBS) \
@@ -48,36 +42,11 @@ LOCAL_INCLUDES += \
  -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/event \
  $(NULL)
 
-# SCTP DEFINES
-ifeq ($(OS_TARGET),WINNT)
-DEFINES += -D__Userspace_os_Windows=1
-else
-ifeq ($(OS_TARGET),Darwin)
-DEFINES += -D__Userspace_os_Darwin=1
-else
-ifeq ($(OS_TARGET),Linux)
-DEFINES += -D__Userspace_os_Linux=1
-else
-ifeq ($(OS_TARGET),FreeBSD)
-DEFINES += -D__Userspace_os_FreeBSD=1
-else
-#default_fallback; probably doesn't work
-DEFINES += -D__Userspace_os_$(OS_TARGET)=1
-endif
-endif
-endif
-endif
-
 ifneq (,$(filter Darwin DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET)))
 LOCAL_INCLUDES +=  -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/darwin/include
 ifneq (,$(filter DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET)))
 LOCAL_INCLUDES +=  -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/generic/include
 endif
-ifeq ($(OS_TARGET), Darwin)
-DEFINES += \
-  -DGTEST_USE_OWN_TR1_TUPLE=1 \
-  $(NULL)
-endif
 endif
 
 ifeq ($(OS_TARGET), Linux)
@@ -94,7 +63,4 @@ LIBS += \
 CPPFLAGS += \
   $(STLPORT_CPPFLAGS) \
   $(NULL)
-DEFINES += \
-  -DGTEST_USE_OWN_TR1_TUPLE=1 \
-  $(NULL)
 endif
diff --git a/media/mtransport/test/moz.build b/media/mtransport/test/moz.build
index 43945999f9ebab7975f94cf02fc32303beedcbc5..576c80b14c15c60a165f6bd0001bd2497cc627a7 100644
--- a/media/mtransport/test/moz.build
+++ b/media/mtransport/test/moz.build
@@ -24,3 +24,18 @@ if CONFIG['OS_TARGET'] != 'WINNT' and CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gonk':
 
 FAIL_ON_WARNINGS = True
 
+for var in ('HAVE_STRDUP', 'NR_SOCKET_IS_VOID_PTR', 'SCTP_DEBUG', 'INET'):
+    DEFINES[var] = True
+
+if CONFIG['OS_TARGET'] != 'Android':
+    DEFINES['INET6'] = True
+
+# SCTP DEFINES
+if CONFIG['OS_TARGET'] == 'WINNT':
+    DEFINES['__Userspace_os_Windows'] = 1
+else:
+    # Works for Darwin, Linux, Android. Probably doesn't work for others.
+    DEFINES['__Userspace_os_%s' % CONFIG['OS_TARGET']] = 1
+
+if CONFIG['OS_TARGET'] in ('Darwin', 'Android'):
+    DEFINES['GTEST_USE_OWN_TR1_TUPLE'] = 1
diff --git a/media/webrtc/signaling/test/Makefile.in b/media/webrtc/signaling/test/Makefile.in
index 29ac3014daaf20d8c90a11da6c118fd8449d5e56..f67c979dd360bbc3368745bfff0677d2662e32c0 100644
--- a/media/webrtc/signaling/test/Makefile.in
+++ b/media/webrtc/signaling/test/Makefile.in
@@ -33,9 +33,6 @@ LIBS += \
 CPPFLAGS += \
   $(STLPORT_CPPFLAGS) \
   $(NULL)
-DEFINES += \
-  -DGTEST_USE_OWN_TR1_TUPLE=1 \
-   $(NULL)
 endif
 
 ifdef MOZ_NATIVE_JPEG
@@ -108,19 +105,6 @@ LIBS += \
   $(NULL)
 endif
 
-DEFINES += \
-  -DUSE_FAKE_MEDIA_STREAMS \
-  -DUSE_FAKE_PCOBSERVER \
-  -DNR_SOCKET_IS_VOID_PTR \
-  -DHAVE_STRDUP \
-  $(NULL)
-
-ifeq ($(OS_TARGET),Darwin)
-DEFINES += \
-  -DGTEST_USE_OWN_TR1_TUPLE=1 \
-  $(NULL)
-endif
-
 LOCAL_INCLUDES += \
  -I. \
  -I$(topsrcdir)/media/webrtc/trunk/testing/gtest/include \
diff --git a/media/webrtc/signaling/test/moz.build b/media/webrtc/signaling/test/moz.build
index bba340f5b8144efa38ed41a8e98d8bf726ace5e3..1ff5bf13104393acea92e79d8882bcd7b6f3ce5d 100644
--- a/media/webrtc/signaling/test/moz.build
+++ b/media/webrtc/signaling/test/moz.build
@@ -13,3 +13,9 @@ if CONFIG['OS_TARGET'] != 'WINNT' and CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gonk':
     ]
 include('/ipc/chromium/chromium-config.mozbuild')
 
+if CONFIG['OS_TARGET'] in ('Darwin', 'Android'):
+    DEFINES['GTEST_USE_OWN_TR1_TUPLE'] = 1
+
+for var in ('USE_FAKE_MEDIA_STREAMS', 'USE_FAKE_PCOBSERVER',
+            'NR_SOCKET_IS_VOID_PTR', 'HAVE_STRDUP'):
+    DEFINES[var] = True
diff --git a/memory/build/Makefile.in b/memory/build/Makefile.in
index 6e98f1b06d56593ea451567481308d68a3057abf..0b19766f6cda9f847be2ee7b23c7b81749dbec15 100644
--- a/memory/build/Makefile.in
+++ b/memory/build/Makefile.in
@@ -8,8 +8,6 @@ SDK_LIBRARY = $(REAL_LIBRARY)
 DIST_INSTALL = 1
 endif
 
-DEFINES += -DMOZ_MEMORY_IMPL
-
 ifdef MOZ_JEMALLOC3
 LOCAL_INCLUDES += -I../jemalloc/src/include
 ifdef _MSC_VER
@@ -24,8 +22,6 @@ SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/mozje
 endif
 
 ifdef MOZ_REPLACE_MALLOC
-DEFINES += -DMOZ_REPLACE_MALLOC
-
 # The zone allocator for OSX needs some jemalloc internal functions
 ifeq (Darwin,$(OS_TARGET))
 LOCAL_INCLUDES += -I$(topsrcdir)/memory/jemalloc/src/include
diff --git a/memory/build/moz.build b/memory/build/moz.build
index f933a886a9c4d12017dd3e88f7a4d448a5503b85..52ef39a6b6470ff8b76c21916907de1ef724928d 100644
--- a/memory/build/moz.build
+++ b/memory/build/moz.build
@@ -9,11 +9,15 @@ EXPORTS += [
     'mozmemory_wrap.h',
 ]
 
+DEFINES['MOZ_MEMORY_IMPL'] = True
+
 if CONFIG['MOZ_REPLACE_MALLOC']:
     EXPORTS += [
         'malloc_decls.h',
         'replace_malloc.h',
     ]
+    DEFINES['MOZ_REPLACE_MALLOC'] = True
+
 SOURCES += [
     'jemalloc_config.c',
     'mozmemory_wrap.c',
diff --git a/memory/jemalloc/Makefile.in b/memory/jemalloc/Makefile.in
index 5b4aa176f39b20b990e2ada3d83286fb0ada1148..8a7ae7c5cf1314a9115ef0051ec2aa8cf0932211 100644
--- a/memory/jemalloc/Makefile.in
+++ b/memory/jemalloc/Makefile.in
@@ -18,17 +18,8 @@ LOCAL_INCLUDES += \
 
 ifdef _MSC_VER
 LOCAL_INCLUDES += -I$(srcdir)/src/include/msvc_compat
-
-DEFINES += -DDLLEXPORT
-endif
-
-ifeq ($(OS_TARGET),Linux)
-# For mremap
-DEFINES += -D_GNU_SOURCE
 endif
 
 ifdef GNU_CC
 CFLAGS += -std=gnu99
 endif
-
-DEFINES += -Dabort=moz_abort
diff --git a/memory/jemalloc/moz.build b/memory/jemalloc/moz.build
index b40f981b4506e88b5c94bb2e50224f98823e79d4..4d16789b88bb10a69fd0c8e4049d54c2b085b787 100644
--- a/memory/jemalloc/moz.build
+++ b/memory/jemalloc/moz.build
@@ -39,3 +39,12 @@ if CONFIG['OS_TARGET'] == 'Darwin' and not CONFIG['MOZ_REPLACE_MALLOC']:
 LIBRARY_NAME = 'jemalloc'
 
 FORCE_STATIC_LIB = True
+
+if CONFIG['_MSC_VER']:
+    DEFINES['DLLEXPORT'] = True
+
+if CONFIG['OS_TARGET'] == 'Linux':
+    # For mremap
+    DEFINES['_GNU_SOURCE'] = True
+
+DEFINES['abort'] = 'moz_abort'
diff --git a/memory/mozalloc/Makefile.in b/memory/mozalloc/Makefile.in
index 8ccc8ee7e2e57fe640f264f02fce5db7356bf836..c330d97243edb52ce4cf2298f8718c639c056d00 100644
--- a/memory/mozalloc/Makefile.in
+++ b/memory/mozalloc/Makefile.in
@@ -10,11 +10,6 @@ endif
 
 DIST_INSTALL 	= 1
 
-ifeq (,$(filter-out OS2,$(OS_ARCH)))
-# The strndup declaration in string.h is in an ifdef __USE_GNU section
-DEFINES		+= -D_GNU_SOURCE
-endif
-
 ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
 SDK_LIBRARY = $(IMPORT_LIBRARY)
 else
diff --git a/memory/mozalloc/moz.build b/memory/mozalloc/moz.build
index 99cfff9630aa21e8691934a3672f3a3fd5eccc8f..36f41fbd82eb4d044585d18a0e96c21e0c0166ec 100644
--- a/memory/mozalloc/moz.build
+++ b/memory/mozalloc/moz.build
@@ -44,3 +44,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
     FORCE_STATIC_LIB = True
 else:
     FORCE_SHARED_LIB = True
+
+if CONFIG['OS_ARCH'] != 'OS2':
+    # The strndup declaration in string.h is in an ifdef __USE_GNU section
+    DEFINES['_GNU_SOURCE'] = True
diff --git a/memory/mozjemalloc/Makefile.in b/memory/mozjemalloc/Makefile.in
index fb734c3ba542eae0e0e4fee3f92e81063ab696ee..6b45d8eb9ff55445f24fcac318e9c1f48588b7f0 100644
--- a/memory/mozjemalloc/Makefile.in
+++ b/memory/mozjemalloc/Makefile.in
@@ -18,17 +18,3 @@ endif
 endif
 
 LOCAL_INCLUDES += -I$(topsrcdir)/memory/build
-
-# For non release/esr builds, enable (some) fatal jemalloc assertions.  This
-# helps us catch memory errors.
-ifeq (,$(filter release esr,$(MOZ_UPDATE_CHANNEL)))
-DEFINES	+= -DMOZ_JEMALLOC_HARD_ASSERTS
-endif
-
-DEFINES += -Dabort=moz_abort
-
-ifdef MOZ_REPLACE_MALLOC
-DEFINES += -DMOZ_REPLACE_MALLOC
-endif
-
-DEFINES += -DMOZ_JEMALLOC_IMPL
diff --git a/memory/mozjemalloc/moz.build b/memory/mozjemalloc/moz.build
index 32293b9ec431ec8430df22c5ff110e3da0edef51..d1d186ac7319ca610b636d73d608732da4e74207 100644
--- a/memory/mozjemalloc/moz.build
+++ b/memory/mozjemalloc/moz.build
@@ -14,3 +14,15 @@ if not CONFIG['MOZ_JEMALLOC3']:
     ]
     LIBRARY_NAME = 'jemalloc'
     FORCE_STATIC_LIB = True
+
+# For non release/esr builds, enable (some) fatal jemalloc assertions.  This
+# helps us catch memory errors.
+if CONFIG['MOZ_UPDATE_CHANNEL'] not in ('release', 'esr'):
+    DEFINES['MOZ_JEMALLOC_HARD_ASSERTS'] = True
+
+DEFINES['abort'] = 'moz_abort'
+
+if CONFIG['MOZ_REPLACE_MALLOC']:
+    DEFINES['MOZ_REPLACE_MALLOC'] = True
+
+DEFINES['MOZ_JEMALLOC_IMPL'] = True
diff --git a/memory/replace/dmd/Makefile.in b/memory/replace/dmd/Makefile.in
index 409a5290a73ef51cb13de87fa92f2b916192cca6..ea585d81c802ce7ca16b353d11f067983510ccf3 100644
--- a/memory/replace/dmd/Makefile.in
+++ b/memory/replace/dmd/Makefile.in
@@ -3,8 +3,6 @@
 # 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/.
 
-DEFINES 	+= -DMOZ_NO_MOZALLOC
-
 # Disable mozglue.
 WRAP_LDFLAGS 	=
 MOZ_GLUE_LDFLAGS=
diff --git a/memory/replace/dmd/moz.build b/memory/replace/dmd/moz.build
index a684f0e214017104b585baa726ae847acc145fd9..26876696b7dfc6a3f3668f4ba0d0acffc3b39397 100644
--- a/memory/replace/dmd/moz.build
+++ b/memory/replace/dmd/moz.build
@@ -21,3 +21,5 @@ SOURCES += [
 LIBRARY_NAME = 'dmd'
 
 FORCE_SHARED_LIB = True
+
+DEFINES['MOZ_NO_MOZALLOC'] = True
diff --git a/memory/replace/jemalloc/Makefile.in b/memory/replace/jemalloc/Makefile.in
index e15bb50111d0815b1e73ea6a9ab3e32cfcf99641..58d7b57e6398743c5d05a88760935ec360a99dcd 100644
--- a/memory/replace/jemalloc/Makefile.in
+++ b/memory/replace/jemalloc/Makefile.in
@@ -3,7 +3,6 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 SHARED_LIBRARY_LIBS = $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/jemalloc)
-DEFINES += -DMOZ_JEMALLOC3 -DMOZ_REPLACE_JEMALLOC
 LOCAL_INCLUDES += -I../../jemalloc/src/include
 ifdef _MSC_VER
 LOCAL_INCLUDES += -I$(topsrcdir)/memory/jemalloc/src/include/msvc_compat
diff --git a/memory/replace/jemalloc/moz.build b/memory/replace/jemalloc/moz.build
index 6a4da10d2fe04bbe3b236b329e56d9da417a6ecc..f03a587b392ae53a2169dce9f82cad89807195a1 100644
--- a/memory/replace/jemalloc/moz.build
+++ b/memory/replace/jemalloc/moz.build
@@ -21,3 +21,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
 LIBRARY_NAME = 'replace_jemalloc'
 
 FORCE_SHARED_LIB = True
+
+DEFINES['MOZ_JEMALLOC3'] = True
+DEFINES['MOZ_REPLACE_JEMALLOC'] = True
diff --git a/mfbt/tests/Makefile.in b/mfbt/tests/Makefile.in
index e7a4567e7cfb40d5a31fa07e3c2cc509d3693057..77d167b19c0ebb03a3b7f99631f2b0b9b1e8c94e 100644
--- a/mfbt/tests/Makefile.in
+++ b/mfbt/tests/Makefile.in
@@ -13,9 +13,6 @@ MOZ_GLUE_PROGRAM_LDFLAGS=
 MOZ_GLUE_LDFLAGS =
 WRAP_LDFLAGS=
 
-# Since we link directly with MFBT object files, define IMPL_MFBT
-DEFINES += -DIMPL_MFBT
-
 include $(topsrcdir)/config/rules.mk
 
 LIBS= $(call EXPAND_LIBNAME_PATH,mfbt,$(DEPTH)/mfbt)
diff --git a/mfbt/tests/moz.build b/mfbt/tests/moz.build
index cd3791ff23d60b51feaddbc5e82d73640afbe992..3a701d985b7067356565812efb92f5b47e27e9ef 100644
--- a/mfbt/tests/moz.build
+++ b/mfbt/tests/moz.build
@@ -26,3 +26,6 @@ if not CONFIG['MOZ_ASAN']:
     CPP_UNIT_TESTS += [
         'TestPoisonArea.cpp',
     ]
+
+# Since we link directly with MFBT object files, define IMPL_MFBT
+DEFINES['IMPL_MFBT'] = True
diff --git a/mobile/android/app/Makefile.in b/mobile/android/app/Makefile.in
index 92ea3350707f7380df72b99afada1f59a9dde869..3d1399caa633498d748d8ba79873e7592cb41513 100644
--- a/mobile/android/app/Makefile.in
+++ b/mobile/android/app/Makefile.in
@@ -15,7 +15,6 @@ LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
 LOCAL_INCLUDES += -I$(DEPTH)/build
 
-DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
 
 LIBS += \
@@ -30,17 +29,6 @@ NSDISTMODE = copy
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += \
-  -DAPP_NAME=$(MOZ_APP_NAME) \
-  -DAPP_VERSION=$(MOZ_APP_VERSION) \
-  -DMOZ_UPDATER=$(MOZ_UPDATER) \
-  -DMOZ_APP_UA_NAME=$(MOZ_APP_UA_NAME) \
-  $(NULL)
-
-ifdef MOZ_PKG_SPECIAL
-DEFINES += -DMOZ_PKG_SPECIAL=$(MOZ_PKG_SPECIAL)
-endif
-
 APP_BINARY = $(MOZ_APP_NAME)$(BIN_SUFFIX)
 
 libs::
diff --git a/mobile/android/app/moz.build b/mobile/android/app/moz.build
index 63b9bbf004db171a7b0af1690b2342d84b4404e0..0083dc859779b07b78b75775fdc89b48de45b344 100644
--- a/mobile/android/app/moz.build
+++ b/mobile/android/app/moz.build
@@ -7,3 +7,13 @@
 if not CONFIG['LIBXUL_SDK']:
     if CONFIG['OS_TARGET'] != 'Android':
         PROGRAM = CONFIG['MOZ_APP_NAME']
+        DEFINES['XPCOM_GLUE'] = True
+
+for var in ('APP_NAME', 'APP_VERSION'):
+    DEFINES[var] = CONFIG['MOZ_%s' % var]
+
+for var in ('MOZ_UPDATER', 'MOZ_APP_UA_NAME'):
+    DEFINES[var] = CONFIG[var]
+
+if CONFIG['MOZ_PKG_SPECIAL']:
+    DEFINES['MOZ_PKG_SPECIAL'] = CONFIG['MOZ_PKG_SPECIAL']
diff --git a/mobile/android/base/Makefile.in b/mobile/android/base/Makefile.in
index 6ed09e96bab48de6369908f4044a38475e92c573..4067cf6a109875ed2a82b286c79ad5261168086e 100644
--- a/mobile/android/base/Makefile.in
+++ b/mobile/android/base/Makefile.in
@@ -4,10 +4,6 @@
 
 DIST_FILES := package-name.txt.in
 
-ifdef MOZ_ANDROID_ANR_REPORTER
-DEFINES += -DMOZ_ANDROID_ANR_REPORTER=1
-endif
-
 ifneq (,$(findstring -march=armv7,$(OS_CFLAGS)))
 MIN_CPU_VERSION=7
 else
@@ -34,48 +30,15 @@ UA_BUILDID=$(shell echo $(ANDROID_VERSION_CODE) | cut -c1-8)
 
 MOZ_BUILD_TIMESTAMP=$(shell echo `$(PYTHON) $(topsrcdir)/toolkit/xre/make-platformini.py --print-timestamp`)
 
-ifdef MOZ_UPDATER
-DEFINES +=  -DMOZ_UPDATER=$(MOZ_UPDATER)
-endif
-
-# Mangle our package name to avoid Bug 750548.
 DEFINES += \
-  -DMANGLED_ANDROID_PACKAGE_NAME=$(subst fennec,f3nn3c,$(ANDROID_PACKAGE_NAME)) \
-  -DANDROID_PACKAGE_NAME=$(ANDROID_PACKAGE_NAME) \
-  -DANDROID_CPU_ARCH=$(ANDROID_CPU_ARCH) \
   -DANDROID_VERSION_CODE=$(ANDROID_VERSION_CODE) \
-  -DCPU_ARCH=$(CPU_ARCH) \
-  -DGRE_MILESTONE=$(GRE_MILESTONE) \
-  -DMOZILLA_OFFICIAL=$(MOZILLA_OFFICIAL) \
   -DMOZ_ANDROID_SHARED_ID="$(MOZ_ANDROID_SHARED_ID)" \
   -DMOZ_ANDROID_SHARED_ACCOUNT_TYPE="$(MOZ_ANDROID_SHARED_ACCOUNT_TYPE)" \
-  -DMOZ_APP_ABI=$(TARGET_XPCOM_ABI) \
-  -DMOZ_APP_BASENAME=$(MOZ_APP_BASENAME) \
   -DMOZ_APP_BUILDID=$(MOZ_APP_BUILDID) \
-  -DMOZ_APP_DISPLAYNAME="$(MOZ_APP_DISPLAYNAME)" \
-  -DMOZ_APP_ID=$(MOZ_APP_ID) \
-  -DMOZ_APP_NAME=$(MOZ_APP_NAME) \
-  -DMOZ_APP_VENDOR=$(MOZ_APP_VENDOR) \
-  -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
   -DMOZ_BUILD_TIMESTAMP=$(MOZ_BUILD_TIMESTAMP) \
-  -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME) \
-  -DMOZ_CRASHREPORTER=$(MOZ_CRASHREPORTER) \
-  -DMOZ_MIN_CPU_VERSION=$(MIN_CPU_VERSION) \
-  -DMOZ_UPDATE_CHANNEL=$(MOZ_UPDATE_CHANNEL) \
-  -DOMNIJAR_NAME=$(OMNIJAR_NAME) \
-  -DOS_TARGET=$(OS_TARGET) \
-  -DTARGET_XPCOM_ABI=$(TARGET_XPCOM_ABI) \
   -DUA_BUILDID=$(UA_BUILDID) \
   $(NULL)
 
-ifdef MOZ_PKG_SPECIAL
-DEFINES += -DMOZ_PKG_SPECIAL=$(MOZ_PKG_SPECIAL)
-endif
-
-ifdef MOZ_LINKER_EXTRACT
-DEFINES += -DMOZ_LINKER_EXTRACT=1
-endif
-
 GARBAGE += \
   AndroidManifest.xml  \
   classes.dex  \
diff --git a/mobile/android/base/moz.build b/mobile/android/base/moz.build
index 944eda8e96393f2788b912a58a06fdd5cd8149fe..a6d8a9387c83d5592371ed51225d9369860ad7a0 100644
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -984,3 +984,28 @@ if CONFIG['MOZ_CRASHREPORTER']:
         'resources/drawable-mdpi/crash_reporter.png',
         'resources/layout/crash_reporter.xml',
     ]
+
+for var in ('MOZ_ANDROID_ANR_REPORTER', 'MOZ_LINKER_EXTRACT'):
+    if CONFIG[var]:
+        DEFINES[var] = 1
+
+for var in ('MOZ_UPDATER', 'MOZ_PKG_SPECIAL'):
+    if CONFIG[var]:
+        DEFINES[var] = CONFIG[var]
+
+for var in ('ANDROID_PACKAGE_NAME', 'ANDROID_CPU_ARCH', 'CPU_ARCH',
+            'GRE_MILESTONE', 'MOZILLA_OFFICIAL', 'MOZ_APP_BASENAME',
+            'MOZ_APP_DISPLAYNAME', 'MOZ_APP_ID', 'MOZ_APP_NAME',
+            'MOZ_APP_VENDOR', 'MOZ_APP_VERSION', 'MOZ_CHILD_PROCESS_NAME',
+            'MOZ_CRASHREPORTER', 'MOZ_UPDATE_CHANNEL', 'OMNIJAR_NAME',
+            'OS_TARGET', 'TARGET_XPCOM_ABI'):
+    DEFINES[var] = CONFIG[var]
+
+# Mangle our package name to avoid Bug 750548.
+DEFINES['MANGLED_ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME'].replace('fennec', 'f3nn3c')
+DEFINES['MOZ_APP_ABI'] = CONFIG['TARGET_XPCOM_ABI']
+
+if '-march=armv7' in CONFIG['OS_CFLAGS']:
+    DEFINES['MOZ_MIN_CPU_VERSION'] = 7
+else:
+    DEFINES['MOZ_MIN_CPU_VERSION'] = 5
diff --git a/mobile/android/chrome/Makefile.in b/mobile/android/chrome/Makefile.in
deleted file mode 100644
index 6bfb40097c75f9c9de3cdc1999ba813bab0a8b59..0000000000000000000000000000000000000000
--- a/mobile/android/chrome/Makefile.in
+++ /dev/null
@@ -1,9 +0,0 @@
-# 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/.
-
-DEFINES += -DAB_CD=$(MOZ_UI_LOCALE) \
-           -DPACKAGE=browser \
-           -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
-           -DANDROID_PACKAGE_NAME=$(ANDROID_PACKAGE_NAME) \
-           $(NULL)
diff --git a/mobile/android/chrome/moz.build b/mobile/android/chrome/moz.build
index 895d11993cfbb162d47a99608e92843c5a06e999..e7e76e41e6520759ad1ed2aa40a5db352e76a631 100644
--- a/mobile/android/chrome/moz.build
+++ b/mobile/android/chrome/moz.build
@@ -4,3 +4,7 @@
 # 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/.
 
+DEFINES['AB_CD'] = CONFIG['MOZ_UI_LOCALE']
+DEFINES['PACKAGE'] = 'browser'
+DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
+DEFINES['ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME']
diff --git a/mobile/android/components/Makefile.in b/mobile/android/components/Makefile.in
deleted file mode 100644
index 5f4a13ec49c8aad5d6e48365c6f55bd394a09126..0000000000000000000000000000000000000000
--- a/mobile/android/components/Makefile.in
+++ /dev/null
@@ -1,7 +0,0 @@
-# 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/.
-
-DEFINES += \
-  -DANDROID_PACKAGE_NAME=$(ANDROID_PACKAGE_NAME) \
-  $(NULL)
diff --git a/mobile/android/components/moz.build b/mobile/android/components/moz.build
index c0804483491e4c6a7717ed452705b9dbcde1acf6..bd8fbc327ce9d074b3d49364dbf6bc010d3d60e2 100644
--- a/mobile/android/components/moz.build
+++ b/mobile/android/components/moz.build
@@ -36,3 +36,4 @@ EXTRA_PP_COMPONENTS += [
     'Sidebar.js',
 ]
 
+DEFINES['ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME']
diff --git a/mobile/android/geckoview_library/Makefile.in b/mobile/android/geckoview_library/Makefile.in
index ebc4521b6bd375eaf9503a66cf5dd99139951388..0b2785ba33e17335a7ae2eb3538b42dcf5203395 100644
--- a/mobile/android/geckoview_library/Makefile.in
+++ b/mobile/android/geckoview_library/Makefile.in
@@ -30,8 +30,6 @@ GARBAGE_DIRS = \
   res \
   $(NULL)
 
-DEFINES += -DANDROID_SDK=$(ANDROID_SDK)
-
 include $(topsrcdir)/config/rules.mk
 
 package: $(properties_deps)
diff --git a/mobile/android/geckoview_library/moz.build b/mobile/android/geckoview_library/moz.build
index c271ec3908ce6743183cc29f671f4f4efc501505..b4a39509e51dfd6fea2d8f67f847b3de0cd5787b 100644
--- a/mobile/android/geckoview_library/moz.build
+++ b/mobile/android/geckoview_library/moz.build
@@ -3,3 +3,5 @@
 # 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/.
+
+DEFINES['ANDROID_SDK'] = CONFIG['ANDROID_SDK']
diff --git a/modules/libbz2/src/Makefile.in b/modules/libbz2/src/Makefile.in
index b656a822c8846371c1838e94e0aac63b87f116e6..f6ec7452c78b8707cf5ae175a692af8377f3190c 100644
--- a/modules/libbz2/src/Makefile.in
+++ b/modules/libbz2/src/Makefile.in
@@ -8,12 +8,6 @@ ifeq ($(OS_ARCH),WINNT)
 USE_STATIC_LIBS = 1
 endif
 
-# This is defined by the bzip2-1.0.3 Makefile.  It appears to be used to
-# configure GLIBC to support large files.  This isn't something we care about
-# at this stage, since we're only interested in the streaming API, but we
-# define it here anyways for consistency.
-DEFINES	+= -D_FILE_OFFSET_BITS=64
-
 include $(topsrcdir)/config/rules.mk
 
 # The intermediate (.ii/.s) files for host and target can have the same name...
diff --git a/modules/libbz2/src/moz.build b/modules/libbz2/src/moz.build
index 396f6aa16e87c1dded063eb0430c7b5b4c864508..939ff7b7469e917fb1b4a7f03f2acf53ba8aaeaa 100644
--- a/modules/libbz2/src/moz.build
+++ b/modules/libbz2/src/moz.build
@@ -35,3 +35,9 @@ UNIFIED_SOURCES += [
 ]
 
 FORCE_STATIC_LIB = True
+
+# This is defined by the bzip2-1.0.3 Makefile.  It appears to be used to
+# configure GLIBC to support large files.  This isn't something we care about
+# at this stage, since we're only interested in the streaming API, but we
+# define it here anyways for consistency.
+DEFINES['_FILE_OFFSET_BITS'] = 64
diff --git a/modules/libmar/tests/Makefile.in b/modules/libmar/tests/Makefile.in
index d3779410a559a3f1d4e057695eb24ef89f5f53e8..7d24d6cdb7fc39d720599df80bf1950c2ae1267f 100644
--- a/modules/libmar/tests/Makefile.in
+++ b/modules/libmar/tests/Makefile.in
@@ -4,8 +4,6 @@
 
 TESTROOT = $(abspath $(DEPTH))/_tests/xpcshell/$(relativesrcdir)
 
-DEFINES += -DBIN_SUFFIX=$(BIN_SUFFIX)
-
 include $(topsrcdir)/config/rules.mk
 
 libs:: unit/head_libmar.js.in
diff --git a/modules/libmar/tests/moz.build b/modules/libmar/tests/moz.build
index 191c90f0b92dea4b949925bff951bf50ccf64134..02cb19df69be4ef60f43c45ca4c5840b51ae7e03 100644
--- a/modules/libmar/tests/moz.build
+++ b/modules/libmar/tests/moz.build
@@ -5,3 +5,5 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
+
+DEFINES['BIN_SUFFIX'] = CONFIG['BIN_SUFFIX']
diff --git a/modules/libmar/tool/Makefile.in b/modules/libmar/tool/Makefile.in
index 2ba546f5af180e675863c678e12b3a4b7a2770e5..0eab1112396d7d52acd8981437f4b9b0d3a6d344 100644
--- a/modules/libmar/tool/Makefile.in
+++ b/modules/libmar/tool/Makefile.in
@@ -16,17 +16,6 @@ endif
 MOZ_GLUE_LDFLAGS =
 MOZ_GLUE_PROGRAM_LDFLAGS =
 
-DEFINES += \
-  -DMAR_CHANNEL_ID='"$(MAR_CHANNEL_ID)"' \
-  -DMOZ_APP_VERSION='"$(MOZ_APP_VERSION)"' \
-  $(NULL)
-
-ifndef MOZ_ENABLE_SIGNMAR
-DEFINES += \
-  -DNO_SIGN_VERIFY \
-  $(NULL)
-endif
-
 HOST_CFLAGS += \
   -DNO_SIGN_VERIFY \
   $(DEFINES) \
diff --git a/modules/libmar/tool/moz.build b/modules/libmar/tool/moz.build
index af2ad4da634f120f3b1fd03579dec3594e71583a..dcdb2caa408d9a73ee44eb4b0b1d7927e48c1b8c 100644
--- a/modules/libmar/tool/moz.build
+++ b/modules/libmar/tool/moz.build
@@ -13,3 +13,9 @@ SOURCES = [
 HOST_SOURCES += SOURCES
 
 HOST_PROGRAM = 'mar'
+
+for var in ('MAR_CHANNEL_ID', 'MOZ_APP_VERSION'):
+    DEFINES[var] = '"%s"' % CONFIG[var]
+
+if not CONFIG['MOZ_ENABLE_SIGNMAR']:
+    DEFINES['NO_SIGN_VERIFY'] = True
diff --git a/modules/libmar/verify/Makefile.in b/modules/libmar/verify/Makefile.in
index 8717e2896e5b3ec531e40e83ee2418b52ed772ac..5940a28bd80beb811676a64fa2fda281b0cb92fa 100644
--- a/modules/libmar/verify/Makefile.in
+++ b/modules/libmar/verify/Makefile.in
@@ -10,7 +10,6 @@ endif
 LOCAL_INCLUDES += -I$(srcdir)/../src
 
 ifneq ($(OS_ARCH),WINNT)
-DEFINES += -DMAR_NSS
 LOCAL_INCLUDES += -I$(srcdir)/../sign
 endif
 
diff --git a/modules/libmar/verify/moz.build b/modules/libmar/verify/moz.build
index 0739e57feda6b8cdd7eaaac18d52fc2e485a4f27..346da9844105c380c4fe7aeab9d09b4c24e2fa2f 100644
--- a/modules/libmar/verify/moz.build
+++ b/modules/libmar/verify/moz.build
@@ -12,3 +12,6 @@ SOURCES += [
 ]
 
 FORCE_STATIC_LIB = True
+
+if CONFIG['OS_ARCH'] != 'WINNT':
+    DEFINES['MAR_NSS'] = True
diff --git a/modules/libpref/src/Makefile.in b/modules/libpref/src/Makefile.in
index 89969bbb070ab9175fa01b5dbefc7dbea034e2f1..45ca3fa21eb7880cbc24b6efbdd6a5c18471a9fb 100644
--- a/modules/libpref/src/Makefile.in
+++ b/modules/libpref/src/Makefile.in
@@ -3,10 +3,6 @@
 # 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/.
 
-DEFINES += -DOS_ARCH=$(OS_ARCH) \
-           -DMOZ_WIDGET_TOOLKIT=$(MOZ_WIDGET_TOOLKIT) \
-           $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 GARBAGE		+= $(addprefix $(DIST)/bin/defaults/pref/, \
diff --git a/modules/libpref/src/moz.build b/modules/libpref/src/moz.build
index 8e8c9b8ca4ba1c2a3b6c8ee2971dcd276bcfc3ac..ee85b27640d29c18489e8e2a516086ab89607bcb 100644
--- a/modules/libpref/src/moz.build
+++ b/modules/libpref/src/moz.build
@@ -17,3 +17,6 @@ MSVC_ENABLE_PGO = True
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['OS_ARCH'] = CONFIG['OS_ARCH']
+DEFINES['MOZ_WIDGET_TOOLKIT'] = CONFIG['MOZ_WIDGET_TOOLKIT']
diff --git a/mozglue/android/Makefile.in b/mozglue/android/Makefile.in
index 60aa56ee7639a7b6a8b453d623fb078f3770d0b1..9dfb5497523a5108a9cd9080805ce159e7fbef90 100644
--- a/mozglue/android/Makefile.in
+++ b/mozglue/android/Makefile.in
@@ -3,13 +3,6 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 STL_FLAGS=
-DEFINES += \
-  -DANDROID_PACKAGE_NAME='"$(ANDROID_PACKAGE_NAME)"' \
-  $(NULL)
-
-ifdef MOZ_FOLD_LIBS
-DEFINES += -DMOZ_FOLD_LIBS
-endif
 
 LOCAL_INCLUDES += -I$(DEPTH)/build
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
diff --git a/mozglue/android/moz.build b/mozglue/android/moz.build
index b4c46e2596fdc4e4b94b7a0ec069f328183c9504..0eef0b4366d05ea818fccb2b9c5e887bf32540b3 100644
--- a/mozglue/android/moz.build
+++ b/mozglue/android/moz.build
@@ -18,3 +18,8 @@ SOURCES += [
 FAIL_ON_WARNINGS = True
 
 FINAL_LIBRARY = 'mozglue'
+
+DEFINES['ANDROID_PACKAGE_NAME'] = '"%s"' % CONFIG['ANDROID_PACKAGE_NAME']
+
+if CONFIG['MOZ_FOLD_LIBS']:
+    DEFINES['MOZ_FOLD_LIBS'] = True
diff --git a/mozglue/build/Makefile.in b/mozglue/build/Makefile.in
index 916fe19f4800534d0201350790394b529c4be077..2381fc57e3e28afbd46ae2c71e282c0ab94f6d02 100644
--- a/mozglue/build/Makefile.in
+++ b/mozglue/build/Makefile.in
@@ -24,8 +24,6 @@ endif
  
 MOZ_GLUE_LDFLAGS = # Don't link against ourselves
 
-DEFINES += -DIMPL_MFBT
-
 ifeq (WINNT,$(OS_TARGET))
 DEFFILE = mozglue.def
 
diff --git a/mozglue/build/moz.build b/mozglue/build/moz.build
index 696d82dec1fa1bb1dc1e6173876e5460ceaf7a4d..dc6d8abb10fdf5e6ac1e4f0b81e005522c30e388 100644
--- a/mozglue/build/moz.build
+++ b/mozglue/build/moz.build
@@ -68,3 +68,5 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
     SOURCES += [
         'cpuacct.c',
     ]
+
+DEFINES['IMPL_MFBT'] = True
diff --git a/mozglue/linker/Makefile.in b/mozglue/linker/Makefile.in
index f44f1d3c6598776e8f57a73d8882756794b0abcc..2e1e372d223267f19adf2f11a5896a0dbd33ef43 100644
--- a/mozglue/linker/Makefile.in
+++ b/mozglue/linker/Makefile.in
@@ -6,8 +6,6 @@ STL_FLAGS =
 
 HOST_LIBS = -lz
 
-DEFINES += -DIMPL_MFBT
-
 include $(topsrcdir)/config/rules.mk
 
 ifeq (arm,$(TARGET_CPU))
diff --git a/mozglue/linker/moz.build b/mozglue/linker/moz.build
index ee9b40c76f17e7fca57b8450d8eb80a9324c57bc..d953c9b400ae964c7c73f9c677def42e7679b3f6 100644
--- a/mozglue/linker/moz.build
+++ b/mozglue/linker/moz.build
@@ -22,3 +22,5 @@ HOST_SOURCES += [
 HOST_PROGRAM = 'szip'
 
 FINAL_LIBRARY = 'mozglue'
+
+DEFINES['IMPL_MFBT'] = True
diff --git a/netwerk/protocol/rtsp/Makefile.in b/netwerk/protocol/rtsp/Makefile.in
index a5a297a724f004c33c305b8308f37c2786247ad9..c0ecb0c2b5bda79b3080cdcd58971ccc47d0fbdc 100644
--- a/netwerk/protocol/rtsp/Makefile.in
+++ b/netwerk/protocol/rtsp/Makefile.in
@@ -28,4 +28,4 @@ endif
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DIMPL_NS_NET -Wno-multichar -DFORCE_PR_LOG
+DEFINES += -Wno-multichar
diff --git a/netwerk/protocol/rtsp/moz.build b/netwerk/protocol/rtsp/moz.build
index fc61b2b90d64ef019ba678341262ce6022b9c96a..9aa0b863ad97f0e6226aafe82451d54a55487ca6 100644
--- a/netwerk/protocol/rtsp/moz.build
+++ b/netwerk/protocol/rtsp/moz.build
@@ -50,3 +50,6 @@ MSVC_ENABLE_PGO = True
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'necko'
+
+for var in ('IMPL_NS_NET', 'FORCE_PR_LOG'):
+    DEFINES[var] = True
diff --git a/netwerk/sctp/datachannel/Makefile.in b/netwerk/sctp/datachannel/Makefile.in
index b3bed875c749f0f1d7d4ae481de7688e7ebc3e83..ce4c7cc63495690292a6c3fbaedc517cc1cf09c9 100644
--- a/netwerk/sctp/datachannel/Makefile.in
+++ b/netwerk/sctp/datachannel/Makefile.in
@@ -11,21 +11,3 @@ LOCAL_INCLUDES = \
   -I$(topsrcdir)/media/webrtc/trunk/third_party/libjingle/source \
   -I$(topsrcdir)/media/mtransport \
   $(NULL)
-
-DEFINES = \
-  -DINET=1 \
-  -DSCTP_DEBUG=1 \
-  $(NULL)
-
-ifneq ($(OS_TARGET),Android)
-DEFINES += -DINET6=1
-endif
-
-ifeq ($(OS_TARGET),WINNT)
-DEFINES += -D__Userspace_os_Windows=1
-else
-DEFINES += -D__Userspace_os_$(OS_TARGET)=1
-endif
-
-
-include $(topsrcdir)/config/rules.mk
diff --git a/netwerk/sctp/datachannel/moz.build b/netwerk/sctp/datachannel/moz.build
index 37deadcddccd19a1dcb4d72e994c585e7f105bbe..fdf48f468b5023a9f1541498e5a003ece6b19922 100644
--- a/netwerk/sctp/datachannel/moz.build
+++ b/netwerk/sctp/datachannel/moz.build
@@ -21,3 +21,14 @@ FAIL_ON_WARNINGS = True
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'necko'
+
+DEFINES['INET'] = 1
+DEFINES['SCTP_DEBUG'] = 1
+
+if CONFIG['OS_TARGET'] != 'Android':
+    DEFINES['INET6'] = 1
+
+if CONFIG['OS_TARGET'] == 'WINNT':
+    DEFINES['__Userspace_os_Windows'] = 1
+else:
+    DEFINES['__Userspace_os_%s' % CONFIG['OS_TARGET']] = 1
diff --git a/netwerk/sctp/src/Makefile.in b/netwerk/sctp/src/Makefile.in
index eff7c45ee4063d45a3099430a64f45f9c3f91201..96724ed7c85f0564e255105f8ba8624b3a0c0c95 100644
--- a/netwerk/sctp/src/Makefile.in
+++ b/netwerk/sctp/src/Makefile.in
@@ -18,64 +18,28 @@ LOCAL_INCLUDES = \
   -I$(topsrcdir)/xpcom/ds \
   $(NULL)
 
-# Android NDK r5c, used on the builders at the time of this writing, doesn't
-# have the headers we need for IPv6
-ifeq ($(OS_TARGET),Android)
-  IPV6_DEFINE=
-else
-  IPV6_DEFINE=-DINET6=1
-endif
-
-DEFINES = \
-  -DSCTP_SIMPLE_ALLOCATOR=1 \
-  -DUSE_SCTP_SHA1=1 \
-  -DSCTP_PROCESS_LEVEL_LOCKS=1 \
-  -D__Userspace__=1 \
-  -DINET=1 \
-  $(IPV6_DEFINE) \
-  -DCALLBACK_API=1 \
-  -DSCTP_DEBUG=1 \
-  $(NULL)
-
-ifeq ($(OS_TARGET),WINNT)
-DEFINES += \
-  -D__Userspace_os_Windows=1 \
-  -D_LIB=1 \
-  $(NULL)
-else
 ifeq ($(OS_TARGET),Darwin)
 DEFINES += \
-  -D__Userspace_os_Darwin=1 \
-  -D__APPLE_USE_RFC_2292=1 \
   -U__APPLE__ \
   $(NULL)
 else
-ifeq (,$(filter-out Linux Android,$(OS_TARGET)))
-DEFINES += -D__Userspace_os_Linux=1
-# to make sure that in6_pktinfo gets defined on all distros
-DEFINES += -D_GNU_SOURCE
-else
 ifeq ($(OS_TARGET),FreeBSD)
 DEFINES += \
-  -D__Userspace_os_FreeBSD=1 \
   -U__FreeBSD__ \
   $(NULL)
 else
 ifeq ($(OS_TARGET),NetBSD)
 DEFINES += \
-  -D__Userspace_os_NetBSD=1 \
   -U__NetBSD__ \
   $(NULL)
 else
 ifeq ($(OS_TARGET),OpenBSD)
 DEFINES += \
-  -D__Userspace_os_OpenBSD=1 \
   -U__OpenBSD__ \
   $(NULL)
 else
 ifeq ($(OS_TARGET),DragonFly)
 DEFINES += \
-  -D__Userspace_os_DragonFly=1 \
   -U__DragonFly__ \
   $(NULL)
 else
@@ -85,8 +49,6 @@ endif
 endif
 endif
 endif
-endif
-endif
 
 include $(topsrcdir)/config/rules.mk
 
diff --git a/netwerk/sctp/src/moz.build b/netwerk/sctp/src/moz.build
index 54ed0fbc0586520b7a64b06b2d8b67bcbf876aa0..f25b9a5bd6bc96b1329c75b1773f810582d35a78 100644
--- a/netwerk/sctp/src/moz.build
+++ b/netwerk/sctp/src/moz.build
@@ -48,3 +48,28 @@ LIBRARY_NAME = 'nksctp_s'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'necko'
+
+for var in ('SCTP_SIMPLE_ALLOCATOR', 'USE_SCTP_SHA1',
+            'SCTP_PROCESS_LEVEL_LOCKS', '__Userspace__', 'INET',
+            'CALLBACK_API', 'SCTP_DEBUG'):
+    DEFINES[var] = 1
+
+# Android NDK r5c, used on the builders at the time of this writing, doesn't
+# have the headers we need for IPv6
+if CONFIG['OS_TARGET'] != 'Android':
+    DEFINES['INET6'] = 1
+
+if CONFIG['OS_TARGET'] == 'WINNT':
+    DEFINES['__Userspace_os_Windows'] = 1
+    DEFINES['_LIB'] = 1
+elif CONFIG['OS_TARGET'] == 'Android':
+    DEFINES['__Userspace_os_Linux'] = 1
+else:
+    DEFINES['__Userspace_os_%s' % CONFIG['OS_TARGET']] = 1
+
+if CONFIG['OS_TARGET'] == 'Darwin':
+    DEFINES['__APPLE_USE_RFC_2292'] = 1
+
+if CONFIG['OS_TARGET'] in ('Linux', 'Android'):
+    # to make sure that in6_pktinfo gets defined on all distros
+    DEFINES['_GNU_SOURCE'] = True
diff --git a/netwerk/srtp/src/Makefile.in b/netwerk/srtp/src/Makefile.in
index fe27a1aad5c19a062c56682357ab6f846091ef29..6aa35d9db585873790ac6c6c6c697fae5dd648f4 100644
--- a/netwerk/srtp/src/Makefile.in
+++ b/netwerk/srtp/src/Makefile.in
@@ -20,49 +20,6 @@ LOCAL_INCLUDES = \
   -I$(srcdir)/crypto/include \
   $(NULL)
 
-DEFINES += \
-  -DHAVE_STDLIB_H=1 \
-  -DHAVE_UINT8_T=1 \
-  -DHAVE_UINT16_T=1 \
-  -DHAVE_UINT32_T=1 \
-  -DHAVE_UINT64_T=1 \
-  $(NULL)
-
-# We know stdint.h will define uint8/16/32/64_t, so we don't need
-# to define SIZEOF_UNSIGNED_LONG/SIZEOF_UNSIGNED_LONG_LONG
-
-ifeq ($(CPU_ARCH),arm)
-
-# XXX while arm is not a CISC architecture, the code guarded by CPU_RISC makes
-# (at least) the AES ciphers fail their self-tests on ARM, so for now we're
-# falling back to the (presumably) slower-on-this-architecture but working
-# code path.  https://bugzilla.mozilla.org/show_bug.cgi?id=822380 has been filed
-# to make the right and more performant fix and push it back upstream.
-
-DEFINES += -DCPU_CISC=1
-
-else ifeq ($(CPU_ARCH),x86)
-DEFINES += \
-  -DCPU_CISC=1 \
-  -DHAVE_X86 \
-  $(NULL)
-else ifeq ($(CPU_ARCH),x86_64)
-DEFINES += \
-  -DCPU_CISC=1 \
-  -DHAVE_X86 \
-  $(NULL)
-else
-# best guess
-DEFINES += -DCPU_RISC=1
-endif
-
-ifeq ($(OS_TARGET),WINNT)
-DEFINES += \
-  -DHAVE_WINSOCK2_H=1 \
-  -Dinline=__inline \
-  $(NULL)
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 ifdef GNU_CC
diff --git a/netwerk/srtp/src/moz.build b/netwerk/srtp/src/moz.build
index 99e1adc0c3c4f607cd93981fa69369c90f382069..966bcbc38fe469aedcd2386f2cb8758811beca25 100644
--- a/netwerk/srtp/src/moz.build
+++ b/netwerk/srtp/src/moz.build
@@ -38,3 +38,27 @@ LIBRARY_NAME = 'nksrtp_s'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'necko'
+
+# We know stdint.h will define uint8/16/32/64_t, so we don't need
+# to define SIZEOF_UNSIGNED_LONG/SIZEOF_UNSIGNED_LONG_LONG
+for var in ('HAVE_STDLIB_H', 'HAVE_UINT8_T', 'HAVE_UINT16_T',
+            'HAVE_UINT32_T', 'HAVE_UINT64_T'):
+    DEFINES[var] = 1
+
+# XXX while arm is not a CISC architecture, the code guarded by CPU_RISC makes
+# (at least) the AES ciphers fail their self-tests on ARM, so for now we're
+# falling back to the (presumably) slower-on-this-architecture but working
+# code path.  https://bugzilla.mozilla.org/show_bug.cgi?id=822380 has been filed
+# to make the right and more performant fix and push it back upstream.
+if CONFIG['CPU_ARCH'] in ('arm', 'x86', 'x86_64'):
+    DEFINES['CPU_CISC'] = 1
+else:
+    # best guess
+    DEFINES['CPU_RISC'] = 1
+
+if  CONFIG['CPU_ARCH'] in ('x86', 'x86_64'):
+    DEFINES['HAVE_X86'] = True
+
+if CONFIG['OS_TARGET'] == 'WINNT':
+    DEFINES['HAVE_WINSOCK2_H'] = True
+    DEFINES['inline'] = '__inline'
diff --git a/netwerk/streamconv/test/Makefile.in b/netwerk/streamconv/test/Makefile.in
index 8a395e5af006b3c0d2fea58386b74f2fefa712a4..a9276fcdc2cef1e9753847a90b9b6914030fee5e 100644
--- a/netwerk/streamconv/test/Makefile.in
+++ b/netwerk/streamconv/test/Makefile.in
@@ -17,10 +17,4 @@ LDFLAGS		+= -mconsole
 else
 LDFLAGS		+= -SUBSYSTEM:CONSOLE
 endif
-ifdef MOZ_NO_DEBUG_RTL
-DEFINES		+= -MOZ_NO_DEBUG_RTL
-endif
-ifdef NGPREFS
-DEFINES		+= -DNGPREFS
-endif
 endif # WINNT
diff --git a/netwerk/streamconv/test/moz.build b/netwerk/streamconv/test/moz.build
index 988026eb8c3c6b30f4d666042cf14326cb496e72..2f65f1770eb620c48c814b234f9cb15a536cf870 100644
--- a/netwerk/streamconv/test/moz.build
+++ b/netwerk/streamconv/test/moz.build
@@ -13,3 +13,6 @@ UNIFIED_SOURCES += [
 
 FAIL_ON_WARNINGS = True
 
+if CONFIG['OS_ARCH'] == 'WINNT':
+    for var in ('MOZ_NO_DEBUG_RTL', 'NGPREFS'):
+        DEFINES[var] = True
diff --git a/other-licenses/skia-npapi/Makefile.in b/other-licenses/skia-npapi/Makefile.in
index c03e9ca9bf29bb7f05a7896d532df6d7c0561983..c0dbed78851f0e46384c5491bd1fab604d3e364b 100644
--- a/other-licenses/skia-npapi/Makefile.in
+++ b/other-licenses/skia-npapi/Makefile.in
@@ -2,10 +2,6 @@
 # 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/.
 
-DEFINES += \
-  -DSK_BUILD_FOR_ANDROID_NDK \
-  $(NULL)
-
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/dom/plugins/base \
   -I$(topsrcdir)/dom/plugins/base/android \
diff --git a/other-licenses/skia-npapi/moz.build b/other-licenses/skia-npapi/moz.build
index ec2b780e6df12f34859901c70ba4a2d6b66790b1..be49c474f10032e3b08cf6c286e3d45b2de8fec5 100644
--- a/other-licenses/skia-npapi/moz.build
+++ b/other-licenses/skia-npapi/moz.build
@@ -17,3 +17,5 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['SK_BUILD_FOR_ANDROID_NDK'] = True
diff --git a/parser/expat/lib/Makefile.in b/parser/expat/lib/Makefile.in
deleted file mode 100644
index 84a0aadf0a8b2356c536e1aa9bfade9b6d24a12e..0000000000000000000000000000000000000000
--- a/parser/expat/lib/Makefile.in
+++ /dev/null
@@ -1,7 +0,0 @@
-# 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 $(topsrcdir)/config/rules.mk
-
-DEFINES += -DHAVE_EXPAT_CONFIG_H
diff --git a/parser/expat/lib/moz.build b/parser/expat/lib/moz.build
index 326fdd892f7aa4998b66da89e8355a3c61956b47..b9cdebf09a162784eb91f49aff9b1c2e492c89ac 100644
--- a/parser/expat/lib/moz.build
+++ b/parser/expat/lib/moz.build
@@ -22,3 +22,5 @@ FINAL_LIBRARY = 'gkmedias'
 GENERATED_FILES = [
     'moz_extensions.c',
 ]
+
+DEFINES['HAVE_EXPAT_CONFIG_H'] = True
diff --git a/parser/html/Makefile.in b/parser/html/Makefile.in
index 37e8b4518da06b311aa0b6e0a9305bddbccfa408..2ed823acf9d68f5be78f5c01316125a6bf502b36 100644
--- a/parser/html/Makefile.in
+++ b/parser/html/Makefile.in
@@ -7,5 +7,3 @@ include $(topsrcdir)/config/rules.mk
 INCLUDES	+= \
 		-I$(srcdir)/../../content/base/src \
 		$(NULL)
-
-#DEFINES		+= -DENABLE_VOID_MENUITEM
diff --git a/parser/html/moz.build b/parser/html/moz.build
index c69bc901d11f604c620798e67bad176fbe909bd6..aee4666e220603c06c2402a24dee8d53e2596055 100644
--- a/parser/html/moz.build
+++ b/parser/html/moz.build
@@ -86,3 +86,5 @@ UNIFIED_SOURCES += [
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'gklayout'
+
+# DEFINES['ENABLE_VOID_MENUITEM'] = True
diff --git a/profile/dirserviceprovider/standalone/Makefile.in b/profile/dirserviceprovider/standalone/Makefile.in
index b0b6b08c3a49bc200d8187f71567d8ce5f907e41..7af9f387cd0a8eca6476452022cab215853a28da 100644
--- a/profile/dirserviceprovider/standalone/Makefile.in
+++ b/profile/dirserviceprovider/standalone/Makefile.in
@@ -6,5 +6,4 @@ include $(topsrcdir)/config/rules.mk
 
 LOCAL_INCLUDES = -I$(srcdir)/../src
 
-DEFINES += -DXPCOM_GLUE
 STL_FLAGS =
diff --git a/profile/dirserviceprovider/standalone/moz.build b/profile/dirserviceprovider/standalone/moz.build
index 124e3b2b3ff9c172e43a0d7a42445d84c9f35cfe..25a3ebd065783c73de0a0de7e494f6ff4ed409e1 100644
--- a/profile/dirserviceprovider/standalone/moz.build
+++ b/profile/dirserviceprovider/standalone/moz.build
@@ -11,3 +11,5 @@ UNIFIED_SOURCES += modules_profiledirservice_src_csrcs
 LIBRARY_NAME = 'profdirserviceprovidersa_s'
 
 FORCE_STATIC_LIB = True
+
+DEFINES['XPCOM_GLUE'] = 1
diff --git a/security/manager/ssl/src/Makefile.in b/security/manager/ssl/src/Makefile.in
deleted file mode 100644
index 86a8f19a008bb3ec7979b5ad783e4059668e7e87..0000000000000000000000000000000000000000
--- a/security/manager/ssl/src/Makefile.in
+++ /dev/null
@@ -1,11 +0,0 @@
-#! gmake
-# 
-# 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/.
-
-DEFINES += \
-  -DNSS_ENABLE_ECC \
-  -DDLL_PREFIX=\"$(DLL_PREFIX)\" \
-  -DDLL_SUFFIX=\"$(DLL_SUFFIX)\" \
-  $(NULL)
diff --git a/security/manager/ssl/src/moz.build b/security/manager/ssl/src/moz.build
index f4414bd1ae109e43c8d45408950662ba700aafe7..7357000998f142bfc90b951b9858dd6171f14226 100644
--- a/security/manager/ssl/src/moz.build
+++ b/security/manager/ssl/src/moz.build
@@ -92,3 +92,7 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['NSS_ENABLE_ECC'] = 'True'
+for var in ('DLL_PREFIX', 'DLL_SUFFIX'):
+    DEFINES[var] = '"%s"' % CONFIG[var]
diff --git a/security/sandbox/Makefile.in b/security/sandbox/Makefile.in
index ece8ec3c88dfde6aeb6baed4df5e12631f4c5c7a..7c93c4b4e5a88ad555ea9b2b9f4591a0903f95f2 100644
--- a/security/sandbox/Makefile.in
+++ b/security/sandbox/Makefile.in
@@ -9,8 +9,6 @@ LOCAL_INCLUDES += \
     -I$(topsrcdir)/nsprpub \
     $(NULL)
 
-DEFINES += -DUNICODE -D_UNICODE -DNS_NO_XPCOM -DSANDBOX_EXPORTS -DNOMINMAX -D_CRT_RAND_S
-
 EXTRA_SDK_DECLS = $(topsrcdir)/security/sandbox/base/shim/sdkdecls.h
 
 ifdef _MSC_VER
diff --git a/security/sandbox/moz.build b/security/sandbox/moz.build
index 291a368f8b2f2c201304ce4eb3092326283c7f5a..4ce987bb125b48d8850239b8d6e131e7cd9f8650 100644
--- a/security/sandbox/moz.build
+++ b/security/sandbox/moz.build
@@ -117,3 +117,6 @@ elif CONFIG['OS_ARCH'] == 'WINNT':
         'win/src/Wow64.cc',
     ]
 
+    for var in ('UNICODE', '_UNICODE', 'NS_NO_XPCOM', 'SANDBOX_EXPORTS',
+                'NOMINMAX', '_CRT_RAND_S'):
+        DEFINES[var] = True
diff --git a/security/sandbox/win/src/sandboxbroker/Makefile.in b/security/sandbox/win/src/sandboxbroker/Makefile.in
index 9fd3354023133cb8694790644ef8664201d25e94..60374b59c457f7a48259f4fe402820d888f204e3 100644
--- a/security/sandbox/win/src/sandboxbroker/Makefile.in
+++ b/security/sandbox/win/src/sandboxbroker/Makefile.in
@@ -16,5 +16,3 @@ SHARED_LIBRARY_LIBS += \
 	$(NULL)
 
 OS_LIBS += $(call EXPAND_LIBNAME,dbghelp)
-
-DEFINES += -DUNICODE -D_UNICODE -DNS_NO_XPCOM -DNOMINMAX -DSANDBOX_EXPORTS
diff --git a/security/sandbox/win/src/sandboxbroker/moz.build b/security/sandbox/win/src/sandboxbroker/moz.build
index ced307e2ef79521afd534d941c35eaa21e3a6a84..0dfd8df3fce5374d36ceb27afc5f01489de44fc0 100644
--- a/security/sandbox/win/src/sandboxbroker/moz.build
+++ b/security/sandbox/win/src/sandboxbroker/moz.build
@@ -16,3 +16,7 @@ EXPORTS += [
 ]
 
 FORCE_SHARED_LIB = True
+
+for var in ('UNICODE', '_UNICODE', 'NS_NO_XPCOM', 'NOMINMAX',
+            'SANDBOX_EXPORTS'):
+    DEFINES[var] = True
diff --git a/storage/src/Makefile.in b/storage/src/Makefile.in
index c7391edbc3424950f5c22edef413cf066e128f69..659b9c30c8a262651d6246f434798328886841d6 100644
--- a/storage/src/Makefile.in
+++ b/storage/src/Makefile.in
@@ -3,32 +3,9 @@
 # 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/.
 
-# Don't use the jemalloc allocator on Android, because we can't guarantee
-# that Gecko will configure sqlite before it is first used (bug 730495).
-#
-# Don't use the jemalloc allocator when using system sqlite. Linked in libraries
-# (such as NSS) might trigger an initialization of sqlite and allocation
-# of memory using the default allocator, prior to the storage service
-# registering its allocator, causing memory management failures (bug 938730).
-#
-# Note: On Windows our sqlite build assumes we use jemalloc.  If you disable
-# MOZ_STORAGE_MEMORY on Windows, you will also need to change the "ifdef
-# MOZ_MEMORY" options in db/sqlite3/src/Makefile.in.
-ifdef MOZ_MEMORY
-ifndef MOZ_NATIVE_SQLITE
-ifneq ($(OS_TARGET), Android)
-DEFINES += -DMOZ_STORAGE_MEMORY
-endif
-endif
-endif
-
 # For nsDependentJSString
 LOCAL_INCLUDES = \
   $(SQLITE_CFLAGS) \
   -I$(topsrcdir)/db/sqlite3/src \
   -I$(topsrcdir)/dom/base \
   $(NULL)
-
-# This is the default value.  If we ever change it when compiling sqlite, we
-# will need to change it here as well.
-DEFINES += -DSQLITE_MAX_LIKE_PATTERN_LENGTH=50000
diff --git a/storage/src/moz.build b/storage/src/moz.build
index 9f0c2aee53f8095b93c152aef50958230fc940cf..73ab863a4af3c83453f8710214fd975d699ce579 100644
--- a/storage/src/moz.build
+++ b/storage/src/moz.build
@@ -40,3 +40,22 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'storagecomps'
+
+# Don't use the jemalloc allocator on Android, because we can't guarantee
+# that Gecko will configure sqlite before it is first used (bug 730495).
+#
+# Don't use the jemalloc allocator when using system sqlite. Linked in libraries
+# (such as NSS) might trigger an initialization of sqlite and allocation
+# of memory using the default allocator, prior to the storage service
+# registering its allocator, causing memory management failures (bug 938730).
+#
+# Note: On Windows our sqlite build assumes we use jemalloc.  If you disable
+# MOZ_STORAGE_MEMORY on Windows, you will also need to change the "ifdef
+# MOZ_MEMORY" options in db/sqlite3/src/Makefile.in.
+if CONFIG['MOZ_MEMORY'] and not CONFIG['MOZ_NATIVE_SQLITE']:
+    if CONFIG['OS_TARGET'] != 'Android':
+        DEFINES['MOZ_STORAGE_MEMORY'] = True
+
+# This is the default value.  If we ever change it when compiling sqlite, we
+# will need to change it here as well.
+DEFINES['SQLITE_MAX_LIKE_PATTERN_LENGTH'] = 50000
diff --git a/testing/marionette/Makefile.in b/testing/marionette/Makefile.in
deleted file mode 100644
index 0e1861faeed8b5a1317ba89e82056882500a96c9..0000000000000000000000000000000000000000
--- a/testing/marionette/Makefile.in
+++ /dev/null
@@ -1,7 +0,0 @@
-# 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/.
-
-ifdef ENABLE_TESTS
-    DEFINES += -DENABLE_TESTS
-endif
diff --git a/testing/marionette/components/Makefile.in b/testing/marionette/components/Makefile.in
deleted file mode 100644
index 542a6efb68f13fd3845b0c5e63b4ceb7cbb597f8..0000000000000000000000000000000000000000
--- a/testing/marionette/components/Makefile.in
+++ /dev/null
@@ -1,7 +0,0 @@
-# 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/.
-
-ifdef ENABLE_MARIONETTE
-DEFINES += -DENABLE_MARIONETTE=1
-endif
diff --git a/testing/marionette/components/moz.build b/testing/marionette/components/moz.build
index ced6b577a3558cdae9cb16198c0e4a0f9fa656bb..708e6dc81217bf7119fb666a5acee0f45ebf847e 100644
--- a/testing/marionette/components/moz.build
+++ b/testing/marionette/components/moz.build
@@ -11,3 +11,6 @@ EXTRA_COMPONENTS += [
 EXTRA_PP_COMPONENTS += [
     'marionettecomponent.js'
 ]
+
+if CONFIG['ENABLE_MARIONETTE']:
+    DEFINES['ENABLE_MARIONETTE'] = 1
diff --git a/testing/marionette/moz.build b/testing/marionette/moz.build
index cb2f4f9c5d6711b8003996390ed2050b87d701ea..7b4288f8a76c50012fa04927f2bd7f88b5bd9685 100644
--- a/testing/marionette/moz.build
+++ b/testing/marionette/moz.build
@@ -5,3 +5,6 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['components', 'atoms']
+
+if CONFIG['ENABLE_TESTS']:
+    DEFINES['ENABLE_TESTS'] = True
diff --git a/toolkit/components/maintenanceservice/Makefile.in b/toolkit/components/maintenanceservice/Makefile.in
index 1b58c8ddd4e03d282cb70f53da4d47d37bb9252c..86e384f4f1a1ee262714a1b9df58232888a44749 100644
--- a/toolkit/components/maintenanceservice/Makefile.in
+++ b/toolkit/components/maintenanceservice/Makefile.in
@@ -2,9 +2,6 @@
 # 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/.
 
-# For debugging purposes only
-#DEFINES += -DDISABLE_UPDATER_AUTHENTICODE_CHECK
-
 DIST_PROGRAM = maintenanceservice$(BIN_SUFFIX)
 
 # Don't link the maintenanceservice against mozglue.dll. See bug 687139 and
@@ -23,7 +20,6 @@ USE_STATIC_LIBS = 1
 RCINCLUDE = maintenanceservice.rc
 
 OS_LIBS += $(call EXPAND_LIBNAME,comctl32 ws2_32 shell32)
-DEFINES += -DUNICODE -D_UNICODE
 ifndef GNU_CC
 RCFLAGS += -I$(srcdir)
 else
@@ -40,8 +36,6 @@ endif
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DNS_NO_XPCOM
-
 ifdef _MSC_VER
 WIN32_EXE_LDFLAGS += -ENTRY:wmainCRTStartup
 endif
diff --git a/toolkit/components/maintenanceservice/moz.build b/toolkit/components/maintenanceservice/moz.build
index b2a303c51d2f55ea9e4b0ebcc5196818e8b270f7..06a3420e0b23876224571a88176a51f30298bbf6 100644
--- a/toolkit/components/maintenanceservice/moz.build
+++ b/toolkit/components/maintenanceservice/moz.build
@@ -14,3 +14,10 @@ SOURCES += [
     'serviceinstall.cpp',
     'workmonitor.cpp',
 ]
+
+# For debugging purposes only
+#DEFINES['DISABLE_UPDATER_AUTHENTICODE_CHECK'] = True
+
+DEFINES['UNICODE'] = True
+DEFINES['_UNICODE'] = True
+DEFINES['NS_NO_XPCOM'] = True
diff --git a/toolkit/components/search/Makefile.in b/toolkit/components/search/Makefile.in
deleted file mode 100644
index 7355d13216c2b9407c3380d6ae18057fe313ec1a..0000000000000000000000000000000000000000
--- a/toolkit/components/search/Makefile.in
+++ /dev/null
@@ -1,5 +0,0 @@
-# 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/.
-
-DEFINES += -DMOZ_DISTRIBUTION_ID=$(MOZ_DISTRIBUTION_ID)
diff --git a/toolkit/components/search/moz.build b/toolkit/components/search/moz.build
index 79e3095a135aae5154ce8629fef6cdaa1cb9dea0..e1baea5d50b29b5048beaeb1267b86efccdf4d03 100644
--- a/toolkit/components/search/moz.build
+++ b/toolkit/components/search/moz.build
@@ -14,3 +14,5 @@ EXTRA_COMPONENTS += [
 EXTRA_PP_COMPONENTS += [
     'nsSearchService.js',
 ]
+
+DEFINES['MOZ_DISTRIBUTION_ID'] = CONFIG['MOZ_DISTRIBUTION_ID']
diff --git a/toolkit/components/telemetry/Makefile.in b/toolkit/components/telemetry/Makefile.in
index cb1f570dfbfd37df00094d2941b7edae7fdd4030..ed2322d95ff5d6228eb89a1636d6b5d5ad6a17f2 100644
--- a/toolkit/components/telemetry/Makefile.in
+++ b/toolkit/components/telemetry/Makefile.in
@@ -9,10 +9,6 @@ include $(topsrcdir)/config/makefiles/rcs.mk
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/threads
 
-ifdef MOZILLA_OFFICIAL
-DEFINES += -DMOZILLA_OFFICIAL
-endif
-
 MOZ_HISTOGRAMS_VERSION ?= $(call getSourceRepo)/rev/$(firstword $(shell hg -R $(topsrcdir) parent --template="{node|short}\n" 2>/dev/null))
 ifdef MOZ_HISTOGRAMS_VERSION
 DEFINES += -DHISTOGRAMS_FILE_VERSION="$(MOZ_HISTOGRAMS_VERSION)"
diff --git a/toolkit/components/telemetry/moz.build b/toolkit/components/telemetry/moz.build
index cfe134c55e6d5be0f8c7697480d1f32a595377c1..dc082ee6f629b4169d431930dd725ab27f3c318c 100644
--- a/toolkit/components/telemetry/moz.build
+++ b/toolkit/components/telemetry/moz.build
@@ -49,3 +49,6 @@ FINAL_LIBRARY = 'xul'
 GENERATED_FILES = [
     'TelemetryHistogramData.inc',
 ]
+
+if CONFIG['MOZILLA_OFFICIAL']:
+    DEFINES['MOZILLA_OFFICIAL'] = True
diff --git a/toolkit/content/Makefile.in b/toolkit/content/Makefile.in
index cbd71daf33605ce6ca6c32b5b3383c17293fcdab..485b574eb6805c574495d2a3b1488333d7002679 100644
--- a/toolkit/content/Makefile.in
+++ b/toolkit/content/Makefile.in
@@ -7,13 +7,6 @@ USE_RCS_MK := 1
 include $(topsrcdir)/config/makefiles/makeutils.mk
 
 DEFINES += \
-  -Dtarget="$(target)" \
-  -Dac_configure_args="$(ac_configure_args)" \
-  -DCC="$(CC)" \
-  -DCC_VERSION="$(CC_VERSION)" \
-  -DCFLAGS="$(CFLAGS)" \
-  -DCXX="$(CXX)" \
-  -DCXX_VERSION="$(CXX_VERSION)" \
   -DCXXFLAGS="$(CXXFLAGS)" \
   -DCPPFLAGS="$(CPPFLAGS)" \
   $(NULL)
@@ -23,10 +16,6 @@ ifdef MOZ_SOURCE_STAMP
 DEFINES += -DSOURCE_CHANGESET="$(MOZ_SOURCE_STAMP)"
 endif
 
-ifeq (Android,$(OS_TARGET))
-DEFINES += -DANDROID_PACKAGE_NAME=$(ANDROID_PACKAGE_NAME)
-endif
-
 source_repo ?= $(call getSourceRepo)
 ifneq (,$(filter http%,$(source_repo)))
   DEFINES += -DSOURCE_REPO="$(source_repo)"
@@ -34,9 +23,5 @@ else ifneq (,$(strip $(source_repo)))
   DEFINES += -DSOURCE_GIT_COMMIT="$(source_repo)"
 endif
 
-ifneq (,$(findstring stlport,$(STLPORT_LIBS)))
-DEFINES += -DUSE_STLPORT
-endif
-
 BUILD_HOSTNAME = $(shell hostname -s || hostname)
 DEFINES += -DBUILD_HOSTNAME="$(BUILD_HOSTNAME)"
diff --git a/toolkit/content/moz.build b/toolkit/content/moz.build
index 0a6b67fd879f2982b5d5e24b567eeb68d3b954f7..58bc41086cf99fda6a673aafb5ff730ae37ba79f 100644
--- a/toolkit/content/moz.build
+++ b/toolkit/content/moz.build
@@ -5,3 +5,13 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 TEST_DIRS += ['tests']
+
+for var in ('target', 'ac_configure_args', 'CC', 'CC_VERSION', 'CFLAGS',
+            'CXX', 'CXX_VERSION'):
+    DEFINES[var] = CONFIG[var]
+
+if CONFIG['OS_TARGET'] == 'Android':
+    DEFINES['ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME']
+
+if 'stlport' in CONFIG['STLPORT_LIBS']:
+    DEFINES['USE_STLPORT'] = True
diff --git a/toolkit/crashreporter/Makefile.in b/toolkit/crashreporter/Makefile.in
index 211a46654069fb9cf5ff3771605246bc670e90dd..513422cba05aee1cf8bee01c2470f5ab3092a087 100644
--- a/toolkit/crashreporter/Makefile.in
+++ b/toolkit/crashreporter/Makefile.in
@@ -2,29 +2,14 @@
 # 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/.
 
-ifeq ($(OS_ARCH),Linux)
-# MOZ_APP_NAME is needed on Android, where we
-# need to launch by package name.
-DEFINES += \
-  -DANDROID_PACKAGE_NAME=\"$(ANDROID_PACKAGE_NAME)\"
-  $(NULL)
-endif
-
-ifeq ($(OS_ARCH),SunOS)
-# there's no define for this normally
-DEFINES += -DXP_SOLARIS
-endif
-
 ifeq ($(OS_TARGET),Android)
 # NDK5 workarounds
-DEFINES += -D_STLP_CONST_CONSTRUCTOR_BUG -D_STLP_NO_MEMBER_TEMPLATES
 TARGET_LOCAL_INCLUDES = \
   -I$(topsrcdir)/toolkit/crashreporter/google-breakpad/src/common/android/include/ \
   $(NULL)
 endif
 
 LOCAL_INCLUDES += -I$(srcdir)/google-breakpad/src
-DEFINES += -DUNICODE -D_UNICODE
 
 include $(topsrcdir)/config/rules.mk
 
diff --git a/toolkit/crashreporter/breakpad-windows-libxul/Makefile.in b/toolkit/crashreporter/breakpad-windows-libxul/Makefile.in
index 37d8f126b0bbbdfe21cdaec38b035804e1147a42..78ba9ac5c2897c420be64cce13ed5eba89df5474 100644
--- a/toolkit/crashreporter/breakpad-windows-libxul/Makefile.in
+++ b/toolkit/crashreporter/breakpad-windows-libxul/Makefile.in
@@ -18,8 +18,6 @@ VPATH += \
   $(topsrcdir)/toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation \
   $(NULL)
 
-DEFINES += -DUNICODE -DUNICODE_ -DBREAKPAD_NO_TERMINATE_THREAD -DNOMINMAX
-
 CPPSRCS += \
   $(objs_common) \
   $(objs_crash_generation) \
diff --git a/toolkit/crashreporter/breakpad-windows-libxul/moz.build b/toolkit/crashreporter/breakpad-windows-libxul/moz.build
index 6d488d4291cc4339275e56c62baf54b2bc1e42ad..3df72f69d19e1ccd88f9eb8545921fd55dee06cb 100644
--- a/toolkit/crashreporter/breakpad-windows-libxul/moz.build
+++ b/toolkit/crashreporter/breakpad-windows-libxul/moz.build
@@ -11,3 +11,6 @@ SOURCES += [
 LIBRARY_NAME = 'google_breakpad_libxul_s'
 
 FINAL_LIBRARY = 'xulapp_s'
+
+for var in ('UNICODE', 'UNICODE_', 'BREAKPAD_NO_TERMINATE_THREAD', 'NOMINMAX'):
+    DEFINES[var] = True
diff --git a/toolkit/crashreporter/breakpad-windows-standalone/Makefile.in b/toolkit/crashreporter/breakpad-windows-standalone/Makefile.in
index 9d905b46806c14b78b8e5c4363b14336e54adea3..49532e4a5fdeee0ac5acb4b8d44096ed8c13b62d 100644
--- a/toolkit/crashreporter/breakpad-windows-standalone/Makefile.in
+++ b/toolkit/crashreporter/breakpad-windows-standalone/Makefile.in
@@ -19,8 +19,6 @@ VPATH += \
   $(topsrcdir)/toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation \
   $(NULL)
 
-DEFINES += -DUNICODE -DUNICODE_ -DBREAKPAD_NO_TERMINATE_THREAD -DNOMINMAX
-
 CPPSRCS += \
   $(objs_common) \
   $(objs_crash_generation) \
diff --git a/toolkit/crashreporter/breakpad-windows-standalone/moz.build b/toolkit/crashreporter/breakpad-windows-standalone/moz.build
index ea1ac595924553ecc171363e0a1877e6bc75676f..579a0fa5c57e103e8084148574a5598000839069 100644
--- a/toolkit/crashreporter/breakpad-windows-standalone/moz.build
+++ b/toolkit/crashreporter/breakpad-windows-standalone/moz.build
@@ -5,3 +5,6 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 FINAL_LIBRARY = 'breakpadinjector'
+
+for var in ('UNICODE', 'UNICODE_', 'BREAKPAD_NO_TERMINATE_THREAD', 'NOMINMAX'):
+    DEFINES[var] = True
diff --git a/toolkit/crashreporter/client/Makefile.in b/toolkit/crashreporter/client/Makefile.in
index 01e7388e919ffb9372828ab54663fd0a61efc21b..40feebcff25428d0a14f99dd9c40ca22c62e59ec 100644
--- a/toolkit/crashreporter/client/Makefile.in
+++ b/toolkit/crashreporter/client/Makefile.in
@@ -25,7 +25,6 @@ LIBS += \
   $(NULL)
 LOCAL_INCLUDES += -I$(srcdir)
 RCINCLUDE = crashreporter.rc
-DEFINES += -DUNICODE -D_UNICODE
 OS_LIBS += $(call EXPAND_LIBNAME,comctl32 shell32 wininet shlwapi)
 MOZ_WINCONSOLE = 0
 endif
diff --git a/toolkit/crashreporter/client/moz.build b/toolkit/crashreporter/client/moz.build
index 4ce1793d3e2c75a3e827803c43cf1cee7be5956c..bc2d59715c0b690f7484e99b7f2ab46a0a647cff 100644
--- a/toolkit/crashreporter/client/moz.build
+++ b/toolkit/crashreporter/client/moz.build
@@ -16,6 +16,8 @@ if CONFIG['OS_ARCH'] == 'WINNT':
     SOURCES += [
         'crashreporter_win.cpp',
     ]
+    DEFINES['UNICODE'] = True
+    DEFINES['_UNICODE'] = True
 elif CONFIG['OS_ARCH'] == 'Darwin':
     SOURCES += [
         'crashreporter_unix_common.cpp',
diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/Makefile.in b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/Makefile.in
index 69fa790b46ca703b3d5af6659ae87d41411137a4..aaa18c397bdbb929ba7dc021d60eeb38fe0ac2f6 100644
--- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/Makefile.in
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/Makefile.in
@@ -24,6 +24,5 @@ LOCAL_INCLUDES = \
 
 ifeq ($(OS_TARGET),Android)
 # NDK5 workarounds
-DEFINES += -D_STLP_CONST_CONSTRUCTOR_BUG -D_STLP_NO_MEMBER_TEMPLATES
 LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/crashreporter/google-breakpad/src/common/android/include/
 endif
diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/moz.build b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/moz.build
index 24c5f78ea8edc7f7fffdb8d7f81425e57faf6885..837b28422ac955dff9e2b4c06f83b82123603e6a 100644
--- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/moz.build
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/moz.build
@@ -13,3 +13,8 @@ SOURCES += [
 XPI_NAME = 'crashreporter'
 
 FINAL_LIBRARY = 'xulapp_s'
+
+if CONFIG['OS_TARGET'] == 'Android':
+    # NDK5 workarounds
+    DEFINES['_STLP_CONST_CONSTRUCTOR_BUG'] = True
+    DEFINES['_STLP_NO_MEMBER_TEMPLATES'] = True
diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/Makefile.in b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/Makefile.in
index 14c68f5e0d289ce88f14358360b56e5cd8af62ee..24c3576843423b1a8cae198545e4a32295483061 100644
--- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/Makefile.in
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/Makefile.in
@@ -9,7 +9,3 @@ LOCAL_INCLUDES = \
 ifeq ($(OS_TARGET),Android)
 LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/crashreporter/google-breakpad/src/common/android/include/
 endif
-
-ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
-DEFINES += -DELFSIZE=32
-endif
diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/moz.build b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/moz.build
index 9396ba35b8c0d7bcfe30534f3324341120e8c8b8..13e04e1651d05fc5bf6e5d84cd3356e8a3e6b620 100644
--- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/moz.build
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/moz.build
@@ -13,3 +13,6 @@ SOURCES += [
 XPI_NAME = 'crashreporter'
 
 FINAL_LIBRARY = 'xulapp_s'
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+    DEFINES['ELFSIZE'] = 32
diff --git a/toolkit/crashreporter/google-breakpad/src/common/Makefile.in b/toolkit/crashreporter/google-breakpad/src/common/Makefile.in
index 8c0137857afe0e72f9354caacedacb1465dadbae..9c463d44d21dd30c43207f2bd3aebf84107577ec 100644
--- a/toolkit/crashreporter/google-breakpad/src/common/Makefile.in
+++ b/toolkit/crashreporter/google-breakpad/src/common/Makefile.in
@@ -12,11 +12,6 @@ LOCAL_INCLUDES 	= -I$(srcdir)/..
 ifeq ($(OS_TARGET),Android)
 VPATH += $(srcdir)/android
 TARGET_LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/crashreporter/google-breakpad/src/common/android/include/
-DEFINES += -DNO_STABS_SUPPORT
-endif
-
-ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
-DEFINES += -DELFSIZE=32
 endif
 
 # This kind of sucks.
diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in b/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in
index 9b96e8ea8b22bcc9db084f03c7bf0f07bddab11a..911261e51d5bea3ddb89788f0906f0656c0d1090 100644
--- a/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in
+++ b/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in
@@ -11,12 +11,6 @@ else
 TARGET_LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/crashreporter/google-breakpad/src/common/android/include/
 endif
 
-ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
-DEFINES += -DELFSIZE=32
-endif
-
-DEFINES += -DNO_STABS_SUPPORT
-
 include $(topsrcdir)/config/rules.mk
 
 # See https://bugzilla.mozilla.org/show_bug.cgi?id=741348#c11
diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/moz.build b/toolkit/crashreporter/google-breakpad/src/common/linux/moz.build
index bbe4ad0df5d2f7d274dc775e6b5e16664fb0ef18..9af1365e8a56dccf73fd6c77084fdb700a9e0c91 100644
--- a/toolkit/crashreporter/google-breakpad/src/common/linux/moz.build
+++ b/toolkit/crashreporter/google-breakpad/src/common/linux/moz.build
@@ -33,3 +33,8 @@ if CONFIG['MOZ_CRASHREPORTER']:
 LIBRARY_NAME = 'breakpad_linux_common_s'
 
 FINAL_LIBRARY = 'xulapp_s'
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+    DEFINES['ELFSIZE'] = 32
+
+DEFINES['NO_STABS_SUPPORT'] = True
diff --git a/toolkit/crashreporter/google-breakpad/src/common/moz.build b/toolkit/crashreporter/google-breakpad/src/common/moz.build
index 50c71e470f54682029b26379ffcaa27aaec4f19e..4b5f4d0b3dd3b675b2033ee16431a3b8c882eb6c 100644
--- a/toolkit/crashreporter/google-breakpad/src/common/moz.build
+++ b/toolkit/crashreporter/google-breakpad/src/common/moz.build
@@ -83,3 +83,9 @@ LIBRARY_NAME = 'breakpad_common_s'
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'xulapp_s'
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+    DEFINES['ELFSIZE'] = 32
+
+if CONFIG['OS_TARGET'] == 'Android':
+    DEFINES['NO_STABS_SUPPORT'] = True
diff --git a/toolkit/crashreporter/moz.build b/toolkit/crashreporter/moz.build
index 7762bf6e592de57f761718e56f745bc2ed0f76ce..c09f9dcddf6eb20fd186e6b6d1ee478d77dcf982 100644
--- a/toolkit/crashreporter/moz.build
+++ b/toolkit/crashreporter/moz.build
@@ -81,3 +81,16 @@ MSVC_ENABLE_PGO = True
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xulapp_s'
+
+if CONFIG['OS_TARGET'] == 'Android':
+    DEFINES['ANDROID_PACKAGE_NAME'] = '"%s"' % CONFIG['ANDROID_PACKAGE_NAME']
+    # NDK5 workarounds
+    DEFINES['_STLP_CONST_CONSTRUCTOR_BUG'] = True
+    DEFINES['_STLP_NO_MEMBER_TEMPLATES'] = True
+
+if CONFIG['OS_ARCH'] == 'SunOS':
+    # there's no define for this normally
+    DEFINES['XP_SOLARIS'] = True
+
+DEFINES['UNICODE'] = True
+DEFINES['_UNICODE'] = True
diff --git a/toolkit/crashreporter/test/Makefile.in b/toolkit/crashreporter/test/Makefile.in
index 18dfc37871d6b4006c95daf13eae7f9efdbaec14..f1b394c3040111aa48890d520156d1bd4a086204 100644
--- a/toolkit/crashreporter/test/Makefile.in
+++ b/toolkit/crashreporter/test/Makefile.in
@@ -24,8 +24,6 @@ MOCHITEST_CRASHREPORTER_FILES = \
 MOCHITEST_CRASHREPORTER_DEST = $(DEPTH)/_tests/testing/mochitest/browser/$(relativesrcdir)/browser
 INSTALL_TARGETS += MOCHITEST_CRASHREPORTER
 
-DEFINES += -DSHARED_LIBRARY=$(SHARED_LIBRARY) -DNOMINMAX
-
 UNIT_FILES = $(SHARED_LIBRARY) $(EXTRA_JS_MODULES)
 UNIT_DEST = $(DEPTH)/_tests/xpcshell/$(relativesrcdir)/unit/
 INSTALL_TARGETS += UNIT
diff --git a/toolkit/crashreporter/test/moz.build b/toolkit/crashreporter/test/moz.build
index 9a01724630b2034fcf4d54bea0c14d77f0498134..2fcb202f9345945c05f709ae9932448f2eac94ad 100644
--- a/toolkit/crashreporter/test/moz.build
+++ b/toolkit/crashreporter/test/moz.build
@@ -23,3 +23,11 @@ EXTRA_JS_MODULES += [
 ]
 
 FORCE_SHARED_LIB = True
+
+DEFINES['SHARED_LIBRARY'] = '%s%s%s' % (
+    CONFIG['DLL_PREFIX'],
+    LIBRARY_NAME,
+    CONFIG['DLL_SUFFIX']
+)
+
+DEFINES['NOMINMAX'] = True
diff --git a/toolkit/modules/Makefile.in b/toolkit/modules/Makefile.in
deleted file mode 100644
index f9d643c8e1b4816dd5bb0638ad5560f8336bd68e..0000000000000000000000000000000000000000
--- a/toolkit/modules/Makefile.in
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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/.
-
-ifdef MOZ_TOOLKIT_SEARCH
-DEFINES += -DMOZ_TOOLKIT_SEARCH
-endif
-
-DEFINES += \
-  -DMOZ_APP_NAME=$(MOZ_APP_NAME) \
-  -DMOZ_BUILD_APP=$(MOZ_BUILD_APP) \
-  $(NULL)
diff --git a/toolkit/modules/moz.build b/toolkit/modules/moz.build
index 5b959c7f238f0826b5834fda0e30dd8bb2f43e04..be34b31a36ac30223274e21fe6cc329b6b992599 100644
--- a/toolkit/modules/moz.build
+++ b/toolkit/modules/moz.build
@@ -59,3 +59,8 @@ if 'Android' != CONFIG['OS_TARGET']:
         'LightweightThemeConsumer.jsm',
     ]
 
+DEFINES['MOZ_APP_NAME'] = CONFIG['MOZ_APP_NAME']
+DEFINES['MOZ_BUILD_APP'] = CONFIG['MOZ_BUILD_APP']
+
+if CONFIG['MOZ_TOOLKIT_SEARCH']:
+    DEFINES['MOZ_TOOLKIT_SEARCH'] = True
diff --git a/toolkit/mozapps/extensions/Makefile.in b/toolkit/mozapps/extensions/Makefile.in
index fd6e032cd083af53cbaf988d58ee9774a0c9a64b..a3ef4233cc25634217fd8616766cc1cda9deb274 100644
--- a/toolkit/mozapps/extensions/Makefile.in
+++ b/toolkit/mozapps/extensions/Makefile.in
@@ -2,18 +2,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/.
 
-ifeq (,$(filter aurora beta release esr,$(MOZ_UPDATE_CHANNEL)))
-DEFINES += -DMOZ_COMPATIBILITY_NIGHTLY=1
-endif
-
-# This is used in multiple places, so is defined here to avoid it getting
-# out of sync.
-DEFINES += -DMOZ_EXTENSIONS_DB_SCHEMA=15
-
-# Additional debugging info is exposed in debug builds, or by setting the
-# MOZ_EM_DEBUG environment variable when building.
+# Additional debugging info is exposed by setting the MOZ_EM_DEBUG
+# environment variable when building.
 ifneq (,$(MOZ_EM_DEBUG))
 DEFINES += -DMOZ_EM_DEBUG=1
-else ifdef MOZ_DEBUG
-DEFINES += -DMOZ_EM_DEBUG=1
 endif
diff --git a/toolkit/mozapps/extensions/moz.build b/toolkit/mozapps/extensions/moz.build
index 0265ede7ce689b5a58346227b00b00845906bd4f..64c12d77dad004fc7f70a4369231caeb81a5e20c 100644
--- a/toolkit/mozapps/extensions/moz.build
+++ b/toolkit/mozapps/extensions/moz.build
@@ -45,3 +45,13 @@ EXTRA_PP_JS_MODULES += [
     'XPIProviderUtils.js',
 ]
 
+if CONFIG['MOZ_UPDATE_CHANNEL'] not in ('aurora', 'beta', 'release', 'esr'):
+    DEFINES['MOZ_COMPATIBILITY_NIGHTLY'] = 1
+
+# This is used in multiple places, so is defined here to avoid it getting
+# out of sync.
+DEFINES['MOZ_EXTENSIONS_DB_SCHEMA'] = 15
+
+# Additional debugging info is exposed in debug builds
+if CONFIG['MOZ_DEBUG']:
+    DEFINES['MOZ_EM_DEBUG'] = 1
diff --git a/toolkit/mozapps/update/tests/Makefile.in b/toolkit/mozapps/update/tests/Makefile.in
index a193f5b2aea1d3552d9ce7178c759b8180830ca4..1930b12be5a9d7d85feb83028df7f8139a1d795c 100644
--- a/toolkit/mozapps/update/tests/Makefile.in
+++ b/toolkit/mozapps/update/tests/Makefile.in
@@ -7,20 +7,8 @@ CHROMETESTROOT = $(abspath $(DEPTH))/_tests/testing/mochitest/chrome/$(relatives
 
 DEFINES += \
   -DAB_CD=$(AB_CD) \
-  -DMOZ_APP_NAME=$(MOZ_APP_NAME) \
-  -DMOZ_APP_DISPLAYNAME="$(MOZ_APP_DISPLAYNAME)" \
-  -DBIN_SUFFIX=$(BIN_SUFFIX) \
-  -DNS_NO_XPCOM \
-  -DMOZ_DEBUG=$(MOZ_DEBUG) \
   $(NULL)
 
-ifdef MOZ_MAINTENANCE_SERVICE
-DEFINES += -DMOZ_MAINTENANCE_SERVICE=$(MOZ_MAINTENANCE_SERVICE)
-endif
-
-# For debugging purposes only
-#DEFINES += -DDISABLE_UPDATER_AUTHENTICODE_CHECK
-
 PP_TARGETS            += aus-update-head
 aus-update-head_FLAGS := -Fsubstitution $(DEFINES) $(ACDEFINES)
 aus-update-head       := $(srcdir)/unit_aus_update/head_update.js
@@ -91,7 +79,6 @@ endif
 
 ifeq ($(OS_ARCH),WINNT)
 USE_STATIC_LIBS = 1
-DEFINES += -DUNICODE -D_UNICODE
 endif # WINNT
 endif # Not Android
 
diff --git a/toolkit/mozapps/update/tests/moz.build b/toolkit/mozapps/update/tests/moz.build
index 8756238044a3209eba812c4722ff98a979d0fa5f..4a722e209c82ba2ffc895d20f4d9c6da8c03d6c2 100644
--- a/toolkit/mozapps/update/tests/moz.build
+++ b/toolkit/mozapps/update/tests/moz.build
@@ -21,3 +21,18 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
     SOURCES += [
         '%s.cpp' % s for s in SIMPLE_PROGRAMS
     ]
+
+for var in ('MOZ_APP_NAME', 'MOZ_APP_DISPLAYNAME', 'BIN_SUFFIX', 'MOZ_DEBUG'):
+    DEFINES[var] = CONFIG[var]
+
+DEFINES['NS_NO_XPCOM'] = True
+
+if CONFIG['MOZ_MAINTENANCE_SERVICE']:
+    DEFINES['MOZ_MAINTENANCE_SERVICE'] = CONFIG['MOZ_MAINTENANCE_SERVICE']
+
+# For debugging purposes only
+#DEFINES['DISABLE_UPDATER_AUTHENTICODE_CHECK'] = True
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+    DEFINES['UNICODE'] = True
+    DEFINES['_UNICODE'] = True
diff --git a/toolkit/mozapps/update/updater/Makefile.in b/toolkit/mozapps/update/updater/Makefile.in
index 2ef23d784aa11fac909b6b6eedfd954bc71283c2..05e0fe26fa2f81cc4cd260630504d3c55e218475 100644
--- a/toolkit/mozapps/update/updater/Makefile.in
+++ b/toolkit/mozapps/update/updater/Makefile.in
@@ -28,7 +28,6 @@ LIBS += $(call EXPAND_LIBNAME_PATH,verifymar,$(DEPTH)/modules/libmar/verify)
 USE_STATIC_LIBS = 1
 RCINCLUDE = updater.rc
 OS_LIBS += $(call EXPAND_LIBNAME,delayimp comctl32 ws2_32 shell32 shlwapi)
-DEFINES += -DUNICODE -D_UNICODE
 ifndef GNU_CC
 RCFLAGS += -I$(srcdir)
 else
@@ -63,11 +62,6 @@ endif
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DNS_NO_XPCOM \
-  -DMAR_CHANNEL_ID='"$(MAR_CHANNEL_ID)"' \
-  -DMOZ_APP_VERSION='"$(MOZ_APP_VERSION)"' \
-  $(NULL)
-
 ifdef _MSC_VER
 WIN32_EXE_LDFLAGS += -ENTRY:wmainCRTStartup
 WIN32_EXE_LDFLAGS += -DELAYLOAD:wsock32.dll -DELAYLOAD:crypt32.dll -DELAYLOAD:userenv.dll
diff --git a/toolkit/mozapps/update/updater/moz.build b/toolkit/mozapps/update/updater/moz.build
index d6a76fa5c4d77de1de26960fb8dee8547e2a819a..ce934d82e48bb99a2898f09edd9a2792745a4ac5 100644
--- a/toolkit/mozapps/update/updater/moz.build
+++ b/toolkit/mozapps/update/updater/moz.build
@@ -20,6 +20,8 @@ if CONFIG['OS_ARCH'] == 'WINNT':
         'progressui_win.cpp',
         'win_dirent.cpp',
     ]
+    DEFINES['UNICODE'] = True
+    DEFINES['_UNICODE'] = True
 
 if CONFIG['MOZ_ENABLE_GTK']:
     have_progressui = 1
@@ -46,3 +48,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
         'launchchild_osx.mm',
         'progressui_osx.mm',
     ]
+
+DEFINES['NS_NO_XPCOM'] = True
+for var in ('MAR_CHANNEL_ID', 'MOZ_APP_VERSION'):
+    DEFINES[var] = '"%s"' % CONFIG[var]
diff --git a/toolkit/webapps/Makefile.in b/toolkit/webapps/Makefile.in
deleted file mode 100644
index 3921d17964542b4994851f472b8d4a04f4e92f9e..0000000000000000000000000000000000000000
--- a/toolkit/webapps/Makefile.in
+++ /dev/null
@@ -1,7 +0,0 @@
-# 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/.
-
-ifeq ($(MOZ_BUILD_APP),mobile/android)
-DEFINES += -DMOZ_FENNEC=1
-endif
diff --git a/toolkit/webapps/moz.build b/toolkit/webapps/moz.build
index 842552ee044fdcc3d229647cf0ebc7d0070e8f4e..ab4a4ac4bf162d2c0edea0493edbd119490fd699 100644
--- a/toolkit/webapps/moz.build
+++ b/toolkit/webapps/moz.build
@@ -9,3 +9,5 @@ EXTRA_PP_JS_MODULES += [
     'WebappsInstaller.jsm',
 ]
 
+if CONFIG['MOZ_BUILD_APP'] == 'mobile/android':
+    DEFINES['MOZ_FENNEC'] = True
diff --git a/toolkit/xre/Makefile.in b/toolkit/xre/Makefile.in
index aaf486435942fb0b6c045fd6dd34731d4b3fe992..f31f016e87984e8fddef4a0403c2f958fc590529 100644
--- a/toolkit/xre/Makefile.in
+++ b/toolkit/xre/Makefile.in
@@ -10,29 +10,6 @@ include $(topsrcdir)/config/makefiles/makeutils.mk
 
 milestone_txt = $(topsrcdir)/config/milestone.txt
 
-ifeq ($(MOZ_GL_DEFAULT_PROVIDER),GLX)
-DEFINES += -DUSE_GLX_TEST
-endif
-
-DEFINES += \
-  -DMOZ_APP_NAME='"$(MOZ_APP_NAME)"' \
-  -DMOZ_APP_VERSION='"$(MOZ_APP_VERSION)"' \
-  $(NULL)
-
-ifdef MOZ_UPDATER
-ifneq (android,$(MOZ_WIDGET_TOOLKIT))
-DEFINES += -DMOZ_UPDATER
-endif
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-DEFINES += -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),android)
-DEFINES += -DANDROID_PACKAGE_NAME='"$(ANDROID_PACKAGE_NAME)"'
-endif
-
 ifdef MOZ_ENABLE_XREMOTE
 LOCAL_INCLUDES += -I$(topsrcdir)/widget/xremoteclient
 endif
@@ -55,17 +32,6 @@ ifdef MOZ_WIDGET_GTK
 CXXFLAGS += $(MOZ_PANGO_CFLAGS)
 endif
 
-DEFINES += \
-  -DOS_TARGET=\"$(OS_TARGET)\" \
-  -DMOZ_WIDGET_TOOLKIT=\"$(MOZ_WIDGET_TOOLKIT)\"
-
-ifdef TARGET_XPCOM_ABI
-DEFINES += \
-  -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\" \
-  -DTARGET_OS_ABI=\"$(OS_TARGET)_$(TARGET_XPCOM_ABI)\" \
-  $(NULL)
-endif
-
 # Should version be optional or required ?
 TOOLKIT_EM_VERSION=$(shell $(PERL) $(topsrcdir)/config/milestone.pl --topsrcdir=$(topsrcdir))
 $(call warnIfEmpty,TOOLKIT_EM_VERSION)
@@ -73,16 +39,6 @@ $(call warnIfEmpty,TOOLKIT_EM_VERSION)
 # Valid if null: {warn,error}IfEmpty
 DEFINES += -DTOOLKIT_EM_VERSION=\"$(TOOLKIT_EM_VERSION)\"
 
-ifdef WRAP_SYSTEM_INCLUDES
-DEFINES += -DWRAP_SYSTEM_INCLUDES
-endif
-
-ifeq ($(OS_ARCH),Linux)
-ifneq (,$(findstring lib64,$(libdir)))
-DEFINES += -DHAVE_USR_LIB64_DIR
-endif
-endif
-
 MOZ_SOURCE_STAMP ?= $(firstword $(shell hg -R $(topsrcdir) parent --template="{node|short}\n" 2>/dev/null))
 ifdef MOZ_SOURCE_STAMP
 
@@ -100,15 +56,7 @@ endif # MOZ_SOURCE_STAMP
 GRE_BUILDID   := $(strip $(firstword $(shell cat $(DEPTH)/config/buildid 2>/dev/null)))
 $(call errorIfEmpty,GRE_MILESTONE GRE_BUILDID)
 
-DEFINES += -DGRE_MILESTONE=$(GRE_MILESTONE) -DGRE_BUILDID=$(GRE_BUILDID)
-
-ifdef MOZILLA_OFFICIAL
-DEFINES += -DMOZILLA_OFFICIAL
-endif
-
-DEFINES += -DAPP_VERSION=$(MOZ_APP_VERSION)
-
-DEFINES += -DAPP_ID="$(MOZ_APP_ID)"
+DEFINES += -DGRE_BUILDID=$(GRE_BUILDID)
 
 $(srcdir)/nsAppRunner.cpp: $(DEPTH)/config/buildid $(milestone_txt)
 
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
index c5cd29281c0cb0c38237b1e73a41bb2cb65bac08..9cf8991fb775f23f05cf6b1c12cd07847119f590 100644
--- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build
@@ -102,3 +102,40 @@ LIBRARY_NAME = 'xulapp_s'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['MOZ_GL_DEFAULT_PROVIDER'] == 'GLX':
+    DEFINES['USE_GLX_TEST'] = True
+
+for var in ('MOZ_APP_NAME', 'MOZ_APP_VERSION', 'OS_TARGET',
+            'MOZ_WIDGET_TOOLKIT'):
+    DEFINES[var] = '"%s"' % CONFIG[var]
+
+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']
+
+if CONFIG['TARGET_XPCOM_ABI']:
+    DEFINES['TARGET_XPCOM_ABI'] = '"%s"' % CONFIG['TARGET_XPCOM_ABI']
+    DEFINES['TARGET_OS_ABI'] = '"%s_%s"' % (CONFIG['OS_TARGET'],
+                                            CONFIG['TARGET_XPCOM_ABI'])
+
+if CONFIG['WRAP_SYSTEM_INCLUDES']:
+    DEFINES['WRAP_SYSTEM_INCLUDES'] = True
+
+if CONFIG['OS_ARCH'] == 'Linux' and 'lib64' in CONFIG['libdir']:
+    DEFINES['HAVE_USR_LIB64_DIR'] = True
+
+DEFINES['GRE_MILESTONE'] = CONFIG['GRE_MILESTONE']
+
+for var in ('APP_VERSION', 'APP_ID'):
+    DEFINES[var] = CONFIG['MOZ_%s' % var]
+
+if CONFIG['MOZILLA_OFFICIAL']:
+    DEFINES['MOZILLA_OFFICIAL'] = True
diff --git a/toolkit/xre/test/win/Makefile.in b/toolkit/xre/test/win/Makefile.in
index 22a409962cf506f85c129800e417bd8462888b9d..565675c4a30eb666cbf8f4cfd36e332282903b31 100644
--- a/toolkit/xre/test/win/Makefile.in
+++ b/toolkit/xre/test/win/Makefile.in
@@ -15,8 +15,6 @@ USE_STATIC_LIBS = 1
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DNS_NO_XPCOM
-
 libs:: TestXREMakeCommandLineWin.ini
 	$(INSTALL) $^ $(FINAL_TARGET)/
 
diff --git a/toolkit/xre/test/win/moz.build b/toolkit/xre/test/win/moz.build
index cc3d2ee08613208f3281768044244e5bc232a901..d1b4808228aea4c82ff127647afec5f50790118a 100644
--- a/toolkit/xre/test/win/moz.build
+++ b/toolkit/xre/test/win/moz.build
@@ -12,3 +12,5 @@ SIMPLE_PROGRAMS = [
 SOURCES += [
     '%s.cpp' % s for s in SIMPLE_PROGRAMS
 ]
+
+DEFINES['NS_NO_XPCOM'] = True
diff --git a/tools/jprof/stub/Makefile.in b/tools/jprof/stub/Makefile.in
index 1446533236286dafb5aa87e064ae06e2edc8a3c3..8e6b6b8f8dcbfd4837f597a75bf95e95dfdf50b2 100644
--- a/tools/jprof/stub/Makefile.in
+++ b/tools/jprof/stub/Makefile.in
@@ -6,7 +6,3 @@
 
 # override optimization
 MOZ_OPTIMIZE_FLAGS = -fno-omit-frame-pointer
-
-include $(topsrcdir)/config/rules.mk
-
-DEFINES		+= -D_IMPL_JPROF_API
diff --git a/tools/jprof/stub/moz.build b/tools/jprof/stub/moz.build
index 9ef5823e57f5070bce40a1e92eb7bd992585fe25..da55dc1aae3326a35b364d927df67217d13c45c0 100644
--- a/tools/jprof/stub/moz.build
+++ b/tools/jprof/stub/moz.build
@@ -17,3 +17,5 @@ LIBRARY_NAME = 'jprof'
 EXPORT_LIBRARY = True
 
 FORCE_SHARED_LIB = True
+
+DEFINES['_IMPL_JPROF_API'] = True
diff --git a/tools/trace-malloc/lib/Makefile.in b/tools/trace-malloc/lib/Makefile.in
index 82936bde3413643bef071d883c1cadef3c235b93..db9a3a20de6ae77329f4bf1e14e708a2cc6258c4 100644
--- a/tools/trace-malloc/lib/Makefile.in
+++ b/tools/trace-malloc/lib/Makefile.in
@@ -6,9 +6,3 @@
 DEFFILE		= $(win_srcdir)/tm.def
 
 STL_FLAGS	=
-
-DEFINES		+= -DMOZ_NO_MOZALLOC
-
-ifdef WRAP_SYSTEM_INCLUDES
-DEFINES		+= -DWRAP_SYSTEM_INCLUDES
-endif
diff --git a/tools/trace-malloc/lib/moz.build b/tools/trace-malloc/lib/moz.build
index 3a0b2fc1dc9d7b69ede628c9fc0daa0c9a733602..81d3cf3ccdef76be257c7d37baa2d2f860cbe1c0 100644
--- a/tools/trace-malloc/lib/moz.build
+++ b/tools/trace-malloc/lib/moz.build
@@ -23,3 +23,8 @@ if CONFIG['OS_ARCH'] == 'WINNT':
     ]
 
 FINAL_LIBRARY = 'xpcom_core'
+
+if CONFIG['WRAP_SYSTEM_INCLUDES']:
+    DEFINES['WRAP_SYSTEM_INCLUDES'] = True
+
+DEFINES['MOZ_NO_MOZALLOC'] = True
diff --git a/webapprt/Makefile.in b/webapprt/Makefile.in
index 0f5710f92d0ed3b96d21b32753d21ce09602a1c5..64f53b1a410193359568c3840bb622385502f861 100644
--- a/webapprt/Makefile.in
+++ b/webapprt/Makefile.in
@@ -10,22 +10,11 @@ PREF_JS_EXPORTS = $(srcdir)/prefs.js \
 
 include $(topsrcdir)/config/rules.mk
 
-ifdef MOZ_DEBUG
-DEFINES += -DMOZ_DEBUG=1
-endif
-
-ifdef MOZILLA_OFFICIAL
-DEFINES += -DMOZILLA_OFFICIAL
-endif
-
 libs:: $(call mkdir_deps,$(FINAL_TARGET))
 	$(call py_action,buildlist,$(FINAL_TARGET)/chrome.manifest "resource webapprt ./")
 
 GRE_BUILDID := $(shell cat $(DEPTH)/config/buildid)
-DEFINES += -DGRE_MILESTONE=$(GRE_MILESTONE) \
-           -DGRE_BUILDID=$(GRE_BUILDID) \
-           -DMOZ_APP_BASENAME=$(MOZ_APP_BASENAME) \
-           $(NULL)
+DEFINES += -DGRE_BUILDID=$(GRE_BUILDID)
 
 webapprt.ini: application.ini.in $(DEPTH)/config/buildid $(topsrcdir)/config/milestone.txt
 	$(call py_action,preprocessor,$(DEFINES) $< -o $@)
diff --git a/webapprt/gtk2/Makefile.in b/webapprt/gtk2/Makefile.in
index c684406a1ee42be4d7a73505f2fd2ff68d874eb8..bfc4fbc749983f0deb10f076c2667bb4d29c6a01 100644
--- a/webapprt/gtk2/Makefile.in
+++ b/webapprt/gtk2/Makefile.in
@@ -9,7 +9,6 @@ LOCAL_INCLUDES += \
   -I$(DEPTH)/build \
   $(NULL)
 
-DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
 
 LIBS = \
diff --git a/webapprt/gtk2/moz.build b/webapprt/gtk2/moz.build
index e102213a60e6a1acf8cc6c56fa30eb3529cd3ba9..f4a499810b10ce9a9ec1c35e854d47c290da1674 100644
--- a/webapprt/gtk2/moz.build
+++ b/webapprt/gtk2/moz.build
@@ -12,3 +12,4 @@ SOURCES += [
 
 FAIL_ON_WARNINGS = True
 
+DEFINES['XPCOM_GLUE'] = True
diff --git a/webapprt/mac/Makefile.in b/webapprt/mac/Makefile.in
index 74c42c6390e683d34890e18418fbcda803f35066..34f9e31144ef29f456e23e9dd1d4c5346e7af4e4 100644
--- a/webapprt/mac/Makefile.in
+++ b/webapprt/mac/Makefile.in
@@ -16,7 +16,6 @@ LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
 LOCAL_INCLUDES += -I$(DEPTH)/build
 
-DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
 
 LIBS = \
diff --git a/webapprt/mac/moz.build b/webapprt/mac/moz.build
index 1ff1b3efef24e3f970178123380c8863082466e7..d49a48d2b04bdbe7c98d26e3fefd0ca3c0d27fd3 100644
--- a/webapprt/mac/moz.build
+++ b/webapprt/mac/moz.build
@@ -10,3 +10,4 @@ SOURCES += [
     'webapprt.mm',
 ]
 
+DEFINES['XPCOM_GLUE'] = True
diff --git a/webapprt/moz.build b/webapprt/moz.build
index 6ab093147fbc6b5f6deff2d23240bfbd9ab12415..0f298755d10ab6c05a37b219f4f33825cb42ddc6 100644
--- a/webapprt/moz.build
+++ b/webapprt/moz.build
@@ -35,3 +35,12 @@ MOCHITEST_MANIFESTS += ['test/content/mochitest.ini']
 # Place webapprt resources in a separate app dir
 DIST_SUBDIR = 'webapprt'
 export('DIST_SUBDIR')
+
+if CONFIG['MOZ_DEBUG']:
+    DEFINES['MOZ_DEBUG'] = 1
+
+if CONFIG['MOZILLA_OFFICIAL']:
+    DEFINES['MOZILLA_OFFICIAL'] = True
+
+DEFINES['GRE_MILESTONE'] = CONFIG['GRE_MILESTONE']
+DEFINES['MOZ_APP_BASENAME'] = CONFIG['MOZ_APP_BASENAME']
diff --git a/webapprt/win/Makefile.in b/webapprt/win/Makefile.in
index 365ea0afd247792f2b01972dc85c3b9b0352b791..beab17a5685baf5e265658dcdc2a57fb94eb46a9 100644
--- a/webapprt/win/Makefile.in
+++ b/webapprt/win/Makefile.in
@@ -13,7 +13,6 @@ LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
 LOCAL_INCLUDES += -I$(DEPTH)/build
 
-DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
 
 LIBS = \
diff --git a/webapprt/win/moz.build b/webapprt/win/moz.build
index 61042d25dfea87f372b9f6b60484071e71c413d5..f9e379e0d2d226afc5f855142064577bd790bd96 100644
--- a/webapprt/win/moz.build
+++ b/webapprt/win/moz.build
@@ -9,3 +9,5 @@ PROGRAM = 'webapprt-stub'
 SOURCES += [
     'webapprt.cpp',
 ]
+
+DEFINES['XPCOM_GLUE'] = True
diff --git a/widget/android/Makefile.in b/widget/android/Makefile.in
index 987f27e06e8ad9fc57073ac793623bfae8375717..da6a6d8c20d49eac86206aeb85c76cff65064fde 100644
--- a/widget/android/Makefile.in
+++ b/widget/android/Makefile.in
@@ -4,8 +4,6 @@
 
 include $(topsrcdir)/config/rules.mk
 
-#DEFINES += -DDEBUG_WIDGETS
-
 LOCAL_INCLUDES += \
 	-I$(topsrcdir)/widget/xpwidgets \
 	-I$(topsrcdir)/widget/shared \
diff --git a/widget/android/moz.build b/widget/android/moz.build
index 4e54a5b2e9b5334ef5eba2b45918daf23c96d68c..80fdbf4cc77340f127e4fb54505b811346b87674 100644
--- a/widget/android/moz.build
+++ b/widget/android/moz.build
@@ -46,3 +46,5 @@ LIBRARY_NAME = 'widget_android'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+#DEFINES['DEBUG_WIDGETS'] = True
diff --git a/widget/gonk/Makefile.in b/widget/gonk/Makefile.in
index e2479ef0dc9b9dc3d814d618d8bb9415d6100e45..dfa45501b7f899e6183963e5a7c06b8f262b7599 100644
--- a/widget/gonk/Makefile.in
+++ b/widget/gonk/Makefile.in
@@ -19,12 +19,6 @@ VPATH           = \
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DHAVE_OFF64_T -DSK_BUILD_FOR_ANDROID_NDK
-
-ifdef MOZ_OMX_DECODER
-DEFINES += -DMOZ_OMX_DECODER
-endif
-
 LOCAL_INCLUDES += \
 	-I$(ANDROID_SOURCE)/hardware/libhardware/include \
 	-I$(ANDROID_SOURCE)/hardware/libhardware_legacy/include \
diff --git a/widget/gonk/libdisplay/Makefile.in b/widget/gonk/libdisplay/Makefile.in
index f074a67e574c58c0777650cc4d7ccfd1bb968967..1b8d3a6b117f4f65d8bc1b63093319113e373181 100644
--- a/widget/gonk/libdisplay/Makefile.in
+++ b/widget/gonk/libdisplay/Makefile.in
@@ -20,8 +20,6 @@ STL_FLAGS=
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES += -DXPCOM_GLUE
-
 LOCAL_INCLUDES += \
 	-I$(ANDROID_SOURCE)/hardware/libhardware/include \
 	-I$(ANDROID_SOURCE)/hardware/libhardware_legacy/include \
diff --git a/widget/gonk/libdisplay/moz.build b/widget/gonk/libdisplay/moz.build
index f33aae067e7ca82c8abc40dd5b34f54ac6a2d053..60e095205f4eac871c8436f5671aa05fb560c418 100644
--- a/widget/gonk/libdisplay/moz.build
+++ b/widget/gonk/libdisplay/moz.build
@@ -41,3 +41,5 @@ LIBRARY_NAME = 'display'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FORCE_STATIC_LIB = True
+
+DEFINES['XPCOM_GLUE'] = True
diff --git a/widget/gonk/moz.build b/widget/gonk/moz.build
index 2ec804659dbafc8108273ffe5c7218eb21b14fc0..cb3f6704048438f091d112c2f7a85e9bea6640f0 100644
--- a/widget/gonk/moz.build
+++ b/widget/gonk/moz.build
@@ -63,3 +63,9 @@ LIBRARY_NAME = 'widget_gonk'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['HAVE_OFF64_T'] = True
+DEFINES['SK_BUILD_FOR_ANDROID_NDK'] = True
+
+if CONFIG['MOZ_OMX_DECODER']:
+    DEFINES['MOZ_OMX_DECODER'] = True
diff --git a/widget/gtk/Makefile.in b/widget/gtk/Makefile.in
index bf88269a18528d686c369657a053217955c85b6f..089f475585a2cfaf6f3a8fe2b394a95c6bb2a4a7 100644
--- a/widget/gtk/Makefile.in
+++ b/widget/gtk/Makefile.in
@@ -12,8 +12,6 @@ CXXFLAGS        += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) \
 CFLAGS          += $(TK_CFLAGS)
 CXXFLAGS        += $(TK_CFLAGS)
 
-DEFINES		+= -DCAIRO_GFX -DMOZ_APP_NAME='"$(MOZ_APP_NAME)"'
-
 INCLUDES	+= \
 		-I$(srcdir)/../xpwidgets \
 		-I$(srcdir)/../shared \
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
index 5ea228a15b9d3ee9f4372773de4a1b9f465e862e..f5d4d777b6eef4b8ae4e6549f908abd77cae4974 100644
--- a/widget/gtk/moz.build
+++ b/widget/gtk/moz.build
@@ -80,3 +80,7 @@ else:
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['CAIRO_GFX'] = True
+
+DEFINES['MOZ_APP_NAME'] = '"%s"' % CONFIG['MOZ_APP_NAME']
diff --git a/widget/gtkxtbin/Makefile.in b/widget/gtkxtbin/Makefile.in
index 39a9541538e26c260a641fb380712a7ba3e7ecef..89188d36e8205763cf08e4d7b72be7a9f7e638ad 100644
--- a/widget/gtkxtbin/Makefile.in
+++ b/widget/gtkxtbin/Makefile.in
@@ -10,8 +10,6 @@ ifdef MOZ_ENABLE_GTK2
 CFLAGS		+= $(MOZ_GTK2_CFLAGS)
 endif
 
-DEFINES		+= -D_IMPL_GTKXTBIN_API
-
 INCLUDES	+= \
 		-I$(srcdir) \
 		$(NULL)
diff --git a/widget/gtkxtbin/moz.build b/widget/gtkxtbin/moz.build
index 9ca10b765cf9e4c56477a8034f8e5c6883666d79..b8293e5049c16e66f83b6f59b84156bb4f979edb 100644
--- a/widget/gtkxtbin/moz.build
+++ b/widget/gtkxtbin/moz.build
@@ -14,3 +14,5 @@ if CONFIG['MOZ_ENABLE_GTK2']:
     ]
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['_IMPL_GTKXTBIN_API'] = True
diff --git a/widget/os2/Makefile.in b/widget/os2/Makefile.in
index 21e42a878e5ccf0b6d170811c683a692140fff59..db811de8569b0eff5bdf674592b407a94875cbce 100644
--- a/widget/os2/Makefile.in
+++ b/widget/os2/Makefile.in
@@ -9,10 +9,6 @@ include $(topsrcdir)/config/rules.mk
 
 CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS)
 
-DEFINES += -DUSE_OS2_TOOLKIT_HEADERS
-
-DEFINES += -DMOZ_APP_DISPLAYNAME=\"$(MOZ_APP_DISPLAYNAME)\"
-
 LOCAL_INCLUDES	= -I. -I$(srcdir)/../xpwidgets -I$(srcdir)
 
 install-readme:	README.$(MOZ_APP_NAME)
diff --git a/widget/os2/moz.build b/widget/os2/moz.build
index 93cc3621cbd661b77e749013de3b11e55db6c2f9..14f7e330de7caa3a3ca6f835ff2b7811deb0ca91 100644
--- a/widget/os2/moz.build
+++ b/widget/os2/moz.build
@@ -28,3 +28,7 @@ SOURCES += [
 LIBRARY_NAME = 'wdgtos2'
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['USE_OS2_TOOLKIT_HEADERS'] = True
+
+DEFINES['MOZ_APP_DISPLAYNAME'] = '"%s"' % CONFIG['MOZ_APP_DISPLAYNAME']
diff --git a/widget/qt/Makefile.in b/widget/qt/Makefile.in
index ecb957c337e43efdf717712e5c90b7c70945af92..6f5c4a5fddde03b8a506691a9e9f3b115fe8dd87 100644
--- a/widget/qt/Makefile.in
+++ b/widget/qt/Makefile.in
@@ -10,22 +10,6 @@ CXXFLAGS	+= $(MOZ_QT_CFLAGS) $(GLIB_CFLAGS) $(MOZ_CAIRO_CFLAGS) \
 CFLAGS		+= $(MOZ_QT_CFLAGS) $(GLIB_CFLAGS) $(MOZ_CAIRO_CFLAGS) \
 		$(MOZ_PIXMAN_CFLAGS)
 
-#DEFINES		+= -DDEBUG_WIDGETS
-
-ifeq ($(OS_ARCH), Linux)
-DEFINES         += -D_BSD_SOURCE
-endif
-ifeq ($(OS_ARCH), SunOS) 
-ifndef GNU_CC
-# When using Sun's WorkShop compiler, including
-# /wherever/workshop-5.0/SC5.0/include/CC/std/time.h
-# causes most of these compiles to fail with:
-# line 29: Error: Multiple declaration for std::tm.
-# So, this gets around the problem.
-DEFINES         += -D_TIME_H=1
-endif
-endif
-
 LOCAL_INCLUDES	+= \
 		   -I$(topsrcdir)/widget/shared \
 		   -I$(topsrcdir)/widget/xpwidgets \
diff --git a/widget/qt/faststartupqt/Makefile.in b/widget/qt/faststartupqt/Makefile.in
index 4b4da16657d2af02ba110ee3d5b3ef74e5b5a721..989e7fe76db30bb7f7041cd5ae32b769f4a50210 100644
--- a/widget/qt/faststartupqt/Makefile.in
+++ b/widget/qt/faststartupqt/Makefile.in
@@ -24,5 +24,3 @@ export:: $(EXPORT_SOURCES)
 LOCAL_INCLUDES += \
 	$(MOZ_QT_CFLAGS) \
 	$(NULL)
-
-DEFINES += -DLIBRARY_FILENAME="$(SHARED_LIBRARY)" -DMOZ_NO_MOZALLOC -DXPCOM_GLUE
diff --git a/widget/qt/faststartupqt/moz.build b/widget/qt/faststartupqt/moz.build
index aa14e14766045d941566a5aa7bc9776260add9e1..177af102ccb0dc16d0a4a94878bb98a27227a2d0 100644
--- a/widget/qt/faststartupqt/moz.build
+++ b/widget/qt/faststartupqt/moz.build
@@ -20,3 +20,12 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['LIBRARY_FILENAME'] = '%s%s%s' % (
+    CONFIG['DLL_PREFIX'],
+    LIBRARY_NAME,
+    CONFIG['DLL_SUFFIX']
+)
+
+DEFINES['MOZ_NO_MOZALLOC'] = True
+DEFINES['XPCOM_GLUE'] = True
diff --git a/widget/qt/moz.build b/widget/qt/moz.build
index 16a2dd26b9b20e2dfdf393123036858ef9add7e2..d65045febc3652417f17d41a99600810e18b3d81 100644
--- a/widget/qt/moz.build
+++ b/widget/qt/moz.build
@@ -61,3 +61,16 @@ LIBRARY_NAME = 'widget_qt'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+#DEFINES['DEBUG_WIDGETS'] = True
+
+if CONFIG['OS_ARCH'] == 'Linux':
+    DEFINES['_BSD_SOURCE'] = True
+
+if CONFIG['OS_ARCH'] == 'SunOS' and not CONFIG['GNU_CC']:
+    # When using Sun's WorkShop compiler, including
+    # /wherever/workshop-5.0/SC5.0/include/CC/std/time.h
+    # causes most of these compiles to fail with:
+    # line 29: Error: Multiple declaration for std::tm.
+    # So, this gets around the problem.
+    DEFINES['_TIME_H'] = 1
diff --git a/widget/windows/Makefile.in b/widget/windows/Makefile.in
index 13c889b984f248feb4f8172e533b23a4d7181ba7..69ae8f627cbc35be7761c8149a48c39c0a8dd69f 100644
--- a/widget/windows/Makefile.in
+++ b/widget/windows/Makefile.in
@@ -4,15 +4,6 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 RESFILE		= widget.res
-DEFINES		+= -DMOZ_UNICODE 
-
-ifdef MOZ_ENABLE_D3D9_LAYER
-DEFINES		+= -DMOZ_ENABLE_D3D9_LAYER
-endif
-
-ifdef MOZ_ENABLE_D3D10_LAYER
-DEFINES		+= -DMOZ_ENABLE_D3D10_LAYER
-endif
 
 LOCAL_INCLUDES	= \
 		-I. \
diff --git a/widget/windows/moz.build b/widget/windows/moz.build
index 16c00da872c22eb722bab6d66aa31f2d766fac15..1e31c64aa85959d73a83e580c3c2acbf07d3041a 100644
--- a/widget/windows/moz.build
+++ b/widget/windows/moz.build
@@ -88,3 +88,9 @@ LIBRARY_NAME = 'widget_windows'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['MOZ_UNICODE'] = True
+
+for var in ('MOZ_ENABLE_D3D9_LAYER', 'MOZ_ENABLE_D3D10_LAYER'):
+    if CONFIG[var]:
+        DEFINES[var] = True
diff --git a/widget/windows/winrt/Makefile.in b/widget/windows/winrt/Makefile.in
index 417cb7911b4fa88c2b010c844a3da45ee66020a5..45ccc1aa127ebbe09e78b26dd706c8b4331acb22 100644
--- a/widget/windows/winrt/Makefile.in
+++ b/widget/windows/winrt/Makefile.in
@@ -2,16 +2,6 @@
 # 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/.
 
-DEFINES		+= -DMOZ_UNICODE
-
-ifdef MOZ_ENABLE_D3D9_LAYER
-DEFINES		+= -DMOZ_ENABLE_D3D9_LAYER
-endif
-
-ifdef MOZ_ENABLE_D3D10_LAYER
-DEFINES		+= -DMOZ_ENABLE_D3D10_LAYER
-endif
-
 LOCAL_INCLUDES	= \
 		-I. \
 		-I$(srcdir)/../../shared \
diff --git a/widget/windows/winrt/moz.build b/widget/windows/winrt/moz.build
index fe9e66d6c572918263c07622a549b7071345c7e9..586a505a1b2308f393999eb9e14c8b9caf51e40d 100644
--- a/widget/windows/winrt/moz.build
+++ b/widget/windows/winrt/moz.build
@@ -28,3 +28,9 @@ EXTRA_COMPONENTS += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['MOZ_UNICODE'] = True
+
+for var in ('MOZ_ENABLE_D3D9_LAYER', 'MOZ_ENABLE_D3D10_LAYER'):
+    if CONFIG[var]:
+        DEFINES[var] = True
diff --git a/widget/xpwidgets/Makefile.in b/widget/xpwidgets/Makefile.in
index 1fc151267535f7481ece705282a6761ebf791f2b..031c55f9ee744773abb969191a6ff3ba986f56c8 100644
--- a/widget/xpwidgets/Makefile.in
+++ b/widget/xpwidgets/Makefile.in
@@ -3,10 +3,6 @@
 # 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/.
 
-ifdef MOZ_ENABLE_D3D10_LAYER
-DEFINES		+= -DMOZ_ENABLE_D3D10_LAYER
-endif
-
 ifneq (,$(filter gtk3 gtk2,$(MOZ_WIDGET_TOOLKIT)))
 # gtk3 shares includes with gtk2
 LOCAL_INCLUDES	+= \
diff --git a/widget/xpwidgets/moz.build b/widget/xpwidgets/moz.build
index 86a612230091a0d61f0624c6be053dc417111966..616aec7848a5655b8b2d41c0360915751f99736b 100644
--- a/widget/xpwidgets/moz.build
+++ b/widget/xpwidgets/moz.build
@@ -75,3 +75,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gonk', 'android', 'qt', 'gtk2'
     FINAL_LIBRARY = 'widget_%s' % CONFIG['MOZ_WIDGET_TOOLKIT']
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'os2':
     FINAL_LIBRARY = 'wdgtos2'
+
+if CONFIG['MOZ_ENABLE_D3D10_LAYER']:
+    DEFINES['MOZ_ENABLE_D3D10_LAYER'] = True
diff --git a/widget/xremoteclient/Makefile.in b/widget/xremoteclient/Makefile.in
index c65c1a1e3d97b2c9af5b069827f5d0a3b1442c34..1076b5c3b38350bffa6181f34134042f3cc4f3bb 100644
--- a/widget/xremoteclient/Makefile.in
+++ b/widget/xremoteclient/Makefile.in
@@ -7,8 +7,6 @@
 # the application binaries. The fact that it's under mozilla/widget is a fluke
 # of tree history.
 
-DEFINES += -DXPCOM_GLUE
-
 LIBCPPSRCS = XRemoteClient.cpp
 
 OBJS = $(LIBCPPSRCS:.cpp=.$(OBJ_SUFFIX))
diff --git a/widget/xremoteclient/moz.build b/widget/xremoteclient/moz.build
index 5b7217a9b0d677e1a4d4d66bc0bb91ec7439482f..4b12055dfe6a1fb54fee27f652e9fd70ed9d5fdc 100644
--- a/widget/xremoteclient/moz.build
+++ b/widget/xremoteclient/moz.build
@@ -7,3 +7,5 @@
 PROGRAM = 'mozilla-xremote-client'
 
 FINAL_LIBRARY = 'xulapp_s'
+
+DEFINES['XPCOM_GLUE'] = True
diff --git a/xpcom/build/Makefile.in b/xpcom/build/Makefile.in
index c1ec63f65d73a53843f6d8ea0b0b371213a58e4a..0f712e92af48f0b8d1ca97ba80923cabbeb4293d 100644
--- a/xpcom/build/Makefile.in
+++ b/xpcom/build/Makefile.in
@@ -23,15 +23,6 @@ LOCAL_INCLUDES	= \
 
 include $(topsrcdir)/config/rules.mk
 
-DEFINES		+= \
-		-D_IMPL_NS_STRINGAPI \
-		-DOMNIJAR_NAME="$(OMNIJAR_NAME)" \
-		$(NULL)
-
-ifdef TARGET_XPCOM_ABI
-DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\"
-endif
-
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 CXXFLAGS	+= $(TK_CFLAGS)
 endif
diff --git a/xpcom/build/moz.build b/xpcom/build/moz.build
index b4deb459277cbd7c46d219c61d7970c0d9bba610..c3885269a071c78859e043638f6af5d4a38cd581 100644
--- a/xpcom/build/moz.build
+++ b/xpcom/build/moz.build
@@ -69,3 +69,9 @@ LIBRARY_NAME = 'xpcom_core'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+DEFINES['_IMPL_NS_STRINGAPI'] = True
+DEFINES['OMNIJAR_NAME'] = CONFIG['OMNIJAR_NAME']
+
+if CONFIG['TARGET_XPCOM_ABI']:
+    DEFINES['TARGET_XPCOM_ABI'] = '"%s"' % CONFIG['TARGET_XPCOM_ABI']
diff --git a/xpcom/glue/Makefile.in b/xpcom/glue/Makefile.in
index d4c989b8ace6aaed34009ad759a7fc8d67cf33e8..cf27052af67b9833a04da35102b341b5d1716e72 100644
--- a/xpcom/glue/Makefile.in
+++ b/xpcom/glue/Makefile.in
@@ -16,9 +16,4 @@ ifdef _MSC_VER
 # Don't include directives about which CRT to use
 OS_COMPILE_CXXFLAGS += -Zl
 OS_COMPILE_CFLAGS += -Zl
-DEFINES += -D_USE_ANSI_CPP
-endif
-
-ifdef TARGET_XPCOM_ABI
-DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\"
 endif
diff --git a/xpcom/glue/moz.build b/xpcom/glue/moz.build
index e5b47aed6baf918c73a2a5f04ca1922586375770..97af35c55d47cf631e1f728152b5db4545c90f8b 100644
--- a/xpcom/glue/moz.build
+++ b/xpcom/glue/moz.build
@@ -102,3 +102,9 @@ SDK_LIBRARY = [
 ]
 
 FORCE_STATIC_LIB = True
+
+if CONFIG['_MSC_VER']:
+    DEFINES['_USE_ANSI_CPP'] = True
+
+if CONFIG['TARGET_XPCOM_ABI']:
+    DEFINES['TARGET_XPCOM_ABI'] = '"%s"' % CONFIG['TARGET_XPCOM_ABI']
diff --git a/xpcom/glue/nomozalloc/Makefile.in b/xpcom/glue/nomozalloc/Makefile.in
index 079592894998edb135a0e2578848c3230aa71c76..84043501d3782fb688f6e089cfb4b5bd5868ddb0 100644
--- a/xpcom/glue/nomozalloc/Makefile.in
+++ b/xpcom/glue/nomozalloc/Makefile.in
@@ -24,11 +24,4 @@ ifdef _MSC_VER
 # Don't include directives about which CRT to use
 OS_COMPILE_CXXFLAGS += -Zl
 OS_COMPILE_CFLAGS += -Zl
-DEFINES += -D_USE_ANSI_CPP
 endif
-
-ifdef TARGET_XPCOM_ABI
-DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\"
-endif
-
-DEFINES += -DMOZ_NO_MOZALLOC
diff --git a/xpcom/glue/nomozalloc/moz.build b/xpcom/glue/nomozalloc/moz.build
index 0cc570a66232b8e8cb02693584aa5e90437f3e4c..57d183664f9148a0644514f8bc45446f56a32334 100644
--- a/xpcom/glue/nomozalloc/moz.build
+++ b/xpcom/glue/nomozalloc/moz.build
@@ -22,3 +22,11 @@ SDK_LIBRARY = [
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = True
+
+if CONFIG['_MSC_VER']:
+    DEFINES['_USE_ANSI_CPP'] = True
+
+if CONFIG['TARGET_XPCOM_ABI']:
+    DEFINES['TARGET_XPCOM_ABI'] = '"%s"' % CONFIG['TARGET_XPCOM_ABI']
+
+DEFINES['MOZ_NO_MOZALLOC'] = True
diff --git a/xpcom/glue/standalone/Makefile.in b/xpcom/glue/standalone/Makefile.in
index 9221950a34fec584923094dd7f68872950ff3896..ae5265823e14bef1b803038f3e1d6e04710502ba 100644
--- a/xpcom/glue/standalone/Makefile.in
+++ b/xpcom/glue/standalone/Makefile.in
@@ -19,11 +19,4 @@ ifdef _MSC_VER
 # Don't include directives in obj files about which CRT to use
 OS_COMPILE_CXXFLAGS += -Zl
 OS_COMPILE_CFLAGS += -Zl
-DEFINES += -D_USE_ANSI_CPP
-endif
-
-DEFINES		+= -DXPCOM_GLUE
-
-ifdef TARGET_XPCOM_ABI
-DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\"
 endif
diff --git a/xpcom/glue/standalone/moz.build b/xpcom/glue/standalone/moz.build
index f336f6a2ff7edcef789ba0d0702aa9600046c19f..1abeca452e01f9bfc0b2a9f16373035ab6ed7cfc 100644
--- a/xpcom/glue/standalone/moz.build
+++ b/xpcom/glue/standalone/moz.build
@@ -29,3 +29,11 @@ SDK_LIBRARY = [
 ]
 
 FORCE_STATIC_LIB = True
+
+if CONFIG['_MSC_VER']:
+    DEFINES['_USE_ANSI_CPP'] = True
+
+DEFINES['XPCOM_GLUE'] = True
+
+if CONFIG['TARGET_XPCOM_ABI']:
+    DEFINES['TARGET_XPCOM_ABI'] = '"%s"' % CONFIG['TARGET_XPCOM_ABI']
diff --git a/xpcom/glue/standalone/staticruntime/Makefile.in b/xpcom/glue/standalone/staticruntime/Makefile.in
index d854107d2309823f5a4a4e5199574a733375d625..89edca4a68d23e0816e639507acfc2528bb39275 100644
--- a/xpcom/glue/standalone/staticruntime/Makefile.in
+++ b/xpcom/glue/standalone/staticruntime/Makefile.in
@@ -21,11 +21,4 @@ ifdef _MSC_VER
 # Don't include directives in obj files about which CRT to use
 OS_COMPILE_CXXFLAGS += -Zl
 OS_COMPILE_CFLAGS += -Zl
-DEFINES += -D_USE_ANSI_CPP
-endif
-
-DEFINES		+= -DXPCOM_GLUE
-
-ifdef TARGET_XPCOM_ABI
-DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\"
 endif
diff --git a/xpcom/glue/standalone/staticruntime/moz.build b/xpcom/glue/standalone/staticruntime/moz.build
index d717d44e481cfc4bdadef6e8b0bd409b0852db73..b38f972ecdda0d07a032f1bdcd4dc145fb909aa3 100644
--- a/xpcom/glue/standalone/staticruntime/moz.build
+++ b/xpcom/glue/standalone/staticruntime/moz.build
@@ -21,3 +21,11 @@ SDK_LIBRARY = [
 
 # create a static lib
 FORCE_STATIC_LIB = True
+
+if CONFIG['_MSC_VER']:
+    DEFINES['_USE_ANSI_CPP'] = True
+
+DEFINES['XPCOM_GLUE'] = True
+
+if CONFIG['TARGET_XPCOM_ABI']:
+    DEFINES['TARGET_XPCOM_ABI'] = '"%s"' % CONFIG['TARGET_XPCOM_ABI']
diff --git a/xpcom/glue/staticruntime/Makefile.in b/xpcom/glue/staticruntime/Makefile.in
index a7a143d148130e1ccaa7fe360a135c99f581349a..d530e193b6fddb0ae48b239ff6c38768a73584b0 100644
--- a/xpcom/glue/staticruntime/Makefile.in
+++ b/xpcom/glue/staticruntime/Makefile.in
@@ -22,9 +22,4 @@ ifdef _MSC_VER
 # Don't include directives about which CRT to use
 OS_COMPILE_CXXFLAGS += -Zl
 OS_COMPILE_CFLAGS += -Zl
-DEFINES += -D_USE_ANSI_CPP
-endif
-
-ifdef TARGET_XPCOM_ABI
-DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\"
 endif
diff --git a/xpcom/glue/staticruntime/moz.build b/xpcom/glue/staticruntime/moz.build
index bf93358e19aa356dc73a160aae6a9d143ae393ba..c016fc3d281913b8f71075be4ae18daa7e6f5062 100644
--- a/xpcom/glue/staticruntime/moz.build
+++ b/xpcom/glue/staticruntime/moz.build
@@ -21,3 +21,9 @@ SDK_LIBRARY = [
 ]
 
 FORCE_STATIC_LIB = True
+
+if CONFIG['_MSC_VER']:
+    DEFINES['_USE_ANSI_CPP'] = True
+
+if CONFIG['TARGET_XPCOM_ABI']:
+    DEFINES['TARGET_XPCOM_ABI'] = '"%s"' % CONFIG['TARGET_XPCOM_ABI']
diff --git a/xpcom/io/Makefile.in b/xpcom/io/Makefile.in
index 0f56e9976a37a9b67ce629d53f4752423b5a833b..2969134195f0f5171a0efa12a23334dc0f773fad 100644
--- a/xpcom/io/Makefile.in
+++ b/xpcom/io/Makefile.in
@@ -5,10 +5,4 @@
 MOZILLA_INTERNAL_API = 1
 include $(topsrcdir)/config/rules.mk
 
-ifeq ($(OS_ARCH),Linux)
-ifneq (,$(findstring lib64,$(libdir)))
-DEFINES     += -DHAVE_USR_LIB64_DIR
-endif
-endif
-
 LOCAL_INCLUDES	+= -I..
diff --git a/xpcom/io/moz.build b/xpcom/io/moz.build
index 0ae81eb53293842eef328bad292a95ac7c4fdc7d..74d1e8e1a92ae5cf11311b5b8c9604851b853400 100644
--- a/xpcom/io/moz.build
+++ b/xpcom/io/moz.build
@@ -127,3 +127,6 @@ MSVC_ENABLE_PGO = True
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xpcom_core'
+
+if CONFIG['OS_ARCH'] == 'Linux' and 'lib64' in CONFIG['libdir']:
+    DEFINES['HAVE_USR_LIB64_DIR'] = True
diff --git a/xpcom/reflect/xptcall/src/md/os2/Makefile.in b/xpcom/reflect/xptcall/src/md/os2/Makefile.in
index 8d118f122b897385e84cb7b44e256a503740fdc7..bfd197a92cfc235cf58f39247e68859c779efa87 100644
--- a/xpcom/reflect/xptcall/src/md/os2/Makefile.in
+++ b/xpcom/reflect/xptcall/src/md/os2/Makefile.in
@@ -9,8 +9,6 @@ LOCAL_INCLUDES = \
 		-I$(srcdir)/../unix \
 		-I$(srcdir)/../../../../xptinfo/src \
 		$(NULL)
-DEFINES		+= -DMOZ_NEED_LEADING_UNDERSCORE
-
 include $(topsrcdir)/config/rules.mk
 
 LOCAL_INCLUDES	+= -I$(srcdir)/../..
diff --git a/xpcom/reflect/xptcall/src/md/os2/moz.build b/xpcom/reflect/xptcall/src/md/os2/moz.build
index 8943b15a42c91c9cc24f6912a085be8c04d3fe85..3f4561636e683f6068983ceef0dbfffdeda24798 100644
--- a/xpcom/reflect/xptcall/src/md/os2/moz.build
+++ b/xpcom/reflect/xptcall/src/md/os2/moz.build
@@ -10,3 +10,5 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xpcom_core'
+
+DEFINES['MOZ_NEED_LEADING_UNDERSCORE'] = True
diff --git a/xpcom/reflect/xptcall/src/md/unix/Makefile.in b/xpcom/reflect/xptcall/src/md/unix/Makefile.in
index 5ef8a45e304d7eba046487224340c366ee917a1c..07de632ab85c35bc572cfca898bba8573693871b 100644
--- a/xpcom/reflect/xptcall/src/md/unix/Makefile.in
+++ b/xpcom/reflect/xptcall/src/md/unix/Makefile.in
@@ -18,22 +18,6 @@ NO_PROFILE_GUIDED_OPTIMIZE = 1
 endif
 endif
 
-######################################################################
-# i386 and beyond
-######################################################################
-#
-# Lots of Unixish x86 flavors
-#
-
-ifeq (Darwin,$(OS_ARCH))
-ifeq (86,$(findstring 86,$(OS_TEST)))
-ifeq (x86_64,$(OS_TEST))
-else
-DEFINES		+= -DMOZ_NEED_LEADING_UNDERSCORE
-endif
-endif
-endif
-
 ######################################################################
 # ARM
 ######################################################################
diff --git a/xpcom/reflect/xptcall/src/md/unix/moz.build b/xpcom/reflect/xptcall/src/md/unix/moz.build
index 9a1a99243bf4825c8167393275aa1ece810ed160..0e3b04131707e997b19fe0957413a8b70242ca9a 100644
--- a/xpcom/reflect/xptcall/src/md/unix/moz.build
+++ b/xpcom/reflect/xptcall/src/md/unix/moz.build
@@ -16,6 +16,8 @@ if CONFIG['OS_ARCH'] == 'Darwin':
         GENERATED_SOURCES += [
             'xptcstubs_asm_ppc_darwin.s',
         ]
+    if '86' in CONFIG['OS_TEST'] and CONFIG['OS_TEST'] != 'x86_64':
+        DEFINES['MOZ_NEED_LEADING_UNDERSCORE'] = True
 
 if CONFIG['OS_ARCH'] in ('NetBSD', 'OpenBSD', 'GNU'):
     if CONFIG['CPU_ARCH'] == 'x86':
diff --git a/xpcom/sample/program/Makefile.in b/xpcom/sample/program/Makefile.in
index cf243e6f0d2ab7042f01297f9d7fccf246c5608e..1b8e98f121e7fb8840dd1ccf74063ecc7e4ca753 100644
--- a/xpcom/sample/program/Makefile.in
+++ b/xpcom/sample/program/Makefile.in
@@ -17,7 +17,3 @@ LIBS            += \
 		$(TK_LIBS) \
 		$(NULL)
 endif
-
-# Whatever code is going to be linked with the *standalone* glue must be
-# built with the XPCOM_GLUE define set.
-DEFINES += -DXPCOM_GLUE
diff --git a/xpcom/sample/program/moz.build b/xpcom/sample/program/moz.build
index 05081e6626f65ecc913dbc599f14bf736c5cb110..8c32a9378320a25b31033e6d2b683173d0015b57 100644
--- a/xpcom/sample/program/moz.build
+++ b/xpcom/sample/program/moz.build
@@ -14,3 +14,7 @@ SOURCES += [
 SIMPLE_PROGRAMS += [
     'nsTestSample'
 ]
+
+# Whatever code is going to be linked with the *standalone* glue must be
+# built with the XPCOM_GLUE define set.
+DEFINES['XPCOM_GLUE'] = True
diff --git a/xpcom/tests/bug656331_component/Makefile.in b/xpcom/tests/bug656331_component/Makefile.in
index 523a6c51d099fda86d1b4d250cfb8e7d8bde2fbc..fbd8c264150f3ea26133dfdeb35cee6294318726 100644
--- a/xpcom/tests/bug656331_component/Makefile.in
+++ b/xpcom/tests/bug656331_component/Makefile.in
@@ -24,8 +24,6 @@ EXTRA_DSO_LDOPTS += \
   $(NULL)
 endif
 
-DEFINES += -DLIBRARY_FILENAME="$(SHARED_LIBRARY)"
-
 LIB_FILES = $(SHARED_LIBRARY)
 LIB_DEST = $(testxpcobjdir)/$(unittestlocation)
 INSTALL_TARGETS += LIB
diff --git a/xpcom/tests/bug656331_component/moz.build b/xpcom/tests/bug656331_component/moz.build
index 68cfd97ac4947d7f6985297c1a454567b57d2b3a..eb9277993625013a8ef2f6d40a9da880c9e50e95 100644
--- a/xpcom/tests/bug656331_component/moz.build
+++ b/xpcom/tests/bug656331_component/moz.build
@@ -15,3 +15,9 @@ LIBRARY_NAME = 'test656331'
 IS_COMPONENT = True
 
 FORCE_SHARED_LIB = True
+
+DEFINES['LIBRARY_FILENAME'] = '%s%s%s' % (
+    CONFIG['DLL_PREFIX'],
+    LIBRARY_NAME,
+    CONFIG['DLL_SUFFIX']
+)
diff --git a/xpcom/tests/component/Makefile.in b/xpcom/tests/component/Makefile.in
index dbb8514fe655e3c3783bb2f0be60c09e861de96a..710b030ed58c718fd56082d859aef8df9fffd040 100644
--- a/xpcom/tests/component/Makefile.in
+++ b/xpcom/tests/component/Makefile.in
@@ -22,8 +22,6 @@ EXTRA_DSO_LDOPTS += \
 		$(NULL)
 endif
 
-DEFINES += -DLIBRARY_FILENAME="$(SHARED_LIBRARY)"
-
 LIB_FILES = $(SHARED_LIBRARY)
 LIB_DEST = $(testxpcobjdir)/$(unittestlocation)
 INSTALL_TARGETS += LIB
diff --git a/xpcom/tests/component/moz.build b/xpcom/tests/component/moz.build
index 5d55dea24dd1ac849142e47271f3e556a694c157..82448ce4e0b791782f05838bdbbc278dd6513e63 100644
--- a/xpcom/tests/component/moz.build
+++ b/xpcom/tests/component/moz.build
@@ -15,3 +15,9 @@ LIBRARY_NAME = 'testcomponent'
 IS_COMPONENT = True
 
 FORCE_SHARED_LIB = True
+
+DEFINES['LIBRARY_FILENAME'] = '%s%s%s' % (
+    CONFIG['DLL_PREFIX'],
+    LIBRARY_NAME,
+    CONFIG['DLL_SUFFIX']
+)
diff --git a/xpcom/tests/component_no_aslr/Makefile.in b/xpcom/tests/component_no_aslr/Makefile.in
index f6d11543673d231deebc94f3da3fab114614341a..33c2c3eed285cff29aee45d86d67774ef8831361 100644
--- a/xpcom/tests/component_no_aslr/Makefile.in
+++ b/xpcom/tests/component_no_aslr/Makefile.in
@@ -29,5 +29,3 @@ INSTALL_TARGETS += LIB
 include $(topsrcdir)/config/rules.mk
 
 LDFLAGS := $(filter-out -DYNAMICBASE,$(LDFLAGS)) -DYNAMICBASE:NO
-
-DEFINES += -DLIBRARY_FILENAME="$(SHARED_LIBRARY)"
diff --git a/xpcom/tests/component_no_aslr/moz.build b/xpcom/tests/component_no_aslr/moz.build
index 1e03dd7f1e6e404655458eca9473fe2aae9b2482..0af8035fb631c3a3b1eaff17fa7a004249acda42 100644
--- a/xpcom/tests/component_no_aslr/moz.build
+++ b/xpcom/tests/component_no_aslr/moz.build
@@ -15,3 +15,9 @@ LIBRARY_NAME = 'testcompnoaslr'
 IS_COMPONENT = True
 
 FORCE_SHARED_LIB = True
+
+DEFINES['LIBRARY_FILENAME'] = '%s%s%s' % (
+    CONFIG['DLL_PREFIX'],
+    LIBRARY_NAME,
+    CONFIG['DLL_SUFFIX']
+)
diff --git a/xulrunner/app/Makefile.in b/xulrunner/app/Makefile.in
index 62dbe48d43726993f12dbedf719e7174c8a90294..f935caaee0adeb97d8a584f4b728ddf0567f6e9a 100644
--- a/xulrunner/app/Makefile.in
+++ b/xulrunner/app/Makefile.in
@@ -8,13 +8,6 @@ GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/,xulrunner.js)
 
 DEFINES += -DAB_CD=$(AB_CD)
 
-DEFINES += -DXULRUNNER_PROGNAME=\"xulrunner\"
-
-ifdef TARGET_XPCOM_ABI
-DEFINES += -DTARGET_XPCOM_ABI=\"$(TARGET_XPCOM_ABI)\"
-endif
-
-DEFINES += -DXPCOM_GLUE
 STL_FLAGS=
 
 LOCAL_INCLUDES += \
diff --git a/xulrunner/app/moz.build b/xulrunner/app/moz.build
index e809fc88be4597f993cb1bee58f7441f84b59955..dc549308f322e7c6aa964b88e85121ce6782b738 100644
--- a/xulrunner/app/moz.build
+++ b/xulrunner/app/moz.build
@@ -11,3 +11,9 @@ PROGRAM = 'xulrunner'
 SOURCES += [
     'nsXULRunnerApp.cpp',
 ]
+
+DEFINES['XULRUNNER_PROGNAME'] = '"xulrunner"'
+DEFINES['XPCOM_GLUE'] = True
+
+if CONFIG['TARGET_XPCOM_ABI']:
+    DEFINES['TARGET_XPCOM_ABI'] = '"%s"' % CONFIG['TARGET_XPCOM_ABI']
diff --git a/xulrunner/setup/Makefile.in b/xulrunner/setup/Makefile.in
deleted file mode 100644
index e36fc237f80350a64413145a4eeac39563ba589a..0000000000000000000000000000000000000000
--- a/xulrunner/setup/Makefile.in
+++ /dev/null
@@ -1,5 +0,0 @@
-# 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/.
-
-DEFINES = -DBIN_SUFFIX=$(BIN_SUFFIX)
diff --git a/xulrunner/setup/moz.build b/xulrunner/setup/moz.build
index 6ff4682e8b04bac8fe7e3c9d6039ef6ff6f55d73..5f97e9dd3369087c8f388e882a79249782bfe3db 100644
--- a/xulrunner/setup/moz.build
+++ b/xulrunner/setup/moz.build
@@ -17,3 +17,5 @@ EXTRA_COMPONENTS += [
 EXTRA_PP_COMPONENTS += [
     'nsXULAppInstall.js',
 ]
+
+DEFINES['BIN_SUFFIX'] = CONFIG['BIN_SUFFIX']
diff --git a/xulrunner/stub/Makefile.in b/xulrunner/stub/Makefile.in
index bba6c240ba1a1190b488c3294429ea51fd4d454f..b7775887aaf299afbca206e5e07298c52764e685 100644
--- a/xulrunner/stub/Makefile.in
+++ b/xulrunner/stub/Makefile.in
@@ -12,7 +12,6 @@ LOCAL_INCLUDES = \
   -I$(topsrcdir)/xpcom/base \
   $(NULL)
 
-DEFINES  += -DXPCOM_GLUE
 STL_FLAGS=
 
 LIBS = \
diff --git a/xulrunner/stub/moz.build b/xulrunner/stub/moz.build
index c1f98b8e04f071b980b80fd48dfc5298721156ef..dcce9657d0b65ba956cb8fe96249878d675ff969 100644
--- a/xulrunner/stub/moz.build
+++ b/xulrunner/stub/moz.build
@@ -16,3 +16,5 @@ SOURCES += [
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     FINAL_TARGET = 'dist/XUL.framework/Versions/%(MOZILLA_VERSION)s' % CONFIG
+
+DEFINES['XPCOM_GLUE'] = True
diff --git a/xulrunner/tools/redit/Makefile.in b/xulrunner/tools/redit/Makefile.in
index f831e13b38a0917d15403f1cc449381d825f79be..54c99dcbb084317cdcd35eb2aa0b694d2c01dd35 100644
--- a/xulrunner/tools/redit/Makefile.in
+++ b/xulrunner/tools/redit/Makefile.in
@@ -8,12 +8,6 @@ SDK_BINARY =  \
 	$(PROGRAM) \
 	$(NULL)
 
-DEFINES += -DWIN32_LEAN_AND_MEAN \
-					 -DUNICODE \
-					 -D_UNICODE \
-					 -DXPCOM_GLUE \
-					 $(NULL)
-
 LIBS = \
   $(XPCOM_STANDALONE_GLUE_LDOPTS) \
   $(NULL)
diff --git a/xulrunner/tools/redit/moz.build b/xulrunner/tools/redit/moz.build
index 00d5f4a9dcbbf9bc616a7c2c34362432c3cb90b1..0eb0c94a938f1b959ff50bdc2df124422ff683b3 100644
--- a/xulrunner/tools/redit/moz.build
+++ b/xulrunner/tools/redit/moz.build
@@ -9,3 +9,5 @@ if CONFIG['OS_ARCH'] == 'WINNT':
     SOURCES += [
         'redit.cpp',
     ]
+    for var in ('WIN32_LEAN_AND_MEAN', 'UNICODE', '_UNICODE', 'XPCOM_GLUE'):
+        DEFINES[var] = True