Bug 784841 - Part 18θ: Convert /toolkit f=Mossop, Ms2ger; rs=ted
authorGregory Szorc <gps@mozilla.com>
Mon, 25 Feb 2013 13:19:09 -0800
changeset 134466 02d62b51156a8bf35ef15930c05641d135899cf8
parent 134465 3cfd3750c162c81944c10c5f0c4c54c32b9a8674
child 134467 0e42b9f6b7d3d978949935164a9e7424c6d418ae
push idunknown
push userunknown
push dateunknown
reviewersted
bugs784841
milestone22.0a1
Bug 784841 - Part 18θ: Convert /toolkit f=Mossop, Ms2ger; rs=ted
toolkit/Makefile.in
toolkit/components/Makefile.in
toolkit/components/aboutmemory/Makefile.in
toolkit/components/aboutmemory/moz.build
toolkit/components/aboutmemory/tests/moz.build
toolkit/components/alerts/Makefile.in
toolkit/components/alerts/mac/growl/moz.build
toolkit/components/alerts/mac/moz.build
toolkit/components/alerts/moz.build
toolkit/components/alerts/test/moz.build
toolkit/components/apppicker/moz.build
toolkit/components/autocomplete/Makefile.in
toolkit/components/autocomplete/moz.build
toolkit/components/autocomplete/tests/moz.build
toolkit/components/build/moz.build
toolkit/components/captivedetect/Makefile.in
toolkit/components/captivedetect/moz.build
toolkit/components/captivedetect/test/moz.build
toolkit/components/commandlines/Makefile.in
toolkit/components/commandlines/moz.build
toolkit/components/commandlines/test/moz.build
toolkit/components/console/Makefile.in
toolkit/components/console/moz.build
toolkit/components/console/tests/moz.build
toolkit/components/contentprefs/Makefile.in
toolkit/components/contentprefs/moz.build
toolkit/components/contentprefs/tests/moz.build
toolkit/components/cookie/moz.build
toolkit/components/ctypes/Makefile.in
toolkit/components/ctypes/moz.build
toolkit/components/ctypes/tests/moz.build
toolkit/components/downloads/Makefile.in
toolkit/components/downloads/moz.build
toolkit/components/downloads/test/Makefile.in
toolkit/components/downloads/test/browser/moz.build
toolkit/components/downloads/test/moz.build
toolkit/components/exthelper/moz.build
toolkit/components/feeds/Makefile.in
toolkit/components/feeds/moz.build
toolkit/components/feeds/test/moz.build
toolkit/components/filepicker/moz.build
toolkit/components/find/moz.build
toolkit/components/help/moz.build
toolkit/components/intl/moz.build
toolkit/components/jsdownloads/Makefile.in
toolkit/components/jsdownloads/moz.build
toolkit/components/jsdownloads/src/moz.build
toolkit/components/jsdownloads/test/Makefile.in
toolkit/components/jsdownloads/test/data/moz.build
toolkit/components/jsdownloads/test/moz.build
toolkit/components/maintenanceservice/moz.build
toolkit/components/mediasniffer/Makefile.in
toolkit/components/mediasniffer/moz.build
toolkit/components/mediasniffer/test/moz.build
toolkit/components/microformats/Makefile.in
toolkit/components/microformats/moz.build
toolkit/components/microformats/tests/moz.build
toolkit/components/moz.build
toolkit/components/osfile/Makefile.in
toolkit/components/osfile/moz.build
toolkit/components/osfile/tests/Makefile.in
toolkit/components/osfile/tests/mochi/moz.build
toolkit/components/osfile/tests/moz.build
toolkit/components/parentalcontrols/moz.build
toolkit/components/passwordmgr/Makefile.in
toolkit/components/passwordmgr/moz.build
toolkit/components/passwordmgr/test/Makefile.in
toolkit/components/passwordmgr/test/auth2/moz.build
toolkit/components/passwordmgr/test/browser/moz.build
toolkit/components/passwordmgr/test/moz.build
toolkit/components/perf/moz.build
toolkit/components/places/Makefile.in
toolkit/components/places/moz.build
toolkit/components/places/tests/Makefile.in
toolkit/components/places/tests/browser/moz.build
toolkit/components/places/tests/chrome/moz.build
toolkit/components/places/tests/cpp/moz.build
toolkit/components/places/tests/mochitest/bug_411966/moz.build
toolkit/components/places/tests/mochitest/bug_461710/moz.build
toolkit/components/places/tests/moz.build
toolkit/components/printing/moz.build
toolkit/components/prompts/Makefile.in
toolkit/components/prompts/moz.build
toolkit/components/prompts/src/moz.build
toolkit/components/prompts/test/moz.build
toolkit/components/protobuf/moz.build
toolkit/components/reflect/Makefile.in
toolkit/components/reflect/moz.build
toolkit/components/remote/moz.build
toolkit/components/satchel/Makefile.in
toolkit/components/satchel/moz.build
toolkit/components/satchel/test/Makefile.in
toolkit/components/satchel/test/browser/moz.build
toolkit/components/satchel/test/moz.build
toolkit/components/search/Makefile.in
toolkit/components/search/moz.build
toolkit/components/search/tests/moz.build
toolkit/components/social/Makefile.in
toolkit/components/social/moz.build
toolkit/components/social/test/Makefile.in
toolkit/components/social/test/browser/moz.build
toolkit/components/social/test/moz.build
toolkit/components/startup/Makefile.in
toolkit/components/startup/moz.build
toolkit/components/startup/public/moz.build
toolkit/components/startup/tests/browser/moz.build
toolkit/components/statusfilter/moz.build
toolkit/components/telemetry/Makefile.in
toolkit/components/telemetry/moz.build
toolkit/components/telemetry/tests/moz.build
toolkit/components/thumbnails/Makefile.in
toolkit/components/thumbnails/moz.build
toolkit/components/thumbnails/test/moz.build
toolkit/components/typeaheadfind/moz.build
toolkit/components/url-classifier/Makefile.in
toolkit/components/url-classifier/moz.build
toolkit/components/url-classifier/tests/Makefile.in
toolkit/components/url-classifier/tests/mochitest/moz.build
toolkit/components/url-classifier/tests/moz.build
toolkit/components/urlformatter/Makefile.in
toolkit/components/urlformatter/moz.build
toolkit/components/urlformatter/tests/moz.build
toolkit/components/viewconfig/moz.build
toolkit/components/viewsource/Makefile.in
toolkit/components/viewsource/moz.build
toolkit/components/viewsource/test/Makefile.in
toolkit/components/viewsource/test/browser/moz.build
toolkit/components/viewsource/test/moz.build
toolkit/content/Makefile.in
toolkit/content/moz.build
toolkit/content/tests/Makefile.in
toolkit/content/tests/browser/Makefile.in
toolkit/content/tests/browser/common/moz.build
toolkit/content/tests/browser/data/moz.build
toolkit/content/tests/browser/moz.build
toolkit/content/tests/chrome/Makefile.in
toolkit/content/tests/chrome/moz.build
toolkit/content/tests/chrome/rtlchrome/moz.build
toolkit/content/tests/chrome/rtltest/moz.build
toolkit/content/tests/moz.build
toolkit/content/tests/widgets/moz.build
toolkit/crashreporter/Makefile.in
toolkit/crashreporter/breakpad-windows-libxul/moz.build
toolkit/crashreporter/breakpad-windows-standalone/moz.build
toolkit/crashreporter/client/moz.build
toolkit/crashreporter/fileid/moz.build
toolkit/crashreporter/google-breakpad/moz.build
toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/moz.build
toolkit/crashreporter/google-breakpad/src/client/linux/handler/moz.build
toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/moz.build
toolkit/crashreporter/google-breakpad/src/client/mac/crash_generation/moz.build
toolkit/crashreporter/google-breakpad/src/client/mac/handler/moz.build
toolkit/crashreporter/google-breakpad/src/client/moz.build
toolkit/crashreporter/google-breakpad/src/client/solaris/handler/moz.build
toolkit/crashreporter/google-breakpad/src/common/Makefile.in
toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build
toolkit/crashreporter/google-breakpad/src/common/linux/moz.build
toolkit/crashreporter/google-breakpad/src/common/mac/moz.build
toolkit/crashreporter/google-breakpad/src/common/moz.build
toolkit/crashreporter/google-breakpad/src/common/solaris/moz.build
toolkit/crashreporter/google-breakpad/src/third_party/glog/moz.build
toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/moz.build
toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build
toolkit/crashreporter/google-breakpad/src/tools/solaris/dump_syms/moz.build
toolkit/crashreporter/injector/moz.build
toolkit/crashreporter/moz.build
toolkit/crashreporter/test/moz.build
toolkit/devtools/Makefile.in
toolkit/devtools/debugger/Makefile.in
toolkit/devtools/debugger/moz.build
toolkit/devtools/debugger/tests/moz.build
toolkit/devtools/moz.build
toolkit/devtools/sourcemap/Makefile.in
toolkit/devtools/sourcemap/moz.build
toolkit/devtools/sourcemap/tests/moz.build
toolkit/devtools/webconsole/Makefile.in
toolkit/devtools/webconsole/moz.build
toolkit/devtools/webconsole/test/moz.build
toolkit/forgetaboutsite/Makefile.in
toolkit/forgetaboutsite/moz.build
toolkit/forgetaboutsite/test/Makefile.in
toolkit/forgetaboutsite/test/browser/moz.build
toolkit/forgetaboutsite/test/moz.build
toolkit/identity/Makefile.in
toolkit/identity/moz.build
toolkit/identity/tests/Makefile.in
toolkit/identity/tests/chrome/moz.build
toolkit/identity/tests/mochitest/moz.build
toolkit/identity/tests/moz.build
toolkit/library/Makefile.in
toolkit/library/moz.build
toolkit/library/winvccorlib/moz.build
toolkit/locales/moz.build
toolkit/modules/Makefile.in
toolkit/modules/moz.build
toolkit/modules/tests/moz.build
toolkit/moz.build
toolkit/mozapps/downloads/Makefile.in
toolkit/mozapps/downloads/moz.build
toolkit/mozapps/downloads/tests/Makefile.in
toolkit/mozapps/downloads/tests/chrome/moz.build
toolkit/mozapps/downloads/tests/moz.build
toolkit/mozapps/extensions/Makefile.in
toolkit/mozapps/extensions/moz.build
toolkit/mozapps/extensions/test/Makefile.in
toolkit/mozapps/extensions/test/browser/moz.build
toolkit/mozapps/extensions/test/mochitest/moz.build
toolkit/mozapps/extensions/test/moz.build
toolkit/mozapps/extensions/test/xpinstall/moz.build
toolkit/mozapps/handling/moz.build
toolkit/mozapps/plugins/Makefile.in
toolkit/mozapps/plugins/moz.build
toolkit/mozapps/plugins/tests/moz.build
toolkit/mozapps/preferences/moz.build
toolkit/mozapps/shared/Makefile.in
toolkit/mozapps/shared/moz.build
toolkit/mozapps/shared/test/chrome/moz.build
toolkit/mozapps/update/Makefile.in
toolkit/mozapps/update/common/moz.build
toolkit/mozapps/update/moz.build
toolkit/mozapps/update/test/Makefile.in
toolkit/mozapps/update/test/chrome/moz.build
toolkit/mozapps/update/test/moz.build
toolkit/mozapps/update/test_svc/moz.build
toolkit/mozapps/update/test_timermanager/moz.build
toolkit/mozapps/update/updater/moz.build
toolkit/obsolete/moz.build
toolkit/profile/Makefile.in
toolkit/profile/moz.build
toolkit/profile/test/moz.build
toolkit/system/androidproxy/moz.build
toolkit/system/dbus/moz.build
toolkit/system/gnome/moz.build
toolkit/system/osxproxy/moz.build
toolkit/system/unixproxy/moz.build
toolkit/system/windowsproxy/moz.build
toolkit/themes/Makefile.in
toolkit/themes/faststripe/global/moz.build
toolkit/themes/linux/Makefile.in
toolkit/themes/linux/global/moz.build
toolkit/themes/linux/help/moz.build
toolkit/themes/linux/moz.build
toolkit/themes/linux/mozapps/moz.build
toolkit/themes/moz.build
toolkit/themes/os2/global/moz.build
toolkit/themes/osx/Makefile.in
toolkit/themes/osx/global/moz.build
toolkit/themes/osx/help/moz.build
toolkit/themes/osx/mochitests/moz.build
toolkit/themes/osx/moz.build
toolkit/themes/osx/mozapps/moz.build
toolkit/themes/windows/Makefile.in
toolkit/themes/windows/global/moz.build
toolkit/themes/windows/help/moz.build
toolkit/themes/windows/moz.build
toolkit/themes/windows/mozapps/moz.build
toolkit/toolkit.mozbuild
toolkit/webapps/moz.build
toolkit/xre/Makefile.in
toolkit/xre/moz.build
toolkit/xre/test/Makefile.in
toolkit/xre/test/moz.build
toolkit/xre/test/win/moz.build
--- a/toolkit/Makefile.in
+++ b/toolkit/Makefile.in
@@ -4,66 +4,12 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-PARALLEL_DIRS = \
-  components \
-  content \
-  devtools \
-  forgetaboutsite \
-  identity \
-  locales \
-  modules \
-  mozapps/downloads \
-  mozapps/extensions \
-  mozapps/handling \
-  mozapps/preferences \
-  mozapps/plugins \
-  mozapps/shared \
-  obsolete \
-  profile \
-  themes \
-  webapps \
-  $(NULL)
-
-DIRS += \
-  mozapps/update \
-  $(NULL)
-
-ifdef MOZ_MAINTENANCE_SERVICE
-DIRS += \
-  components/maintenanceservice \
-  $(NULL)
-endif
-
-ifneq (,$(filter gtk2 qt,$(MOZ_WIDGET_TOOLKIT)))
-PARALLEL_DIRS += system/unixproxy
-endif
-
-ifneq (,$(filter cocoa,$(MOZ_WIDGET_TOOLKIT)))
-PARALLEL_DIRS += system/osxproxy
-endif
-
-ifneq (,$(filter windows,$(MOZ_WIDGET_TOOLKIT)))
-PARALLEL_DIRS += system/windowsproxy
-endif
-
-ifneq (,$(filter android,$(MOZ_WIDGET_TOOLKIT)))
-PARALLEL_DIRS += system/androidproxy
-endif
-
-ifdef MOZ_CRASHREPORTER
-PARALLEL_DIRS += crashreporter
-endif
-
-DIRS += \
-  xre \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 export::
 	@$(MAKE) -C xre export
