Bug 1043820 - Remove PARALLEL_DIRS. r=gps
authorMike Hommey <mh+mozilla@glandium.org>
Tue, 29 Jul 2014 08:57:59 +0900
changeset 196477 22850cacf0f9527a7408375aa9270ebe835175a4
parent 196476 ac2f9ea38a5642c7ec680b188441dabb8d0d89bd
child 196478 0cd3fbbf21f8ff4c65b6097e662417f50388a8cd
push id7951
push usercbook@mozilla.com
push dateTue, 29 Jul 2014 09:20:27 +0000
treeherderfx-team@4e2a92a90646 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersgps
bugs1043820
milestone34.0a1
Bug 1043820 - Remove PARALLEL_DIRS. r=gps
browser/components/customizableui/moz.build
browser/components/moz.build
browser/components/preferences/moz.build
browser/devtools/webide/moz.build
browser/moz.build
config/external/moz.build
config/makefiles/debugmake.mk
config/recurse.mk
config/rules.mk
content/base/moz.build
content/html/content/moz.build
content/html/document/moz.build
content/html/moz.build
content/media/encoder/moz.build
content/media/fmp4/moz.build
content/media/mediasource/moz.build
content/media/moz.build
content/media/webaudio/moz.build
content/media/webspeech/moz.build
content/media/webspeech/synth/moz.build
content/moz.build
content/svg/content/moz.build
content/svg/moz.build
content/xul/content/moz.build
content/xul/document/moz.build
content/xul/moz.build
content/xul/templates/moz.build
dom/activities/moz.build
dom/apps/moz.build
dom/cellbroadcast/moz.build
dom/downloads/moz.build
dom/icc/moz.build
dom/messages/moz.build
dom/mobileconnection/moz.build
dom/mobileid/moz.build
dom/moz.build
dom/network/moz.build
dom/payment/moz.build
dom/push/moz.build
dom/wappush/moz.build
dom/xbl/moz.build
dom/xml/moz.build
dom/xslt/moz.build
editor/libeditor/moz.build
editor/moz.build
extensions/moz.build
image/moz.build
intl/moz.build
layout/inspector/moz.build
layout/mathml/moz.build
layout/moz.build
layout/xul/moz.build
mobile/android/moz.build
netwerk/moz.build
netwerk/protocol/moz.build
python/mozbuild/mozbuild/backend/recursivemake.py
python/mozbuild/mozbuild/frontend/data.py
python/mozbuild/mozbuild/frontend/emitter.py
python/mozbuild/mozbuild/frontend/reader.py
python/mozbuild/mozbuild/frontend/sandbox_symbols.py
python/mozbuild/mozbuild/test/backend/data/stub0/moz.build
python/mozbuild/mozbuild/test/backend/test_recursivemake.py
python/mozbuild/mozbuild/test/frontend/data/traversal-all-vars/moz.build
python/mozbuild/mozbuild/test/frontend/test_emitter.py
python/mozbuild/mozbuild/test/frontend/test_reader.py
services/fxaccounts/moz.build
services/mobileid/moz.build
services/moz.build
testing/mochitest/tests/moz.build
toolkit/components/moz.build
toolkit/components/promiseworker/moz.build
toolkit/devtools/moz.build
toolkit/devtools/qrcode/moz.build
toolkit/moz.build
uriloader/moz.build
widget/shared/moz.build
xpcom/moz.build
xulrunner/moz.build
--- a/browser/components/customizableui/moz.build
+++ b/browser/components/customizableui/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'content',
 ]
 
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
 
 EXTRA_JS_MODULES += [
     'DragPositionManager.jsm',
     'ScrollbarSampler.jsm',
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'about',
     'customizableui',
     'dirprovider',
     'downloads',
     'feeds',
     'loop',
     'places',
     'preferences',
--- a/browser/components/preferences/moz.build
+++ b/browser/components/preferences/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['in-content']
+DIRS += ['in-content']
 
 BROWSER_CHROME_MANIFESTS += [
     'in-content/tests/browser.ini',
     'tests/browser.ini',
 ]
 
 for var in ('MOZ_APP_NAME', 'MOZ_MACBUNDLE_NAME'):
     DEFINES[var] = CONFIG[var]
--- a/browser/devtools/webide/moz.build
+++ b/browser/devtools/webide/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'content',
     'components',
     'themes',
 ]
 
 MOCHITEST_CHROME_MANIFESTS += ['test/chrome.ini']
 
 JS_MODULES_PATH = 'modules/devtools/webide'
--- a/browser/moz.build
+++ b/browser/moz.build
@@ -1,17 +1,17 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 CONFIGURE_SUBST_FILES += ['installer/Makefile']
 