--- a/toolkit/components/Makefile.in
+++ b/toolkit/components/Makefile.in
@@ -4,99 +4,14 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(topsrcdir)/config/config.mk
 
-# These component dirs are built for all apps (including suite)
-
-ifdef MOZ_ENABLE_XREMOTE
-PARALLEL_DIRS += remote
-endif
-
-PARALLEL_DIRS += \
-  aboutmemory \
-  alerts \
-  apppicker \
-  commandlines \
-  console \
-  contentprefs \
-  cookie \
-  downloads \
-  exthelper \
-  filepicker \
-  find \
-  intl \
-  mediasniffer \
-  microformats \
-  osfile \
-  parentalcontrols \
-  passwordmgr \
-  perf \
-  places \
-  prompts \
-  protobuf \
-  reflect \
-  social \
-  startup \
-  statusfilter \
-  telemetry \
-  thumbnails \
-  typeaheadfind \
-  urlformatter \
-  viewconfig \
-  viewsource \
-  $(NULL)
-
-ifdef BUILD_CTYPES
-PARALLEL_DIRS += \
-  ctypes \
-  $(NULL)
-endif
-
-ifdef MOZ_FEEDS
-PARALLEL_DIRS += feeds
-endif
-
-ifdef MOZ_HELP_VIEWER
-PARALLEL_DIRS += help
-endif
-
-ifdef MOZ_JSDOWNLOADS
-PARALLEL_DIRS += jsdownloads
-endif
-
-ifdef NS_PRINTING
-PARALLEL_DIRS += printing
-endif
-
-ifdef MOZ_XUL
-PARALLEL_DIRS += \
-  autocomplete \
-  satchel \
-  $(NULL)
-endif
-
-ifdef MOZ_TOOLKIT_SEARCH
-PARALLEL_DIRS += search
-endif
-
-ifdef MOZ_URL_CLASSIFIER
-PARALLEL_DIRS += url-classifier
-endif
-
-ifdef MOZ_CAPTIVEDETECT
-PARALLEL_DIRS += captivedetect
-endif
-
-DIRS += \
-  build \
-  $(NULL)
-
 EXTRA_COMPONENTS = \
   nsDefaultCLH.manifest \
   nsDefaultCLH.js \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/components/aboutmemory/Makefile.in
+++ b/toolkit/components/aboutmemory/Makefile.in
@@ -4,11 +4,9 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-TEST_DIRS = tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/aboutmemory/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/aboutmemory/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/alerts/Makefile.in
+++ b/toolkit/components/alerts/Makefile.in
@@ -1,9 +1,8 @@
-#
 # 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/.
 
 DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
@@ -18,21 +17,14 @@ FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 CPPSRCS = \
   nsAlertsService.cpp \
   $(NULL)
 LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/components/build/
 
 ifneq (,$(filter cocoa, $(MOZ_WIDGET_TOOLKIT)))
 XPIDLSRCS += nsINotificationsList.idl
-# mac/growl needs to be first for linking to work!
-TOOL_DIRS += \
-  mac/growl \
-  mac \
-  $(NULL)
 endif
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/alerts/mac/growl/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/alerts/mac/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/alerts/moz.build
@@ -0,0 +1,10 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    # mac/growl needs to be first for linking to work!
+    TOOL_DIRS += ['mac/growl', 'mac']
+
+TEST_DIRS += ['test']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/alerts/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/apppicker/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/autocomplete/Makefile.in
+++ b/toolkit/components/autocomplete/Makefile.in
@@ -27,11 +27,9 @@ XPIDLSRCS = \
   nsIAutoCompleteSimpleResult.idl \
   $(NULL)
 
 CPPSRCS = \
   nsAutoCompleteController.cpp \
   nsAutoCompleteSimpleResult.cpp \
   $(NULL)
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/autocomplete/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/autocomplete/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/build/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/captivedetect/Makefile.in
+++ b/toolkit/components/captivedetect/Makefile.in
@@ -15,11 +15,9 @@ XPIDLSRCS = \
   nsICaptivePortalDetector.idl \
   $(NULL)
 
 EXTRA_COMPONENTS = \
   CaptivePortalDetectComponents.manifest \
   captivedetect.js \
   $(NULL)
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/captivedetect/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/captivedetect/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/commandlines/Makefile.in
+++ b/toolkit/components/commandlines/Makefile.in
@@ -24,11 +24,9 @@ XPIDLSRCS = \
   nsICommandLineRunner.idl \
   nsICommandLineValidator.idl \
   $(NULL)
 
 CPPSRCS = \
   nsCommandLine.cpp \
   $(NULL)
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/commandlines/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/commandlines/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/console/Makefile.in
+++ b/toolkit/components/console/Makefile.in
@@ -10,11 +10,9 @@ VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 EXTRA_COMPONENTS = \
   jsconsole-clhandler.js \
   jsconsole-clhandler.manifest \
   $(NULL)
 
-TEST_DIRS = tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/console/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/console/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/contentprefs/Makefile.in
+++ b/toolkit/components/contentprefs/Makefile.in
@@ -17,11 +17,9 @@ EXTRA_COMPONENTS = \
   $(NULL)
 
 EXTRA_JS_MODULES = \
   ContentPrefInstance.jsm \
   ContentPrefService2.jsm \
   ContentPrefStore.jsm \
   $(NULL)
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/contentprefs/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/contentprefs/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/cookie/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/ctypes/Makefile.in
+++ b/toolkit/components/ctypes/Makefile.in
@@ -25,11 +25,9 @@ IS_COMPONENT = 1
 CPPSRCS = \
     ctypes.cpp \
     $(NULL)
 
 LOCAL_INCLUDES := \
   -I$(topsrcdir)/js/xpconnect/loader \
   $(NULL)
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/ctypes/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/ctypes/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/downloads/Makefile.in
+++ b/toolkit/components/downloads/Makefile.in
@@ -38,13 +38,11 @@ ifndef MOZ_SUITE
 # XXX - Until Suite builds off XULRunner we can't guarantee our implementation
 # of nsIDownloadManagerUI overrides toolkit's.
 EXTRA_COMPONENTS = \
   nsDownloadManagerUI.js \
   nsDownloadManagerUI.manifest \
   $(NULL)
 endif
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/rules.mk
 
 CXXFLAGS += $(TK_CFLAGS)
new file mode 100644
--- /dev/null
+++ b/toolkit/components/downloads/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
--- a/toolkit/components/downloads/test/Makefile.in
+++ b/toolkit/components/downloads/test/Makefile.in
@@ -13,14 +13,10 @@ include $(DEPTH)/config/autoconf.mk
 
 MODULE = test_dm
 
 XPCSHELL_TESTS = \
   unit \
   schema_migration \
   $(NULL)
 
-DIRS = \
-  browser \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
new file mode 100644
--- /dev/null
+++ b/toolkit/components/downloads/test/browser/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/downloads/test/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['browser']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/exthelper/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/feeds/Makefile.in
+++ b/toolkit/components/feeds/Makefile.in
@@ -5,20 +5,16 @@
 
 DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-ifdef ENABLE_TESTS
-TOOL_DIRS += test
-endif
-
 MODULE = feeds
 LIBRARY_NAME = feed_s
 MOZILLA_INTERNAL_API = 1
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 
 XPIDLSRCS = \
   nsIFeed.idl \
new file mode 100644
--- /dev/null
+++ b/toolkit/components/feeds/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/feeds/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/filepicker/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/find/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/help/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/intl/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/jsdownloads/Makefile.in
+++ b/toolkit/components/jsdownloads/Makefile.in
@@ -4,13 +4,10 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS = src
+include $(topsrcdir)/config/rules.mk
 
-TEST_DIRS += test
-
-include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/jsdownloads/moz.build
@@ -0,0 +1,8 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['src']
+TEST_DIRS += ['test']
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/jsdownloads/src/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/jsdownloads/test/Makefile.in
+++ b/toolkit/components/jsdownloads/test/Makefile.in
@@ -5,13 +5,11 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS = data
-
 XPCSHELL_TESTS = unit
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/jsdownloads/test/data/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/jsdownloads/test/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['data']
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/maintenanceservice/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/mediasniffer/Makefile.in
+++ b/toolkit/components/mediasniffer/Makefile.in
@@ -21,12 +21,10 @@ CPPSRCS = \
     nsMediaSniffer.cpp \
     nsMediaSnifferModule.cpp \
     $(NULL)
 
 EXPORTS = \
     nsMediaSniffer.h \
     $(NULL)
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/mediasniffer/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/mediasniffer/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/microformats/Makefile.in
+++ b/toolkit/components/microformats/Makefile.in
@@ -8,11 +8,9 @@ srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = microformats
 
 EXTRA_JS_MODULES = Microformats.js
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/microformats/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/microformats/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/moz.build
@@ -0,0 +1,71 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# These component dirs are built for all apps (including suite)
+if CONFIG['MOZ_ENABLE_XREMOTE']:
+    PARALLEL_DIRS += ['remote']
+
+PARALLEL_DIRS += [
+    'aboutmemory',
+    'alerts',
+    'apppicker',
+    'commandlines',
+    'console',
+    'contentprefs',
+    'cookie',
+    'downloads',
+    'exthelper',
+    'filepicker',
+    'find',
+    'intl',
+    'mediasniffer',
+    'microformats',
+    'osfile',
+    'parentalcontrols',
+    'passwordmgr',
+    'perf',
+    'places',
+    'prompts',
+    'protobuf',
+    'reflect',
+    'social',
+    'startup',
+    'statusfilter',
+    'telemetry',
+    'thumbnails',
+    'typeaheadfind',
+    'urlformatter',
+    'viewconfig',
+    'viewsource',
+]
+
+if CONFIG['BUILD_CTYPES']:
+    PARALLEL_DIRS += ['ctypes']
+
+if CONFIG['MOZ_FEEDS']:
+    PARALLEL_DIRS += ['feeds']
+
+if CONFIG['MOZ_HELP_VIEWER']:
+    PARALLEL_DIRS += ['help']
+
+if CONFIG['MOZ_JSDOWNLOADS']:
+    PARALLEL_DIRS += ['jsdownloads']
+
+if CONFIG['NS_PRINTING']:
+    PARALLEL_DIRS += ['printing']
+
+if CONFIG['MOZ_XUL']:
+    PARALLEL_DIRS += ['autocomplete', 'satchel']
+
+if CONFIG['MOZ_TOOLKIT_SEARCH']:
+    PARALLEL_DIRS += ['search']
+
+if CONFIG['MOZ_URL_CLASSIFIER']:
+    PARALLEL_DIRS += ['url-classifier']
+
+if CONFIG['MOZ_CAPTIVEDETECT']:
+    PARALLEL_DIRS += ['captivedetect']
+
+DIRS += ['build']
--- a/toolkit/components/osfile/Makefile.in
+++ b/toolkit/components/osfile/Makefile.in
@@ -1,9 +1,8 @@
-# ***** BEGIN LICENSE BLOCK *****
 # 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/.
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
@@ -14,20 +13,16 @@ MODULE          = osfile
 LIBRARY_NAME    = osfile_s
 LIBXUL_LIBRARY  = 1
 FORCE_STATIC_LIB = 1
 
 EXTRA_PP_JS_MODULES = \
    osfile.jsm \
    $(NULL)
 
-ifdef ENABLE_TESTS
-DIRS += tests
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 libs::
 	$(NSINSTALL) $(srcdir)/osfile_shared_allthreads.jsm $(FINAL_TARGET)/modules/osfile
 	$(NSINSTALL) $(srcdir)/osfile_unix_allthreads.jsm $(FINAL_TARGET)/modules/osfile
 	$(NSINSTALL) $(srcdir)/osfile_unix_back.jsm $(FINAL_TARGET)/modules/osfile
 	$(NSINSTALL) $(srcdir)/ospath_unix_back.jsm $(FINAL_TARGET)/modules/osfile
 	$(NSINSTALL) $(srcdir)/osfile_unix_front.jsm $(FINAL_TARGET)/modules/osfile
new file mode 100644
--- /dev/null
+++ b/toolkit/components/osfile/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
--- a/toolkit/components/osfile/tests/Makefile.in
+++ b/toolkit/components/osfile/tests/Makefile.in
@@ -4,14 +4,13 @@
 
 DEPTH            = @DEPTH@
 topsrcdir        = @top_srcdir@
 srcdir           = @srcdir@
 VPATH            = @srcdir@
 relativesrcdir   = @relativesrcdir@
 
 MODULE           = test_osfile
-DIRS = mochi
 
 XPCSHELL_TESTS = xpcshell
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/osfile/tests/mochi/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/osfile/tests/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['mochi']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/parentalcontrols/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/passwordmgr/Makefile.in
+++ b/toolkit/components/passwordmgr/Makefile.in
@@ -29,11 +29,9 @@ EXTRA_COMPONENTS = \
   passwordmgr.manifest \
   storage-Legacy.js \
   $(NULL)
 
 EXTRA_PP_COMPONENTS = \
   storage-mozStorage.js \
   $(NULL)
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/passwordmgr/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
--- a/toolkit/components/passwordmgr/test/Makefile.in
+++ b/toolkit/components/passwordmgr/test/Makefile.in
@@ -6,21 +6,16 @@
 DEPTH          = @DEPTH@
 topsrcdir      = @top_srcdir@
 srcdir         = @srcdir@
 VPATH          = @srcdir@
 relativesrcdir = @relativesrcdir@
 
 include $(topsrcdir)/config/config.mk
 
-DIRS = \
-    browser \
-    auth2 \
-    $(NULL)
-
 # Module name for xpcshell tests.
 MODULE = test_passwordmgr
 XPCSHELL_TESTS = unit
 
 # Mochitest tests
 MOCHITEST_FILES = \
     test_basic_form.html \
     test_basic_form_html5.html \