-PARALLEL_DIRS += [
+DIRS += [
     'base',
     'components',
     'experiments',
     'fuel',
     'locales',
     'modules',
     'themes',
     'extensions',
--- a/config/external/moz.build
+++ b/config/external/moz.build
@@ -41,9 +41,9 @@ external_dirs += [
     'media/libcubeb',
     'media/libogg',
     'media/libtheora',
     'media/libspeex_resampler',
     'media/libstagefright',
     'media/libsoundtouch',
 ]
 
-PARALLEL_DIRS += ['../../' + i for i in external_dirs]
+DIRS += ['../../' + i for i in external_dirs]
--- a/config/makefiles/debugmake.mk
+++ b/config/makefiles/debugmake.mk
@@ -56,17 +56,16 @@ ifneq (,$(filter $(PROGRAM) $(HOST_PROGR
 		DEF_FILE \
 		IMPORT_LIBRARY \
 		STATIC_LIBS \
 		EXTRA_DSO_LDOPTS \
 		DEPENDENT_LIBS \
 	)
 	@echo --------------------------------------------------------------------------------
 endif
-	$(LOOP_OVER_PARALLEL_DIRS)
 	$(LOOP_OVER_DIRS)
 
 showbuild:
 	$(call print_vars,\
 		MOZ_BUILD_ROOT \
 		MOZ_WIDGET_TOOLKIT \
 		CC \
 		CXX \
--- a/config/recurse.mk
+++ b/config/recurse.mk
@@ -176,29 +176,19 @@ libs export tools::
 	$(foreach tier,$(TIERS), $(if $(filter-out libs_precompile tools_precompile,$@_$(tier)), \
 		$(if $(filter libs,$@),$(foreach dir, $(tier_$(tier)_staticdirs), $(call TIER_DIR_SUBMAKE,$@,$(tier),$(dir),,1))) \
 		$(foreach dir, $(tier_$(tier)_dirs), $(call TIER_DIR_SUBMAKE,$@,$(tier),$(dir),$@))))
 	$(call BUILDSTATUS,TIER_FINISH $@)
 
 else
 
 define CREATE_SUBTIER_TRAVERSAL_RULE
-PARALLEL_DIRS_$(1) = $$(addsuffix _$(1),$$(PARALLEL_DIRS))
-
-.PHONY: $(1) $$(PARALLEL_DIRS_$(1))
-
-ifdef PARALLEL_DIRS
-$$(PARALLEL_DIRS_$(1)): %_$(1): %/Makefile
-	+@$$(call SUBMAKE,$(1),$$*)
-endif
+.PHONY: $(1)
 
 $(1):: $$(SUBMAKEFILES)
-ifdef PARALLEL_DIRS
-	+@$(MAKE) $$(PARALLEL_DIRS_$(1))
-endif
 	$$(LOOP_OVER_DIRS)
 
 endef
 
 $(foreach subtier,export binaries libs tools,$(eval $(call CREATE_SUBTIER_TRAVERSAL_RULE,$(subtier))))
 
 endif # ifdef TIERS
 
@@ -227,10 +217,9 @@ ifneq (.,$(DEPTH))
 	@$(if $^,$(call py_action,link_deps,-o binaries --group-all --topsrcdir $(topsrcdir) --topobjdir $(DEPTH) --dist $(DIST) $(ALL_DEP_FILES)))
 endif
 endif
 
 endif
 
 recurse:
 	@$(RECURSED_COMMAND)
-	$(LOOP_OVER_PARALLEL_DIRS)
 	$(LOOP_OVER_DIRS)
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -344,22 +344,16 @@ define TIER_DIR_SUBMAKE
 
 endef # Ths empty line is important.
 
 ifneq (,$(strip $(DIRS)))
 LOOP_OVER_DIRS = \
   $(foreach dir,$(DIRS),$(call SUBMAKE,$@,$(dir)))
 endif
 
-# we only use this for the makefiles target and other stuff that doesn't matter
-ifneq (,$(strip $(PARALLEL_DIRS)))
-LOOP_OVER_PARALLEL_DIRS = \
-  $(foreach dir,$(PARALLEL_DIRS),$(call SUBMAKE,$@,$(dir)))
-endif
-
 #
 # Now we can differentiate between objects used to build a library, and
 # objects used to build an executable in the same directory.
 #
 ifndef PROGOBJS
 PROGOBJS		= $(OBJS)
 endif
 
@@ -659,17 +653,17 @@ clean clobber realclean clobber_all::
 
 ifdef TIERS
 clean clobber realclean clobber_all distclean::
 	$(foreach dir, \
 		$(foreach tier, $(TIERS), $(tier_$(tier)_staticdirs) $(tier_$(tier)_dirs)), \
 		-$(call SUBMAKE,$@,$(dir)))
 else
 clean clobber realclean clobber_all distclean::
-	$(foreach dir,$(PARALLEL_DIRS) $(DIRS),-$(call SUBMAKE,$@,$(dir)))
+	$(foreach dir,$(DIRS),-$(call SUBMAKE,$@,$(dir)))
 endif
 
 distclean::
 	-$(RM) -r $(ALL_TRASH_DIRS)
 	-$(RM) $(ALL_TRASH)  \
 	Makefile .HSancillary \
 	$(wildcard *.$(OBJ_SUFFIX)) $(wildcard *.ho) $(wildcard host_*.o*) \
 	$(wildcard *.$(LIB_SUFFIX)) $(wildcard *$(DLL_SUFFIX)) \
@@ -1275,17 +1269,16 @@ INSTALL_TARGETS += SDK_BINARY
 endif
 endif # SDK_BINARY
 
 ################################################################################
 # CHROME PACKAGING
 
 chrome::
 	$(MAKE) realchrome
-	$(LOOP_OVER_PARALLEL_DIRS)
 	$(LOOP_OVER_DIRS)
 
 $(FINAL_TARGET)/chrome: $(call mkdir_deps,$(FINAL_TARGET)/chrome)
 
 ifneq (,$(JAR_MANIFEST))
 ifndef NO_DIST_INSTALL
 
 ifdef XPI_NAME
@@ -1616,33 +1609,31 @@ FORCE:
 
 # Delete target if error occurs when building target
 .DELETE_ON_ERROR:
 
 tags: TAGS
 
 TAGS: $(CSRCS) $(CPPSRCS) $(wildcard *.h)
 	-etags $(CSRCS) $(CPPSRCS) $(wildcard *.h)
-	$(LOOP_OVER_PARALLEL_DIRS)
 	$(LOOP_OVER_DIRS)
 
 ifndef INCLUDED_DEBUGMAKE_MK #{
   ## Only parse when an echo* or show* target is requested
   ifneq (,$(call isTargetStem,echo,show))
     include $(topsrcdir)/config/makefiles/debugmake.mk
   endif #}
 endif #}
 
 documentation:
 	@cd $(DEPTH)
 	$(DOXYGEN) $(DEPTH)/config/doxygen.cfg
 
 ifdef ENABLE_TESTS
 check::
-	$(LOOP_OVER_PARALLEL_DIRS)
 	$(LOOP_OVER_DIRS)
 endif
 
 
 FREEZE_VARIABLES = \
   CSRCS \
   CPPSRCS \
   EXPORTS \
--- a/content/base/moz.build
+++ b/content/base/moz.build
@@ -1,8 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['public', 'src']
+DIRS += ['public', 'src']
 TEST_DIRS += ['test']
--- a/content/html/content/moz.build
+++ b/content/html/content/moz.build
@@ -1,8 +1,8 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['public', 'src']
+DIRS += ['public', 'src']
 TEST_DIRS += ['test']
--- a/content/html/document/moz.build
+++ b/content/html/document/moz.build
@@ -1,10 +1,10 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['public', 'src']
+DIRS += ['public', 'src']
 
 MOCHITEST_MANIFESTS += ['test/mochitest.ini']
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
--- a/content/html/moz.build
+++ b/content/html/moz.build
@@ -1,7 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['content', 'document']
+DIRS += ['content', 'document']
--- a/content/media/encoder/moz.build
+++ b/content/media/encoder/moz.build
@@ -1,16 +1,16 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
-    PARALLEL_DIRS += ['fmp4_muxer']
+    DIRS += ['fmp4_muxer']
 
 EXPORTS += [
     'ContainerWriter.h',
     'EncodedFrameContainer.h',
     'MediaEncoder.h',
     'TrackEncoder.h',
     'TrackMetadataBase.h',
 ]
--- a/content/media/fmp4/moz.build
+++ b/content/media/fmp4/moz.build
@@ -16,27 +16,27 @@ UNIFIED_SOURCES += [
 ]
 
 SOURCES += [
     'MP4Decoder.cpp',
     'MP4Reader.cpp',
 ]
 
 if CONFIG['MOZ_WMF']:
-  PARALLEL_DIRS += [ 'wmf' ];
+  DIRS += [ 'wmf' ];
 
 if CONFIG['MOZ_FFMPEG']:
   EXPORTS += [
       'ffmpeg/FFmpegRuntimeLinker.h',
   ]
   UNIFIED_SOURCES += [
       'ffmpeg/FFmpegLog.cpp',
       'ffmpeg/FFmpegRuntimeLinker.cpp',
   ]
-  PARALLEL_DIRS += [
+  DIRS += [
       'ffmpeg/libav53',
       'ffmpeg/libav54',
       'ffmpeg/libav55',
   ]
   LOCAL_INCLUDES += [
       'ffmpeg',
   ]
 
--- a/content/media/mediasource/moz.build
+++ b/content/media/mediasource/moz.build
@@ -1,14 +1,14 @@
 # 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 += [
+DIRS += [
     'test'
 ]
 
 EXPORTS += [
     'AsyncEventRunner.h',
     'MediaSourceDecoder.h',
 ]
 
--- a/content/media/moz.build
+++ b/content/media/moz.build
@@ -1,62 +1,62 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
   'encoder',
   'gmp',
   'mediasource',
   'ogg',
   'webaudio',
   'webvtt'
 ]
 
 TEST_DIRS += ['compiledtest']
 
 if CONFIG['MOZ_RAW']:
-    PARALLEL_DIRS += ['raw']
+    DIRS += ['raw']
 
 if CONFIG['MOZ_WAVE']:
-    PARALLEL_DIRS += ['wave']
+    DIRS += ['wave']
 
 if CONFIG['MOZ_WEBM']:
-    PARALLEL_DIRS += ['webm']
+    DIRS += ['webm']
 
 if CONFIG['MOZ_GSTREAMER']:
-    PARALLEL_DIRS += ['gstreamer']
+    DIRS += ['gstreamer']
 
 if CONFIG['MOZ_DIRECTSHOW']:
-    PARALLEL_DIRS += ['directshow']
+    DIRS += ['directshow']
 
 if CONFIG['MOZ_ANDROID_OMX']:
-    PARALLEL_DIRS += ['android']
+    DIRS += ['android']
 
 if CONFIG['MOZ_WMF']:
-    PARALLEL_DIRS += ['wmf']
+    DIRS += ['wmf']
 
 if CONFIG['MOZ_FMP4']:
-    PARALLEL_DIRS += ['fmp4']
+    DIRS += ['fmp4']
 
 if CONFIG['MOZ_APPLEMEDIA']:
-    PARALLEL_DIRS += ['apple']
+    DIRS += ['apple']
 
-PARALLEL_DIRS += ['webrtc']
+DIRS += ['webrtc']
 
 if CONFIG['MOZ_OMX_DECODER']:
-    PARALLEL_DIRS += ['omx']
-    PARALLEL_DIRS += ['omx/mediaresourcemanager']
+    DIRS += ['omx']
+    DIRS += ['omx/mediaresourcemanager']
 
-PARALLEL_DIRS += ['webspeech']
+DIRS += ['webspeech']
 
 if CONFIG['MOZ_EME']:
-    PARALLEL_DIRS += ['eme']
+    DIRS += ['eme']
 
 TEST_DIRS += [
     'test',
     'gtest',
 ]
 
 EXPORTS += [
     'AbstractMediaDecoder.h',
--- a/content/media/webaudio/moz.build
+++ b/content/media/webaudio/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['blink', 'test']
+DIRS += ['blink', 'test']
 
 TEST_DIRS += ['compiledtest']
 
 EXPORTS += [
     'AudioContext.h',
     'AudioParamTimeline.h',
     'MediaBufferDecoder.h',
     'ThreeDPoint.h',
--- a/content/media/webspeech/moz.build
+++ b/content/media/webspeech/moz.build
@@ -1,9 +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/.
 
-PARALLEL_DIRS = ['synth']
+DIRS = ['synth']
 
 if CONFIG['MOZ_WEBSPEECH']:
-    PARALLEL_DIRS += ['recognition']
+    DIRS += ['recognition']
--- a/content/media/webspeech/synth/moz.build
+++ b/content/media/webspeech/synth/moz.build
@@ -30,17 +30,17 @@ if CONFIG['MOZ_WEBSPEECH']:
         'nsSpeechTask.cpp',
         'nsSynthVoiceRegistry.cpp',
         'SpeechSynthesis.cpp',
         'SpeechSynthesisUtterance.cpp',
         'SpeechSynthesisVoice.cpp',
     ]
 
     if CONFIG['MOZ_SYNTH_PICO']:
-        PARALLEL_DIRS = ['pico']
+        DIRS = ['pico']
 
 IPDL_SOURCES += [
     'ipc/PSpeechSynthesis.ipdl',
     'ipc/PSpeechSynthesisRequest.ipdl',
 ]
 
 FAIL_ON_WARNINGS = True
 
--- a/content/moz.build
+++ b/content/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'base',
     'html',
     'media',
     'svg',
     'xul',
 ]
 
 TEST_DIRS += ['test']
--- a/content/svg/content/moz.build
+++ b/content/svg/content/moz.build
@@ -1,9 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['src']
+DIRS += ['src']
 
 MOCHITEST_MANIFESTS += ['test/mochitest.ini']
--- a/content/svg/moz.build
+++ b/content/svg/moz.build
@@ -1,7 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['document/src', 'content']
+DIRS += ['document/src', 'content']
--- a/content/xul/content/moz.build
+++ b/content/xul/content/moz.build
@@ -1,9 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['public', 'src']
+DIRS += ['public', 'src']
 TEST_DIRS += ['test']
 
--- a/content/xul/document/moz.build
+++ b/content/xul/document/moz.build
@@ -1,9 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['public', 'src']
+DIRS += ['public', 'src']
 DIRS += ['test']
 
--- a/content/xul/moz.build
+++ b/content/xul/moz.build
@@ -2,13 +2,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/.
 
 # We need to build document even if XUL is disabled, for the nsIController[s]
 # interfaces and implementations.
 # Likewise for content, because of nsXULAtoms.
-PARALLEL_DIRS += ['document', 'content']
+DIRS += ['document', 'content']
 
 if CONFIG['MOZ_XUL']:
-    PARALLEL_DIRS += ['templates']
+    DIRS += ['templates']
 
--- a/content/xul/templates/moz.build
+++ b/content/xul/templates/moz.build
@@ -1,9 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['public', 'src']
+DIRS += ['public', 'src']
 
 MOCHITEST_CHROME_MANIFESTS += ['tests/chrome/chrome.ini']
--- a/dom/activities/moz.build
+++ b/dom/activities/moz.build
@@ -1,9 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces', 'src']
+DIRS += ['interfaces', 'src']
 
 XPCSHELL_TESTS_MANIFESTS += ['tests/unit/xpcshell.ini']
--- a/dom/apps/moz.build
+++ b/dom/apps/moz.build
@@ -1,13 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['src']
+DIRS += ['src']
 
 XPCSHELL_TESTS_MANIFESTS += ['tests/unit/xpcshell.ini']
 
 MOCHITEST_MANIFESTS += ['tests/mochitest.ini']
 
 MOCHITEST_CHROME_MANIFESTS += ['tests/chrome.ini']
--- a/dom/cellbroadcast/moz.build
+++ b/dom/cellbroadcast/moz.build
@@ -1,7 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces', 'src']
+DIRS += ['interfaces', 'src']
--- a/dom/downloads/moz.build
+++ b/dom/downloads/moz.build
@@ -2,9 +2,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/.
 
 if CONFIG["MOZ_B2G"]:
     MOCHITEST_MANIFESTS += ['tests/mochitest.ini']
 
-PARALLEL_DIRS += ['src']
+DIRS += ['src']
--- a/dom/icc/moz.build
+++ b/dom/icc/moz.build
@@ -1,7 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces', 'src']
+DIRS += ['interfaces', 'src']
--- a/dom/messages/moz.build
+++ b/dom/messages/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces']
+DIRS += ['interfaces']
 
 EXTRA_COMPONENTS += [
     'SystemMessageInternal.js',
     'SystemMessageManager.js',
     'SystemMessageManager.manifest',
 ]
 
 EXTRA_JS_MODULES += [
--- a/dom/mobileconnection/moz.build
+++ b/dom/mobileconnection/moz.build
@@ -1,9 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces', 'src']
+DIRS += ['interfaces', 'src']
 
 MOCHITEST_MANIFESTS += ['tests/mochitest/mochitest.ini']
--- a/dom/mobileid/moz.build
+++ b/dom/mobileid/moz.build
@@ -1,9 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces', 'src']
+DIRS += ['interfaces', 'src']
 
 MOCHITEST_MANIFESTS += ['test/mochitest.ini']
--- a/dom/moz.build
+++ b/dom/moz.build
@@ -27,19 +27,19 @@ interfaces = [
     'notification',
     'permission',
     'svg',
     'smil',
     'apps',
     'gamepad',
 ]
 
-PARALLEL_DIRS += ['interfaces/' + i for i in interfaces]
+DIRS += ['interfaces/' + i for i in interfaces]
 
-PARALLEL_DIRS += [
+DIRS += [
     'animation',
     'apps',
     'base',
     'activities',
     'archivereader',
     'bindings',
     'battery',
     'browser-element',
@@ -86,52 +86,52 @@ PARALLEL_DIRS += [
     'webidl',
     'xbl',
     'xml',
     'xslt',
     'resourcestats',
 ]
 
 if CONFIG['OS_ARCH'] == 'WINNT':
-    PARALLEL_DIRS += ['plugins/ipc/hangui']
+    DIRS += ['plugins/ipc/hangui']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
-    PARALLEL_DIRS += [
+    DIRS += [
         'speakermanager',
         'wifi',
     ]
 
 if CONFIG['MOZ_B2G_RIL']:
-    PARALLEL_DIRS += [
+    DIRS += [
         'icc',
         'cellbroadcast',
         'mobileconnection',
         'voicemail',
         'wappush',
     ]
 
 if CONFIG['MOZ_PAY']:
-    PARALLEL_DIRS += ['payment']
+    DIRS += ['payment']
 
 if CONFIG['MOZ_GAMEPAD']:
-    PARALLEL_DIRS += ['gamepad']
+    DIRS += ['gamepad']
 
 if CONFIG['MOZ_NFC']:
-    PARALLEL_DIRS += ['nfc']
+    DIRS += ['nfc']
 
 if CONFIG['MOZ_B2G']:
-    PARALLEL_DIRS += [
+    DIRS += [
         'downloads',
         'mobileid'
     ]
 
 if CONFIG['MOZ_B2G_BT_API_V2']:
-    PARALLEL_DIRS += ['bluetooth2']
+    DIRS += ['bluetooth2']
 else:
-    PARALLEL_DIRS += ['bluetooth']
+    DIRS += ['bluetooth']
 
 TEST_DIRS += [
     'tests',
     'imptests',
 ]
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'cocoa', 'windows', 'android', 'qt'):
     TEST_DIRS += ['plugins/test']
--- a/dom/network/moz.build
+++ b/dom/network/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces', 'src']
+DIRS += ['interfaces', 'src']
 
 XPCSHELL_TESTS_MANIFESTS += [
     'tests/unit/xpcshell.ini',
     'tests/unit_ipc/xpcshell.ini',
 ]
 
 if CONFIG['tests/MOZ_B2G_RIL']:
     XPCSHELL_TESTS_MANIFESTS += ['tests/unit_stats/xpcshell.ini']
--- a/dom/payment/moz.build
+++ b/dom/payment/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces']
+DIRS += ['interfaces']
 
 EXTRA_JS_MODULES += [
     'Payment.jsm',
 ]
 
 EXTRA_COMPONENTS += [
     'Payment.js',
     'Payment.manifest',
--- a/dom/push/moz.build
+++ b/dom/push/moz.build
@@ -1,6 +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/.
 
-PARALLEL_DIRS += ['src']
+DIRS += ['src']
--- a/dom/wappush/moz.build
+++ b/dom/wappush/moz.build
@@ -1,9 +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/.
 
-PARALLEL_DIRS += ['interfaces', 'src']
+DIRS += ['interfaces', 'src']
 
 if CONFIG['ENABLE_TESTS']:
     XPCSHELL_TESTS_MANIFESTS += ['tests/xpcshell.ini']
--- a/dom/xbl/moz.build
+++ b/dom/xbl/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['builtin']
+DIRS += ['builtin']
 
 EXPORTS += [
     'nsBindingManager.h',
     'nsXBLBinding.h',
     'nsXBLService.h',
 ]
 
 EXPORTS.mozilla.dom += [
--- a/dom/xml/moz.build
+++ b/dom/xml/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['resources']
+DIRS += ['resources']
 
 TEST_DIRS += ['test']
 
 EXPORTS += [
     'nsIXMLContentSink.h',
 ]
 
 EXPORTS.mozilla.dom += [
--- a/dom/xslt/moz.build
+++ b/dom/xslt/moz.build
@@ -15,17 +15,17 @@ XPIDL_SOURCES += [
 ]
 
 XPIDL_MODULE = 'content_xslt'
 
 EXPORTS += [
     'nsIDocumentTransformer.h',
 ]
 
-PARALLEL_DIRS += [
+DIRS += [
     'base',
     'xml',
     'xpath',
     'xslt',
 ]
 
 if CONFIG['ENABLE_TESTS']:
     JAR_MANIFESTS += ['tests/buster/jar.mn']
--- a/editor/libeditor/moz.build
+++ b/editor/libeditor/moz.build
@@ -1,7 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['base', 'text', 'html']
+DIRS += ['base', 'text', 'html']
--- a/editor/moz.build
+++ b/editor/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'txtsvc',
     'libeditor',
     'txmgr',
     'composer',
 ]
 
 XPIDL_SOURCES += [
     'nsIContentFilter.idl',
--- a/extensions/moz.build
+++ b/extensions/moz.build
@@ -1,7 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += CONFIG['MOZ_EXTENSIONS'].split()
+DIRS += CONFIG['MOZ_EXTENSIONS'].split()
--- a/image/moz.build
+++ b/image/moz.build
@@ -1,10 +1,10 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['public', 'src', 'decoders', 'encoders']
+DIRS += ['public', 'src', 'decoders', 'encoders']
 DIRS += ['build']
 TEST_DIRS += ['test']
 
--- a/intl/moz.build
+++ b/intl/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'hyphenation',
     'locale',
     'locales',
     'lwbrk',
     'strres',
     'unicharutil',
 ]
 
--- a/layout/inspector/moz.build
+++ b/layout/inspector/moz.build
@@ -44,12 +44,12 @@ FAIL_ON_WARNINGS = True
 FINAL_LIBRARY = 'xul'
 LOCAL_INCLUDES += [
     '../style',
     '/content/base/src',
     '/dom/xbl',
 ]
 
 if CONFIG['ENABLE_TESTS']:
-    PARALLEL_DIRS += [
+    DIRS += [
         'tests',
         'tests/chrome',
     ]
--- a/layout/mathml/moz.build
+++ b/layout/mathml/moz.build
@@ -42,17 +42,17 @@ LOCAL_INCLUDES += [
     '../style',
     '../tables',
     '../xul',
     '/content/base/src',
     '/dom/mathml',
 ]
 
 if CONFIG['ENABLE_TESTS']:
-    PARALLEL_DIRS += [
+    DIRS += [
         'tests',
     ]
 
 JAR_MANIFESTS += ['jar.mn']
 
 RESOURCE_FILES.fonts += [
     'mathfont.properties',
     'mathfontMathJax_Main.properties',
--- a/layout/moz.build
+++ b/layout/moz.build
@@ -1,30 +1,30 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'style',
     'base',
     'generic',
     'forms',
     'tables',
     'svg',
     'xul',
     'ipc',
     'mathml',
     'inspector',
     'tools/recording',
 ]
 
 if CONFIG['NS_PRINTING']:
-    PARALLEL_DIRS += ['printing']
+    DIRS += ['printing']
 
 TEST_DIRS += [
     'tools/reftest',
 ]
 
 DIRS += ['build', 'media']
 
 if CONFIG['MOZ_DEBUG']:
--- a/layout/xul/moz.build
+++ b/layout/xul/moz.build
@@ -70,22 +70,22 @@ if CONFIG['MOZ_XUL']:
         'nsSplitterFrame.cpp',
         'nsTextBoxFrame.cpp',
         'nsTitleBarFrame.cpp',
         'nsXULLabelFrame.cpp',
         'nsXULPopupManager.cpp',
     ]
 
 if CONFIG['ENABLE_TESTS']:
-    PARALLEL_DIRS += [
+    DIRS += [
         'test',
     ]
 
 if CONFIG['MOZ_XUL']:
-    PARALLEL_DIRS += ['tree', 'grid']
+    DIRS += ['tree', 'grid']
 
 FAIL_ON_WARNINGS = True
 
 MSVC_ENABLE_PGO = True
 
 FINAL_LIBRARY = 'xul'
 LOCAL_INCLUDES += [
     '../base',
--- a/mobile/android/moz.build
+++ b/mobile/android/moz.build
@@ -20,13 +20,13 @@ DIRS += [
     'geckoview_library',
     'extensions',
 ]
 
 if not CONFIG['MOZ_ANDROID_MLS_STUMBLER']:
     DIRS.remove('stumbler')
 
 if not CONFIG['LIBXUL_SDK']:
-    PARALLEL_DIRS += ['../../xulrunner/tools/redit']
+    DIRS += ['../../xulrunner/tools/redit']
 
 TEST_DIRS += [
     'tests',
 ]
--- a/netwerk/moz.build
+++ b/netwerk/moz.build
@@ -1,35 +1,35 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'base',
     'cookie',
     'dns',
     'socket',
     'mime',
     'streamconv',
     'cache',
     'cache2',
     'protocol',
     'system',
     'ipc',
 ]
 
 if CONFIG['MOZ_SRTP']:
-    PARALLEL_DIRS += ['srtp/src']
+    DIRS += ['srtp/src']
 
 if CONFIG['MOZ_SCTP']:
-    PARALLEL_DIRS += ['sctp/src', 'sctp/datachannel']
+    DIRS += ['sctp/src', 'sctp/datachannel']
 
 if CONFIG['NECKO_WIFI']:
-    PARALLEL_DIRS += ['wifi']
+    DIRS += ['wifi']
 
-PARALLEL_DIRS += ['locales']
+DIRS += ['locales']
 
 DIRS += ['build']
 TEST_DIRS += ['test']
 
 CONFIGURE_DEFINE_FILES += ['necko-config.h']
--- a/netwerk/protocol/moz.build
+++ b/netwerk/protocol/moz.build
@@ -1,7 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += sorted(CONFIG['NECKO_PROTOCOLS'])
+DIRS += sorted(CONFIG['NECKO_PROTOCOLS'])
--- a/python/mozbuild/mozbuild/backend/recursivemake.py
+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
@@ -525,17 +525,17 @@ class RecursiveMakeBackend(CommonBackend
             if current in self._may_skip['libs'] \
                     or current.startswith('subtiers/'):
                 current = None
             return current, [], subdirs.parallel + \
                 subdirs.dirs + subdirs.tests
 
         # Because of bug 925236 and possible other unknown race conditions,
         # don't parallelize the tools tier. There aren't many directories for
-        # this tier anyways, and none of them are under a PARALLEL_DIRS.
+        # this tier anyways.
         def tools_filter(current, subdirs):
             if current not in self._no_skip['tools'] \
                     or current.startswith('subtiers/'):
                 current = None
             return current, [], subdirs.parallel + \
                 subdirs.dirs + subdirs.tests
 
         # compile, binaries and tools tiers use the same traversal as export
@@ -843,21 +843,16 @@ class RecursiveMakeBackend(CommonBackend
             for d in dirs + obj.tier_static_dirs[tier]:
                 if d.trigger:
                     self._triggers[d.trigger].add('%s/target' % d)
 
         if obj.dirs:
             fh.write('DIRS := %s\n' % ' '.join(obj.dirs))
             self._traversal.add(backend_file.relobjdir, dirs=relativize(obj.dirs))
 
-        if obj.parallel_dirs:
-            fh.write('PARALLEL_DIRS := %s\n' % ' '.join(obj.parallel_dirs))
-            self._traversal.add(backend_file.relobjdir,
-                                parallel=relativize(obj.parallel_dirs))
-
         if obj.test_dirs:
             fh.write('TEST_DIRS := %s\n' % ' '.join(obj.test_dirs))
             if self.environment.substs.get('ENABLE_TESTS', False):
                 self._traversal.add(backend_file.relobjdir,
                                     tests=relativize(obj.test_dirs))
 
         # The directory needs to be registered whether subdirectories have been
         # registered or not.
--- a/python/mozbuild/mozbuild/frontend/data.py
+++ b/python/mozbuild/mozbuild/frontend/data.py
@@ -97,27 +97,25 @@ class DirectoryTraversal(SandboxDerived)
     existing recursive make backend while the transition to mozbuild frontend
     files is complete and we move to a more optimal build backend.
 
     Fields in this class correspond to similarly named variables in the
     frontend files.
     """
     __slots__ = (
         'dirs',
-        'parallel_dirs',
         'test_dirs',
         'tier_dirs',
         'tier_static_dirs',
     )
 
     def __init__(self, sandbox):
         SandboxDerived.__init__(self, sandbox)
 
         self.dirs = []
-        self.parallel_dirs = []
         self.test_dirs = []
         self.tier_dirs = OrderedDict()
         self.tier_static_dirs = OrderedDict()
 
 
 class BaseConfigSubstitution(SandboxDerived):
     """Base class describing autogenerated files as part of config.status."""
 
--- a/python/mozbuild/mozbuild/frontend/emitter.py
+++ b/python/mozbuild/mozbuild/frontend/emitter.py
@@ -929,17 +929,16 @@ class TreeMetadataEmitter(LoggingMixin):
                 'subsuite': '',
             })
 
         yield obj
 
     def _emit_directory_traversal_from_sandbox(self, sandbox):
         o = DirectoryTraversal(sandbox)
         o.dirs = sandbox.get('DIRS', [])
-        o.parallel_dirs = sandbox.get('PARALLEL_DIRS', [])
         o.test_dirs = sandbox.get('TEST_DIRS', [])
         o.affected_tiers = sandbox.get_affected_tiers()
 
         if 'TIERS' in sandbox:
             for tier in sandbox['TIERS']:
                 o.tier_dirs[tier] = sandbox['TIERS'][tier]['regular'] + \
                     sandbox['TIERS'][tier]['external']
                 o.tier_static_dirs[tier] = sandbox['TIERS'][tier]['static']
--- a/python/mozbuild/mozbuild/frontend/reader.py
+++ b/python/mozbuild/mozbuild/frontend/reader.py
@@ -795,17 +795,17 @@ class BuildReader(object):
         sandbox = MozbuildSandbox(config, path, metadata=metadata)
         sandbox.exec_file(path, filesystem_absolute=filesystem_absolute)
         sandbox.execution_time = time.time() - time_start
 
         if self._sandbox_post_eval_cb:
             self._sandbox_post_eval_cb(sandbox)
 
         # We first collect directories populated in variables.
-        dir_vars = ['DIRS', 'PARALLEL_DIRS']
+        dir_vars = ['DIRS']
 
         if sandbox.config.substs.get('ENABLE_TESTS', False) == '1':
             dir_vars.append('TEST_DIRS')
 
         dirs = [(v, sandbox[v]) for v in dir_vars if v in sandbox]
 
         curdir = mozpath.dirname(path)
 
@@ -834,22 +834,16 @@ class BuildReader(object):
                                              mozpath.join(curdir, gyp_dir.input),
                                              mozpath.join(sandbox['OBJDIR'],
                                                           target_dir),
                                              gyp_dir.variables,
                                              non_unified_sources = non_unified_sources):
                 gyp_sandbox.update(gyp_dir.sandbox_vars)
                 gyp_sandboxes.append(gyp_sandbox)
 
-        # Add the gyp subdirectories to DIRS. We don't care about trying to
-        # place some of them in PARALLEL_DIRS because they're only going to be
-        # relevant for the compile and libs tiers. The compile tier is already
-        # parallelized, and the libs tier is always serialized, and will remain
-        # so until the library linking operations are moved out of it, at which
-        # point PARALLEL_DIRS will be irrelevant anyways.
         for gyp_sandbox in gyp_sandboxes:
             if self._sandbox_post_eval_cb:
                 self._sandbox_post_eval_cb(gyp_sandbox)
 
             sandbox['DIRS'].append(mozpath.relpath(gyp_sandbox['OBJDIR'], sandbox['OBJDIR']))
 
         yield sandbox
 
--- a/python/mozbuild/mozbuild/frontend/sandbox_symbols.py
+++ b/python/mozbuild/mozbuild/frontend/sandbox_symbols.py
@@ -275,25 +275,16 @@ VARIABLES = {
         """, None),
 
     'IS_COMPONENT': (bool, bool,
         """Whether the library contains a binary XPCOM component manifest.
 
         Implies FORCE_SHARED_LIB.
         """, None),
 
-    'PARALLEL_DIRS': (list, list,
-        """A parallel version of ``DIRS``.
-
-        Ideally this variable does not exist. It is provided so a transition
-        from recursive makefiles can be made. Once the build system has been
-        converted to not use Makefile's for the build frontend, this will
-        likely go away.
-        """, None),
-
     'PYTHON_UNIT_TESTS': (StrictOrderingOnAppendList, list,
         """A list of python unit tests.
         """, None),
 
     'HOST_LIBRARY_NAME': (unicode, unicode,
         """Name of target library generated when cross compiling.
         """, 'binaries'),
 
@@ -925,19 +916,19 @@ FUNCTIONS = {
         rules in that directory depend on the directories listed in the
         add_tier_dir call.
         """),
 
     'export': ('_export', (str,),
         """Make the specified variable available to all child directories.
 
         The variable specified by the argument string is added to the
-        environment of all directories specified in the DIRS, PARALLEL_DIRS,
-        and TEST_DIRS variables. If those directories themselves have child
-        directories, the variable will be exported to all of them.
+        environment of all directories specified in the DIRS and TEST_DIRS
+        variables. If those directories themselves have child directories,
+        the variable will be exported to all of them.
 
         The value used for the variable is the final value at the end of the
         moz.build file, so it is possible (but not recommended style) to place
         the export before the definition of the variable.
 
         This function is limited to the upper-case variables that have special
         meaning in moz.build files.
 
@@ -1029,9 +1020,10 @@ SPECIAL_VARIABLES = {
         - None
         """),
 }
 
 # Deprecation hints.
 DEPRECATION_HINTS = {
     'TOOL_DIRS': 'Please use the DIRS variable instead.',
     'TEST_TOOL_DIRS': 'Please use the TEST_DIRS variable instead.',
+    'PARALLEL_DIRS': 'Please use the DIRS variable instead.',
 }
--- a/python/mozbuild/mozbuild/test/backend/data/stub0/moz.build
+++ b/python/mozbuild/mozbuild/test/backend/data/stub0/moz.build
@@ -1,7 +1,7 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # Any copyright is dedicated to the Public Domain.
 # http://creativecommons.org/publicdomain/zero/1.0/
 
 DIRS += ['dir1']
-PARALLEL_DIRS += ['dir2']
+DIRS += ['dir2']
 TEST_DIRS += ['dir3']
--- a/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
+++ b/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
@@ -207,18 +207,17 @@ class TestRecursiveMakeBackend(BackendTe
     def test_backend_mk(self):
         """Ensure backend.mk file is written out properly."""
         env = self._consume('stub0', RecursiveMakeBackend)
 
         p = mozpath.join(env.topobjdir, 'backend.mk')
 
         lines = [l.strip() for l in open(p, 'rt').readlines()[2:]]
         self.assertEqual(lines, [
-            'DIRS := dir1',
-            'PARALLEL_DIRS := dir2',
+            'DIRS := dir1 dir2',
             'TEST_DIRS := dir3',
         ])
 
     def test_mtime_no_change(self):
         """Ensure mtime is not updated if file content does not change."""
 
         env = self._consume('stub0', RecursiveMakeBackend)
 
--- a/python/mozbuild/mozbuild/test/frontend/data/traversal-all-vars/moz.build
+++ b/python/mozbuild/mozbuild/test/frontend/data/traversal-all-vars/moz.build
@@ -1,7 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # Any copyright is dedicated to the Public Domain.
 # http://creativecommons.org/publicdomain/zero/1.0/
 
 DIRS += ['regular']
-PARALLEL_DIRS = ['parallel']
 TEST_DIRS = ['test']
--- a/python/mozbuild/mozbuild/test/frontend/test_emitter.py
+++ b/python/mozbuild/mozbuild/test/frontend/test_emitter.py
@@ -82,46 +82,44 @@ class TestEmitterBasic(unittest.TestCase
 
     def test_dirs_traversal_simple(self):
         reader = self.reader('traversal-simple')
         objs = self.read_topsrcdir(reader, filter_common=False)
         self.assertEqual(len(objs), 4)
 
         for o in objs:
             self.assertIsInstance(o, DirectoryTraversal)
-            self.assertEqual(o.parallel_dirs, [])
             self.assertEqual(o.test_dirs, [])
             self.assertEqual(len(o.tier_dirs), 0)
             self.assertEqual(len(o.tier_static_dirs), 0)
             self.assertTrue(os.path.isabs(o.sandbox_main_path))
             self.assertEqual(len(o.sandbox_all_paths), 1)
 
         reldirs = [o.relativedir for o in objs]
         self.assertEqual(reldirs, ['', 'foo', 'foo/biz', 'bar'])
 
         dirs = [o.dirs for o in objs]
         self.assertEqual(dirs, [['foo', 'bar'], ['biz'], [], []])
 
     def test_traversal_all_vars(self):
         reader = self.reader('traversal-all-vars')
         objs = self.read_topsrcdir(reader, filter_common=False)
-        self.assertEqual(len(objs), 4)
+        self.assertEqual(len(objs), 3)
 
         for o in objs:
             self.assertIsInstance(o, DirectoryTraversal)
 
         reldirs = set([o.relativedir for o in objs])
-        self.assertEqual(reldirs, set(['', 'parallel', 'regular', 'test']))
+        self.assertEqual(reldirs, set(['', 'regular', 'test']))
 
         for o in objs:
             reldir = o.relativedir
 
             if reldir == '':
                 self.assertEqual(o.dirs, ['regular'])
-                self.assertEqual(o.parallel_dirs, ['parallel'])
                 self.assertEqual(o.test_dirs, ['test'])
 
     def test_tier_simple(self):
         reader = self.reader('traversal-tier-simple')
         objs = self.read_topsrcdir(reader, filter_common=False)
         self.assertEqual(len(objs), 4)
 
         reldirs = [o.relativedir for o in objs]
--- a/python/mozbuild/mozbuild/test/frontend/test_reader.py
+++ b/python/mozbuild/mozbuild/test/frontend/test_reader.py
@@ -61,17 +61,17 @@ class TestBuildReader(unittest.TestCase)
             filesystem_absolute=True, descend=False))
 
         self.assertEqual(len(sandboxes), 1)
 
     def test_dirs_traversal_all_variables(self):
         reader = self.reader('traversal-all-vars', enable_tests=True)
 
         sandboxes = list(reader.read_topsrcdir())
-        self.assertEqual(len(sandboxes), 4)
+        self.assertEqual(len(sandboxes), 3)
 
     def test_tiers_traversal(self):
         reader = self.reader('traversal-tier-simple')
 
         sandboxes = list(reader.read_topsrcdir())
         self.assertEqual(len(sandboxes), 4)
 
         for sandbox in sandboxes:
--- a/services/fxaccounts/moz.build
+++ b/services/fxaccounts/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces']
+DIRS += ['interfaces']
 
 TEST_DIRS += ['tests']
 
 EXTRA_JS_MODULES += [
   'Credentials.jsm',
   'FxAccounts.jsm',
   'FxAccountsClient.jsm',
   'FxAccountsCommon.js'
--- a/services/mobileid/moz.build
+++ b/services/mobileid/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += ['interfaces']
+DIRS += ['interfaces']
 
 TEST_DIRS += ['tests']
 
 EXTRA_JS_MODULES += [
     'MobileIdentityClient.jsm',
     'MobileIdentityCommon.jsm',
     'MobileIdentityCredentialsStore.jsm',
     'MobileIdentitySmsMoMtVerificationFlow.jsm',
--- a/services/moz.build
+++ b/services/moz.build
@@ -1,31 +1,31 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'common',
     'crypto',
     'fxaccounts',
 ]
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
     # MOZ_SERVICES_HEALTHREPORT and therefore MOZ_DATA_REPORTING are
     # defined on Android, but these features are implemented using Java.
     if CONFIG['MOZ_SERVICES_HEALTHREPORT']:
-        PARALLEL_DIRS += ['healthreport']
+        DIRS += ['healthreport']
 
     if CONFIG['MOZ_DATA_REPORTING']:
-        PARALLEL_DIRS += ['datareporting']
+        DIRS += ['datareporting']
 
 if CONFIG['MOZ_SERVICES_METRICS']:
-    PARALLEL_DIRS += ['metrics']
+    DIRS += ['metrics']
 
 if CONFIG['MOZ_SERVICES_SYNC']:
-    PARALLEL_DIRS += ['sync']
+    DIRS += ['sync']
 
 if CONFIG['MOZ_B2G']:
-    PARALLEL_DIRS += ['mobileid']
+    DIRS += ['mobileid']
 
 SPHINX_TREES['services'] = 'docs'
--- a/testing/mochitest/tests/moz.build
+++ b/testing/mochitest/tests/moz.build
@@ -1,13 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'SimpleTest',
     'browser',
 ]
 
 MOCHITEST_MANIFESTS += ['Harness_sanity/mochitest.ini']
 
--- a/toolkit/components/moz.build
+++ b/toolkit/components/moz.build
@@ -1,19 +1,19 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # These component dirs are built for all apps (including suite)
 if CONFIG['MOZ_ENABLE_XREMOTE']:
-    PARALLEL_DIRS += ['remote']
+    DIRS += ['remote']
 
-PARALLEL_DIRS += [
+DIRS += [
     'aboutcache',
     'aboutmemory',
     'addoncompat',
     'alerts',
     'apppicker',
     'commandlines',
     'console',
     'contentprefs',
@@ -47,43 +47,43 @@ PARALLEL_DIRS += [
     'urlformatter',
     'viewconfig',
     'viewsource',
     'workerloader',
     'workerlz4',
 ]
 
 if CONFIG['MOZ_CRASHREPORTER']:
-    PARALLEL_DIRS += ['crashes']
+    DIRS += ['crashes']
 
 if CONFIG['MOZ_SOCIAL']:
-    PARALLEL_DIRS += ['social']
+    DIRS += ['social']
 
 if CONFIG['BUILD_CTYPES']:
-    PARALLEL_DIRS += ['ctypes']
+    DIRS += ['ctypes']
 
 if CONFIG['MOZ_FEEDS']:
-    PARALLEL_DIRS += ['feeds']
+    DIRS += ['feeds']
 
 if CONFIG['MOZ_HELP_VIEWER']:
-    PARALLEL_DIRS += ['help']
+    DIRS += ['help']
 
 if CONFIG['NS_PRINTING']:
-    PARALLEL_DIRS += ['printing']
+    DIRS += ['printing']
 
 if CONFIG['MOZ_XUL']:
-    PARALLEL_DIRS += ['autocomplete', 'satchel']
+    DIRS += ['autocomplete', 'satchel']
 
 if CONFIG['MOZ_TOOLKIT_SEARCH']:
-    PARALLEL_DIRS += ['search']
+    DIRS += ['search']
 
 if CONFIG['MOZ_URL_CLASSIFIER']:
-    PARALLEL_DIRS += ['url-classifier']
+    DIRS += ['url-classifier']
 
 if CONFIG['MOZ_CAPTIVEDETECT']:
-    PARALLEL_DIRS += ['captivedetect']
+    DIRS += ['captivedetect']
 
 DIRS += ['build']
 
 EXTRA_COMPONENTS += [
     'nsDefaultCLH.js',
     'nsDefaultCLH.manifest',
 ]
--- a/toolkit/components/promiseworker/moz.build
+++ b/toolkit/components/promiseworker/moz.build
@@ -1,13 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'worker'
 ]
 
 EXTRA_JS_MODULES = [
     'PromiseWorker.jsm',
 ]
--- a/toolkit/devtools/moz.build
+++ b/toolkit/devtools/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'server',
     'client',
     'gcli',
     'jsbeautify',
     'sourcemap',
     'webconsole',
     'apps',
     'styleinspector',
--- a/toolkit/devtools/qrcode/moz.build
+++ b/toolkit/devtools/qrcode/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'decoder',
     'encoder'
 ]
 
 JS_MODULES_PATH = 'modules/devtools/qrcode'
 
 EXTRA_JS_MODULES += [
     'index.js',
--- a/toolkit/moz.build
+++ b/toolkit/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'components',
     'content',
     'devtools',
     'forgetaboutsite',
     'identity',
     'locales',
     'modules',
     'mozapps/downloads',
@@ -26,29 +26,29 @@ PARALLEL_DIRS += [
 DIRS += ['mozapps/update']
 
 if CONFIG['MOZ_MAINTENANCE_SERVICE']:
     DIRS += ['components/maintenanceservice']
 
 DIRS += ['xre']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'qt'):
-    PARALLEL_DIRS += ['system/unixproxy']
+    DIRS += ['system/unixproxy']
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
-    PARALLEL_DIRS += ['system/osxproxy']
+    DIRS += ['system/osxproxy']
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
-    PARALLEL_DIRS += ['system/windowsproxy']
+    DIRS += ['system/windowsproxy']
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
-    PARALLEL_DIRS += ['system/androidproxy']
+    DIRS += ['system/androidproxy']
 
 if CONFIG['MOZ_CRASHREPORTER']:
-    PARALLEL_DIRS += ['crashreporter']
+    DIRS += ['crashreporter']
 elif CONFIG['MOZ_ENABLE_PROFILER_SPS']:
     # Profiler requires some crashreporter code,
     # so build it even if crashreporter is disabled.
-    PARALLEL_DIRS += [
+    DIRS += [
     'crashreporter/google-breakpad/src/common',
     'crashreporter/google-breakpad/src/processor',
     ]
     if CONFIG['OS_ARCH'] == 'Darwin':
-        PARALLEL_DIRS += ['crashreporter/google-breakpad/src/common/mac']
+        DIRS += ['crashreporter/google-breakpad/src/common/mac']
     elif CONFIG['OS_ARCH'] == 'Linux':
-        PARALLEL_DIRS += ['crashreporter/google-breakpad/src/common/linux']
+        DIRS += ['crashreporter/google-breakpad/src/common/linux']
--- a/uriloader/moz.build
+++ b/uriloader/moz.build
@@ -1,11 +1,11 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'base',
     'exthandler',
     'prefetch',
 ]
--- a/widget/shared/moz.build
+++ b/widget/shared/moz.build
@@ -1,16 +1,16 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 if CONFIG['MOZ_X11']:
-    PARALLEL_DIRS += ['x11']
+    DIRS += ['x11']
 
 UNIFIED_SOURCES += [
     'nsShmImage.cpp',
     'SharedWidgetUtils.cpp',
     'WidgetEventImpl.cpp',
 ]
 
 include('/ipc/chromium/chromium-config.mozbuild')
--- a/xpcom/moz.build
+++ b/xpcom/moz.build
@@ -1,15 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-PARALLEL_DIRS += [
+DIRS += [
     'idl-parser',
 ]
 
 DIRS += [
     'typelib',
     'string',
     'glue',
     'base',
--- a/xulrunner/moz.build
+++ b/xulrunner/moz.build
@@ -1,19 +1,19 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 CONFIGURE_SUBST_FILES += ['installer/Makefile']
 
-PARALLEL_DIRS += [
+DIRS += [
     'app',
     'stub',
     'examples',
 ]
 
 if CONFIG['MAKENSISU']:
     DIRS += ['installer/windows']
 
 if CONFIG['OS_ARCH'] == 'WINNT':
-    PARALLEL_DIRS += ['tools/redit']
+    DIRS += ['tools/redit']