new file mode 100644
--- /dev/null
+++ b/toolkit/components/passwordmgr/test/auth2/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/passwordmgr/test/browser/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/passwordmgr/test/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['browser', 'auth2']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/perf/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/places/Makefile.in
+++ b/toolkit/components/places/Makefile.in
@@ -1,9 +1,8 @@
-#
 # 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/.
 
 DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
@@ -87,16 +86,14 @@ EXTRA_JS_MODULES = \
   ClusterLib.js \
   $(NULL)
 
 EXTRA_PP_JS_MODULES = \
   BookmarkHTMLUtils.jsm \
   PlacesUtils.jsm \
   $(NULL)
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 endif
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/places/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['MOZ_PLACES']:
+    TEST_DIRS += ['tests']
--- a/toolkit/components/places/tests/Makefile.in
+++ b/toolkit/components/places/tests/Makefile.in
@@ -1,9 +1,8 @@
-#
 # 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/.
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
@@ -36,23 +35,12 @@ MOCHITEST_FILES = \
 	mochitest/test_bug_94514.html \
 	mochitest/bug94514-postpage.html \
 	$(NULL)
 
 MOCHITEST_CHROME_FILES = \
 	mochitest/test_bug_461710_perwindowpb.html \
 	$(NULL)
 
-DIRS = \
-	chrome \
-	mochitest/bug_411966 \
-	mochitest/bug_461710 \
-	browser \
-	$(NULL)
-
-TOOL_DIRS = \
-  cpp \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 libs:: $(XPCSHELL_TESTS_COMMON)
 	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/xpcshell/$(relativesrcdir)
new file mode 100644
--- /dev/null
+++ b/toolkit/components/places/tests/browser/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/places/tests/chrome/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/places/tests/cpp/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/places/tests/mochitest/bug_411966/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/places/tests/mochitest/bug_461710/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/places/tests/moz.build
@@ -0,0 +1,13 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += [
+    'chrome',
+    'mochitest/bug_411966',
+    'mochitest/bug_461710',
+    'browser',
+]
+
+TEST_TOOL_DIRS += ['cpp']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/printing/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/prompts/Makefile.in
+++ b/toolkit/components/prompts/Makefile.in
@@ -3,14 +3,9 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
-
-DIRS = src
-
-TEST_DIRS += test
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/prompts/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['src']
+TEST_DIRS += ['test']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/prompts/src/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/prompts/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/protobuf/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/reflect/Makefile.in
+++ b/toolkit/components/reflect/Makefile.in
@@ -26,13 +26,9 @@ CPPSRCS = \
     reflect.cpp \
     $(NULL)
 
 EXTRA_DSO_LDOPTS += \
     $(MOZ_COMPONENT_LIBS) \
     $(MOZ_JS_LIBS) \
     $(NULL)
 
-#ifdef ENABLE_TESTS
-#DIRS += tests
-#endif
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/reflect/moz.build
@@ -0,0 +1,4 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
new file mode 100644
--- /dev/null
+++ b/toolkit/components/remote/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/satchel/Makefile.in
+++ b/toolkit/components/satchel/Makefile.in
@@ -40,11 +40,9 @@ EXTRA_COMPONENTS = \
 EXTRA_PP_COMPONENTS = \
 	nsFormHistory.js \
 	$(NULL)
 
 EXTRA_JS_MODULES = \
   nsFormAutoCompleteResult.jsm \
   $(NULL)
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/satchel/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
--- a/toolkit/components/satchel/test/Makefile.in
+++ b/toolkit/components/satchel/test/Makefile.in
@@ -1,25 +1,21 @@
-#
 # 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/.
 
 DEPTH   = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 relativesrcdir  = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = test_satchel
-DIRS = \
-  browser \
-  $(NULL)
 
 XPCSHELL_TESTS = \
   unit \
   $(NULL)
 
 MOCHITEST_FILES = \
 		test_bug_511615.html \
 		test_bug_787624.html \
new file mode 100644
--- /dev/null
+++ b/toolkit/components/satchel/test/browser/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/satchel/test/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['browser']
--- a/toolkit/components/search/Makefile.in
+++ b/toolkit/components/search/Makefile.in
@@ -15,11 +15,9 @@ EXTRA_COMPONENTS = \
   $(NULL)
 
 EXTRA_PP_COMPONENTS = \
   nsSearchService.js \
   $(NULL)
 
 DEFINES += -DMOZ_DISTRIBUTION_ID=$(MOZ_DISTRIBUTION_ID)
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/search/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/search/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/social/Makefile.in
+++ b/toolkit/components/social/Makefile.in
@@ -13,13 +13,9 @@ EXTRA_JS_MODULES = \
   FrameWorker.jsm \
   MessagePortBase.jsm \
   MessagePortWorker.js \
   SocialService.jsm \
   WorkerAPI.jsm \
   MozSocialAPI.jsm \
   $(NULL)
 
-TEST_DIRS += \
-  test \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/social/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
--- a/toolkit/components/social/test/Makefile.in
+++ b/toolkit/components/social/test/Makefile.in
@@ -5,17 +5,13 @@
 DEPTH          = @DEPTH@
 topsrcdir      = @top_srcdir@
 srcdir         = @srcdir@
 VPATH          = @srcdir@
 relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-# mochitest tests
-DIRS += browser \
-	$(NULL)
-
 XPCSHELL_TESTS = \
   xpcshell \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/social/test/browser/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/social/test/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['browser']
--- a/toolkit/components/startup/Makefile.in
+++ b/toolkit/components/startup/Makefile.in
@@ -5,18 +5,16 @@
 DEPTH      = @DEPTH@
 topsrcdir  = @top_srcdir@
 srcdir     = @srcdir@
 VPATH      = @srcdir@
 relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS = public
-
 MODULE = toolkitcomps
 LIBRARY_NAME = appstartup_s
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 
 CPPSRCS = \
   nsAppStartup.cpp \
   StartupTimeline.cpp \
@@ -36,11 +34,9 @@ CMMSRCS += nsUserInfoMac.mm
 else
 CPPSRCS += nsUserInfoUnix.cpp
 endif
 endif
 endif
 
 XPCSHELL_TESTS = tests/unit
 
-TEST_DIRS += tests/browser
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/startup/moz.build
@@ -0,0 +1,9 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['public']
+
+TEST_DIRS += ['tests/browser']
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/startup/public/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/startup/tests/browser/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/statusfilter/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/telemetry/Makefile.in
+++ b/toolkit/components/telemetry/Makefile.in
@@ -54,18 +54,16 @@ CPPSRCS = \
 
 LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
 
 EXTRA_DSO_LDOPTS += \
   $(MOZ_COMPONENT_LIBS) \
   $(MOZ_JS_LIBS) \
   $(NULL)
 
-TEST_DIRS += tests
-
 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)"
 endif
new file mode 100644
--- /dev/null
+++ b/toolkit/components/telemetry/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/telemetry/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/thumbnails/Makefile.in
+++ b/toolkit/components/thumbnails/Makefile.in
@@ -14,11 +14,9 @@ EXTRA_COMPONENTS = \
 	PageThumbsProtocol.js \
 	$(NULL)
 
 EXTRA_JS_MODULES = \
 	PageThumbsWorker.js \
 	PageThumbs.jsm \
 	$(NULL)
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/thumbnails/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/thumbnails/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/typeaheadfind/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/url-classifier/Makefile.in
+++ b/toolkit/components/url-classifier/Makefile.in
@@ -1,9 +1,8 @@
-#
 # 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/.
 
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
@@ -56,13 +55,9 @@ EXTRA_PP_COMPONENTS = \
   nsUrlClassifierLib.js \
   nsUrlClassifierListManager.js \
   $(NULL)
 
 EXTRA_JS_MODULES = \
   SafeBrowsing.jsm \
   $(NULL)
 
-ifdef ENABLE_TESTS
-TOOL_DIRS += tests
-endif
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/url-classifier/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_TOOL_DIRS += ['tests']
--- a/toolkit/components/url-classifier/tests/Makefile.in
+++ b/toolkit/components/url-classifier/tests/Makefile.in
@@ -11,22 +11,16 @@ VPATH     = @srcdir@
 relativesrcdir  = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = test_url-classifier
 
 MOZILLA_INTERNAL_API = 1
 
-
-# mochitest tests
-DIRS += mochitest \
-	$(NULL)
-
-# xpcshell tests
 XPCSHELL_TESTS=unit
 
 # XXX Get this to work in libxul builds.
 ## simple c++ tests (no xpcom)
 #CPP_UNIT_TESTS = \
 #	TestUrlClassifierUtils.cpp \
 #	$(NULL)
 
new file mode 100644
--- /dev/null
+++ b/toolkit/components/url-classifier/tests/mochitest/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/url-classifier/tests/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['mochitest']
--- a/toolkit/components/urlformatter/Makefile.in
+++ b/toolkit/components/urlformatter/Makefile.in
@@ -16,11 +16,9 @@ XPIDLSRCS = \
   nsIURLFormatter.idl \
   $(NULL)
 
 EXTRA_COMPONENTS = \
   nsURLFormatter.manifest \
   nsURLFormatter.js \
   $(NULL)
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/urlformatter/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/components/urlformatter/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/viewconfig/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/components/viewsource/Makefile.in
+++ b/toolkit/components/viewsource/Makefile.in
@@ -6,11 +6,9 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/viewsource/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
--- a/toolkit/components/viewsource/test/Makefile.in
+++ b/toolkit/components/viewsource/test/Makefile.in
@@ -7,16 +7,13 @@
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 relativesrcdir  = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS = browser
-
-
 MOCHITEST_CHROME_FILES   = \
                 test_428653.xul \
                 $(NULL)
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/components/viewsource/test/browser/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/components/viewsource/test/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['browser']
--- a/toolkit/content/Makefile.in
+++ b/toolkit/content/Makefile.in
@@ -45,18 +45,16 @@ endif
 
 BUILD_HOSTNAME = $(shell hostname -s || hostname)
 DEFINES += -DBUILD_HOSTNAME="$(BUILD_HOSTNAME)"
 
 ifdef MOZ_TOOLKIT_SEARCH
 DEFINES += -DMOZ_TOOLKIT_SEARCH
 endif
 
-TEST_DIRS += tests
-
 EXTRA_JS_MODULES = \
   debug.js \
   DeferredTask.jsm \
   Deprecated.jsm \
   Dict.jsm \
   Geometry.jsm \
   InlineSpellChecker.jsm \
   PageMenu.jsm \
new file mode 100644
--- /dev/null
+++ b/toolkit/content/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
--- a/toolkit/content/tests/Makefile.in
+++ b/toolkit/content/tests/Makefile.in
@@ -1,20 +1,17 @@
-#
 # 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/.
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= test_toolkit_general
 
 XPCSHELL_TESTS = unit
 
-DIRS = chrome widgets browser
-
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/content/tests/browser/Makefile.in
+++ b/toolkit/content/tests/browser/Makefile.in
@@ -6,22 +6,16 @@
 DEPTH          = @DEPTH@
 topsrcdir      = @top_srcdir@
 srcdir         = @srcdir@
 VPATH          = @srcdir@
 relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS = \
-  common \
-  data \
-  $(NULL)
-
-
 MOCHITEST_BROWSER_FILES = \
   browser_keyevents_during_autoscrolling.js \
   browser_bug295977_autoscroll_overflow.js \
   browser_bug594509.js \
   browser_Geometry.js \
   browser_InlineSpellChecker.js \
   browser_save_resend_postdata.js \
   browser_browserDrop.js \
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/browser/common/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/browser/data/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/browser/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['common', 'data']
--- a/toolkit/content/tests/chrome/Makefile.in
+++ b/toolkit/content/tests/chrome/Makefile.in
@@ -1,24 +1,20 @@
-#
 # 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/.
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 relativesrcdir  = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS = rtltest rtlchrome
-
-
 MOCHITEST_CHROME_FILES = 	findbar_window.xul \
 		test_findbar.xul \
 		findbar_events_window.xul \
 		test_findbar_events.xul \
 		test_bug253481.xul \
 		bug263683_window.xul \
 		test_bug263683.xul \
 		bug304188_window.xul \
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/chrome/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['rtltest', 'rtlchrome']
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/chrome/rtlchrome/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/chrome/rtltest/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['chrome', 'widgets', 'browser']
+
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/widgets/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/crashreporter/Makefile.in
+++ b/toolkit/crashreporter/Makefile.in
@@ -8,82 +8,43 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = crashreporter
 LIBXUL_LIBRARY = 1
 LIBRARY_NAME = exception_handler_s
 
-ifeq  ($(OS_ARCH),WINNT)
-DIRS += breakpad-windows-libxul
-ifdef MOZ_CRASHREPORTER_INJECTOR
-DIRS += breakpad-windows-standalone
-endif
-endif
-
 ifeq ($(OS_ARCH),Darwin)
 CMMSRCS = mac_utils.mm
-
-DIRS += \
-  google-breakpad/src/common \
-  google-breakpad/src/common/mac \
-  google-breakpad/src/client \
-  google-breakpad/src/client/mac/crash_generation \
-  google-breakpad/src/client/mac/handler \
-  google-breakpad/src/tools/mac/dump_syms \
-  $(NULL)
 endif
 
 ifeq ($(OS_ARCH),Linux)
 # There's no define for XP_LINUX normally.
 # MOZ_APP_NAME is needed on Android, where we
 # need to launch by package name.
 DEFINES += \
   -DXP_LINUX \
   -DANDROID_PACKAGE_NAME=\"$(ANDROID_PACKAGE_NAME)\"
   $(NULL)
-DIRS += \
-  google-breakpad/src/common \
-  google-breakpad/src/common/linux \
-  google-breakpad/src/client \
-  google-breakpad/src/client/linux/crash_generation \
-  google-breakpad/src/client/linux/handler \
-  google-breakpad/src/client/linux/minidump_writer \
-  google-breakpad/src/tools/linux/dump_syms \
-  $(NULL)
 endif
 
 ifeq ($(OS_ARCH),SunOS)
 # there's no define for this normally
 DEFINES += -DXP_SOLARIS
-DIRS += \
-  google-breakpad/src/common \
-  google-breakpad/src/common/solaris \
-  google-breakpad/src/client \
-  google-breakpad/src/client/solaris/handler \
-  google-breakpad/src/tools/solaris/dump_syms \
-  $(NULL)
 endif
 
 ifeq ($(OS_TARGET),Android)
-DIRS += fileid
 # 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
 
-DIRS += client
-
-ifdef MOZ_CRASHREPORTER_INJECTOR
-DIRS += injector
-endif
-
 LOCAL_INCLUDES += -I$(srcdir)/google-breakpad/src
 DEFINES += -DUNICODE -D_UNICODE
 
 EXPORTS = \
 	nsExceptionHandler.h \
 	$(NULL)
 
 CPPSRCS = \
@@ -99,18 +60,14 @@ endif
 
 FORCE_STATIC_LIB = 1
 
 EXTRA_JS_MODULES = \
   CrashSubmit.jsm \
   KeyValueParser.jsm \
   $(NULL)
 
-ifdef ENABLE_TESTS
-TOOL_DIRS = test
-endif
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
 
 check::
 	$(PYTHON) $(srcdir)/tools/unit-symbolstore.py
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/breakpad-windows-libxul/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/breakpad-windows-standalone/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/client/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/fileid/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/crash_generation/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/solaris/handler/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/crashreporter/google-breakpad/src/common/Makefile.in
+++ b/toolkit/crashreporter/google-breakpad/src/common/Makefile.in
@@ -10,20 +10,16 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= breakpad_common
 LIBRARY_NAME	= breakpad_common_s
 HOST_LIBRARY_NAME = host_breakpad_common_s
 
 LOCAL_INCLUDES 	= -I$(srcdir)/..
 
-ifeq (,$(filter-out Darwin Linux,$(OS_ARCH)))
-DIRS = dwarf
-endif
-
 CPPSRCS	= \
   md5.cc \
   string_conversion.cc \
   $(NULL)
 
 CSRCS = \
   convert_UTF.c \
   $(NULL)
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/common/linux/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/common/mac/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/common/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['OS_ARCH'] in ('Darwin', 'Linux'):
+    DIRS += ['dwarf']
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/common/solaris/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/third_party/glog/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/tools/solaris/dump_syms/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/injector/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/moz.build
@@ -0,0 +1,50 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+    DIRS += ['breakpad-windows-libxul']
+
+    if CONFIG['MOZ_CRASHREPORTER_INJECTOR']:
+        DIRS += ['breakpad-windows-standalone']
+
+elif CONFIG['OS_ARCH'] == 'Darwin':
+    DIRS += [
+        'google-breakpad/src/common',
+        'google-breakpad/src/common/mac',
+        'google-breakpad/src/client',
+        'google-breakpad/src/client/mac/crash_generation',
+        'google-breakpad/src/client/mac/handler',
+        'google-breakpad/src/tools/mac/dump_syms',
+    ]
+
+elif CONFIG['OS_ARCH'] == 'Linux':
+    DIRS += [
+        'google-breakpad/src/common',
+        'google-breakpad/src/common/linux',
+        'google-breakpad/src/client',
+        'google-breakpad/src/client/linux/crash_generation',
+        'google-breakpad/src/client/linux/handler',
+        'google-breakpad/src/client/linux/minidump_writer',
+        'google-breakpad/src/tools/linux/dump_syms',
+    ]
+
+elif CONFIG['OS_ARCH'] == 'SunOS':
+    DIRS += [
+        'google-breakpad/src/common',
+        'google-breakpad/src/common/solaris',
+        'google-breakpad/src/client',
+        'google-breakpad/src/client/solaris/handler',
+        'google-breakpad/src/tools/solaris/dump_syms',
+    ]
+
+if CONFIG['OS_TARGET'] == 'Android':
+    DIRS += ['fileid']
+
+DIRS += ['client']
+
+if CONFIG['MOZ_CRASHREPORTER_INJECTOR']:
+    DIRS += ['injector']
+
+TEST_TOOL_DIRS += ['test']
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/devtools/Makefile.in
+++ b/toolkit/devtools/Makefile.in
@@ -4,18 +4,12 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(topsrcdir)/config/config.mk
 
-PARALLEL_DIRS += \
-  debugger \
-  sourcemap \
-  webconsole \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 libs::
 	$(NSINSTALL) $(srcdir)/*.jsm $(FINAL_TARGET)/modules/devtools
--- a/toolkit/devtools/debugger/Makefile.in
+++ b/toolkit/devtools/debugger/Makefile.in
@@ -27,15 +27,13 @@ EXTRA_DSO_LDOPTS += \
     $(MOZ_COMPONENT_LIBS) \
     $(MOZ_JS_LIBS) \
     $(NULL)
 
 XPIDLSRCS = \
 	nsIJSInspector.idl \
 	$(NULL)
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
 
 libs::
 	$(INSTALL) $(IFLAGS1) $(srcdir)/*.jsm $(FINAL_TARGET)/modules/devtools
 	$(INSTALL) $(IFLAGS1) $(srcdir)/server/*.jsm $(FINAL_TARGET)/modules/devtools
new file mode 100644
--- /dev/null
+++ b/toolkit/devtools/debugger/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/devtools/debugger/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/devtools/moz.build
@@ -0,0 +1,10 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+PARALLEL_DIRS += [
+    'debugger',
+    'sourcemap',
+    'webconsole',
+]
--- a/toolkit/devtools/sourcemap/Makefile.in
+++ b/toolkit/devtools/sourcemap/Makefile.in
@@ -5,15 +5,12 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-# No tests yet
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
 
 libs::
 	$(NSINSTALL) $(srcdir)/*.jsm $(FINAL_TARGET)/modules/devtools
new file mode 100644
--- /dev/null
+++ b/toolkit/devtools/sourcemap/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/devtools/sourcemap/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/devtools/webconsole/Makefile.in
+++ b/toolkit/devtools/webconsole/Makefile.in
@@ -4,16 +4,12 @@
 
 DEPTH = ../../..
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-ifneq (Android,$(OS_TARGET))
-  TEST_DIRS += test
-endif
-
 include $(topsrcdir)/config/rules.mk
 
 libs::
 	$(INSTALL) $(IFLAGS1) $(srcdir)/*.jsm $(FINAL_TARGET)/modules/devtools
new file mode 100644
--- /dev/null
+++ b/toolkit/devtools/webconsole/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['OS_TARGET'] != 'Android':
+    TEST_DIRS += ['test']
new file mode 100644
--- /dev/null
+++ b/toolkit/devtools/webconsole/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/forgetaboutsite/Makefile.in
+++ b/toolkit/forgetaboutsite/Makefile.in
@@ -10,11 +10,9 @@ VPATH   := @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE := forgetaboutsite
 
 EXTRA_JS_MODULES := \
   ForgetAboutSite.jsm \
   $(NULL)
 
-TEST_DIRS := test
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/forgetaboutsite/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
--- a/toolkit/forgetaboutsite/test/Makefile.in
+++ b/toolkit/forgetaboutsite/test/Makefile.in
@@ -7,12 +7,11 @@ topsrcdir := @top_srcdir@
 srcdir    := @srcdir@
 VPATH   := @srcdir@
 relativesrcdir := @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE := forgetaboutsite
 
-DIRS := browser
 XPCSHELL_TESTS := unit
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/forgetaboutsite/test/browser/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/forgetaboutsite/test/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['browser']
--- a/toolkit/identity/Makefile.in
+++ b/toolkit/identity/Makefile.in
@@ -38,13 +38,9 @@ EXTRA_JS_MODULES = \
 	LogUtils.jsm \
 	MinimalIdentity.jsm \
 	RelyingParty.jsm \
 	Sandbox.jsm \
 	$(NULL)
 
 JS_MODULES_PATH = $(FINAL_TARGET)/modules/identity
 
-ifdef ENABLE_TESTS
-    DIRS += tests
-endif
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/identity/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
--- a/toolkit/identity/tests/Makefile.in
+++ b/toolkit/identity/tests/Makefile.in
@@ -8,11 +8,9 @@ srcdir         = @srcdir@
 VPATH          = @srcdir@
 relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = test_identity
 XPCSHELL_TESTS = unit
 
-DIRS = chrome mochitest
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/identity/tests/chrome/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/identity/tests/mochitest/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/identity/tests/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['chrome', 'mochitest']
--- a/toolkit/library/Makefile.in
+++ b/toolkit/library/Makefile.in
@@ -12,22 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/rdf/util/src/objs.mk
 include $(topsrcdir)/intl/unicharutil/util/objs.mk
 
 MODULE = libxul
 LIBRARY_NAME = xul
 FORCE_SHARED_LIB = 1
 MOZILLA_INTERNAL_API = 1
 
-ifdef MOZ_METRO
-ifeq ($(OS_ARCH),WINNT)
-DIRS += winvccorlib
-endif
-endif
-
 ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
 # This is going to be a framework named "XUL", not an ordinary library named
 # "libxul.dylib"
 LIBRARY_NAME=XUL
 # Setting MAKE_FRAMEWORK makes DLL_PREFIX and DLL_SUFFIX be ignored when
 # setting SHARED_LIBRARY; we need to leave DLL_PREFIX and DLL_SUFFIX
 # as-is so that dependencies of the form -ltracemalloc still work.
 MAKE_FRAMEWORK=1
new file mode 100644
--- /dev/null
+++ b/toolkit/library/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['MOZ_METRO'] and CONFIG['OS_ARCH'] == 'WINNT':
+    DIRS += ['winvccorlib']
new file mode 100644
--- /dev/null
+++ b/toolkit/library/winvccorlib/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/locales/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/modules/Makefile.in
+++ b/toolkit/modules/Makefile.in
@@ -4,17 +4,15 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-TEST_DIRS += tests
-
 EXTRA_JS_MODULES := \
   NewTabUtils.jsm \
   Sqlite.jsm \
   TelemetryTimestamps.jsm \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/modules/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/modules/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/moz.build
@@ -0,0 +1,43 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+PARALLEL_DIRS += [
+    'components',
+    'content',
+    'devtools',
+    'forgetaboutsite',
+    'identity',
+    'locales',
+    'modules',
+    'mozapps/downloads',
+    'mozapps/extensions',
+    'mozapps/handling',
+    'mozapps/preferences',
+    'mozapps/plugins',
+    'mozapps/shared',
+    'obsolete',
+    'profile',
+    'themes',
+    'webapps',
+]
+
+DIRS += ['mozapps/update']
+
+if CONFIG['MOZ_MAINTENANCE_SERVICE']:
+    DIRS += ['components/maintenanceservice']
+
+DIRS += ['xre']
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'qt'):
+    PARALLEL_DIRS += ['system/unixproxy']
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    PARALLEL_DIRS += ['system/osxproxy']
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+    PARALLEL_DIRS += ['system/windowsproxy']
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
+    PARALLEL_DIRS += ['system/androidproxy']
+
+if CONFIG['MOZ_CRASHREPORTER']:
+    PARALLEL_DIRS += ['crashreporter']
--- a/toolkit/mozapps/downloads/Makefile.in
+++ b/toolkit/mozapps/downloads/Makefile.in
@@ -22,11 +22,9 @@ EXTRA_JS_MODULES = \
   $(NULL)
 
 ifeq ($(OS_ARCH),WINNT)
 EXTRA_JS_MODULES += \
   DownloadTaskbarProgress.jsm \
   $(NULL)
 endif
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/downloads/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
--- a/toolkit/mozapps/downloads/tests/Makefile.in
+++ b/toolkit/mozapps/downloads/tests/Makefile.in
@@ -12,14 +12,12 @@ relativesrcdir = @relativesrcdir@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = test_downloads
 
 XPCSHELL_TESTS = \
   unit \
   $(NULL)
 
-DIRS += chrome
-
 include $(topsrcdir)/config/rules.mk
 
 libs:: 
 	$(INSTALL) $(topsrcdir)/testing/specialpowers/content/MockFilePicker.jsm $(DEPTH)/_tests/xpcshell/$(relativesrcdir)/unit
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/downloads/tests/chrome/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/downloads/tests/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['chrome']
--- a/toolkit/mozapps/extensions/Makefile.in
+++ b/toolkit/mozapps/extensions/Makefile.in
@@ -56,17 +56,15 @@ EXTRA_JS_MODULES = \
   AddonUpdateChecker.jsm \
   ChromeManifestParser.jsm \
   LightweightThemeImageOptimizer.jsm \
   LightweightThemeManager.jsm \
   PluginProvider.jsm \
   SpellCheckDictionaryBootstrap.js \
   $(NULL)
 
-TEST_DIRS += test
-
 EXTRA_DSO_LDOPTS = \
   $(MOZ_JS_LIBS) \
   $(MOZ_UNICHARUTIL_LIBS) \
   $(MOZ_COMPONENT_LIBS) \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/extensions/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
--- a/toolkit/mozapps/extensions/test/Makefile.in
+++ b/toolkit/mozapps/extensions/test/Makefile.in
@@ -11,22 +11,16 @@ relativesrcdir = @relativesrcdir@
 
 TESTROOT = $(CURDIR)/$(DEPTH)/_tests/xpcshell/$(relativesrcdir)
 TESTXPI = $(TESTROOT)/xpcshell/addons
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = test_extensionmanager
 
-DIRS += \
-    xpinstall \
-    browser \
-    mochitest \
-    $(NULL)
-
 XPCSHELL_TESTS = \
   xpcshell \
   xpcshell-unpack \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
 libs::
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/browser/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/mochitest/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['MOZ_BUILD_APP'] != 'mobile':
+    DIRS += ['xpinstall', 'browser', 'mochitest']
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/xpinstall/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/handling/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/mozapps/plugins/Makefile.in
+++ b/toolkit/mozapps/plugins/Makefile.in
@@ -7,11 +7,9 @@ DEPTH   = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 EXTRA_COMPONENTS = pluginGlue.manifest
 
-TEST_DIRS += tests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/plugins/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['tests']
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/plugins/tests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/preferences/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/mozapps/shared/Makefile.in
+++ b/toolkit/mozapps/shared/Makefile.in
@@ -15,15 +15,13 @@ MODULE = toolkitShared
 EXTRA_PP_JS_MODULES = \
   CertUtils.jsm \
   $(NULL)
 
 EXTRA_JS_MODULES = \
   FileUtils.jsm \
   $(NULL)
 
-TEST_DIRS += test/chrome
-
 ifdef ENABLE_TESTS
 XPCSHELL_TESTS = test/unit
 endif
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/shared/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test/chrome']
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/shared/test/chrome/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/mozapps/update/Makefile.in
+++ b/toolkit/mozapps/update/Makefile.in
@@ -14,47 +14,23 @@ MODULE = update
 XPIDLSRCS = nsIUpdateTimerManager.idl
 
 EXTRA_COMPONENTS = \
   nsUpdateTimerManager.js \
   nsUpdateTimerManager.manifest \
   $(NULL)
 
 ifdef MOZ_UPDATER
-ifneq (android,$(MOZ_WIDGET_TOOLKIT))
-DIRS += common
-DIRS += updater
-endif
 
 XPIDLSRCS += nsIUpdateService.idl
 
 EXTRA_PP_COMPONENTS += \
   nsUpdateService.js \
   $(NULL)
 
 EXTRA_COMPONENTS += \
   nsUpdateService.manifest \
   nsUpdateServiceStub.js \
   $(NULL)
 
-else
-
-# If only the maintenance service is installed and not
-# the updater, then the maintenance service may still be
-# used for other things.  We need to build update/common
-# which the maintenance service uses.
-ifdef MOZ_MAINTENANCE_SERVICE
-ifneq (android,$(MOZ_WIDGET_TOOLKIT))
-DIRS += common
-endif
-endif
-endif
-
-TEST_DIRS += test_timermanager
-# Update tests require the updater binary
-ifdef MOZ_UPDATER
-TEST_DIRS += test
-ifdef MOZ_MAINTENANCE_SERVICE
-TEST_DIRS += test_svc
-endif
 endif
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/update/common/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/update/moz.build
@@ -0,0 +1,23 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
+    if CONFIG['MOZ_UPDATER']:
+        DIRS += ['common', 'updater']
+    elif CONFIG['MOZ_MAINTENANCE_SERVICE']:
+        # If only the maintenance service is installed and not
+        # the updater, then the maintenance service may still be
+        # used for other things.  We need to build update/common
+        # which the maintenance service uses.
+        DIRS += ['common']
+
+TEST_DIRS += ['test_timermanager']
+
+# Update tests require the updater binary
+if CONFIG['MOZ_UPDATER']:
+    TEST_DIRS += ['test']
+
+    if CONFIG['MOZ_MAINTENANCE_SERVICE']:
+        TEST_DIRS += ['test_svc']
--- a/toolkit/mozapps/update/test/Makefile.in
+++ b/toolkit/mozapps/update/test/Makefile.in
@@ -25,20 +25,16 @@ DEFINES += \
   -DMOZ_DEBUG=$(MOZ_DEBUG) \
   $(NULL)
 
 ifdef MOZ_MAINTENANCE_SERVICE
 DEFINES += -DMOZ_MAINTENANCE_SERVICE=$(MOZ_MAINTENANCE_SERVICE)
 endif
 
 ifneq (android,$(MOZ_WIDGET_TOOLKIT))
-DIRS = \
-  chrome \
-  $(NULL)
-
 CPPSRCS = \
   TestAUSReadStrings.cpp \
   TestAUSHelper.cpp \
   $(NULL)
 
 SIMPLE_PROGRAMS = $(CPPSRCS:.cpp=$(BIN_SUFFIX))
 
 INI_TEST_FILES = \
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/update/test/chrome/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/update/test/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
+    DIRS += ['chrome']
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/update/test_svc/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/update/test_timermanager/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/mozapps/update/updater/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/obsolete/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/profile/Makefile.in
+++ b/toolkit/profile/Makefile.in
@@ -31,14 +31,12 @@ LOCAL_INCLUDES = \
   -I$(srcdir)/../xre \
   -I$(topsrcdir)/profile/dirserviceprovider/src \
   $(NULL)
 
 DEFINES += -DIMPL_XREAPI
 
 GARBAGE += nsProfileLock.cpp
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/rules.mk
 
 export:: $(topsrcdir)/profile/dirserviceprovider/src/nsProfileLock.cpp
 	$(INSTALL) $^ .
new file mode 100644
--- /dev/null
+++ b/toolkit/profile/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
new file mode 100644
--- /dev/null
+++ b/toolkit/profile/test/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/system/androidproxy/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/system/dbus/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/system/gnome/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/system/osxproxy/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/system/unixproxy/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/system/windowsproxy/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/themes/Makefile.in
+++ b/toolkit/themes/Makefile.in
@@ -4,38 +4,10 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-# Theme Selection
-#
-# MacOS X                 osx (toolkit/themes/osx)
-# Windows                 windows (toolkit/themes/windows)
-# GNOME/Linux             windows (toolkit/themes/windows) + 
-#                         linux overrides (toolkit/themes/linux)
-# OS/2                    windows (toolkit/themes/windows) + 
-#                         os2 overrides (toolkit/themes/os2)
-# faststripe              windows + faststripe (no native theme components)
-
-ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-DIRS	= osx
-else
-
-DIRS	= windows
-
-ifneq (,$(filter gtk2 qt,$(MOZ_WIDGET_TOOLKIT)))
-DIRS += linux
-endif
-ifneq (,$(filter os2,$(MOZ_WIDGET_TOOLKIT)))
-DIRS += os2/global
-endif
-ifdef MOZ_THEME_FASTSTRIPE
-DIRS += faststripe/global
-endif
-
-endif
-
 include $(topsrcdir)/config/rules.mk
 
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/faststripe/global/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/themes/linux/Makefile.in
+++ b/toolkit/themes/linux/Makefile.in
@@ -4,15 +4,9 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS	= global mozapps
-
-ifdef MOZ_HELP_VIEWER
-DIRS	+= help
-endif
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/linux/global/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/linux/help/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/linux/moz.build
@@ -0,0 +1,9 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['global', 'mozapps']
+
+if CONFIG['MOZ_HELP_VIEWER']:
+    DIRS += ['help']
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/linux/mozapps/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/moz.build
@@ -0,0 +1,28 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Theme Selection
+#
+# MacOS X                 osx (toolkit/themes/osx)
+# Windows                 windows (toolkit/themes/windows)
+# GNOME/Linux             windows (toolkit/themes/windows) + 
+#                         linux overrides (toolkit/themes/linux)
+# OS/2                    windows (toolkit/themes/windows) + 
+#                         os2 overrides (toolkit/themes/os2)
+# faststripe              windows + faststripe (no native theme components)
+
+toolkit = CONFIG['MOZ_WIDGET_TOOLKIT']
+
+if toolkit == 'cocoa':
+    DIRS += ['osx']
+else:
+    DIRS += ['windows']
+
+    if toolkit in ('gtk2', 'qt'):
+        DIRS += ['linux']
+    elif toolkit == 'os2':
+        DIRS += ['os2/global']
+    elif CONFIG['MOZ_THEME_FASTSTRIPE']:
+        DIRS += ['faststripe/global']
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/os2/global/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/themes/osx/Makefile.in
+++ b/toolkit/themes/osx/Makefile.in
@@ -4,17 +4,9 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS	= global mozapps
-
-ifdef MOZ_HELP_VIEWER
-DIRS	+= help
-endif
-
-TEST_DIRS += mochitests
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/osx/global/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/osx/help/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/osx/mochitests/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/osx/moz.build
@@ -0,0 +1,11 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['global', 'mozapps']
+
+if CONFIG['MOZ_HELP_VIEWER']:
+    DIRS += ['help']
+
+TEST_DIRS += ['mochitests']
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/osx/mozapps/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/themes/windows/Makefile.in
+++ b/toolkit/themes/windows/Makefile.in
@@ -4,15 +4,9 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS	= global mozapps
-
-ifdef MOZ_HELP_VIEWER
-DIRS	+= help
-endif
-
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/windows/global/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/windows/help/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/windows/moz.build
@@ -0,0 +1,9 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['global', 'mozapps']
+
+if CONFIG['MOZ_HELP_VIEWER']:
+    DIRS += ['help']
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/windows/mozapps/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
new file mode 100644
--- /dev/null
+++ b/toolkit/toolkit.mozbuild
@@ -0,0 +1,251 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['LIBXUL_SDK']:
+    error('toolkit.mozbuild is not compatible with --enable-libxul-sdk=')
+
+if not CONFIG['MOZ_NATIVE_NSPR']:
+    add_tier_dir('nspr', 'nsprpub', static=True)
+    add_tier_dir('nspr', 'config/nspr')
+
+if not CONFIG['MOZ_NATIVE_SQLITE']:
+    add_tier_dir('nss', 'db/sqlite3/src')
+
+if CONFIG['MOZ_PSM'] and not CONFIG['MOZ_NATIVE_NSS']:
+    add_tier_dir('nss', 'security/build')
+
+include('/config/js/js.mozbuild')
+
+if CONFIG['NS_TRACE_MALLOC']:
+    add_tier_dir('platform', 'tools/trace-malloc/lib')
+
+if CONFIG['MOZ_DMD']:
+    add_tier_dir('platform', 'memory/replace/dmd')
+
+if CONFIG['MOZ_TREE_FREETYPE']:
+    add_tier_dir('platform', 'modules/freetype2', static=True)
+
+add_tier_dir('platform', 'xpcom')
+
+add_tier_dir('platform', [
+    'modules/libpref',
+    'intl',
+    'netwerk',
+])
+
+if CONFIG['MOZ_AUTH_EXTENSION']:
+    add_tier_dir('platform', 'extensions/auth')
+
+# External/3rd party libraries.
+
+if not CONFIG['MOZ_NATIVE_JPEG']:
+    add_tier_dir('platform', 'media/libjpeg')
+
+if CONFIG['MOZ_UPDATER']:
+    if not CONFIG['MOZ_NATIVE_BZ2']:
+        add_tier_dir('platform', 'modules/libbz2')
+
+    add_tier_dir('platform', 'other-licenses/bsdiff')
+
+add_tier_dir('platform', 'gfx/qcms')
+
+# Gecko/Core components.
+
+add_tier_dir('platform', ['ipc', 'js/ipc'])
+
+add_tier_dir('platform', ['hal', 'js/xpconnect', 'intl/chardet'])
+
+if CONFIG['MOZ_ENABLE_GTK2'] and CONFIG['MOZ_X11']:
+    add_tier_dir('platform', 'widget/gtkxtbin')
+
+add_tier_dir('platform', ['modules/libjar', 'storage'])
+
+if CONFIG['MOZ_PERMISSIONS']:
+    add_tier_dir('platform', ['extensions/cookie', 'extensions/permissions'])
+
+add_tier_dir('platform', 'rdf')
+
+if CONFIG['MOZ_JSDEBUGGER']:
+    add_tier_dir('platform', 'js/jsd')
+
+if CONFIG['MOZ_VORBIS']:
+    add_tier_dir('platform', 'media/libvorbis')
+
+if CONFIG['MOZ_TREMOR']:
+    add_tier_dir('platform', 'media/libtremor')
+
+if CONFIG['MOZ_OPUS']:
+    add_tier_dir('platform', 'media/libopus')
+
+if CONFIG['MOZ_WEBM']:
+    add_tier_dir('platform', 'media/libnestegg')
+
+if CONFIG['MOZ_VP8'] and not CONFIG['MOZ_NATIVE_LIBVPX']:
+    add_tier_dir('platform', 'media/libvpx')
+
+if CONFIG['MOZ_OGG']:
+    add_tier_dir('platform', ['media/libogg', 'media/libtheora'])
+
+if CONFIG['MOZ_SYDNEYAUDIO']:
+    add_tier_dir('platform', 'media/libsydneyaudio')
+
+if CONFIG['MOZ_WEBRTC']:
+    add_tier_dir('platform', [
+        'media/webrtc',
+        'media/mtransport/third_party',
+        'media/mtransport/build',
+        'media/mtransport/standalone',
+    ])
+
+if CONFIG['MOZ_SPEEX_RESAMPLER']:
+    add_tier_dir('platform', 'media/libspeex_resampler')
+
+if CONFIG['MOZ_SOUNDTOUCH']:
+    add_tier_dir('platform', 'media/libsoundtouch')
+
+if CONFIG['MOZ_CUBEB']:
+    add_tier_dir('platform', 'media/libcubeb')
+
+if CONFIG['MOZ_OMX_PLUGIN']:
+    add_tier_dir('platform', [
+        'media/omx-plugin/lib/ics/libutils',
+        'media/omx-plugin/lib/ics/libstagefright',
+        'media/omx-plugin/lib/gb/libutils',
+        'media/omx-plugin/lib/gb/libstagefright',
+        'media/omx-plugin/lib/gb/libstagefright_color_conversion',
+        'media/omx-plugin/lib/gb235/libstagefright',
+        'media/omx-plugin/lib/froyo/libstagefright',
+        'media/omx-plugin',
+        'media/omx-plugin/gb',
+        'media/omx-plugin/gb235',
+        'media/omx-plugin/froyo',
+        'media/omx-plugin/lib/hc/libstagefright',
+        'media/omx-plugin/hc',
+        'media/omx-plugin/sony',
+    ])
+
+if not CONFIG['MOZ_NATIVE_PNG']:
+    add_tier_dir('platform', 'media/libpng')
+
+if CONFIG['ENABLE_TESTS']:
+    add_tier_dir('platform', 'testing/specialpowers')
+
+if CONFIG['MOZ_ENABLE_GTEST']:
+    add_tier_dir('platform', 'testing/gtest')
+
+add_tier_dir('platform', [
+    'uriloader',
+    'caps',
+    'parser',
+    'gfx',
+    'image',
+    'dom',
+    'view',
+    'widget',
+    'content',
+    'editor',
+    'layout',
+    'docshell',
+    'embedding',
+    'xpfe/appshell'
+])
+
+# This needs to be built after the gfx/ directory
+# to ensure all dependencies for skia (e.g. mozalloc, xpcom)
+# have been built
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
+    add_tier_dir('platform', 'other-licenses/skia-npapi')
+
+if CONFIG['MOZ_UNIVERSALCHARDET']:
+    add_tier_dir('platform', 'extensions/universalchardet')
+
+if CONFIG['ACCESSIBILITY']:
+    add_tier_dir('platform', 'accessible')
+
+# toolkit
+
+add_tier_dir('platform', 'profile')
+
+# This must precede xpfe.
+if CONFIG['MOZ_JPROF']:
+    add_tier_dir('platform', 'tools/jprof')
+
+add_tier_dir('platform', 'tools/profiler')
+
+add_tier_dir('platform', 'xpfe/components')
+
+if CONFIG['MOZ_ENABLE_XREMOTE']:
+    add_tier_dir('platform', 'widget/xremoteclient')
+
+if CONFIG['MOZ_SPELLCHECK']:
+    add_tier_dir('platform', 'extensions/spellcheck')
+
+if CONFIG['MOZ_PSM']:
+    add_tier_dir('platform', 'security/manager')
+else:
+    add_tier_dir('platform', [
+        'security/manager/boot/public',
+        'security/manager/ssl/public',
+    ])
+
+if CONFIG['MOZ_UPDATER']:
+    add_tier_dir('platform', 'modules/libmar')
+
+add_tier_dir('platform', 'toolkit')
+
+if CONFIG['MOZ_PREF_EXTENSIONS']:
+    add_tier_dir('platform', 'extensions/pref')
+
+add_tier_dir('platform', 'services')
+add_tier_dir('platform', 'startupcache')
+add_tier_dir('platform', 'js/ductwork/debugger')
+add_tier_dir('platform', 'other-licenses/snappy')
+
+if CONFIG['MOZ_GIO_COMPONENT']:
+    add_tier_dir('platform', 'extensions/gio')
+
+# Applications can cheat and ask for code to be
+# built before libxul so it can be linked into libxul.
+add_tier_dir('platform', app_libxul_dirs)
+
+add_tier_dir('platform', 'toolkit/library')
+add_tier_dir('platform', 'xpcom/stub')
+
+if CONFIG['MOZ_REPLACE_MALLOC']:
+    add_tier_dir('platform', 'memory/replace')
+
+if CONFIG['NS_TRACE_MALLOC']:
+    add_tier_dir('platform', 'tools/trace-malloc')
+
+if CONFIG['MOZ_ENABLE_GNOME_COMPONENT']:
+    add_tier_dir('platform', 'toolkit/system/gnome')
+
+# if libconic is present, it will do its own network monitoring
+if not CONFIG['MOZ_ENABLE_LIBCONIC'] and CONFIG['MOZ_ENABLE_DBUS']:
+    add_tier_dir('platform', 'toolkit/system/dbus')
+
+add_tier_dir('platform', 'addon-sdk')
+
+if CONFIG['MOZ_MAPINFO']:
+    add_tier_dir('platform', 'tools/codesighs')
+
+if CONFIG['ENABLE_MARIONETTE']:
+    add_tier_dir('platform', 'testing/marionette')
+
+if CONFIG['ENABLE_TESTS']:
+    add_tier_dir('platform', [
+        'testing/mochitest',
+        'testing/xpcshell',
+        'testing/tools/screenshot',
+        'testing/peptest',
+        'testing/mozbase',
+        'testing/modules',
+    ])
+
+    if CONFIG['MOZ_WEBRTC']:
+        add_tier_dir('platform', [
+            'media/webrtc/signaling/test',
+            'media/mtransport/test',
+        ])
new file mode 100644
--- /dev/null
+++ b/toolkit/webapps/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
--- a/toolkit/xre/Makefile.in
+++ b/toolkit/xre/Makefile.in
@@ -159,18 +159,16 @@ SHARED_LIBRARY_LIBS += \
   $(DEPTH)/toolkit/crashreporter/google-breakpad/src/client/solaris/handler/$(LIB_PREFIX)exception_handler_s.$(LIB_SUFFIX) \
   $(DEPTH)/toolkit/crashreporter/google-breakpad/src/client/$(LIB_PREFIX)minidump_file_writer_s.$(LIB_SUFFIX) \
   $(DEPTH)/toolkit/crashreporter/google-breakpad/src/common/$(LIB_PREFIX)breakpad_common_s.$(LIB_SUFFIX) \
   $(DEPTH)/toolkit/crashreporter/google-breakpad/src/common/solaris/$(LIB_PREFIX)breakpad_solaris_common_s.$(LIB_SUFFIX) \
   $(NULL)
 endif
 endif
 
-TEST_DIRS += test
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
 
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/testing/gtest/mozilla \
   -I$(srcdir)/../profile \
   -I$(topsrcdir)/dom/ipc \
new file mode 100644
--- /dev/null
+++ b/toolkit/xre/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+TEST_DIRS += ['test']
--- a/toolkit/xre/test/Makefile.in
+++ b/toolkit/xre/test/Makefile.in
@@ -7,18 +7,14 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = test_xulapp
 
-ifeq ($(OS_ARCH),WINNT)
-DIRS += win
-endif
-
 MOCHITEST_FILES = \
   test_fpuhandler.html \
   $(NULL)
 
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/toolkit/xre/test/moz.build
@@ -0,0 +1,7 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+    DIRS += ['win']
new file mode 100644
--- /dev/null
+++ b/toolkit/xre/test/win/moz.build
@@ -0,0 +1,5 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+