Bug 818246 - Part 4: Move XPIDLSRCS into moz.build (auto); rs=glandium
authorGregory Szorc <gps@mozilla.com>
Tue, 12 Mar 2013 10:17:46 -0700
changeset 131063 d54481a205e308b645e33d977e40fe753c9e5682
parent 131062 b7be91238e89165faedc277ab1b023f0b47cfdc2
child 131064 b5dc4f0d5a32f120dc402b31ccda80af5501a69b
push id3582
push userbbajaj@mozilla.com
push dateMon, 01 Apr 2013 20:50:56 +0000
treeherdermozilla-aurora@400370bbc9fa [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs818246
milestone22.0a1
Bug 818246 - Part 4: Move XPIDLSRCS into moz.build (auto); rs=glandium This is the result of running |mach mozbuild-migrate --list XPIDLSRCS SDK_XPIDLSRCS XPIDL_SOURCES| and reverting xpcom/sample/*.
accessible/public/Makefile.in
accessible/public/moz.build
b2g/components/Makefile.in
b2g/components/moz.build
browser/components/Makefile.in
browser/components/feeds/public/Makefile.in
browser/components/feeds/public/moz.build
browser/components/migration/public/Makefile.in
browser/components/migration/public/moz.build
browser/components/moz.build
browser/components/sessionstore/Makefile.in
browser/components/sessionstore/moz.build
browser/components/shell/public/Makefile.in
browser/components/shell/public/moz.build
browser/fuel/public/Makefile.in
browser/fuel/public/moz.build
browser/metro/components/Makefile.in
browser/metro/components/moz.build
caps/idl/Makefile.in
caps/idl/moz.build
chrome/public/Makefile.in
chrome/public/moz.build
content/base/public/Makefile.in
content/base/public/moz.build
content/canvas/public/Makefile.in
content/canvas/public/moz.build
content/events/public/Makefile.in
content/events/public/moz.build
content/html/content/public/Makefile.in
content/html/content/public/moz.build
content/html/document/public/Makefile.in
content/html/document/public/moz.build
content/xslt/public/Makefile.in
content/xslt/public/moz.build
content/xul/document/public/Makefile.in
content/xul/document/public/moz.build
content/xul/templates/public/Makefile.in
content/xul/templates/public/moz.build
docshell/base/Makefile.in
docshell/base/moz.build
docshell/shistory/public/Makefile.in
docshell/shistory/public/moz.build
dom/activities/interfaces/Makefile.in
dom/activities/interfaces/moz.build
dom/alarm/Makefile.in
dom/alarm/moz.build
dom/audiochannel/Makefile.in
dom/audiochannel/moz.build
dom/base/Makefile.in
dom/base/moz.build
dom/battery/Makefile.in
dom/battery/moz.build
dom/browser-element/Makefile.in
dom/browser-element/moz.build
dom/camera/Makefile.in
dom/camera/moz.build
dom/cellbroadcast/interfaces/Makefile.in
dom/cellbroadcast/interfaces/moz.build
dom/file/Makefile.in
dom/file/moz.build
dom/fm/Makefile.in
dom/fm/moz.build
dom/icc/interfaces/Makefile.in
dom/icc/interfaces/moz.build
dom/indexedDB/Makefile.in
dom/indexedDB/moz.build
dom/interfaces/apps/Makefile.in
dom/interfaces/apps/moz.build
dom/interfaces/base/Makefile.in
dom/interfaces/base/moz.build
dom/interfaces/canvas/Makefile.in
dom/interfaces/canvas/moz.build
dom/interfaces/contacts/Makefile.in
dom/interfaces/contacts/moz.build
dom/interfaces/core/Makefile.in
dom/interfaces/core/moz.build
dom/interfaces/css/Makefile.in
dom/interfaces/css/moz.build
dom/interfaces/devicestorage/Makefile.in
dom/interfaces/devicestorage/moz.build
dom/interfaces/events/Makefile.in
dom/interfaces/events/moz.build
dom/interfaces/geolocation/Makefile.in
dom/interfaces/geolocation/moz.build
dom/interfaces/html/Makefile.in
dom/interfaces/html/moz.build
dom/interfaces/json/Makefile.in
dom/interfaces/json/moz.build
dom/interfaces/notification/Makefile.in
dom/interfaces/notification/moz.build
dom/interfaces/offline/Makefile.in
dom/interfaces/offline/moz.build
dom/interfaces/permission/Makefile.in
dom/interfaces/permission/moz.build
dom/interfaces/range/Makefile.in
dom/interfaces/range/moz.build
dom/interfaces/settings/Makefile.in
dom/interfaces/settings/moz.build
dom/interfaces/sidebar/Makefile.in
dom/interfaces/sidebar/moz.build
dom/interfaces/smil/Makefile.in
dom/interfaces/smil/moz.build
dom/interfaces/storage/Makefile.in
dom/interfaces/storage/moz.build
dom/interfaces/stylesheets/Makefile.in
dom/interfaces/stylesheets/moz.build
dom/interfaces/svg/Makefile.in
dom/interfaces/svg/moz.build
dom/interfaces/traversal/Makefile.in
dom/interfaces/traversal/moz.build
dom/interfaces/xbl/Makefile.in
dom/interfaces/xbl/moz.build
dom/interfaces/xpath/Makefile.in
dom/interfaces/xpath/moz.build
dom/interfaces/xul/Makefile.in
dom/interfaces/xul/moz.build
dom/media/Makefile.in
dom/media/bridge/Makefile.in
dom/media/bridge/moz.build
dom/media/moz.build
dom/messages/interfaces/Makefile.in
dom/messages/interfaces/moz.build
dom/mms/interfaces/Makefile.in
dom/mms/interfaces/moz.build
dom/mobilemessage/interfaces/Makefile.in
dom/mobilemessage/interfaces/moz.build
dom/network/interfaces/Makefile.in
dom/network/interfaces/moz.build
dom/payment/interfaces/Makefile.in
dom/payment/interfaces/moz.build
dom/plugins/base/Makefile.in
dom/plugins/base/moz.build
dom/power/Makefile.in
dom/power/moz.build
dom/system/Makefile.in
dom/system/gonk/Makefile.in
dom/system/gonk/moz.build
dom/system/moz.build
dom/telephony/Makefile.in
dom/telephony/moz.build
dom/time/Makefile.in
dom/time/moz.build
dom/voicemail/Makefile.in
dom/voicemail/moz.build
dom/wifi/Makefile.in
dom/wifi/moz.build
dom/workers/test/extensions/traditional/Makefile.in
dom/workers/test/extensions/traditional/moz.build
editor/composer/public/Makefile.in
editor/composer/public/moz.build
editor/idl/Makefile.in
editor/idl/moz.build
editor/txmgr/idl/Makefile.in
editor/txmgr/idl/moz.build
editor/txtsvc/public/Makefile.in
editor/txtsvc/public/moz.build
embedding/base/Makefile.in
embedding/base/moz.build
embedding/browser/webBrowser/Makefile.in
embedding/browser/webBrowser/moz.build
embedding/components/commandhandler/public/Makefile.in
embedding/components/commandhandler/public/moz.build
embedding/components/find/public/Makefile.in
embedding/components/find/public/moz.build
embedding/components/webbrowserpersist/public/Makefile.in
embedding/components/webbrowserpersist/public/moz.build
embedding/components/windowwatcher/public/Makefile.in
embedding/components/windowwatcher/public/moz.build
extensions/cookie/Makefile.in
extensions/cookie/moz.build
extensions/pref/autoconfig/public/Makefile.in
extensions/pref/autoconfig/public/moz.build
extensions/spellcheck/idl/Makefile.in
extensions/spellcheck/idl/moz.build
gfx/src/Makefile.in
gfx/src/moz.build
hal/Makefile.in
hal/moz.build
image/decoders/icon/Makefile.in
image/decoders/icon/moz.build
image/decoders/icon/qt/public/Makefile.in
image/decoders/icon/qt/public/moz.build
image/public/Makefile.in
image/public/moz.build
intl/locale/idl/Makefile.in
intl/locale/idl/moz.build
intl/lwbrk/idl/Makefile.in
intl/lwbrk/idl/moz.build
intl/strres/public/Makefile.in
intl/strres/public/moz.build
intl/uconv/idl/Makefile.in
intl/uconv/idl/moz.build
intl/unicharutil/idl/Makefile.in
intl/unicharutil/idl/moz.build
js/ductwork/debugger/Makefile.in
js/ductwork/debugger/moz.build
js/jsd/idl/Makefile.in
js/jsd/idl/moz.build
js/xpconnect/idl/Makefile.in
js/xpconnect/idl/moz.build
js/xpconnect/tests/idl/Makefile.in
js/xpconnect/tests/idl/moz.build
layout/base/Makefile.in
layout/base/moz.build
layout/forms/Makefile.in
layout/forms/moz.build
layout/inspector/public/Makefile.in
layout/inspector/public/moz.build
layout/printing/Makefile.in
layout/printing/moz.build
layout/tools/layout-debug/src/Makefile.in
layout/tools/layout-debug/src/moz.build
layout/xul/base/public/Makefile.in
layout/xul/base/public/moz.build
layout/xul/tree/Makefile.in
layout/xul/tree/moz.build
mobile/android/components/Makefile.in
mobile/android/components/build/Makefile.in
mobile/android/components/build/moz.build
mobile/android/components/moz.build
modules/libjar/Makefile.in
modules/libjar/moz.build
modules/libjar/zipwriter/public/Makefile.in
modules/libjar/zipwriter/public/moz.build
modules/libpref/public/Makefile.in
modules/libpref/public/moz.build
netwerk/base/public/Makefile.in
netwerk/base/public/moz.build
netwerk/cache/Makefile.in
netwerk/cache/moz.build
netwerk/cookie/Makefile.in
netwerk/cookie/moz.build
netwerk/dns/Makefile.in
netwerk/dns/moz.build
netwerk/ipc/Makefile.in
netwerk/ipc/moz.build
netwerk/mime/Makefile.in
netwerk/mime/moz.build
netwerk/protocol/about/Makefile.in
netwerk/protocol/about/moz.build
netwerk/protocol/file/Makefile.in
netwerk/protocol/file/moz.build
netwerk/protocol/ftp/Makefile.in
netwerk/protocol/ftp/moz.build
netwerk/protocol/http/Makefile.in
netwerk/protocol/http/moz.build
netwerk/protocol/res/Makefile.in
netwerk/protocol/res/moz.build
netwerk/protocol/viewsource/Makefile.in
netwerk/protocol/viewsource/moz.build
netwerk/protocol/websocket/Makefile.in
netwerk/protocol/websocket/moz.build
netwerk/protocol/wyciwyg/Makefile.in
netwerk/protocol/wyciwyg/moz.build
netwerk/socket/Makefile.in
netwerk/socket/moz.build
netwerk/streamconv/public/Makefile.in
netwerk/streamconv/public/moz.build
netwerk/test/httpserver/Makefile.in
netwerk/test/httpserver/moz.build
netwerk/wifi/Makefile.in
netwerk/wifi/moz.build
parser/html/Makefile.in
parser/html/moz.build
parser/htmlparser/public/Makefile.in
parser/htmlparser/public/moz.build
parser/xml/public/Makefile.in
parser/xml/public/moz.build
profile/public/Makefile.in
profile/public/moz.build
rdf/base/idl/Makefile.in
rdf/base/idl/moz.build
security/manager/boot/public/Makefile.in
security/manager/boot/public/moz.build
security/manager/pki/public/Makefile.in
security/manager/pki/public/moz.build
security/manager/ssl/public/Makefile.in
security/manager/ssl/public/moz.build
services/crypto/component/Makefile.in
services/crypto/component/moz.build
startupcache/Makefile.in
startupcache/moz.build
storage/public/Makefile.in
storage/public/moz.build
toolkit/components/alerts/Makefile.in
toolkit/components/alerts/moz.build
toolkit/components/autocomplete/Makefile.in
toolkit/components/autocomplete/moz.build
toolkit/components/captivedetect/Makefile.in
toolkit/components/captivedetect/moz.build
toolkit/components/commandlines/Makefile.in
toolkit/components/commandlines/moz.build
toolkit/components/downloads/Makefile.in
toolkit/components/downloads/moz.build
toolkit/components/exthelper/Makefile.in
toolkit/components/exthelper/moz.build
toolkit/components/feeds/Makefile.in
toolkit/components/feeds/moz.build
toolkit/components/find/Makefile.in
toolkit/components/find/moz.build
toolkit/components/parentalcontrols/Makefile.in
toolkit/components/parentalcontrols/moz.build
toolkit/components/passwordmgr/Makefile.in
toolkit/components/passwordmgr/moz.build
toolkit/components/places/Makefile.in
toolkit/components/places/moz.build
toolkit/components/remote/Makefile.in
toolkit/components/remote/moz.build
toolkit/components/satchel/Makefile.in
toolkit/components/satchel/moz.build
toolkit/components/startup/public/Makefile.in
toolkit/components/startup/public/moz.build
toolkit/components/telemetry/Makefile.in
toolkit/components/telemetry/moz.build
toolkit/components/typeaheadfind/Makefile.in
toolkit/components/typeaheadfind/moz.build
toolkit/components/url-classifier/Makefile.in
toolkit/components/url-classifier/moz.build
toolkit/components/urlformatter/Makefile.in
toolkit/components/urlformatter/moz.build
toolkit/devtools/debugger/Makefile.in
toolkit/devtools/debugger/moz.build
toolkit/identity/Makefile.in
toolkit/identity/moz.build
toolkit/mozapps/extensions/Makefile.in
toolkit/mozapps/extensions/moz.build
toolkit/mozapps/update/Makefile.in
toolkit/mozapps/update/moz.build
toolkit/profile/Makefile.in
toolkit/profile/moz.build
toolkit/xre/Makefile.in
toolkit/xre/moz.build
uriloader/base/Makefile.in
uriloader/base/moz.build
uriloader/exthandler/Makefile.in
uriloader/exthandler/moz.build
uriloader/prefetch/Makefile.in
uriloader/prefetch/moz.build
widget/Makefile.in
widget/android/Makefile.in
widget/android/moz.build
widget/cocoa/Makefile.in
widget/cocoa/moz.build
widget/moz.build
xpcom/base/Makefile.in
xpcom/base/moz.build
xpcom/components/Makefile.in
xpcom/components/moz.build
xpcom/ds/Makefile.in
xpcom/ds/moz.build
xpcom/io/Makefile.in
xpcom/io/moz.build
xpcom/reflect/xptinfo/public/Makefile.in
xpcom/reflect/xptinfo/public/moz.build
xpcom/system/Makefile.in
xpcom/system/moz.build
xpcom/threads/Makefile.in
xpcom/threads/moz.build
xpfe/appshell/public/Makefile.in
xpfe/appshell/public/moz.build
xpfe/components/autocomplete/public/Makefile.in
xpfe/components/autocomplete/public/moz.build
xpfe/components/directory/Makefile.in
xpfe/components/directory/moz.build
xpfe/components/windowds/Makefile.in
xpfe/components/windowds/moz.build
xulrunner/examples/simple/components/public/Makefile.in
xulrunner/examples/simple/components/public/moz.build
xulrunner/setup/Makefile.in
xulrunner/setup/moz.build
--- a/accessible/public/Makefile.in
+++ b/accessible/public/Makefile.in
@@ -8,38 +8,14 @@ topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE    = accessibility
 GRE_MODULE	= 1
 
-XPIDLSRCS = \
-      nsIAccessibleTypes.idl \
-      nsIAccessibleRetrieval.idl \
-      nsIAccessible.idl \
-      nsIAccessibleApplication.idl \
-      nsIAccessibleRelation.idl \
-      nsIAccessibleRole.idl \
-      nsIAccessibleStates.idl \
-      nsIAccessibleDocument.idl \
-      nsIAccessibleProvider.idl \
-      nsIAccessibleSelectable.idl \
-      nsIAccessibleCursorable.idl \
-      nsIAccessibleEvent.idl \
-      nsIAccessibleEditableText.idl \
-      nsIAccessibleHyperLink.idl \
-      nsIAccessibleHyperText.idl \
-      nsIAccessiblePivot.idl \
-      nsIAccessibleTable.idl \
-      nsIAccessibleText.idl \
-      nsIAccessibleValue.idl \
-      nsIAccessibleImage.idl \
-      nsIXBLAccessible.idl \
-      $(NULL)
-
 EXPORTS		= \
       nsIAccessibilityService.h \
       $(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
--- a/accessible/public/moz.build
+++ b/accessible/public/moz.build
@@ -1,7 +1,32 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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'] == 'windows':
     DIRS += ['msaa', 'ia2']
+
+XPIDL_SOURCES += [
+    'nsIAccessible.idl',
+    'nsIAccessibleApplication.idl',
+    'nsIAccessibleCursorable.idl',
+    'nsIAccessibleDocument.idl',
+    'nsIAccessibleEditableText.idl',
+    'nsIAccessibleEvent.idl',
+    'nsIAccessibleHyperLink.idl',
+    'nsIAccessibleHyperText.idl',
+    'nsIAccessibleImage.idl',
+    'nsIAccessiblePivot.idl',
+    'nsIAccessibleProvider.idl',
+    'nsIAccessibleRelation.idl',
+    'nsIAccessibleRetrieval.idl',
+    'nsIAccessibleRole.idl',
+    'nsIAccessibleSelectable.idl',
+    'nsIAccessibleStates.idl',
+    'nsIAccessibleTable.idl',
+    'nsIAccessibleText.idl',
+    'nsIAccessibleTypes.idl',
+    'nsIAccessibleValue.idl',
+    'nsIXBLAccessible.idl',
+]
+
--- a/b2g/components/Makefile.in
+++ b/b2g/components/Makefile.in
@@ -6,20 +6,16 @@ DEPTH      = @DEPTH@
 topsrcdir  = @top_srcdir@
 srcdir     = @srcdir@
 VPATH      = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = B2GComponents
 
-XPIDLSRCS = \
-        b2g.idl \
-        $(NULL)
-
 EXTRA_PP_COMPONENTS = \
         ActivitiesGlue.js \
         AlertsService.js \
         B2GAboutRedirector.js \
         B2GComponents.manifest \
         ContentHandler.js \
         ContentPermissionPrompt.js \
         DirectoryProvider.js \
--- a/b2g/components/moz.build
+++ b/b2g/components/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'b2g.idl',
+]
+
--- a/browser/components/Makefile.in
+++ b/browser/components/Makefile.in
@@ -7,21 +7,16 @@ topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = browsercomps
 XPIDL_MODULE = browsercompsbase
 
-XPIDLSRCS = \
-  nsIBrowserGlue.idl \
-  nsIBrowserHandler.idl \
-  $(NULL)
-
 EXTRA_COMPONENTS = \
   BrowserComponents.manifest \
   $(NULL)
 
 EXTRA_PP_COMPONENTS = \
   nsBrowserContentHandler.js \
   nsBrowserGlue.js \
   $(NULL)
--- a/browser/components/feeds/public/Makefile.in
+++ b/browser/components/feeds/public/Makefile.in
@@ -7,11 +7,9 @@ DEPTH   = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = browser-feeds
 
-XPIDLSRCS = nsIFeedResultService.idl nsIWebContentConverterRegistrar.idl nsIFeedWriter.idl
-
 include $(topsrcdir)/config/rules.mk
--- a/browser/components/feeds/public/moz.build
+++ b/browser/components/feeds/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIFeedResultService.idl',
+    'nsIFeedWriter.idl',
+    'nsIWebContentConverterRegistrar.idl',
+]
+
--- a/browser/components/migration/public/Makefile.in
+++ b/browser/components/migration/public/Makefile.in
@@ -6,12 +6,10 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= migration
 
-XPIDLSRCS	= nsIBrowserProfileMigrator.idl
-
 include $(topsrcdir)/config/rules.mk
 
--- a/browser/components/migration/public/moz.build
+++ b/browser/components/migration/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIBrowserProfileMigrator.idl',
+]
+
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -20,8 +20,14 @@ PARALLEL_DIRS += [
     'migration',
 ]
 
 if CONFIG['MOZ_SAFE_BROWSING']:
     PARALLEL_DIRS += ['safebrowsing']
 
 TEST_DIRS += ['test']
 DIRS += ['build']
+
+XPIDL_SOURCES += [
+    'nsIBrowserGlue.idl',
+    'nsIBrowserHandler.idl',
+]
+
--- a/browser/components/sessionstore/Makefile.in
+++ b/browser/components/sessionstore/Makefile.in
@@ -7,14 +7,9 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = sessionstore
 
-XPIDLSRCS = \
-	nsISessionStartup.idl \
-	nsISessionStore.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/browser/components/sessionstore/moz.build
+++ b/browser/components/sessionstore/moz.build
@@ -1,7 +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/.
 
 DIRS += ['src']
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsISessionStartup.idl',
+    'nsISessionStore.idl',
+]
+
--- a/browser/components/shell/public/Makefile.in
+++ b/browser/components/shell/public/Makefile.in
@@ -7,18 +7,16 @@ DEPTH   = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = shellservice
 
-XPIDLSRCS = nsIShellService.idl
-
 ifeq ($(OS_ARCH),WINNT)
 XPIDLSRCS += nsIWindowsShellService.idl
 endif
 
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 XPIDLSRCS += nsIMacShellService.idl
 endif
 
--- a/browser/components/shell/public/moz.build
+++ b/browser/components/shell/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIShellService.idl',
+]
+
--- a/browser/fuel/public/Makefile.in
+++ b/browser/fuel/public/Makefile.in
@@ -6,11 +6,9 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE        = fuel
 
-XPIDLSRCS = fuelIApplication.idl
-
 include $(topsrcdir)/config/rules.mk
--- a/browser/fuel/public/moz.build
+++ b/browser/fuel/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'fuelIApplication.idl',
+]
+
--- a/browser/metro/components/Makefile.in
+++ b/browser/metro/components/Makefile.in
@@ -8,21 +8,16 @@ srcdir     = @srcdir@
 VPATH      = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/config.mk
 
 # metro/components.manifest
 MODULE = components
 
-XPIDLSRCS = \
-        SessionStore.idl \
-        LoginManagerPrompter.idl \
-        $(NULL)
-
 EXTRA_PP_COMPONENTS = \
         components.manifest \
         AboutRedirector.js \
         BrowserCLH.js \
         BrowserStartup.js \
         DirectoryProvider.js\
         HelperAppDialog.js \
         Sidebar.js \
--- a/browser/metro/components/moz.build
+++ b/browser/metro/components/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'LoginManagerPrompter.idl',
+    'SessionStore.idl',
+]
+
--- a/caps/idl/Makefile.in
+++ b/caps/idl/Makefile.in
@@ -8,16 +8,10 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= caps
 GRE_MODULE	= 1
 
-XPIDLSRCS	= \
-		nsIScriptSecurityManager.idl \
-		nsIPrincipal.idl \
-		nsISecurityCheckedComponent.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/caps/idl/moz.build
+++ b/caps/idl/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIPrincipal.idl',
+    'nsIScriptSecurityManager.idl',
+    'nsISecurityCheckedComponent.idl',
+]
+
--- a/chrome/public/Makefile.in
+++ b/chrome/public/Makefile.in
@@ -6,14 +6,9 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = chrome
 
-XPIDLSRCS = \
-  nsIChromeRegistry.idl \
-  nsIToolkitChromeRegistry.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/chrome/public/moz.build
+++ b/chrome/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIChromeRegistry.idl',
+    'nsIToolkitChromeRegistry.idl',
+]
+
--- a/content/base/public/Makefile.in
+++ b/content/base/public/Makefile.in
@@ -54,38 +54,10 @@ EXPORTS_mozilla/dom = \
 		FragmentOrElement.h \
 		FromParser.h \
 		$(NULL)
 
 EXPORTS_mozilla = \
 		CORSMode.h \
 		$(NULL)
 
-SDK_XPIDLSRCS   = \
-		nsISelection.idl  \
-		$(NULL)
-
-XPIDLSRCS	= \
-		nsIContentPolicy.idl        \
-		nsIDocumentEncoder.idl      \
-	        nsIDOMDataChannel.idl \
-		nsIDOMFile.idl \
-		nsIDOMFileReader.idl \
-		nsIDOMFileList.idl \
-		nsIDOMFormData.idl \
-		nsIDOMParser.idl \
-		nsIDOMSerializer.idl \
-		nsISelectionController.idl  \
-		nsISelectionDisplay.idl  \
-		nsISelectionListener.idl  \
-		nsISelectionPrivate.idl  \
-		nsIScriptLoaderObserver.idl  \
-		nsIDroppedLinkHandler.idl \
-		nsIImageLoadingContent.idl \
-		nsIObjectLoadingContent.idl \
-		nsIFrameLoader.idl \
-		nsIXMLHttpRequest.idl \
-		nsIContentSecurityPolicy.idl \
-		nsIMessageManager.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/content/base/public/moz.build
+++ b/content/base/public/moz.build
@@ -1,5 +1,30 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIContentPolicy.idl',
+    'nsIContentSecurityPolicy.idl',
+    'nsIDOMDataChannel.idl',
+    'nsIDOMFile.idl',
+    'nsIDOMFileList.idl',
+    'nsIDOMFileReader.idl',
+    'nsIDOMFormData.idl',
+    'nsIDOMParser.idl',
+    'nsIDOMSerializer.idl',
+    'nsIDocumentEncoder.idl',
+    'nsIDroppedLinkHandler.idl',
+    'nsIFrameLoader.idl',
+    'nsIImageLoadingContent.idl',
+    'nsIMessageManager.idl',
+    'nsIObjectLoadingContent.idl',
+    'nsIScriptLoaderObserver.idl',
+    'nsISelection.idl',
+    'nsISelectionController.idl',
+    'nsISelectionDisplay.idl',
+    'nsISelectionListener.idl',
+    'nsISelectionPrivate.idl',
+    'nsIXMLHttpRequest.idl',
+]
+
--- a/content/canvas/public/Makefile.in
+++ b/content/canvas/public/Makefile.in
@@ -24,13 +24,9 @@ EXPORTS_mozilla/ipc = \
 		DocumentRendererChild.h \
 		DocumentRendererParent.h \
 		DocumentRendererShmemChild.h \
 		DocumentRendererShmemParent.h \
 		DocumentRendererNativeIDChild.h \
 		DocumentRendererNativeIDParent.h \
 		$(NULL)
 
-XPIDLSRCS	= \
-		nsICanvasGLPrivate.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/content/canvas/public/moz.build
+++ b/content/canvas/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsICanvasGLPrivate.idl',
+]
+
--- a/content/events/public/Makefile.in
+++ b/content/events/public/Makefile.in
@@ -25,14 +25,10 @@ EXPORTS		= \
 		$(NULL)
 
 EXPORTS_NAMESPACES = mozilla/dom
 
 EXPORTS_mozilla/dom = \
   EventTarget.h \
   $(NULL)
 
-XPIDLSRCS	= \
-		nsIEventListenerService.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/content/events/public/moz.build
+++ b/content/events/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIEventListenerService.idl',
+]
+
--- a/content/html/content/public/Makefile.in
+++ b/content/html/content/public/Makefile.in
@@ -8,23 +8,16 @@ topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE       = content
 XPIDL_MODULE = content_html
 
-XPIDLSRCS = \
-		nsIFormSubmitObserver.idl \
-		nsIPhonetic.idl \
-		nsIHTMLMenu.idl \
-		nsIMenuBuilder.idl \
-		$(NULL)
-
 EXPORTS = \
 		nsIConstraintValidation.h \
 		nsIFormControl.h \
 		nsIForm.h \
 		nsIFormProcessor.h \
 		nsILink.h \
 		nsIRadioVisitor.h \
 		nsIRadioGroupContainer.h \
--- a/content/html/content/public/moz.build
+++ b/content/html/content/public/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIFormSubmitObserver.idl',
+    'nsIHTMLMenu.idl',
+    'nsIMenuBuilder.idl',
+    'nsIPhonetic.idl',
+]
+
--- a/content/html/document/public/Makefile.in
+++ b/content/html/document/public/Makefile.in
@@ -8,13 +8,9 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= content
 XPIDL_MODULE	= content_htmldoc
 
-XPIDLSRCS 	= \
-		nsIImageDocument.idl \
-        	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/content/html/document/public/moz.build
+++ b/content/html/document/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIImageDocument.idl',
+]
+
--- a/content/xslt/public/Makefile.in
+++ b/content/xslt/public/Makefile.in
@@ -11,20 +11,10 @@ include $(DEPTH)/config/autoconf.mk
 
 MODULE       = content
 XPIDL_MODULE = content_xslt
 
 EXPORTS		= \
 		nsIDocumentTransformer.h \
 		$(NULL)
 
-XPIDLSRCS	= \
-		nsIXSLTException.idl  \
-		nsIXSLTProcessor.idl  \
-		nsIXSLTProcessorPrivate.idl  \
-		txIFunctionEvaluationContext.idl  \
-		txINodeSet.idl  \
-		txIEXSLTRegExFunctions.idl  \
-		txIXPathObject.idl  \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/content/xslt/public/moz.build
+++ b/content/xslt/public/moz.build
@@ -1,5 +1,15 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIXSLTException.idl',
+    'nsIXSLTProcessor.idl',
+    'nsIXSLTProcessorPrivate.idl',
+    'txIEXSLTRegExFunctions.idl',
+    'txIFunctionEvaluationContext.idl',
+    'txINodeSet.idl',
+    'txIXPathObject.idl',
+]
+
--- a/content/xul/document/public/Makefile.in
+++ b/content/xul/document/public/Makefile.in
@@ -8,21 +8,16 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= xuldoc
 GRE_MODULE	= 1
 
-XPIDLSRCS	= \
-		nsIController.idl \
-		nsIControllers.idl \
-		$(NULL)
-
 ifdef MOZ_XUL
 XPIDLSRCS += \
 		nsIXULOverlayProvider.idl \
 		$(NULL)
 
 EXPORTS		= \
 		nsIXULDocument.h \
 		$(NULL)
--- a/content/xul/document/public/moz.build
+++ b/content/xul/document/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIController.idl',
+    'nsIControllers.idl',
+]
+
--- a/content/xul/templates/public/Makefile.in
+++ b/content/xul/templates/public/Makefile.in
@@ -7,19 +7,10 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= xultmpl
 
-XPIDLSRCS	= \
-		nsIXULSortService.idl \
-		nsIXULTemplateBuilder.idl \
-		nsIXULBuilderListener.idl \
-		nsIXULTemplateQueryProcessor.idl \
-		nsIXULTemplateResult.idl \
-		nsIXULTemplateRuleFilter.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/content/xul/templates/public/moz.build
+++ b/content/xul/templates/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIXULBuilderListener.idl',
+    'nsIXULSortService.idl',
+    'nsIXULTemplateBuilder.idl',
+    'nsIXULTemplateQueryProcessor.idl',
+    'nsIXULTemplateResult.idl',
+    'nsIXULTemplateRuleFilter.idl',
+]
+
--- a/docshell/base/Makefile.in
+++ b/docshell/base/Makefile.in
@@ -14,48 +14,16 @@ MODULE         = docshell
 LIBRARY_NAME   = basedocshell_s
 GRE_MODULE     = 1
 LIBXUL_LIBRARY = 1
 
 ifdef MOZ_TOOLKIT_SEARCH
 DEFINES += -DMOZ_TOOLKIT_SEARCH
 endif
 
-SDK_XPIDLSRCS = \
-  nsIClipboardCommands.idl \
-  $(NULL)
-
-XPIDLSRCS = \
-  nsCDefaultURIFixup.idl \
-  nsIDocShell.idl \
-  nsIDocShellLoadInfo.idl \
-  nsIDocShellTreeItem.idl \
-  nsIDocShellTreeNode.idl \
-  nsIDocShellTreeOwner.idl \
-  nsIDocShellHistory.idl \
-  nsIGlobalHistory2.idl \
-  nsIMarkupDocumentViewer.idl \
-  nsIScrollable.idl \
-  nsITextScroll.idl \
-  nsIDocCharset.idl \
-  nsIWebNavigation.idl \
-  nsIWebNavigationInfo.idl \
-  nsIContentViewer.idl \
-  nsIContentViewerEdit.idl \
-  nsIContentViewerFile.idl \
-  nsIURIFixup.idl \
-  nsIWebPageDescriptor.idl \
-  nsIDownloadHistory.idl \
-  nsILoadContext.idl \
-  nsIRefreshURI.idl \
-  nsIContentViewerContainer.idl \
-  nsIDocumentLoaderFactory.idl \
-  nsIPrivacyTransitionObserver.idl \
-  $(NULL)
-
 EXPORTS = \
   nsDocShellLoadTypes.h \
   nsILinkHandler.h \
   nsIWebShellServices.h \
   SerializedLoadContext.h \
   $(NULL)
 
 EXPORTS_NAMESPACES = mozilla
--- a/docshell/base/moz.build
+++ b/docshell/base/moz.build
@@ -1,5 +1,34 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsCDefaultURIFixup.idl',
+    'nsIClipboardCommands.idl',
+    'nsIContentViewer.idl',
+    'nsIContentViewerContainer.idl',
+    'nsIContentViewerEdit.idl',
+    'nsIContentViewerFile.idl',
+    'nsIDocCharset.idl',
+    'nsIDocShell.idl',
+    'nsIDocShellHistory.idl',
+    'nsIDocShellLoadInfo.idl',
+    'nsIDocShellTreeItem.idl',
+    'nsIDocShellTreeNode.idl',
+    'nsIDocShellTreeOwner.idl',
+    'nsIDocumentLoaderFactory.idl',
+    'nsIDownloadHistory.idl',
+    'nsIGlobalHistory2.idl',
+    'nsILoadContext.idl',
+    'nsIMarkupDocumentViewer.idl',
+    'nsIPrivacyTransitionObserver.idl',
+    'nsIRefreshURI.idl',
+    'nsIScrollable.idl',
+    'nsITextScroll.idl',
+    'nsIURIFixup.idl',
+    'nsIWebNavigation.idl',
+    'nsIWebNavigationInfo.idl',
+    'nsIWebPageDescriptor.idl',
+]
+
--- a/docshell/shistory/public/Makefile.in
+++ b/docshell/shistory/public/Makefile.in
@@ -8,24 +8,10 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= shistory
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS   = \
-                  nsIHistoryEntry.idl \
-                  nsISHistory.idl       \
-                  nsISHistoryListener.idl   \
-                  $(NULL)
-
-XPIDLSRCS	= \
-		  nsISHEntry.idl        \
-                  nsISHContainer.idl    \
-                  nsISHTransaction.idl  \
-                  nsISHistoryInternal.idl \
-		  nsIBFCacheEntry.idl \
-                  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/docshell/shistory/public/moz.build
+++ b/docshell/shistory/public/moz.build
@@ -1,5 +1,16 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIBFCacheEntry.idl',
+    'nsIHistoryEntry.idl',
+    'nsISHContainer.idl',
+    'nsISHEntry.idl',
+    'nsISHTransaction.idl',
+    'nsISHistory.idl',
+    'nsISHistoryInternal.idl',
+    'nsISHistoryListener.idl',
+]
+
--- a/dom/activities/interfaces/Makefile.in
+++ b/dom/activities/interfaces/Makefile.in
@@ -6,24 +6,15 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPIDL_MODULE = dom_activities
 
-XPIDLSRCS = nsIDOMActivity.idl \
-            nsIDOMActivityOptions.idl \
-            nsIDOMActivityHandlerDescription.idl \
-            nsIDOMActivityRequestHandler.idl \
-            nsIDOMNavigatorActivities.idl \
-            nsIActivityProxy.idl \
-            nsIActivityUIGlue.idl \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/activities/interfaces/moz.build
+++ b/dom/activities/interfaces/moz.build
@@ -1,5 +1,15 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIActivityProxy.idl',
+    'nsIActivityUIGlue.idl',
+    'nsIDOMActivity.idl',
+    'nsIDOMActivityHandlerDescription.idl',
+    'nsIDOMActivityOptions.idl',
+    'nsIDOMActivityRequestHandler.idl',
+    'nsIDOMNavigatorActivities.idl',
+]
+
--- a/dom/alarm/Makefile.in
+++ b/dom/alarm/Makefile.in
@@ -26,21 +26,16 @@ EXTRA_COMPONENTS =       \
   AlarmsManager.manifest \
   $(NULL)
 
 EXTRA_JS_MODULES = \
   AlarmDB.jsm      \
   AlarmService.jsm \
   $(NULL)
 
-XPIDLSRCS =               \
-  nsIDOMAlarmsManager.idl \
-  nsIAlarmHalService.idl  \
-  $(NULL)
-
 EXPORTS_mozilla/dom/alarm = \
   AlarmHalService.h         \
   $(NULL)
 
 CPPSRCS =             \
   AlarmHalService.cpp \
   $(NULL)
 
--- a/dom/alarm/moz.build
+++ b/dom/alarm/moz.build
@@ -1,6 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsIAlarmHalService.idl',
+    'nsIDOMAlarmsManager.idl',
+]
+
--- a/dom/audiochannel/Makefile.in
+++ b/dom/audiochannel/Makefile.in
@@ -39,17 +39,12 @@ EXPORTS = AudioChannelService.h \
           AudioChannelAgent.h
 
 CPPSRCS += \
   AudioChannelService.cpp \
   AudioChannelServiceChild.cpp \
   AudioChannelAgent.cpp \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIAudioChannelAgent.idl \
-  $(NULL)
-
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
 
--- a/dom/audiochannel/moz.build
+++ b/dom/audiochannel/moz.build
@@ -1,6 +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/.
 
 TEST_TOOL_DIRS += ['tests']
+
+XPIDL_SOURCES += [
+    'nsIAudioChannelAgent.idl',
+]
+
--- a/dom/base/Makefile.in
+++ b/dom/base/Makefile.in
@@ -28,25 +28,16 @@ EXTRA_JS_MODULES = ConsoleAPIStorage.jsm
   $(NULL)
 
 EXTRA_JS_MODULES += \
   DOMRequestHelper.jsm \
   IndexedDBHelper.jsm \
   ObjectWrapper.jsm \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIDOMDOMError.idl \
-  nsIDOMDOMRequest.idl \
-  nsIDOMDOMCursor.idl \
-  nsIEntropyCollector.idl \
-  nsIScriptChannel.idl \
-  nsISiteSpecificUserAgent.idl \
-  $(NULL)
-
 EXPORTS = \
   nsDOMCID.h \
   nsDOMClassInfoClasses.h \
   nsDOMClassInfoID.h \
   nsDOMJSUtils.h \
   nsDOMScriptObjectHolder.h \
   nsDOMString.h \
   nsIDOMClassInfo.h \
--- a/dom/base/moz.build
+++ b/dom/base/moz.build
@@ -1,6 +1,16 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsIDOMDOMCursor.idl',
+    'nsIDOMDOMError.idl',
+    'nsIDOMDOMRequest.idl',
+    'nsIEntropyCollector.idl',
+    'nsIScriptChannel.idl',
+    'nsISiteSpecificUserAgent.idl',
+]
+
--- a/dom/battery/Makefile.in
+++ b/dom/battery/Makefile.in
@@ -27,20 +27,16 @@ EXPORTS_mozilla/dom/battery = \
 CPPSRCS = \
   BatteryManager.cpp \
   $(NULL)
 
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/content/events/src \
   $(NULL)
 
-XPIDLSRCS = \
-  nsINavigatorBattery.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/battery/moz.build
+++ b/dom/battery/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsINavigatorBattery.idl',
+]
+
--- a/dom/browser-element/Makefile.in
+++ b/dom/browser-element/Makefile.in
@@ -13,21 +13,16 @@ MODULE           = dom
 LIBRARY_NAME     = dom_browserelement_s
 XPIDL_MODULE     = dom_browserelement
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-XPIDLSRCS = \
-  nsIOpenWindowEventDetail.idl \
-  nsIAsyncScrollEventDetail.idl \
-  $(NULL)
-
 EXPORTS = \
   nsOpenWindowEventDetail.h \
   nsAsyncScrollEventDetail.h \
   $(NULL)
 
 EXPORTS_NAMESPACES = mozilla
 EXPORTS_mozilla = \
   BrowserElementParent.h \
--- a/dom/browser-element/moz.build
+++ b/dom/browser-element/moz.build
@@ -1,6 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsIAsyncScrollEventDetail.idl',
+    'nsIOpenWindowEventDetail.idl',
+]
+
--- a/dom/camera/Makefile.in
+++ b/dom/camera/Makefile.in
@@ -48,21 +48,16 @@ CPPSRCS += \
   $(NULL)
 else
 CPPSRCS += \
   FallbackCameraManager.cpp \
   FallbackCameraControl.cpp \
   $(NULL)
 endif
 
-XPIDLSRCS = \
-  nsIDOMNavigatorCamera.idl \
-  nsIDOMCameraManager.idl \
-  $(NULL)
-
 EXPORTS = \
   CameraCommon.h \
   DOMCameraManager.h \
   GonkNativeWindow.h \
   GonkNativeWindowClient.h \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/dom/camera/moz.build
+++ b/dom/camera/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMCameraManager.idl',
+    'nsIDOMNavigatorCamera.idl',
+]
+
--- a/dom/cellbroadcast/interfaces/Makefile.in
+++ b/dom/cellbroadcast/interfaces/Makefile.in
@@ -8,23 +8,15 @@ srcdir           = @srcdir@
 VPATH            = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPIDL_MODULE = dom_cellbroadcast
 
 include $(topsrcdir)/dom/dom-config.mk
 
-XPIDLSRCS = \
-  nsICellBroadcastProvider.idl \
-  nsIDOMMozCellBroadcast.idl \
-  nsIDOMMozCellBroadcastEvent.idl \
-  nsIDOMMozCellBroadcastMessage.idl \
-  nsINavigatorCellBroadcast.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/cellbroadcast/interfaces/moz.build
+++ b/dom/cellbroadcast/interfaces/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsICellBroadcastProvider.idl',
+    'nsIDOMMozCellBroadcast.idl',
+    'nsIDOMMozCellBroadcastEvent.idl',
+    'nsIDOMMozCellBroadcastMessage.idl',
+    'nsINavigatorCellBroadcast.idl',
+]
+
--- a/dom/file/Makefile.in
+++ b/dom/file/Makefile.in
@@ -55,22 +55,15 @@ EXPORTS_mozilla/dom/file = \
   LockedFile.h \
   ArchiveEvent.h \
   ArchiveZipEvent.h \
   ArchiveZipFile.h \
   ArchiveReader.h \
   ArchiveRequest.h \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIDOMFileHandle.idl \
-  nsIDOMFileRequest.idl \
-  nsIDOMLockedFile.idl \
-  nsIDOMArchiveRequest.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/file/moz.build
+++ b/dom/file/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsIDOMArchiveRequest.idl',
+    'nsIDOMFileHandle.idl',
+    'nsIDOMFileRequest.idl',
+    'nsIDOMLockedFile.idl',
+]
+
--- a/dom/fm/Makefile.in
+++ b/dom/fm/Makefile.in
@@ -17,21 +17,16 @@ FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
 CPPSRCS += \
   FMRadio.cpp \
   nsFMRadioSettings.cpp \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIDOMFMRadio.idl \
-  nsIFMRadio.idl \
-  $(NULL)
-
 EXTRA_COMPONENTS =      \
   DOMFMRadioChild.js       \
   DOMFMRadio.manifest \
   $(NULL)
 
 EXTRA_JS_MODULES =   \
   DOMFMRadioParent.jsm \
   $(NULL)
--- a/dom/fm/moz.build
+++ b/dom/fm/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMFMRadio.idl',
+    'nsIFMRadio.idl',
+]
+
--- a/dom/icc/interfaces/Makefile.in
+++ b/dom/icc/interfaces/Makefile.in
@@ -8,20 +8,13 @@ srcdir           = @srcdir@
 VPATH            = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPIDL_MODULE = dom_icc
 
 include $(topsrcdir)/dom/dom-config.mk
 
-XPIDLSRCS = \
-  nsIDOMIccManager.idl \
-  SimToolKit.idl \
-  nsIDOMICCCardLockErrorEvent.idl \
-  nsIIccProvider.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/icc/interfaces/moz.build
+++ b/dom/icc/interfaces/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'SimToolKit.idl',
+    'nsIDOMICCCardLockErrorEvent.idl',
+    'nsIDOMIccManager.idl',
+    'nsIIccProvider.idl',
+]
+
--- a/dom/indexedDB/Makefile.in
+++ b/dom/indexedDB/Makefile.in
@@ -74,32 +74,16 @@ LOCAL_INCLUDES = \
   -I$(topsrcdir)/dom/src/storage \
   -I$(topsrcdir)/xpcom/build \
   $(NULL)
 
 DEFINES += -D_IMPL_NS_LAYOUT
 
 # Make sure to quickstub as much as possible here! See
 # js/xpconnect/src/dom_quickstubs.qsconf.
-XPIDLSRCS = \
-  nsIIDBCursor.idl \
-  nsIIDBCursorWithValue.idl \
-  nsIIDBDatabase.idl \
-  nsIIDBFactory.idl \
-  nsIIDBFileHandle.idl \
-  nsIIDBIndex.idl \
-  nsIIDBKeyRange.idl \
-  nsIIDBObjectStore.idl \
-  nsIIDBRequest.idl \
-  nsIIDBTransaction.idl \
-  nsIIDBVersionChangeEvent.idl \
-  nsIIDBOpenDBRequest.idl \
-  nsIIndexedDatabaseManager.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/indexedDB/moz.build
+++ b/dom/indexedDB/moz.build
@@ -1,7 +1,24 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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 += ['ipc']
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsIIDBCursor.idl',
+    'nsIIDBCursorWithValue.idl',
+    'nsIIDBDatabase.idl',
+    'nsIIDBFactory.idl',
+    'nsIIDBFileHandle.idl',
+    'nsIIDBIndex.idl',
+    'nsIIDBKeyRange.idl',
+    'nsIIDBObjectStore.idl',
+    'nsIIDBOpenDBRequest.idl',
+    'nsIIDBRequest.idl',
+    'nsIIDBTransaction.idl',
+    'nsIIDBVersionChangeEvent.idl',
+    'nsIIndexedDatabaseManager.idl',
+]
+
--- a/dom/interfaces/apps/Makefile.in
+++ b/dom/interfaces/apps/Makefile.in
@@ -9,23 +9,14 @@ srcdir         = @srcdir@
 VPATH          = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = dom
 XPIDL_MODULE   = dom_apps
 GRE_MODULE     = 1
 
-XPIDLSRCS =                               \
-            mozIApplication.idl \
-            mozIApplicationClearPrivateDataParams.idl \
-            nsIDOMApplicationRegistry.idl \
-            nsIDOMApplicationRegistry2.idl \
-            nsIAppsService.idl \
-            nsIDOMMozApplicationEvent.idl \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/interfaces/apps/moz.build
+++ b/dom/interfaces/apps/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'mozIApplication.idl',
+    'mozIApplicationClearPrivateDataParams.idl',
+    'nsIAppsService.idl',
+    'nsIDOMApplicationRegistry.idl',
+    'nsIDOMApplicationRegistry2.idl',
+    'nsIDOMMozApplicationEvent.idl',
+]
+
--- a/dom/interfaces/base/Makefile.in
+++ b/dom/interfaces/base/Makefile.in
@@ -9,59 +9,16 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_base
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS =                                 \
-	domstubs.idl				\
-	nsIDOMBarProp.idl			\
-	nsIDOMWindow.idl			\
-	nsIDOMWindowCollection.idl		\
-	nsIDOMWindowUtils.idl			\
-	$(NULL)
-
-XPIDLSRCS =					\
-	nsIFrameRequestCallback.idl             \
-	nsIBrowserDOMWindow.idl			\
-	nsIContentPermissionPrompt.idl  \
-	nsIContentPrefService.idl		\
-	nsIContentPrefService2.idl		\
-	nsIContentURIGrouper.idl		\
-	nsIDOMClientInformation.idl		\
-	nsIDOMConstructor.idl			\
-	nsIDOMCRMFObject.idl			\
-	nsIDOMHistory.idl			\
-	nsIDOMLocation.idl			\
-	nsIDOMMediaQueryList.idl		\
-	nsIDOMMimeType.idl			\
-	nsIDOMMimeTypeArray.idl			\
-	nsIDOMNavigator.idl			\
-	nsIDOMPkcs11.idl			\
-	nsIDOMPlugin.idl			\
-	nsIDOMPluginArray.idl			\
-	nsIDOMScreen.idl			\
-	nsIDOMJSWindow.idl			\
-	nsIDOMModalContentWindow.idl		\
-	nsIDOMChromeWindow.idl			\
-        nsIDOMClientRect.idl			\
-        nsIDOMClientRectList.idl		\
-	nsIFocusManager.idl			\
-	nsIQueryContentEventResult.idl		\
-	nsITabChild.idl				\
-	nsITabParent.idl			\
-	nsIDOMGlobalPropertyInitializer.idl	\
-	nsIDOMGlobalObjectConstructor.idl \
-	nsIStructuredCloneContainer.idl		\
-	nsIIdleObserver.idl			\
-	$(NULL)
-
 ifdef MOZ_DISABLE_CRYPTOLEGACY
 XPIDLSRCS += \
 	nsIDOMCrypto.idl			\
 	$(NULL)
 else
 XPIDLSRCS += \
 	nsIDOMCryptoLegacy.idl			\
 	$(NULL)
--- a/dom/interfaces/base/moz.build
+++ b/dom/interfaces/base/moz.build
@@ -1,5 +1,45 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'domstubs.idl',
+    'nsIBrowserDOMWindow.idl',
+    'nsIContentPermissionPrompt.idl',
+    'nsIContentPrefService.idl',
+    'nsIContentPrefService2.idl',
+    'nsIContentURIGrouper.idl',
+    'nsIDOMBarProp.idl',
+    'nsIDOMCRMFObject.idl',
+    'nsIDOMChromeWindow.idl',
+    'nsIDOMClientInformation.idl',
+    'nsIDOMClientRect.idl',
+    'nsIDOMClientRectList.idl',
+    'nsIDOMConstructor.idl',
+    'nsIDOMGlobalObjectConstructor.idl',
+    'nsIDOMGlobalPropertyInitializer.idl',
+    'nsIDOMHistory.idl',
+    'nsIDOMJSWindow.idl',
+    'nsIDOMLocation.idl',
+    'nsIDOMMediaQueryList.idl',
+    'nsIDOMMimeType.idl',
+    'nsIDOMMimeTypeArray.idl',
+    'nsIDOMModalContentWindow.idl',
+    'nsIDOMNavigator.idl',
+    'nsIDOMPkcs11.idl',
+    'nsIDOMPlugin.idl',
+    'nsIDOMPluginArray.idl',
+    'nsIDOMScreen.idl',
+    'nsIDOMWindow.idl',
+    'nsIDOMWindowCollection.idl',
+    'nsIDOMWindowUtils.idl',
+    'nsIFocusManager.idl',
+    'nsIFrameRequestCallback.idl',
+    'nsIIdleObserver.idl',
+    'nsIQueryContentEventResult.idl',
+    'nsIStructuredCloneContainer.idl',
+    'nsITabChild.idl',
+    'nsITabParent.idl',
+]
+
--- a/dom/interfaces/canvas/Makefile.in
+++ b/dom/interfaces/canvas/Makefile.in
@@ -9,14 +9,9 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_canvas
 GRE_MODULE	= 1
 
-XPIDLSRCS = \
-	nsIDOMCanvasRenderingContext2D.idl \
-	nsIDOMWebGLRenderingContext.idl \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/dom/interfaces/canvas/moz.build
+++ b/dom/interfaces/canvas/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMCanvasRenderingContext2D.idl',
+    'nsIDOMWebGLRenderingContext.idl',
+]
+
--- a/dom/interfaces/contacts/Makefile.in
+++ b/dom/interfaces/contacts/Makefile.in
@@ -8,20 +8,14 @@ srcdir         = @srcdir@
 VPATH          = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = dom
 XPIDL_MODULE   = dom_contacts
 GRE_MODULE     = 1
 
-XPIDLSRCS =                             \
-            nsIDOMContactProperties.idl \
-            nsIDOMContactManager.idl    \
-            nsIDOMMozContactChangeEvent.idl \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/interfaces/contacts/moz.build
+++ b/dom/interfaces/contacts/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMContactManager.idl',
+    'nsIDOMContactProperties.idl',
+    'nsIDOMMozContactChangeEvent.idl',
+]
+
--- a/dom/interfaces/core/Makefile.in
+++ b/dom/interfaces/core/Makefile.in
@@ -9,39 +9,13 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_core
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS =                                 \
-	nsIDOMAttr.idl				\
-	nsIDOMCDATASection.idl			\
-	nsIDOMCharacterData.idl			\
-	nsIDOMComment.idl			\
-	nsIDOMDOMException.idl			\
-	nsIDOMDocument.idl			\
-	nsIDOMDocumentFragment.idl		\
-	nsIDOMDocumentType.idl			\
-	nsIDOMElement.idl			\
-	nsIDOMMozNamedAttrMap.idl		\
-	nsIDOMNode.idl				\
-	nsIDOMNodeList.idl			\
-	nsIDOMProcessingInstruction.idl		\
-	nsIDOMText.idl				\
-	nsIDocumentRegister.idl		\
-	$(NULL)
-XPIDLSRCS =                                     \
-	nsIDOMDOMStringList.idl			\
-	nsIDOMXMLDocument.idl			\
-	nsIDOMUserDataHandler.idl		\
-	nsIDOMNSEditableElement.idl		\
-	nsIDOMNodeSelector.idl			\
-	nsIInlineEventHandlers.idl              \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/core/moz.build
+++ b/dom/interfaces/core/moz.build
@@ -1,5 +1,29 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMAttr.idl',
+    'nsIDOMCDATASection.idl',
+    'nsIDOMCharacterData.idl',
+    'nsIDOMComment.idl',
+    'nsIDOMDOMException.idl',
+    'nsIDOMDOMStringList.idl',
+    'nsIDOMDocument.idl',
+    'nsIDOMDocumentFragment.idl',
+    'nsIDOMDocumentType.idl',
+    'nsIDOMElement.idl',
+    'nsIDOMMozNamedAttrMap.idl',
+    'nsIDOMNSEditableElement.idl',
+    'nsIDOMNode.idl',
+    'nsIDOMNodeList.idl',
+    'nsIDOMNodeSelector.idl',
+    'nsIDOMProcessingInstruction.idl',
+    'nsIDOMText.idl',
+    'nsIDOMUserDataHandler.idl',
+    'nsIDOMXMLDocument.idl',
+    'nsIDocumentRegister.idl',
+    'nsIInlineEventHandlers.idl',
+]
+
--- a/dom/interfaces/css/Makefile.in
+++ b/dom/interfaces/css/Makefile.in
@@ -9,43 +9,14 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_css
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS = 				\
-	nsIDOMCSSPrimitiveValue.idl		\
-	nsIDOMCSSRule.idl			\
-	nsIDOMCSSRuleList.idl			\
-	nsIDOMCSSStyleDeclaration.idl		\
-	nsIDOMCSSStyleSheet.idl			\
-	nsIDOMCSSValue.idl			\
-	nsIDOMCSSValueList.idl			\
-	nsIDOMElementCSSInlineStyle.idl		\
-	$(NULL)
-
-XPIDLSRCS =					\
-	nsIDOMCSSCharsetRule.idl		\
-	nsIDOMCSSConditionRule.idl		\
-	nsIDOMCSSFontFaceRule.idl		\
-	nsIDOMCSSGroupingRule.idl		\
-	nsIDOMCSSImportRule.idl			\
-	nsIDOMCSSMediaRule.idl			\
-	nsIDOMCSSMozDocumentRule.idl		\
-	nsIDOMCSSSupportsRule.idl		\
-	nsIDOMMozCSSKeyframeRule.idl		\
-	nsIDOMMozCSSKeyframesRule.idl		\
-	nsIDOMCSSPageRule.idl			\
-	nsIDOMCSSStyleRule.idl			\
-	nsIDOMCSSUnknownRule.idl		\
-	nsIDOMCounter.idl			\
-	nsIDOMRect.idl				\
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/stylesheets \
   $(NULL)
--- a/dom/interfaces/css/moz.build
+++ b/dom/interfaces/css/moz.build
@@ -1,5 +1,31 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMCSSCharsetRule.idl',
+    'nsIDOMCSSConditionRule.idl',
+    'nsIDOMCSSFontFaceRule.idl',
+    'nsIDOMCSSGroupingRule.idl',
+    'nsIDOMCSSImportRule.idl',
+    'nsIDOMCSSMediaRule.idl',
+    'nsIDOMCSSMozDocumentRule.idl',
+    'nsIDOMCSSPageRule.idl',
+    'nsIDOMCSSPrimitiveValue.idl',
+    'nsIDOMCSSRule.idl',
+    'nsIDOMCSSRuleList.idl',
+    'nsIDOMCSSStyleDeclaration.idl',
+    'nsIDOMCSSStyleRule.idl',
+    'nsIDOMCSSStyleSheet.idl',
+    'nsIDOMCSSSupportsRule.idl',
+    'nsIDOMCSSUnknownRule.idl',
+    'nsIDOMCSSValue.idl',
+    'nsIDOMCSSValueList.idl',
+    'nsIDOMCounter.idl',
+    'nsIDOMElementCSSInlineStyle.idl',
+    'nsIDOMMozCSSKeyframeRule.idl',
+    'nsIDOMMozCSSKeyframesRule.idl',
+    'nsIDOMRect.idl',
+]
+
--- a/dom/interfaces/devicestorage/Makefile.in
+++ b/dom/interfaces/devicestorage/Makefile.in
@@ -12,21 +12,15 @@ include $(DEPTH)/config/autoconf.mk
 MODULE           = dom
 LIBRARY_NAME     = domdevicestorage_s
 XPIDL_MODULE     = dom_devicestorage
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-XPIDLSRCS = \
-	nsIDOMDeviceStorage.idl \
-	nsIDOMDeviceStorageCursor.idl \
-	nsIDOMNavigatorDeviceStorage.idl \
-	nsIDOMDeviceStorageChangeEvent.idl
-
 include $(topsrcdir)/config/rules.mk
 
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/interfaces/devicestorage/moz.build
+++ b/dom/interfaces/devicestorage/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMDeviceStorage.idl',
+    'nsIDOMDeviceStorageChangeEvent.idl',
+    'nsIDOMDeviceStorageCursor.idl',
+    'nsIDOMNavigatorDeviceStorage.idl',
+]
+
--- a/dom/interfaces/events/Makefile.in
+++ b/dom/interfaces/events/Makefile.in
@@ -9,62 +9,13 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_events
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS =                                 \
-	nsIDOMEvent.idl				\
-	nsIDOMEventTarget.idl			\
-	nsIDOMEventListener.idl			\
-	nsIDOMMouseEvent.idl			\
-	nsIDOMMouseScrollEvent.idl      \
-	nsIDOMUIEvent.idl			\
-	nsIDOMProgressEvent.idl			\
-	$(NULL)
-
-XPIDLSRCS =					\
-	nsIDOMNSEvent.idl			\
-	nsIDOMDataContainerEvent.idl	\
-	nsIDOMKeyEvent.idl			\
-	nsIDOMMutationEvent.idl			\
-	nsIDOMDragEvent.idl  			\
-	nsIDOMDataTransfer.idl  			\
-	nsIDOMDOMTransactionEvent.idl  			\
-	nsIDOMPopupBlockedEvent.idl		\
-	nsIDOMBeforeUnloadEvent.idl		\
-	nsIDOMSmartCardEvent.idl                \
-	nsIDOMPageTransitionEvent.idl		\
-	nsIDOMCommandEvent.idl			\
-	nsIDOMMessageEvent.idl			\
-	nsIDOMNotifyPaintEvent.idl              \
-	nsIDOMNotifyAudioAvailableEvent.idl     \
-	nsIDOMPaintRequest.idl			\
-	nsIDOMPaintRequestList.idl		\
-	nsIDOMSimpleGestureEvent.idl		\
-	nsIDOMDeviceLightEvent.idl              \
-	nsIDOMDeviceProximityEvent.idl          \
-	nsIDOMUserProximityEvent.idl            \
-	nsIDOMDeviceOrientationEvent.idl        \
-	nsIDOMDeviceMotionEvent.idl		\
-	nsIDOMElementReplaceEvent.idl		\
-	nsIDOMScrollAreaEvent.idl		\
-	nsIDOMTransitionEvent.idl		\
-	nsIDOMAnimationEvent.idl		\
-	nsIDOMPopStateEvent.idl			\
-	nsIDOMCloseEvent.idl			\
-	nsIDOMTouchEvent.idl			\
-	nsIDOMHashChangeEvent.idl		\
-	nsIDOMCustomEvent.idl			\
-	nsIDOMCompositionEvent.idl		\
-	nsIDOMWheelEvent.idl			\
-	nsIDOMBlobEvent.idl			\
-	nsIDOMClipboardEvent.idl  		\
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/events/moz.build
+++ b/dom/interfaces/events/moz.build
@@ -1,5 +1,51 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMAnimationEvent.idl',
+    'nsIDOMBeforeUnloadEvent.idl',
+    'nsIDOMBlobEvent.idl',
+    'nsIDOMClipboardEvent.idl',
+    'nsIDOMCloseEvent.idl',
+    'nsIDOMCommandEvent.idl',
+    'nsIDOMCompositionEvent.idl',
+    'nsIDOMCustomEvent.idl',
+    'nsIDOMDOMTransactionEvent.idl',
+    'nsIDOMDataContainerEvent.idl',
+    'nsIDOMDataTransfer.idl',
+    'nsIDOMDeviceLightEvent.idl',
+    'nsIDOMDeviceMotionEvent.idl',
+    'nsIDOMDeviceOrientationEvent.idl',
+    'nsIDOMDeviceProximityEvent.idl',
+    'nsIDOMDragEvent.idl',
+    'nsIDOMElementReplaceEvent.idl',
+    'nsIDOMEvent.idl',
+    'nsIDOMEventListener.idl',
+    'nsIDOMEventTarget.idl',
+    'nsIDOMHashChangeEvent.idl',
+    'nsIDOMKeyEvent.idl',
+    'nsIDOMMessageEvent.idl',
+    'nsIDOMMouseEvent.idl',
+    'nsIDOMMouseScrollEvent.idl',
+    'nsIDOMMutationEvent.idl',
+    'nsIDOMNSEvent.idl',
+    'nsIDOMNotifyAudioAvailableEvent.idl',
+    'nsIDOMNotifyPaintEvent.idl',
+    'nsIDOMPageTransitionEvent.idl',
+    'nsIDOMPaintRequest.idl',
+    'nsIDOMPaintRequestList.idl',
+    'nsIDOMPopStateEvent.idl',
+    'nsIDOMPopupBlockedEvent.idl',
+    'nsIDOMProgressEvent.idl',
+    'nsIDOMScrollAreaEvent.idl',
+    'nsIDOMSimpleGestureEvent.idl',
+    'nsIDOMSmartCardEvent.idl',
+    'nsIDOMTouchEvent.idl',
+    'nsIDOMTransitionEvent.idl',
+    'nsIDOMUIEvent.idl',
+    'nsIDOMUserProximityEvent.idl',
+    'nsIDOMWheelEvent.idl',
+]
+
--- a/dom/interfaces/geolocation/Makefile.in
+++ b/dom/interfaces/geolocation/Makefile.in
@@ -9,24 +9,13 @@ srcdir         = @srcdir@
 VPATH          = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = dom
 XPIDL_MODULE   = dom_geolocation
 GRE_MODULE     = 1
 
-XPIDLSRCS =                                    \
-            nsIDOMGeoGeolocation.idl           \
-            nsIDOMGeoPosition.idl              \
-            nsIDOMGeoPositionCoords.idl        \
-            nsIDOMGeoPositionCallback.idl      \
-            nsIDOMGeoPositionError.idl         \
-            nsIDOMGeoPositionErrorCallback.idl \
-            nsIDOMNavigatorGeolocation.idl     \
-            nsIGeolocation.idl \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/geolocation/moz.build
+++ b/dom/interfaces/geolocation/moz.build
@@ -1,5 +1,16 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMGeoGeolocation.idl',
+    'nsIDOMGeoPosition.idl',
+    'nsIDOMGeoPositionCallback.idl',
+    'nsIDOMGeoPositionCoords.idl',
+    'nsIDOMGeoPositionError.idl',
+    'nsIDOMGeoPositionErrorCallback.idl',
+    'nsIDOMNavigatorGeolocation.idl',
+    'nsIGeolocation.idl',
+]
+
--- a/dom/interfaces/html/Makefile.in
+++ b/dom/interfaces/html/Makefile.in
@@ -9,93 +9,14 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_html
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS =					\
-	nsIDOMHTMLAnchorElement.idl		\
-	nsIDOMHTMLAppletElement.idl		\
-	nsIDOMHTMLAreaElement.idl		\
-	nsIDOMHTMLBRElement.idl			\
-	nsIDOMHTMLBaseElement.idl		\
-	nsIDOMHTMLBodyElement.idl		\
-	nsIDOMHTMLButtonElement.idl		\
-	nsIDOMHTMLCollection.idl		\
-	nsIDOMHTMLCommandElement.idl		\
-	nsIDOMHTMLDataListElement.idl		\
-	nsIDOMHTMLDListElement.idl		\
-	nsIDOMHTMLDirectoryElement.idl		\
-	nsIDOMHTMLDivElement.idl		\
-	nsIDOMHTMLDocument.idl			\
-	nsIDOMHTMLElement.idl			\
-	nsIDOMHTMLEmbedElement.idl		\
-	nsIDOMHTMLFieldSetElement.idl		\
-	nsIDOMHTMLFontElement.idl		\
-	nsIDOMHTMLFormElement.idl		\
-	nsIDOMHTMLFrameElement.idl		\
-	nsIDOMHTMLFrameSetElement.idl		\
-	nsIDOMHTMLHRElement.idl			\
-	nsIDOMHTMLHeadElement.idl		\
-	nsIDOMHTMLHeadingElement.idl		\
-	nsIDOMHTMLHtmlElement.idl		\
-	nsIDOMHTMLIFrameElement.idl		\
-	nsIDOMHTMLImageElement.idl		\
-	nsIDOMHTMLInputElement.idl		\
-	nsIDOMHTMLLIElement.idl			\
-	nsIDOMHTMLLabelElement.idl		\
-	nsIDOMHTMLLegendElement.idl		\
-	nsIDOMHTMLLinkElement.idl		\
-	nsIDOMHTMLMapElement.idl		\
-	nsIDOMHTMLMenuElement.idl		\
-	nsIDOMHTMLMenuItemElement.idl		\
-	nsIDOMHTMLMetaElement.idl		\
-	nsIDOMHTMLMeterElement.idl		\
-	nsIDOMHTMLModElement.idl		\
-	nsIDOMHTMLOListElement.idl		\
-	nsIDOMHTMLObjectElement.idl		\
-	nsIDOMHTMLOptGroupElement.idl		\
-	nsIDOMHTMLOptionElement.idl		\
-	nsIDOMHTMLOptionsCollection.idl		\
-	nsIDOMHTMLOutputElement.idl		\
-	nsIDOMHTMLParagraphElement.idl		\
-	nsIDOMHTMLParamElement.idl		\
-	nsIDOMHTMLPreElement.idl		\
-	nsIDOMHTMLProgressElement.idl		\
-	nsIDOMHTMLQuoteElement.idl		\
-	nsIDOMHTMLScriptElement.idl		\
-	nsIDOMHTMLSelectElement.idl		\
-	nsIDOMHTMLStyleElement.idl		\
-	nsIDOMHTMLTableCaptionElem.idl		\
-	nsIDOMHTMLTableCellElement.idl		\
-	nsIDOMHTMLTableColElement.idl		\
-	nsIDOMHTMLTableElement.idl		\
-	nsIDOMHTMLTableRowElement.idl		\
-	nsIDOMHTMLTableSectionElement.idl		\
-	nsIDOMHTMLTextAreaElement.idl		\
-	nsIDOMHTMLTitleElement.idl		\
-	nsIDOMHTMLUListElement.idl		\
-	nsIDOMMediaError.idl		\
-	nsIDOMTimeRanges.idl		\
-	nsIDOMHTMLByteRanges.idl		\
-	nsIDOMHTMLMediaElement.idl		\
-	nsIDOMHTMLSourceElement.idl		\
-	nsIDOMHTMLVideoElement.idl		\
-	nsIDOMHTMLAudioElement.idl		\
-	nsIDOMValidityState.idl		\
-	nsIDOMMozBrowserFrame.idl		\
-	$(NULL)
-
-XPIDLSRCS = 					\
-	nsIDOMHTMLCanvasElement.idl		\
-	nsIDOMHTMLUnknownElement.idl \
-	nsIMozBrowserFrame.idl \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/core \
   $(NULL)
--- a/dom/interfaces/html/moz.build
+++ b/dom/interfaces/html/moz.build
@@ -1,5 +1,81 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMHTMLAnchorElement.idl',
+    'nsIDOMHTMLAppletElement.idl',
+    'nsIDOMHTMLAreaElement.idl',
+    'nsIDOMHTMLAudioElement.idl',
+    'nsIDOMHTMLBRElement.idl',
+    'nsIDOMHTMLBaseElement.idl',
+    'nsIDOMHTMLBodyElement.idl',
+    'nsIDOMHTMLButtonElement.idl',
+    'nsIDOMHTMLByteRanges.idl',
+    'nsIDOMHTMLCanvasElement.idl',
+    'nsIDOMHTMLCollection.idl',
+    'nsIDOMHTMLCommandElement.idl',
+    'nsIDOMHTMLDListElement.idl',
+    'nsIDOMHTMLDataListElement.idl',
+    'nsIDOMHTMLDirectoryElement.idl',
+    'nsIDOMHTMLDivElement.idl',
+    'nsIDOMHTMLDocument.idl',
+    'nsIDOMHTMLElement.idl',
+    'nsIDOMHTMLEmbedElement.idl',
+    'nsIDOMHTMLFieldSetElement.idl',
+    'nsIDOMHTMLFontElement.idl',
+    'nsIDOMHTMLFormElement.idl',
+    'nsIDOMHTMLFrameElement.idl',
+    'nsIDOMHTMLFrameSetElement.idl',
+    'nsIDOMHTMLHRElement.idl',
+    'nsIDOMHTMLHeadElement.idl',
+    'nsIDOMHTMLHeadingElement.idl',
+    'nsIDOMHTMLHtmlElement.idl',
+    'nsIDOMHTMLIFrameElement.idl',
+    'nsIDOMHTMLImageElement.idl',
+    'nsIDOMHTMLInputElement.idl',
+    'nsIDOMHTMLLIElement.idl',
+    'nsIDOMHTMLLabelElement.idl',
+    'nsIDOMHTMLLegendElement.idl',
+    'nsIDOMHTMLLinkElement.idl',
+    'nsIDOMHTMLMapElement.idl',
+    'nsIDOMHTMLMediaElement.idl',
+    'nsIDOMHTMLMenuElement.idl',
+    'nsIDOMHTMLMenuItemElement.idl',
+    'nsIDOMHTMLMetaElement.idl',
+    'nsIDOMHTMLMeterElement.idl',
+    'nsIDOMHTMLModElement.idl',
+    'nsIDOMHTMLOListElement.idl',
+    'nsIDOMHTMLObjectElement.idl',
+    'nsIDOMHTMLOptGroupElement.idl',
+    'nsIDOMHTMLOptionElement.idl',
+    'nsIDOMHTMLOptionsCollection.idl',
+    'nsIDOMHTMLOutputElement.idl',
+    'nsIDOMHTMLParagraphElement.idl',
+    'nsIDOMHTMLParamElement.idl',
+    'nsIDOMHTMLPreElement.idl',
+    'nsIDOMHTMLProgressElement.idl',
+    'nsIDOMHTMLQuoteElement.idl',
+    'nsIDOMHTMLScriptElement.idl',
+    'nsIDOMHTMLSelectElement.idl',
+    'nsIDOMHTMLSourceElement.idl',
+    'nsIDOMHTMLStyleElement.idl',
+    'nsIDOMHTMLTableCaptionElem.idl',
+    'nsIDOMHTMLTableCellElement.idl',
+    'nsIDOMHTMLTableColElement.idl',
+    'nsIDOMHTMLTableElement.idl',
+    'nsIDOMHTMLTableRowElement.idl',
+    'nsIDOMHTMLTableSectionElement.idl',
+    'nsIDOMHTMLTextAreaElement.idl',
+    'nsIDOMHTMLTitleElement.idl',
+    'nsIDOMHTMLUListElement.idl',
+    'nsIDOMHTMLUnknownElement.idl',
+    'nsIDOMHTMLVideoElement.idl',
+    'nsIDOMMediaError.idl',
+    'nsIDOMMozBrowserFrame.idl',
+    'nsIDOMTimeRanges.idl',
+    'nsIDOMValidityState.idl',
+    'nsIMozBrowserFrame.idl',
+]
+
--- a/dom/interfaces/json/Makefile.in
+++ b/dom/interfaces/json/Makefile.in
@@ -9,21 +9,13 @@ srcdir         = @srcdir@
 VPATH          = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = dom
 XPIDL_MODULE   = dom_json
 GRE_MODULE     = 1
 
-XPIDLSRCS =                      \
-       nsIJSON.idl               \
-       $(NULL)
-
-SDK_XPIDLSRCS =                  \
-       nsIJSON.idl               \
-       $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/json/moz.build
+++ b/dom/interfaces/json/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIJSON.idl',
+]
+
--- a/dom/interfaces/notification/Makefile.in
+++ b/dom/interfaces/notification/Makefile.in
@@ -9,17 +9,13 @@ srcdir         = @srcdir@
 VPATH          = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = dom
 XPIDL_MODULE   = dom_notification
 GRE_MODULE     = 1
 
-XPIDLSRCS = nsIDOMNavigatorDesktopNotification.idl    \
-            nsIDOMDesktopNotification.idl             \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/notification/moz.build
+++ b/dom/interfaces/notification/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMDesktopNotification.idl',
+    'nsIDOMNavigatorDesktopNotification.idl',
+]
+
--- a/dom/interfaces/offline/Makefile.in
+++ b/dom/interfaces/offline/Makefile.in
@@ -9,18 +9,13 @@ srcdir         = @srcdir@
 VPATH          = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = dom
 XPIDL_MODULE   = dom_offline
 GRE_MODULE     = 1
 
-XPIDLSRCS =                           \
-        nsIDOMOfflineResourceList.idl \
-        nsIDOMLoadStatus.idl          \
-        $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/offline/moz.build
+++ b/dom/interfaces/offline/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMLoadStatus.idl',
+    'nsIDOMOfflineResourceList.idl',
+]
+
--- a/dom/interfaces/permission/Makefile.in
+++ b/dom/interfaces/permission/Makefile.in
@@ -8,18 +8,13 @@ srcdir         = @srcdir@
 VPATH          = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = dom
 XPIDL_MODULE   = dom_permissionsettings
 GRE_MODULE     = 1
 
-XPIDLSRCS =                             \
-            nsIDOMPermissionSettings.idl    \
-            nsIPermissionPromptService.idl \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/permission/moz.build
+++ b/dom/interfaces/permission/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMPermissionSettings.idl',
+    'nsIPermissionPromptService.idl',
+]
+
--- a/dom/interfaces/range/Makefile.in
+++ b/dom/interfaces/range/Makefile.in
@@ -9,17 +9,13 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_range
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS =		\
-	nsIDOMRange.idl	\
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/range/moz.build
+++ b/dom/interfaces/range/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMRange.idl',
+]
+
--- a/dom/interfaces/settings/Makefile.in
+++ b/dom/interfaces/settings/Makefile.in
@@ -8,20 +8,14 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = dom
 XPIDL_MODULE   = dom_settings
 GRE_MODULE     = 1
 
-XPIDLSRCS =                           \
-            nsIDOMSettingsManager.idl \
-            nsISettingsService.idl    \
-            nsIDOMMozSettingsEvent.idl \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/interfaces/settings/moz.build
+++ b/dom/interfaces/settings/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMMozSettingsEvent.idl',
+    'nsIDOMSettingsManager.idl',
+    'nsISettingsService.idl',
+]
+
--- a/dom/interfaces/sidebar/Makefile.in
+++ b/dom/interfaces/sidebar/Makefile.in
@@ -9,14 +9,9 @@ srcdir          = @srcdir@
 VPATH           = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE          = dom
 XPIDL_MODULE    = dom_sidebar
 GRE_MODULE      = 1
 
-XPIDLSRCS =                                     \
-        nsISidebar.idl  \
-        nsIWebContentHandlerRegistrar.idl \
-        $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/dom/interfaces/sidebar/moz.build
+++ b/dom/interfaces/sidebar/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsISidebar.idl',
+    'nsIWebContentHandlerRegistrar.idl',
+]
+
--- a/dom/interfaces/smil/Makefile.in
+++ b/dom/interfaces/smil/Makefile.in
@@ -9,20 +9,16 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_smil
 
-XPIDLSRCS	= \
-		nsIDOMTimeEvent.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/core \
   -I$(topsrcdir)/dom/interfaces/events \
   -I$(topsrcdir)/dom/interfaces/svg \
   $(NULL)
--- a/dom/interfaces/smil/moz.build
+++ b/dom/interfaces/smil/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMTimeEvent.idl',
+]
+
--- a/dom/interfaces/storage/Makefile.in
+++ b/dom/interfaces/storage/Makefile.in
@@ -13,27 +13,14 @@ include $(DEPTH)/config/autoconf.mk
 MODULE         = dom
 XPIDL_MODULE   = dom_storage
 GRE_MODULE     = 1
 
 EXPORTS =                                      \
        nsPIDOMStorage.h                        \
        $(NULL)
 
-XPIDLSRCS =                                    \
-       nsIDOMToString.idl                      \
-       nsIDOMStorageManager.idl                \
-       $(NULL)
-
-SDK_XPIDLSRCS =                      \
-        nsIDOMStorage.idl        \
-        nsIDOMStorageObsolete.idl\
-        nsIDOMStorageEvent.idl   \
-        nsIDOMStorageItem.idl    \
-        nsIDOMStorageIndexedDB.idl \
-       $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/interfaces/storage/moz.build
+++ b/dom/interfaces/storage/moz.build
@@ -1,5 +1,15 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMStorage.idl',
+    'nsIDOMStorageEvent.idl',
+    'nsIDOMStorageIndexedDB.idl',
+    'nsIDOMStorageItem.idl',
+    'nsIDOMStorageManager.idl',
+    'nsIDOMStorageObsolete.idl',
+    'nsIDOMToString.idl',
+]
+
--- a/dom/interfaces/stylesheets/Makefile.in
+++ b/dom/interfaces/stylesheets/Makefile.in
@@ -9,23 +9,13 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_stylesheets
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS =                                 \
-	nsIDOMMediaList.idl			\
-	nsIDOMStyleSheet.idl			\
-	nsIDOMStyleSheetList.idl		\
-	$(NULL)
-
-XPIDLSRCS = 					\
-	nsIDOMLinkStyle.idl			\
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/stylesheets/moz.build
+++ b/dom/interfaces/stylesheets/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMLinkStyle.idl',
+    'nsIDOMMediaList.idl',
+    'nsIDOMStyleSheet.idl',
+    'nsIDOMStyleSheetList.idl',
+]
+
--- a/dom/interfaces/svg/Makefile.in
+++ b/dom/interfaces/svg/Makefile.in
@@ -10,36 +10,15 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_svg
 
-XPIDLSRCS	= \
-		nsIDOMGetSVGDocument.idl \
-		nsIDOMSVGAnimatedEnum.idl \
-		nsIDOMSVGAnimatedInteger.idl \
-		nsIDOMSVGAnimatedLength.idl \
-		nsIDOMSVGAnimatedNumber.idl \
-		nsIDOMSVGAnimatedRect.idl \
-		nsIDOMSVGAnimatedString.idl \
-		nsIDOMSVGDocument.idl \
-		nsIDOMSVGElement.idl \
-		nsIDOMSVGEvent.idl \
-		nsIDOMSVGFilters.idl \
-		nsIDOMSVGLength.idl \
-		nsIDOMSVGNumber.idl \
-		nsIDOMSVGRect.idl \
-		nsIDOMSVGStringList.idl \
-		nsIDOMSVGURIReference.idl \
-		nsIDOMSVGUnitTypes.idl \
-		nsIDOMSVGZoomEvent.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/core \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/interfaces/svg/moz.build
+++ b/dom/interfaces/svg/moz.build
@@ -1,5 +1,26 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMGetSVGDocument.idl',
+    'nsIDOMSVGAnimatedEnum.idl',
+    'nsIDOMSVGAnimatedInteger.idl',
+    'nsIDOMSVGAnimatedLength.idl',
+    'nsIDOMSVGAnimatedNumber.idl',
+    'nsIDOMSVGAnimatedRect.idl',
+    'nsIDOMSVGAnimatedString.idl',
+    'nsIDOMSVGDocument.idl',
+    'nsIDOMSVGElement.idl',
+    'nsIDOMSVGEvent.idl',
+    'nsIDOMSVGFilters.idl',
+    'nsIDOMSVGLength.idl',
+    'nsIDOMSVGNumber.idl',
+    'nsIDOMSVGRect.idl',
+    'nsIDOMSVGStringList.idl',
+    'nsIDOMSVGURIReference.idl',
+    'nsIDOMSVGUnitTypes.idl',
+    'nsIDOMSVGZoomEvent.idl',
+]
+
--- a/dom/interfaces/traversal/Makefile.in
+++ b/dom/interfaces/traversal/Makefile.in
@@ -9,19 +9,13 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_traversal
 GRE_MODULE	= 1
 
-XPIDLSRCS =					\
-	nsIDOMNodeFilter.idl			\
-	nsIDOMNodeIterator.idl			\
-	nsIDOMTreeWalker.idl			\
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/traversal/moz.build
+++ b/dom/interfaces/traversal/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMNodeFilter.idl',
+    'nsIDOMNodeIterator.idl',
+    'nsIDOMTreeWalker.idl',
+]
+
--- a/dom/interfaces/xbl/Makefile.in
+++ b/dom/interfaces/xbl/Makefile.in
@@ -9,17 +9,13 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_xbl
 GRE_MODULE	= 1
 
-XPIDLSRCS =                                     \
-	nsIDOMDocumentXBL.idl			\
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/interfaces/xbl/moz.build
+++ b/dom/interfaces/xbl/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMDocumentXBL.idl',
+]
+
--- a/dom/interfaces/xpath/Makefile.in
+++ b/dom/interfaces/xpath/Makefile.in
@@ -7,23 +7,14 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_xpath
 
-XPIDLSRCS =                                     \
-	nsIDOMXPathEvaluator.idl			\
-	nsIDOMXPathExpression.idl			\
-	nsIDOMXPathNamespace.idl			\
-	nsIDOMXPathNSResolver.idl			\
-	nsIDOMXPathResult.idl			\
-	nsIDOMNSXPathExpression.idl			\
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/core \
   $(NULL)
--- a/dom/interfaces/xpath/moz.build
+++ b/dom/interfaces/xpath/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMNSXPathExpression.idl',
+    'nsIDOMXPathEvaluator.idl',
+    'nsIDOMXPathExpression.idl',
+    'nsIDOMXPathNSResolver.idl',
+    'nsIDOMXPathNamespace.idl',
+    'nsIDOMXPathResult.idl',
+]
+
--- a/dom/interfaces/xul/Makefile.in
+++ b/dom/interfaces/xul/Makefile.in
@@ -9,38 +9,15 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= dom
 XPIDL_MODULE	= dom_xul
 GRE_MODULE	= 1
 
-XPIDLSRCS =					\
-	nsIDOMXULButtonElement.idl              \
-	nsIDOMXULCheckboxElement.idl          \
-	nsIDOMXULCommandDispatcher.idl		\
-	nsIDOMXULCommandEvent.idl \
-	nsIDOMXULControlElement.idl          \
-	nsIDOMXULDescriptionElement.idl         \
-	nsIDOMXULDocument.idl			\
-	nsIDOMXULElement.idl			\
-	nsIDOMXULContainerElement.idl \
-	nsIDOMXULImageElement.idl               \
-	nsIDOMXULLabelElement.idl               \
-	nsIDOMXULLabeledControlEl.idl          \
-	nsIDOMXULMenuListElement.idl     \
-	nsIDOMXULPopupElement.idl          \
-	nsIDOMXULRelatedElement.idl \
-	nsIDOMXULSelectCntrlEl.idl       \
-	nsIDOMXULSelectCntrlItemEl.idl   \
-	nsIDOMXULMultSelectCntrlEl.idl \
-	nsIDOMXULTextboxElement.idl \
-	nsIDOMXULTreeElement.idl \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/core \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/interfaces/xul/moz.build
+++ b/dom/interfaces/xul/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMXULButtonElement.idl',
+    'nsIDOMXULCheckboxElement.idl',
+    'nsIDOMXULCommandDispatcher.idl',
+    'nsIDOMXULCommandEvent.idl',
+    'nsIDOMXULContainerElement.idl',
+    'nsIDOMXULControlElement.idl',
+    'nsIDOMXULDescriptionElement.idl',
+    'nsIDOMXULDocument.idl',
+    'nsIDOMXULElement.idl',
+    'nsIDOMXULImageElement.idl',
+    'nsIDOMXULLabelElement.idl',
+    'nsIDOMXULLabeledControlEl.idl',
+    'nsIDOMXULMenuListElement.idl',
+    'nsIDOMXULMultSelectCntrlEl.idl',
+    'nsIDOMXULPopupElement.idl',
+    'nsIDOMXULRelatedElement.idl',
+    'nsIDOMXULSelectCntrlEl.idl',
+    'nsIDOMXULSelectCntrlItemEl.idl',
+    'nsIDOMXULTextboxElement.idl',
+    'nsIDOMXULTreeElement.idl',
+]
+
--- a/dom/media/Makefile.in
+++ b/dom/media/Makefile.in
@@ -21,23 +21,16 @@ endif # !_MSC_VER
 
 include $(topsrcdir)/dom/dom-config.mk
 
 EXTRA_COMPONENTS = \
   PeerConnection.js \
   PeerConnection.manifest \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIDOMMediaStream.idl \
-  nsIDOMRTCPeerConnection.idl \
-  nsIDOMNavigatorUserMedia.idl \
-  nsIMediaManager.idl \
-  $(NULL)
-
 EXPORTS_NAMESPACE = mozilla
 
 EXPORTS_mozilla = \
   MediaManager.h \
   $(NULL)
 
 CPPSRCS = \
   MediaManager.cpp \
--- a/dom/media/bridge/Makefile.in
+++ b/dom/media/bridge/Makefile.in
@@ -12,18 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 MODULE        = peerconnection
 LIBRARY_NAME  = peerconnection
 MODULE_NAME   = peerconnection
 
 IS_COMPONENT   = 1
 EXPORT_LIBRARY = 1
 LIBXUL_LIBRARY = 1
 
-XPIDLSRCS = IPeerConnection.idl
-
 CPPSRCS = \
   MediaModule.cpp \
   $(NULL)
 
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/media/mtransport \
   -I$(topsrcdir)/media/webrtc/signaling/include \
   -I$(topsrcdir)/media/webrtc/signaling/src/sipcc/include \
--- a/dom/media/bridge/moz.build
+++ b/dom/media/bridge/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'IPeerConnection.idl',
+]
+
--- a/dom/media/moz.build
+++ b/dom/media/moz.build
@@ -2,8 +2,16 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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_WEBRTC']:
     DIRS += ['bridge']
 
 TEST_DIRS += ['tests/mochitest']
+
+XPIDL_SOURCES += [
+    'nsIDOMMediaStream.idl',
+    'nsIDOMNavigatorUserMedia.idl',
+    'nsIDOMRTCPeerConnection.idl',
+    'nsIMediaManager.idl',
+]
+
--- a/dom/messages/interfaces/Makefile.in
+++ b/dom/messages/interfaces/Makefile.in
@@ -8,18 +8,13 @@ srcdir           = @srcdir@
 VPATH            = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPIDL_MODULE = dom_messages
 
 include $(topsrcdir)/dom/dom-config.mk
 
-XPIDLSRCS = \
-  nsIDOMNavigatorSystemMessages.idl \
-  nsISystemMessagesInternal.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/messages/interfaces/moz.build
+++ b/dom/messages/interfaces/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMNavigatorSystemMessages.idl',
+    'nsISystemMessagesInternal.idl',
+]
+
--- a/dom/mms/interfaces/Makefile.in
+++ b/dom/mms/interfaces/Makefile.in
@@ -6,14 +6,9 @@ DEPTH            = @DEPTH@
 topsrcdir        = @top_srcdir@
 srcdir           = @srcdir@
 VPATH            = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPIDL_MODULE = dom_mms
 
-XPIDLSRCS = \
-  nsIMmsService.idl \
-  nsIWapPushApplication.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/dom/mms/interfaces/moz.build
+++ b/dom/mms/interfaces/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIMmsService.idl',
+    'nsIWapPushApplication.idl',
+]
+
--- a/dom/mobilemessage/interfaces/Makefile.in
+++ b/dom/mobilemessage/interfaces/Makefile.in
@@ -8,30 +8,16 @@ srcdir           = @srcdir@
 VPATH            = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPIDL_MODULE = dom_mobilemessage
 
 include $(topsrcdir)/dom/dom-config.mk
 
-XPIDLSRCS = \
-  nsIMobileMessageDatabaseService.idl \
-  nsIDOMNavigatorSms.idl \
-  nsIDOMSmsManager.idl \
-  nsIDOMMozSmsMessage.idl \
-  nsIDOMMozSmsEvent.idl \
-  nsIDOMSmsRequest.idl \
-  nsIDOMSmsFilter.idl \
-  nsIDOMSmsCursor.idl \
-  nsIDOMSmsSegmentInfo.idl \
-  nsISmsRequest.idl \
-  nsISmsService.idl \
-  $(NULL)
-
 ifdef MOZ_B2G_RIL
 XPIDLSRCS += \
   nsIRilMobileMessageDatabaseService.idl \
   $(NULL)
 endif
 
 include $(topsrcdir)/config/rules.mk
 
--- a/dom/mobilemessage/interfaces/moz.build
+++ b/dom/mobilemessage/interfaces/moz.build
@@ -1,5 +1,19 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMMozSmsEvent.idl',
+    'nsIDOMMozSmsMessage.idl',
+    'nsIDOMNavigatorSms.idl',
+    'nsIDOMSmsCursor.idl',
+    'nsIDOMSmsFilter.idl',
+    'nsIDOMSmsManager.idl',
+    'nsIDOMSmsRequest.idl',
+    'nsIDOMSmsSegmentInfo.idl',
+    'nsIMobileMessageDatabaseService.idl',
+    'nsISmsRequest.idl',
+    'nsISmsService.idl',
+]
+
--- a/dom/network/interfaces/Makefile.in
+++ b/dom/network/interfaces/Makefile.in
@@ -8,26 +8,16 @@ srcdir           = @srcdir@
 VPATH            = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPIDL_MODULE = dom_network
 
 include $(topsrcdir)/dom/dom-config.mk
 
-XPIDLSRCS = \
-  nsIDOMNavigatorNetwork.idl \
-  nsIDOMConnection.idl \
-  nsIDOMUSSDReceivedEvent.idl \
-  nsIDOMTCPSocket.idl \
-  nsITCPSocketParent.idl \
-  nsITCPSocketChild.idl \
-  nsIDOMDataErrorEvent.idl \
-  $(NULL)
-
 ifdef MOZ_B2G_RIL
 XPIDLSRCS += \
   nsIDOMMobileConnection.idl \
   nsIMobileConnectionProvider.idl \
   nsINavigatorMobileConnection.idl \
   nsIDOMNetworkStatsManager.idl \
   nsIDOMNetworkStats.idl \
   nsIDOMCFStateChangeEvent.idl \
--- a/dom/network/interfaces/moz.build
+++ b/dom/network/interfaces/moz.build
@@ -1,5 +1,15 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMConnection.idl',
+    'nsIDOMDataErrorEvent.idl',
+    'nsIDOMNavigatorNetwork.idl',
+    'nsIDOMTCPSocket.idl',
+    'nsIDOMUSSDReceivedEvent.idl',
+    'nsITCPSocketChild.idl',
+    'nsITCPSocketParent.idl',
+]
+
--- a/dom/payment/interfaces/Makefile.in
+++ b/dom/payment/interfaces/Makefile.in
@@ -6,18 +6,12 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPIDL_MODULE = dom_payment
 
-XPIDLSRCS = nsIDOMNavigatorPayment.idl \
-            nsIDOMPaymentRequestInfo.idl \
-            nsIPaymentFlowInfo.idl \
-            nsIPaymentUIGlue.idl \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/interfaces/base \
   $(NULL)
--- a/dom/payment/interfaces/moz.build
+++ b/dom/payment/interfaces/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDOMNavigatorPayment.idl',
+    'nsIDOMPaymentRequestInfo.idl',
+    'nsIPaymentFlowInfo.idl',
+    'nsIPaymentUIGlue.idl',
+]
+
--- a/dom/plugins/base/Makefile.in
+++ b/dom/plugins/base/Makefile.in
@@ -15,27 +15,16 @@ LIBRARY_NAME	= gkplugin
 EXPORT_LIBRARY = 1
 IS_COMPONENT    = 1
 MODULE_NAME	= nsPluginModule
 GRE_MODULE	= 1
 LIBXUL_LIBRARY = 1
 
 EXPORTS_NAMESPACES = mozilla
 
-XPIDLSRCS = \
-  nsIHTTPHeaderListener.idl \
-  nsIPluginDocument.idl \
-  nsIPluginHost.idl \
-  nsIPluginInputStream.idl \
-  nsIPluginInstanceOwner.idl \
-  nsIPluginTag.idl \
-  nsIPluginTagInfo.idl \
-  nspluginroot.idl \
-  $(NULL)
-
 EXPORTS = \
   npapi.h \
   npfunctions.h \
   nptypes.h \
   npruntime.h \
   nsPluginLogging.h \
   nsPluginNativeWindow.h \
   nsPluginsCID.h \
--- a/dom/plugins/base/moz.build
+++ b/dom/plugins/base/moz.build
@@ -1,8 +1,19 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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 += ['android']
 
+XPIDL_SOURCES += [
+    'nsIHTTPHeaderListener.idl',
+    'nsIPluginDocument.idl',
+    'nsIPluginHost.idl',
+    'nsIPluginInputStream.idl',
+    'nsIPluginInstanceOwner.idl',
+    'nsIPluginTag.idl',
+    'nsIPluginTagInfo.idl',
+    'nspluginroot.idl',
+]
+
--- a/dom/power/Makefile.in
+++ b/dom/power/Makefile.in
@@ -27,18 +27,11 @@ EXPORTS_mozilla/dom/power = \
   $(NULL)
 
 CPPSRCS = \
   PowerManager.cpp \
   PowerManagerService.cpp \
   WakeLock.cpp \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIDOMPowerManager.idl \
-  nsIDOMWakeLock.idl \
-  nsIDOMWakeLockListener.idl \
-  nsIPowerManagerService.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
--- a/dom/power/moz.build
+++ b/dom/power/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsIDOMPowerManager.idl',
+    'nsIDOMWakeLock.idl',
+    'nsIDOMWakeLockListener.idl',
+    'nsIPowerManagerService.idl',
+]
+
--- a/dom/system/Makefile.in
+++ b/dom/system/Makefile.in
@@ -12,20 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 MODULE          = dom
 XPIDL_MODULE    = dom_system
 LIBRARY_NAME    = domsystem_s
 LIBXUL_LIBRARY  = 1
 FAIL_ON_WARNINGS := 1
 
 DEFINES += -DDLL_PREFIX=\"$(DLL_PREFIX)\" -DDLL_SUFFIX=\"$(DLL_SUFFIX)\"
 
-XPIDLSRCS = \
-  nsIOSFileConstantsService.idl \
-  $(NULL)
-
 CPPSRCS     = \
   nsDeviceSensors.cpp \
   OSFileConstants.cpp \
   $(NULL)
 
 # We fire the nsDOMDeviceAcceleration
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/content/events/src \
--- a/dom/system/gonk/Makefile.in
+++ b/dom/system/gonk/Makefile.in
@@ -29,29 +29,16 @@ FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
 CPPSRCS = \
   SystemWorkerManager.cpp \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIAudioManager.idl \
-  nsINetworkManager.idl \
-  nsIRadioInterfaceLayer.idl \
-  nsIVolume.idl \
-  nsIVolumeMountLock.idl \
-  nsIVolumeService.idl \
-  nsIVolumeStat.idl \
-  nsIWorkerHolder.idl \
-  nsINavigatorAudioChannelManager.idl \
-  nsISystemWorkerManager.idl \
-  $(NULL)
-
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/src/geolocation \
   -I$(topsrcdir)/dom/telephony \
   -I$(topsrcdir)/dom/wifi \
   -I$(topsrcdir)/dom/bluetooth \
   -I$(topsrcdir)/content/events/src \
   $(NULL)
--- a/dom/system/gonk/moz.build
+++ b/dom/system/gonk/moz.build
@@ -8,8 +8,21 @@
 #     http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+XPIDL_SOURCES += [
+    'nsIAudioManager.idl',
+    'nsINavigatorAudioChannelManager.idl',
+    'nsINetworkManager.idl',
+    'nsIRadioInterfaceLayer.idl',
+    'nsISystemWorkerManager.idl',
+    'nsIVolume.idl',
+    'nsIVolumeMountLock.idl',
+    'nsIVolumeService.idl',
+    'nsIVolumeStat.idl',
+    'nsIWorkerHolder.idl',
+]
+
--- a/dom/system/moz.build
+++ b/dom/system/moz.build
@@ -11,8 +11,13 @@ elif toolkit == 'windows':
     DIRS += ['windows']
 elif toolkit == 'android':
     DIRS += ['android']
 
 if CONFIG['MOZ_B2G_RIL']:
     DIRS += ['gonk']
 
 TEST_DIRS += ['tests']
+
+XPIDL_SOURCES += [
+    'nsIOSFileConstantsService.idl',
+]
+
--- a/dom/telephony/Makefile.in
+++ b/dom/telephony/Makefile.in
@@ -18,23 +18,15 @@ FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
 CPPSRCS = \
   Telephony.cpp \
   TelephonyCall.cpp \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIDOMNavigatorTelephony.idl \
-  nsIDOMTelephony.idl \
-  nsIDOMTelephonyCall.idl \
-  nsIDOMCallEvent.idl \
-  nsITelephonyProvider.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/telephony/moz.build
+++ b/dom/telephony/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMCallEvent.idl',
+    'nsIDOMNavigatorTelephony.idl',
+    'nsIDOMTelephony.idl',
+    'nsIDOMTelephonyCall.idl',
+    'nsITelephonyProvider.idl',
+]
+
--- a/dom/time/Makefile.in
+++ b/dom/time/Makefile.in
@@ -30,17 +30,11 @@ CPPSRCS = \
   $(NULL)
 
 EXPORTS_mozilla/dom/time = \
   TimeService.h \
   TimeChangeObserver.h \
   DateCacheCleaner.h \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIDOMNavigatorTime.idl \
-  nsIDOMTimeManager.idl \
-  nsITimeService.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
--- a/dom/time/moz.build
+++ b/dom/time/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMNavigatorTime.idl',
+    'nsIDOMTimeManager.idl',
+    'nsITimeService.idl',
+]
+
--- a/dom/voicemail/Makefile.in
+++ b/dom/voicemail/Makefile.in
@@ -22,23 +22,15 @@ EXPORTS_NAMESPACES = mozilla/dom
 EXPORTS_mozilla/dom = \
   Voicemail.h \
   $(NULL)
 
 CPPSRCS = \
   Voicemail.cpp \
   $(NULL)
 
-XPIDLSRCS = \
-  nsINavigatorVoicemail.idl \
-  nsIDOMMozVoicemail.idl \
-  nsIDOMMozVoicemailEvent.idl \
-  nsIDOMMozVoicemailStatus.idl \
-  nsIVoicemailProvider.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 XPIDL_FLAGS += \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/interfaces/base \
   -I$(topsrcdir)/dom/interfaces/events \
   $(NULL)
--- a/dom/voicemail/moz.build
+++ b/dom/voicemail/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMMozVoicemail.idl',
+    'nsIDOMMozVoicemailEvent.idl',
+    'nsIDOMMozVoicemailStatus.idl',
+    'nsINavigatorVoicemail.idl',
+    'nsIVoicemailProvider.idl',
+]
+
--- a/dom/wifi/Makefile.in
+++ b/dom/wifi/Makefile.in
@@ -12,22 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 MODULE           = dom
 LIBRARY_NAME     = domwifi_s
 XPIDL_MODULE     = dom_wifi
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-XPIDLSRCS = \
-  nsIWifi.idl \
-  nsIDOMMozWifiStatusChangeEvent.idl \
-  nsIDOMMozWifiConnectionInfoEvent.idl \
-  $(NULL)
-
 EXTRA_COMPONENTS = \
   WifiWorker.js \
   WifiWorker.manifest \
   DOMWifiManager.js \
   DOMWifiManager.manifest \
   $(NULL)
 
 EXTRA_JS_MODULES = \
--- a/dom/wifi/moz.build
+++ b/dom/wifi/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDOMMozWifiConnectionInfoEvent.idl',
+    'nsIDOMMozWifiStatusChangeEvent.idl',
+    'nsIWifi.idl',
+]
+
--- a/dom/workers/test/extensions/traditional/Makefile.in
+++ b/dom/workers/test/extensions/traditional/Makefile.in
@@ -7,20 +7,16 @@ topsrcdir        = @top_srcdir@
 srcdir           = @srcdir@
 VPATH            = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 XPI_NAME = worker
 XPIDL_MODULE = WorkerTest
 
-XPIDLSRCS = \
-  nsIWorkerTest.idl \
-  $(NULL)
-
 EXTRA_COMPONENTS = \
   WorkerTest.js \
   WorkerTest.manifest \
   $(NULL)
 
 DIST_FILES = \
   install.rdf \
   worker.js \
--- a/dom/workers/test/extensions/traditional/moz.build
+++ b/dom/workers/test/extensions/traditional/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIWorkerTest.idl',
+]
+
--- a/editor/composer/public/Makefile.in
+++ b/editor/composer/public/Makefile.in
@@ -7,14 +7,10 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= composer
 
-XPIDLSRCS	= \
-		nsIEditingSession.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/editor/composer/public/moz.build
+++ b/editor/composer/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIEditingSession.idl',
+]
+
--- a/editor/idl/Makefile.in
+++ b/editor/idl/Makefile.in
@@ -8,31 +8,10 @@ topsrcdir       := @top_srcdir@
 srcdir          := @srcdir@
 VPATH           := @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE          := editor
 GRE_MODULE      := 1
 
-XPIDLSRCS       := \
-                nsIDocumentStateListener.idl \
-                nsIEditActionListener.idl \
-                nsIEditor.idl \
-                nsIEditorIMESupport.idl \
-                nsIEditorMailSupport.idl \
-                nsIEditorObserver.idl \
-                nsIEditorSpellCheck.idl \
-                nsIEditorStyleSheets.idl \
-                nsIHTMLEditor.idl \
-                nsIHTMLObjectResizer.idl \
-                nsIHTMLAbsPosEditor.idl \
-                nsIHTMLObjectResizeListener.idl \
-                nsIHTMLInlineTableEditor.idl \
-                nsIPlaintextEditor.idl \
-                nsITableEditor.idl \
-                nsIURIRefObject.idl \
-                nsIContentFilter.idl \
-                nsPIEditorTransaction.idl \
-                $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/editor/idl/moz.build
+++ b/editor/idl/moz.build
@@ -1,5 +1,26 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIContentFilter.idl',
+    'nsIDocumentStateListener.idl',
+    'nsIEditActionListener.idl',
+    'nsIEditor.idl',
+    'nsIEditorIMESupport.idl',
+    'nsIEditorMailSupport.idl',
+    'nsIEditorObserver.idl',
+    'nsIEditorSpellCheck.idl',
+    'nsIEditorStyleSheets.idl',
+    'nsIHTMLAbsPosEditor.idl',
+    'nsIHTMLEditor.idl',
+    'nsIHTMLInlineTableEditor.idl',
+    'nsIHTMLObjectResizeListener.idl',
+    'nsIHTMLObjectResizer.idl',
+    'nsIPlaintextEditor.idl',
+    'nsITableEditor.idl',
+    'nsIURIRefObject.idl',
+    'nsPIEditorTransaction.idl',
+]
+
--- a/editor/txmgr/idl/Makefile.in
+++ b/editor/txmgr/idl/Makefile.in
@@ -7,17 +7,10 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = txmgr
 
-XPIDLSRCS =                               \
-            nsITransaction.idl            \
-            nsITransactionList.idl        \
-            nsITransactionListener.idl    \
-            nsITransactionManager.idl     \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/editor/txmgr/idl/moz.build
+++ b/editor/txmgr/idl/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsITransaction.idl',
+    'nsITransactionList.idl',
+    'nsITransactionListener.idl',
+    'nsITransactionManager.idl',
+]
+
--- a/editor/txtsvc/public/Makefile.in
+++ b/editor/txtsvc/public/Makefile.in
@@ -15,15 +15,10 @@ GRE_MODULE	= 1
 
 EXPORTS		= \
 		nsISpellChecker.h \
 		nsITextService.h \
 		nsITextServicesDocument.h \
 		nsTextServicesCID.h \
 		$(NULL)
 
-XPIDLSRCS	= \
-		nsITextServicesFilter.idl \
-		nsIInlineSpellChecker.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/editor/txtsvc/public/moz.build
+++ b/editor/txtsvc/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIInlineSpellChecker.idl',
+    'nsITextServicesFilter.idl',
+]
+
--- a/embedding/base/Makefile.in
+++ b/embedding/base/Makefile.in
@@ -12,20 +12,9 @@ VPATH           = @srcdir@
 MODULE          = embed_base
 
 include $(DEPTH)/config/autoconf.mk
 
 SDK_HEADERS         = \
                 nsEmbedCID.h \
                 $(NULL)
 
-SDK_XPIDLSRCS   = \
-                nsIWindowCreator.idl \
-                $(NULL)
-
-
-XPIDLSRCS	    = \
-                nsIWindowCreator2.idl \
-                nsIWindowProvider.idl \
-                nsIDialogCreator.idl \
-                $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/embedding/base/moz.build
+++ b/embedding/base/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDialogCreator.idl',
+    'nsIWindowCreator.idl',
+    'nsIWindowCreator2.idl',
+    'nsIWindowProvider.idl',
+]
+
--- a/embedding/browser/webBrowser/Makefile.in
+++ b/embedding/browser/webBrowser/Makefile.in
@@ -22,37 +22,16 @@ EXPORTS         = \
                 nsCTooltipTextProvider.h \
                 $(NULL)
 
 LOCAL_INCLUDES	= \
 		-I$(srcdir)/../../../content/base/src \
 		-I$(srcdir)/../../../content/svg/content/src \
 		$(NULL)
 		
-SDK_XPIDLSRCS   = \
-		nsIContextMenuListener.idl  \
-		nsIEmbeddingSiteWindow.idl  \
-		nsITooltipListener.idl	    \
-		nsITooltipTextProvider.idl  \
-		nsIWebBrowser.idl	    \
-		nsIWebBrowserChrome.idl	    \
-		nsIWebBrowserChromeFocus.idl \
-		nsIWebBrowserFocus.idl	    \
-		nsIWebBrowserSetup.idl	    \
-		nsIWebBrowserStream.idl	    \
-                $(NULL)
-
-XPIDLSRCS	= \
-		nsCWebBrowser.idl			\
-		nsICommandHandler.idl			\
-		nsIContextMenuListener2.idl \
-		nsIWebBrowserChrome2.idl	    \
-		nsIWebBrowserChrome3.idl	    \
-		$(NULL)
-
 CPPSRCS		= \
 		nsDocShellTreeOwner.cpp		\
 		nsWebBrowser.cpp		\
 		nsCommandHandler.cpp		\
         nsWebBrowserContentPolicy.cpp   \
 		nsContextMenuInfo.cpp		\
 		nsEmbedStream.cpp		\
 		$(NULL)
--- a/embedding/browser/webBrowser/moz.build
+++ b/embedding/browser/webBrowser/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsCWebBrowser.idl',
+    'nsICommandHandler.idl',
+    'nsIContextMenuListener.idl',
+    'nsIContextMenuListener2.idl',
+    'nsIEmbeddingSiteWindow.idl',
+    'nsITooltipListener.idl',
+    'nsITooltipTextProvider.idl',
+    'nsIWebBrowser.idl',
+    'nsIWebBrowserChrome.idl',
+    'nsIWebBrowserChrome2.idl',
+    'nsIWebBrowserChrome3.idl',
+    'nsIWebBrowserChromeFocus.idl',
+    'nsIWebBrowserFocus.idl',
+    'nsIWebBrowserSetup.idl',
+    'nsIWebBrowserStream.idl',
+]
+
--- a/embedding/components/commandhandler/public/Makefile.in
+++ b/embedding/components/commandhandler/public/Makefile.in
@@ -7,19 +7,10 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= commandhandler
 
-XPIDLSRCS	= \
-        nsICommandManager.idl \
-        nsICommandParams.idl \
-        nsIControllerCommand.idl \
-        nsIControllerContext.idl \
-        nsIControllerCommandTable.idl \
-        nsPICommandUpdater.idl \
-        $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/embedding/components/commandhandler/public/moz.build
+++ b/embedding/components/commandhandler/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsICommandManager.idl',
+    'nsICommandParams.idl',
+    'nsIControllerCommand.idl',
+    'nsIControllerCommandTable.idl',
+    'nsIControllerContext.idl',
+    'nsPICommandUpdater.idl',
+]
+
--- a/embedding/components/find/public/Makefile.in
+++ b/embedding/components/find/public/Makefile.in
@@ -7,15 +7,10 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= find
 
-SDK_XPIDLSRCS   = nsIWebBrowserFind.idl \
-		  $(NULL)
-XPIDLSRCS	= nsIFind.idl \
-                  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/embedding/components/find/public/moz.build
+++ b/embedding/components/find/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIFind.idl',
+    'nsIWebBrowserFind.idl',
+]
+
--- a/embedding/components/webbrowserpersist/public/Makefile.in
+++ b/embedding/components/webbrowserpersist/public/Makefile.in
@@ -8,14 +8,10 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= webbrowserpersist
 GRE_MODULE	= 1
 
-XPIDLSRCS	= nsIWebBrowserPersist.idl \
-                  nsCWebBrowserPersist.idl \
-                  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/embedding/components/webbrowserpersist/public/moz.build
+++ b/embedding/components/webbrowserpersist/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsCWebBrowserPersist.idl',
+    'nsIWebBrowserPersist.idl',
+]
+
--- a/embedding/components/windowwatcher/public/Makefile.in
+++ b/embedding/components/windowwatcher/public/Makefile.in
@@ -9,24 +9,13 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= windowwatcher
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS   = nsIWindowWatcher.idl \
-		  nsIPromptService.idl \
-		  $(NULL)
-
-XPIDLSRCS	= nsIDialogParamBlock.idl \
-                  nsIPromptService2.idl \
-                  nsPIPromptService.idl \
-                  nsPIWindowWatcher.idl \
-                  nsIPromptFactory.idl \
-                  $(NULL)
-
 EXPORTS		= nsPromptUtils.h \
                   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
--- a/embedding/components/windowwatcher/public/moz.build
+++ b/embedding/components/windowwatcher/public/moz.build
@@ -1,5 +1,15 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIDialogParamBlock.idl',
+    'nsIPromptFactory.idl',
+    'nsIPromptService.idl',
+    'nsIPromptService2.idl',
+    'nsIWindowWatcher.idl',
+    'nsPIPromptService.idl',
+    'nsPIWindowWatcher.idl',
+]
+
--- a/extensions/cookie/Makefile.in
+++ b/extensions/cookie/Makefile.in
@@ -23,16 +23,11 @@ CPPSRCS		= \
 		nsCookieModule.cpp \
 		nsPermission.cpp \
 		nsPermissionManager.cpp \
 		nsPopupWindowManager.cpp \
 		nsCookiePromptService.cpp \
 		nsCookiePermission.cpp \
 		$(NULL)
 
-XPIDLSRCS	= \
-		nsICookieAcceptDialog.idl \
-		nsICookiePromptService.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
--- a/extensions/cookie/moz.build
+++ b/extensions/cookie/moz.build
@@ -1,6 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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 += ['test']
+
+XPIDL_SOURCES += [
+    'nsICookieAcceptDialog.idl',
+    'nsICookiePromptService.idl',
+]
+
--- a/extensions/pref/autoconfig/public/Makefile.in
+++ b/extensions/pref/autoconfig/public/Makefile.in
@@ -6,19 +6,14 @@ DEPTH        = @DEPTH@
 topsrcdir    = @top_srcdir@
 srcdir       = @srcdir@
 VPATH        = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE       = autoconfig
 
-XPIDLSRCS    = \
-               nsIAutoConfig.idl \
-               nsIReadConfig.idl \
-               $(NULL)
-
 ifdef MOZ_LDAP_XPCOM
 XPIDLSRCS += nsILDAPSyncQuery.idl
 endif
 
 include $(topsrcdir)/config/rules.mk
 
--- a/extensions/pref/autoconfig/public/moz.build
+++ b/extensions/pref/autoconfig/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIAutoConfig.idl',
+    'nsIReadConfig.idl',
+]
+
--- a/extensions/spellcheck/idl/Makefile.in
+++ b/extensions/spellcheck/idl/Makefile.in
@@ -6,17 +6,10 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 MODULE			= spellchecker
 
 include $(DEPTH)/config/autoconf.mk
 
-XPIDLSRCS =                 \
-		mozIPersonalDictionary.idl \
-		mozISpellCheckingEngine.idl \
-		mozISpellI18NUtil.idl \
-		mozISpellI18NManager.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/extensions/spellcheck/idl/moz.build
+++ b/extensions/spellcheck/idl/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'mozIPersonalDictionary.idl',
+    'mozISpellCheckingEngine.idl',
+    'mozISpellI18NManager.idl',
+    'mozISpellI18NUtil.idl',
+]
+
--- a/gfx/src/Makefile.in
+++ b/gfx/src/Makefile.in
@@ -16,21 +16,16 @@ LIBRARY_NAME   = gkgfx
 EXPORT_LIBRARY = 1
 GRE_MODULE     = 1
 LIBXUL_LIBRARY = 1
 IS_COMPONENT   = 1
 ifndef _MSC_VER
 FAIL_ON_WARNINGS = 1
 endif # !_MSC_VER
 
-XPIDLSRCS = \
-	nsIFontEnumerator.idl \
-	nsIScriptableRegion.idl \
-	$(NULL)
-
 EXPORTS	= \
 	gfxCore.h \
 	gfxCrashReporterUtils.h \
 	nsColor.h \
 	nsColorNames.h \
 	nsColorNameList.h \
 	nsCoord.h \
 	nsFont.h \
--- a/gfx/src/moz.build
+++ b/gfx/src/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIFontEnumerator.idl',
+    'nsIScriptableRegion.idl',
+]
+
--- a/hal/Makefile.in
+++ b/hal/Makefile.in
@@ -31,20 +31,16 @@ EXPORTS_mozilla = \
   Hal.h \
   HalImpl.h \
   HalSandbox.h \
   HalSensor.h \
   HalTypes.h \
   HalWakeLock.h \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIRecoveryService.idl \
-  $(NULL)
-
 CPPSRCS = \
   Hal.cpp \
   SandboxHal.cpp \
   WindowIdentifier.cpp \
   HalWakeLock.cpp \
   $(NULL)
 
 ifeq (android,$(MOZ_WIDGET_TOOLKIT))
--- a/hal/moz.build
+++ b/hal/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIRecoveryService.idl',
+]
+
--- a/image/decoders/icon/Makefile.in
+++ b/image/decoders/icon/Makefile.in
@@ -43,15 +43,13 @@ PLATFORM = android
 endif
 
 CPPSRCS		= \
 		nsIconURI.cpp \
 		nsIconModule.cpp \
 		nsIconProtocolHandler.cpp \
 		$(NULL)
 
-XPIDLSRCS	= nsIIconURI.idl
-
 SHARED_LIBRARY_LIBS = $(PLATFORM)/$(LIB_PREFIX)imgicon$(PLATFORM)_s.$(LIB_SUFFIX)
 
 LOCAL_INCLUDES	= -I$(srcdir)/$(PLATFORM)
 
 include $(topsrcdir)/config/rules.mk
--- a/image/decoders/icon/moz.build
+++ b/image/decoders/icon/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIIconURI.idl',
+]
+
--- a/image/decoders/icon/qt/public/Makefile.in
+++ b/image/decoders/icon/qt/public/Makefile.in
@@ -6,12 +6,10 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= gtkqticonsconverter
 
-XPIDLSRCS	= nsGtkQtIconsConverter.idl
-
 include $(topsrcdir)/config/rules.mk
 
--- a/image/decoders/icon/qt/public/moz.build
+++ b/image/decoders/icon/qt/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsGtkQtIconsConverter.idl',
+]
+
--- a/image/public/Makefile.in
+++ b/image/public/Makefile.in
@@ -10,23 +10,10 @@ VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= imglib2
 GRE_MODULE	= 1
 
 EXPORTS		= ImageLogging.h
 
-XPIDLSRCS	= \
-		imgICache.idl             \
-		imgIContainer.idl         \
-		imgIContainerDebug.idl    \
-		imgIEncoder.idl           \
-		imgILoader.idl            \
-		imgINotificationObserver.idl \
-		imgIOnloadBlocker.idl     \
-		imgIRequest.idl           \
-		imgIScriptedNotificationObserver.idl \
-		imgITools.idl             \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/image/public/moz.build
+++ b/image/public/moz.build
@@ -1,5 +1,18 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'imgICache.idl',
+    'imgIContainer.idl',
+    'imgIContainerDebug.idl',
+    'imgIEncoder.idl',
+    'imgILoader.idl',
+    'imgINotificationObserver.idl',
+    'imgIOnloadBlocker.idl',
+    'imgIRequest.idl',
+    'imgIScriptedNotificationObserver.idl',
+    'imgITools.idl',
+]
+
--- a/intl/locale/idl/Makefile.in
+++ b/intl/locale/idl/Makefile.in
@@ -8,17 +8,10 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= locale
 GRE_MODULE	= 1
 
-XPIDLSRCS	= \
-		nsILocale.idl \
-		nsILocaleService.idl \
-		nsIScriptableDateFormat.idl \
-		nsICollation.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/intl/locale/idl/moz.build
+++ b/intl/locale/idl/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsICollation.idl',
+    'nsILocale.idl',
+    'nsILocaleService.idl',
+    'nsIScriptableDateFormat.idl',
+]
+
--- a/intl/lwbrk/idl/Makefile.in
+++ b/intl/lwbrk/idl/Makefile.in
@@ -7,13 +7,9 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= lwbrk
 
-XPIDLSRCS	= \
-	nsISemanticUnitScanner.idl \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/intl/lwbrk/idl/moz.build
+++ b/intl/lwbrk/idl/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsISemanticUnitScanner.idl',
+]
+
--- a/intl/strres/public/Makefile.in
+++ b/intl/strres/public/Makefile.in
@@ -8,15 +8,10 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= intl
 GRE_MODULE	= 1
 
-XPIDLSRCS	= \
-			nsIStringBundle.idl \
-			nsIStringBundleOverride.idl \
-			$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/intl/strres/public/moz.build
+++ b/intl/strres/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIStringBundle.idl',
+    'nsIStringBundleOverride.idl',
+]
+
--- a/intl/uconv/idl/Makefile.in
+++ b/intl/uconv/idl/Makefile.in
@@ -8,17 +8,9 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= uconv
 GRE_MODULE	= 1
 
-XPIDLSRCS	= \
-	nsITextToSubURI.idl \
-	nsICurrentCharsetListener.idl \
-	nsICharsetConverterManager.idl \
-	nsIScriptableUConv.idl \
-	nsIUTF8ConverterService.idl \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/intl/uconv/idl/moz.build
+++ b/intl/uconv/idl/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsICharsetConverterManager.idl',
+    'nsICurrentCharsetListener.idl',
+    'nsIScriptableUConv.idl',
+    'nsITextToSubURI.idl',
+    'nsIUTF8ConverterService.idl',
+]
+
--- a/intl/unicharutil/idl/Makefile.in
+++ b/intl/unicharutil/idl/Makefile.in
@@ -8,16 +8,10 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= unicharutil
 GRE_MODULE	= 1
 
-XPIDLSRCS	= \
-		nsIEntityConverter.idl \
-		nsISaveAsCharset.idl \
-		nsIUnicodeNormalizer.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/intl/unicharutil/idl/moz.build
+++ b/intl/unicharutil/idl/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIEntityConverter.idl',
+    'nsISaveAsCharset.idl',
+    'nsIUnicodeNormalizer.idl',
+]
+
--- a/js/ductwork/debugger/Makefile.in
+++ b/js/ductwork/debugger/Makefile.in
@@ -27,15 +27,11 @@ EXTRA_DSO_LDOPTS += \
   $(MOZ_COMPONENT_LIBS) \
   $(MOZ_JS_LIBS) \
   $(NULL)
 
 EXTRA_JS_MODULES = \
   jsdebugger.jsm \
   $(NULL)
 
-XPIDLSRCS = \
-  IJSDebugger.idl \
-  $(NULL)
-
 XPCSHELL_TESTS = tests
 
 include $(topsrcdir)/config/rules.mk
--- a/js/ductwork/debugger/moz.build
+++ b/js/ductwork/debugger/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'IJSDebugger.idl',
+]
+
--- a/js/jsd/idl/Makefile.in
+++ b/js/jsd/idl/Makefile.in
@@ -8,13 +8,9 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= jsdebug
 XPIDL_MODULE = jsdservice
 
-XPIDLSRCS	= \
-		jsdIDebuggerService.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/js/jsd/idl/moz.build
+++ b/js/jsd/idl/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'jsdIDebuggerService.idl',
+]
+
--- a/js/xpconnect/idl/Makefile.in
+++ b/js/xpconnect/idl/Makefile.in
@@ -8,31 +8,10 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= xpconnect
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS   = \
-		mozIJSSubScriptLoader.idl \
-		$(NULL)
-
-XPIDLSRCS	= \
-		xpccomponents.idl \
-		xpcjsid.idl \
-		xpcexception.idl \
-		xpcIJSModuleLoader.idl \
-		nsIJSContextStack.idl \
-		nsIJSRuntimeService.idl \
-		nsIXPConnect.idl \
-		nsIXPCSecurityManager.idl \
-		nsIXPCScriptable.idl \
-		nsIScriptError.idl \
-		nsIXPCScriptNotify.idl \
-		xpcIJSWeakReference.idl \
-		xpcIJSGetFactory.idl \
-		nsIJSEngineTelemetryStats.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/js/xpconnect/idl/moz.build
+++ b/js/xpconnect/idl/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'mozIJSSubScriptLoader.idl',
+    'nsIJSContextStack.idl',
+    'nsIJSEngineTelemetryStats.idl',
+    'nsIJSRuntimeService.idl',
+    'nsIScriptError.idl',
+    'nsIXPCScriptNotify.idl',
+    'nsIXPCScriptable.idl',
+    'nsIXPCSecurityManager.idl',
+    'nsIXPConnect.idl',
+    'xpcIJSGetFactory.idl',
+    'xpcIJSModuleLoader.idl',
+    'xpcIJSWeakReference.idl',
+    'xpccomponents.idl',
+    'xpcexception.idl',
+    'xpcjsid.idl',
+]
+
--- a/js/xpconnect/tests/idl/Makefile.in
+++ b/js/xpconnect/tests/idl/Makefile.in
@@ -7,20 +7,14 @@ DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = xpctest
 
-XPIDLSRCS = \
-  xpctest_attributes.idl \
-  xpctest_interfaces.idl \
-  xpctest_params.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 componentdir = js/xpconnect/tests/components
 libs:: $(XPIDL_GEN_DIR)/$(MODULE).xpt
 	$(INSTALL) $^ $(testxpcobjdir)/$(componentdir)/native
 	$(INSTALL) $^ $(testxpcobjdir)/$(componentdir)/js
--- a/js/xpconnect/tests/idl/moz.build
+++ b/js/xpconnect/tests/idl/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'xpctest_attributes.idl',
+    'xpctest_interfaces.idl',
+    'xpctest_params.idl',
+]
+
--- a/layout/base/Makefile.in
+++ b/layout/base/Makefile.in
@@ -16,20 +16,16 @@ GRE_MODULE	= 1
 LIBRARY_NAME	= gkbase_s
 LIBXUL_LIBRARY	= 1
 ifndef _MSC_VER
 FAIL_ON_WARNINGS = 1
 endif # !_MSC_VER
 
 
 
-XPIDLSRCS	= \
-		nsIStyleSheetService.idl	\
-		$(NULL)
-
 EXPORTS_NAMESPACES = mozilla
 
 EXPORTS		= \
 		FrameLayerBuilder.h \
 		FramePropertyTable.h \
 		nsArenaMemoryStats.h \
 		nsBidi.h \
 		nsBidiPresUtils.h \
--- a/layout/base/moz.build
+++ b/layout/base/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['tests']
+
+XPIDL_SOURCES += [
+    'nsIStyleSheetService.idl',
+]
+
--- a/layout/forms/Makefile.in
+++ b/layout/forms/Makefile.in
@@ -13,18 +13,16 @@ include $(DEPTH)/config/autoconf.mk
 MODULE		= layout
 XPIDL_MODULE	= layout_forms
 LIBRARY_NAME	= gkforms_s
 LIBXUL_LIBRARY	= 1
 ifndef _MSC_VER
 FAIL_ON_WARNINGS = 1
 endif # !_MSC_VER
 
-XPIDLSRCS       = nsICapturePicker.idl
-
 EXPORTS		= \
 		nsIListControlFrame.h \
 		nsIComboboxControlFrame.h \
 		nsIFormControlFrame.h \
 		nsISelectControlFrame.h \
 		nsITextControlFrame.h \
 		$(NULL)
 
--- a/layout/forms/moz.build
+++ b/layout/forms/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsICapturePicker.idl',
+]
+
--- a/layout/inspector/public/Makefile.in
+++ b/layout/inspector/public/Makefile.in
@@ -8,21 +8,10 @@ DEPTH=@DEPTH@
 topsrcdir=@top_srcdir@
 srcdir=@srcdir@
 VPATH=@srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE=inspector
 
-XPIDLSRCS = inIDOMView.idl \
-            inIDeepTreeWalker.idl \
-            inIFlasher.idl \
-            inISearchProcess.idl \
-            inISearchObserver.idl \
-            inICSSValueSearch.idl \
-            inIDOMUtils.idl \
-            nsIDOMFontFace.idl \
-            nsIDOMFontFaceList.idl \
-	    $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/layout/inspector/public/moz.build
+++ b/layout/inspector/public/moz.build
@@ -1,5 +1,17 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'inICSSValueSearch.idl',
+    'inIDOMUtils.idl',
+    'inIDOMView.idl',
+    'inIDeepTreeWalker.idl',
+    'inIFlasher.idl',
+    'inISearchObserver.idl',
+    'inISearchProcess.idl',
+    'nsIDOMFontFace.idl',
+    'nsIDOMFontFaceList.idl',
+]
+
--- a/layout/printing/Makefile.in
+++ b/layout/printing/Makefile.in
@@ -13,22 +13,16 @@ MODULE		= layout
 XPIDL_MODULE	= layout_printing
 GRE_MODULE	= 1
 LIBRARY_NAME	= gkprinting_s
 LIBXUL_LIBRARY	= 1
 ifndef _MSC_VER
 FAIL_ON_WARNINGS = 1
 endif # !_MSC_VER
 
-XPIDLSRCS	= \
-		nsIPrintProgress.idl  \
-		nsIPrintProgressParams.idl  \
-		nsIPrintStatusFeedback.idl  \
-		$(NULL)
-
 CPPSRCS		= \
 		nsPrintEngine.cpp \
 		nsPrintData.cpp \
 		nsPrintObject.cpp \
 		nsPagePrintTimer.cpp \
 		nsPrintPreviewListener.cpp \
 		$(NULL)
 
--- a/layout/printing/moz.build
+++ b/layout/printing/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIPrintProgress.idl',
+    'nsIPrintProgressParams.idl',
+    'nsIPrintStatusFeedback.idl',
+]
+
--- a/layout/tools/layout-debug/src/Makefile.in
+++ b/layout/tools/layout-debug/src/Makefile.in
@@ -15,21 +15,16 @@ LIBRARY_NAME	= gkdebug
 EXPORT_LIBRARY	= 1
 IS_COMPONENT	= 1
 MODULE_NAME	= nsLayoutDebugModule
 LIBXUL_LIBRARY	= 1
 GRE_MODULE	= 1
 FAIL_ON_WARNINGS = 1
 
 
-XPIDLSRCS	= \
-		nsILayoutRegressionTester.idl \
-		nsILayoutDebuggingTools.idl \
-		$(NULL)
-
 EXPORTS		= \
 		nsLayoutDebugCIID.h \
 		$(NULL)
 
 CPPSRCS		= \
 		nsDebugFactory.cpp \
 		nsLayoutDebugCLH.cpp \
 		nsLayoutDebuggingTools.cpp \
--- a/layout/tools/layout-debug/src/moz.build
+++ b/layout/tools/layout-debug/src/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsILayoutDebuggingTools.idl',
+    'nsILayoutRegressionTester.idl',
+]
+
--- a/layout/xul/base/public/Makefile.in
+++ b/layout/xul/base/public/Makefile.in
@@ -15,22 +15,10 @@ XPIDL_MODULE	= layout_xul
 GRE_MODULE	= 1
 
 EXPORTS		= \
 		nsPIBoxObject.h \
 		nsIScrollbarMediator.h \
 		nsXULPopupManager.h \
 		$(NULL)
 
-XPIDLSRCS=      nsIBoxObject.idl                  \
-                nsIScrollBoxObject.idl \
-                nsIPopupBoxObject.idl \
-                nsIMenuBoxObject.idl \
-                nsIBrowserBoxObject.idl \
-                nsIIFrameBoxObject.idl \
-                nsIEditorBoxObject.idl \
-                nsIContainerBoxObject.idl \
-                nsIListBoxObject.idl \
-                nsISliderListener.idl \
-                $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/layout/xul/base/public/moz.build
+++ b/layout/xul/base/public/moz.build
@@ -1,5 +1,18 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIBoxObject.idl',
+    'nsIBrowserBoxObject.idl',
+    'nsIContainerBoxObject.idl',
+    'nsIEditorBoxObject.idl',
+    'nsIIFrameBoxObject.idl',
+    'nsIListBoxObject.idl',
+    'nsIMenuBoxObject.idl',
+    'nsIPopupBoxObject.idl',
+    'nsIScrollBoxObject.idl',
+    'nsISliderListener.idl',
+]
+
--- a/layout/xul/tree/Makefile.in
+++ b/layout/xul/tree/Makefile.in
@@ -11,24 +11,16 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= layout
 XPIDL_MODULE	= layout_xul_tree
 LIBRARY_NAME	= gkxultree_s
 LIBXUL_LIBRARY  = 1
 FAIL_ON_WARNINGS = 1
 
-XPIDLSRCS	= \
-		nsITreeColumns.idl \
-		nsITreeView.idl \
-		nsITreeSelection.idl \
-		nsITreeBoxObject.idl \
-		nsITreeContentView.idl \
-		$(NULL)
-
 CPPSRCS		= \
 		nsTreeBodyFrame.cpp \
 		nsTreeBoxObject.cpp \
 		nsTreeColFrame.cpp \
 		nsTreeColumns.cpp \
 		nsTreeContentView.cpp \
 		nsTreeImageListener.cpp \
 		nsTreeSelection.cpp \
--- a/layout/xul/tree/moz.build
+++ b/layout/xul/tree/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsITreeBoxObject.idl',
+    'nsITreeColumns.idl',
+    'nsITreeContentView.idl',
+    'nsITreeSelection.idl',
+    'nsITreeView.idl',
+]
+
--- a/mobile/android/components/Makefile.in
+++ b/mobile/android/components/Makefile.in
@@ -6,20 +6,16 @@ DEPTH      = @DEPTH@
 topsrcdir  = @top_srcdir@
 srcdir     = @srcdir@
 VPATH      = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = MobileComponents
 
-XPIDLSRCS = \
-        SessionStore.idl \
-        $(NULL)
-
 EXTRA_PP_COMPONENTS = \
         MobileComponents.manifest \
         AboutRedirector.js \
         BrowserCLH.js \
         DirectoryProvider.js\
         HelperAppDialog.js \
         Sidebar.js \
         SessionStore.js \
--- a/mobile/android/components/build/Makefile.in
+++ b/mobile/android/components/build/Makefile.in
@@ -15,18 +15,16 @@ LIBRARY_NAME    = browsercomps
 LIBXUL_LIBRARY  = 1
 
 IS_COMPONENT	= 1
 EXPORT_LIBRARY  = 1
 
 EXPORTS = nsBrowserComponents.h
 
 
-XPIDLSRCS = nsIShellService.idl
-
 CPPSRCS = \
 	nsBrowserModule.cpp \
 	nsShellService.cpp \
 	$(NULL)
 
 ifdef MOZ_ANDROID_HISTORY
 CPPSRCS += nsAndroidHistory.cpp
 LOCAL_INCLUDES += \
--- a/mobile/android/components/build/moz.build
+++ b/mobile/android/components/build/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIShellService.idl',
+]
+
--- a/mobile/android/components/moz.build
+++ b/mobile/android/components/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'SessionStore.idl',
+]
+
--- a/modules/libjar/Makefile.in
+++ b/modules/libjar/Makefile.in
@@ -18,15 +18,13 @@ IS_COMPONENT	= 1
 MODULE_NAME	= nsJarModule
 GRE_MODULE	= 1
 LIBXUL_LIBRARY = 1
 FAIL_ON_WARNINGS = 1
 
 
 CPPSRCS		= $(MODULES_LIBJAR_LCPPSRCS)
 
-XPIDLSRCS	= $(MODULES_LIBJAR_LXPIDLSRCS)
-
 EXPORTS		= $(MODULES_LIBJAR_LEXPORTS)
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
--- a/modules/libjar/moz.build
+++ b/modules/libjar/moz.build
@@ -2,8 +2,13 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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_ZIPWRITER']:
     DIRS += ['zipwriter']
 
 TEST_TOOL_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    '$(MODULES_LIBJAR_LXPIDLSRCS)',
+]
+
--- a/modules/libjar/zipwriter/public/Makefile.in
+++ b/modules/libjar/zipwriter/public/Makefile.in
@@ -6,13 +6,9 @@ DEPTH                 = @DEPTH@
 topsrcdir             = @top_srcdir@
 srcdir                = @srcdir@
 VPATH                 = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE                = zipwriter
 
-XPIDLSRCS = \
-  nsIZipWriter.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/modules/libjar/zipwriter/public/moz.build
+++ b/modules/libjar/zipwriter/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIZipWriter.idl',
+]
+
--- a/modules/libpref/public/Makefile.in
+++ b/modules/libpref/public/Makefile.in
@@ -10,26 +10,14 @@ VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= pref
 GRE_MODULE	= 1
 
 EXPORTS_NAMESPACES = mozilla
 
-SDK_XPIDLSRCS   = \
-              nsIPrefService.idl \
-              nsIPrefBranch.idl \
-              nsIPrefBranch2.idl \
-              nsIPrefLocalizedString.idl \
-              $(NULL)
-
-XPIDLSRCS	= \
-              nsIPrefBranchInternal.idl \
-              nsIRelativeFilePref.idl \
-              $(NULL)
-
 EXPORTS_mozilla = \
               Preferences.h \
               $(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
--- a/modules/libpref/public/moz.build
+++ b/modules/libpref/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIPrefBranch.idl',
+    'nsIPrefBranch2.idl',
+    'nsIPrefBranchInternal.idl',
+    'nsIPrefLocalizedString.idl',
+    'nsIPrefService.idl',
+    'nsIRelativeFilePref.idl',
+]
+
--- a/netwerk/base/public/Makefile.in
+++ b/netwerk/base/public/Makefile.in
@@ -9,124 +9,16 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= necko
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS   = \
-		nsIChannel.idl \
-		nsILoadGroup.idl \
-		nsIProtocolHandler.idl \
-		nsIRequest.idl \
-		nsIRequestObserver.idl \
-		nsIStreamListener.idl \
-		nsIIOService.idl \
-		nsIURI.idl \
-		nsIURL.idl \
-		nsIFileURL.idl \
-		nsIUploadChannel.idl \
-		nsITraceableChannel.idl \
-		$(NULL)
-
-XPIDLSRCS	= \
-		nsIDashboard.idl \
-		nsIDashboardEventNotifier.idl \
-		nsIApplicationCache.idl \
-		nsIApplicationCacheChannel.idl \
-		nsIApplicationCacheContainer.idl \
-		nsIApplicationCacheService.idl \
-		nsIAuthInformation.idl \
-		nsIAuthPrompt.idl \
-		nsIAuthPrompt2.idl \
-		nsIAuthPromptAdapterFactory.idl \
-		nsIAuthPromptCallback.idl \
-		nsIAsyncStreamCopier.idl \
-		nsIAsyncVerifyRedirectCallback.idl \
-		nsIBackgroundFileSaver.idl \
-		nsIBufferedStreams.idl \
-		nsICancelable.idl \
-		nsIChannelPolicy.idl \
-		nsICryptoHash.idl \
-		nsICryptoHMAC.idl \
-		nsIDownloader.idl \
-		nsIEncodedChannel.idl \
-		nsIFileStreams.idl \
-		nsIIncrementalDownload.idl \
-		nsIInputStreamPump.idl \
-		nsIInputStreamChannel.idl \
-		nsIIOService2.idl \
-		nsIMIMEInputStream.idl \
-		nsINetAddr.idl \
-		nsINetworkLinkService.idl \
-		nsIPermission.idl \
-		nsIPermissionManager.idl \
-		nsIPrivateBrowsingChannel.idl \
-		nsIProgressEventSink.idl \
-		nsIPrompt.idl \
-		nsIProtocolProxyService.idl \
-		nsIProtocolProxyService2.idl \
-		nsIProtocolProxyFilter.idl \
-		nsIProtocolProxyCallback.idl \
-		nsIProxiedProtocolHandler.idl \
-		nsIProxyInfo.idl \
-		nsITransport.idl \
-		nsISocketTransport.idl \
-		nsISocketTransportService.idl \
-		nsISpeculativeConnect.idl \
-		nsIServerSocket.idl \
-		nsIUDPServerSocket.idl \
-		nsIResumableChannel.idl \
-		nsIRequestObserverProxy.idl \
-		nsISecurityInfoProvider.idl \
-		nsIStreamListenerTee.idl \
-		nsISimpleStreamListener.idl \
-		nsIStreamTransportService.idl \
-		nsIStreamLoader.idl \
-		nsISyncStreamListener.idl \
-		nsISystemProxySettings.idl \
-		nsITimedChannel.idl \
-		nsIUnicharStreamLoader.idl \
-		nsIUploadChannel2.idl \
-		nsIStandardURL.idl \
-		nsINestedURI.idl \
-		nsIURLParser.idl \
-		nsIURIChecker.idl \
-		nsISecurityEventSink.idl \
-		nsISecretDecoderRing.idl \
-		nsISecureBrowserUI.idl \
-		nsICryptoFIPSInfo.idl \
-		nsINSSErrorsService.idl \
-		nsICacheInfoChannel.idl \
-		nsICachingChannel.idl \
-		nsIByteRangeRequest.idl \
-		nsIMultiPartChannel.idl \
-		nsIExternalProtocolHandler.idl \
-		nsIAuthModule.idl \
-		nsIContentSniffer.idl \
-		nsIAuthPromptProvider.idl \
-		nsPISocketTransportService.idl \
-		nsIChannelEventSink.idl \
-		nsINetUtil.idl \
-		nsIProxiedChannel.idl \
-		nsIRandomGenerator.idl \
-		nsIStrictTransportSecurityService.idl \
-		nsIURIWithPrincipal.idl \
-		nsIURIClassifier.idl \
-		nsIRedirectResultListener.idl \
-		mozIThirdPartyUtil.idl \
-		nsISerializationHelper.idl \
-		nsIChildChannel.idl \
-		nsIParentChannel.idl \
-		nsIParentRedirectingChannel.idl \
-		nsIRedirectChannelRegistrar.idl \
-		$(NULL)
-
 ifdef MOZ_TOOLKIT_SEARCH
 XPIDLSRCS	+= nsIBrowserSearchService.idl
 endif
 
 EXPORTS		= \
 		netCore.h \
 		nsNetUtil.h \
 		nsNetStrings.h \
--- a/netwerk/base/public/moz.build
+++ b/netwerk/base/public/moz.build
@@ -1,5 +1,110 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'mozIThirdPartyUtil.idl',
+    'nsIApplicationCache.idl',
+    'nsIApplicationCacheChannel.idl',
+    'nsIApplicationCacheContainer.idl',
+    'nsIApplicationCacheService.idl',
+    'nsIAsyncStreamCopier.idl',
+    'nsIAsyncVerifyRedirectCallback.idl',
+    'nsIAuthInformation.idl',
+    'nsIAuthModule.idl',
+    'nsIAuthPrompt.idl',
+    'nsIAuthPrompt2.idl',
+    'nsIAuthPromptAdapterFactory.idl',
+    'nsIAuthPromptCallback.idl',
+    'nsIAuthPromptProvider.idl',
+    'nsIBackgroundFileSaver.idl',
+    'nsIBufferedStreams.idl',
+    'nsIByteRangeRequest.idl',
+    'nsICacheInfoChannel.idl',
+    'nsICachingChannel.idl',
+    'nsICancelable.idl',
+    'nsIChannel.idl',
+    'nsIChannelEventSink.idl',
+    'nsIChannelPolicy.idl',
+    'nsIChildChannel.idl',
+    'nsIContentSniffer.idl',
+    'nsICryptoFIPSInfo.idl',
+    'nsICryptoHMAC.idl',
+    'nsICryptoHash.idl',
+    'nsIDashboard.idl',
+    'nsIDashboardEventNotifier.idl',
+    'nsIDownloader.idl',
+    'nsIEncodedChannel.idl',
+    'nsIExternalProtocolHandler.idl',
+    'nsIFileStreams.idl',
+    'nsIFileURL.idl',
+    'nsIIOService.idl',
+    'nsIIOService2.idl',
+    'nsIIncrementalDownload.idl',
+    'nsIInputStreamChannel.idl',
+    'nsIInputStreamPump.idl',
+    'nsILoadGroup.idl',
+    'nsIMIMEInputStream.idl',
+    'nsIMultiPartChannel.idl',
+    'nsINSSErrorsService.idl',
+    'nsINestedURI.idl',
+    'nsINetAddr.idl',
+    'nsINetUtil.idl',
+    'nsINetworkLinkService.idl',
+    'nsIParentChannel.idl',
+    'nsIParentRedirectingChannel.idl',
+    'nsIPermission.idl',
+    'nsIPermissionManager.idl',
+    'nsIPrivateBrowsingChannel.idl',
+    'nsIProgressEventSink.idl',
+    'nsIPrompt.idl',
+    'nsIProtocolHandler.idl',
+    'nsIProtocolProxyCallback.idl',
+    'nsIProtocolProxyFilter.idl',
+    'nsIProtocolProxyService.idl',
+    'nsIProtocolProxyService2.idl',
+    'nsIProxiedChannel.idl',
+    'nsIProxiedProtocolHandler.idl',
+    'nsIProxyInfo.idl',
+    'nsIRandomGenerator.idl',
+    'nsIRedirectChannelRegistrar.idl',
+    'nsIRedirectResultListener.idl',
+    'nsIRequest.idl',
+    'nsIRequestObserver.idl',
+    'nsIRequestObserverProxy.idl',
+    'nsIResumableChannel.idl',
+    'nsISecretDecoderRing.idl',
+    'nsISecureBrowserUI.idl',
+    'nsISecurityEventSink.idl',
+    'nsISecurityInfoProvider.idl',
+    'nsISerializationHelper.idl',
+    'nsIServerSocket.idl',
+    'nsISimpleStreamListener.idl',
+    'nsISocketTransport.idl',
+    'nsISocketTransportService.idl',
+    'nsISpeculativeConnect.idl',
+    'nsIStandardURL.idl',
+    'nsIStreamListener.idl',
+    'nsIStreamListenerTee.idl',
+    'nsIStreamLoader.idl',
+    'nsIStreamTransportService.idl',
+    'nsIStrictTransportSecurityService.idl',
+    'nsISyncStreamListener.idl',
+    'nsISystemProxySettings.idl',
+    'nsITimedChannel.idl',
+    'nsITraceableChannel.idl',
+    'nsITransport.idl',
+    'nsIUDPServerSocket.idl',
+    'nsIURI.idl',
+    'nsIURIChecker.idl',
+    'nsIURIClassifier.idl',
+    'nsIURIWithPrincipal.idl',
+    'nsIURL.idl',
+    'nsIURLParser.idl',
+    'nsIUnicharStreamLoader.idl',
+    'nsIUploadChannel.idl',
+    'nsIUploadChannel2.idl',
+    'nsPISocketTransportService.idl',
+]
+
--- a/netwerk/cache/Makefile.in
+++ b/netwerk/cache/Makefile.in
@@ -14,25 +14,16 @@ MODULE         = nkcache
 LIBRARY_NAME   = nkcache_s
 LIBXUL_LIBRARY = 1
 XPIDL_MODULE   = necko_cache
 GRE_MODULE     = 1
 FAIL_ON_WARNINGS := 1
 
 FORCE_STATIC_LIB = 1
 
-XPIDLSRCS = \
-  nsICache.idl \
-  nsICacheEntryDescriptor.idl \
-  nsICacheListener.idl \
-  nsICacheService.idl \
-  nsICacheSession.idl \
-  nsICacheVisitor.idl \
-  $(NULL)
-
 EXPORTS = \
   nsCacheService.h \
   nsApplicationCacheService.h \
   $(NULL)
 
 CPPSRCS = \
   nsCache.cpp \
   nsCacheEntry.cpp \
--- a/netwerk/cache/moz.build
+++ b/netwerk/cache/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsICache.idl',
+    'nsICacheEntryDescriptor.idl',
+    'nsICacheListener.idl',
+    'nsICacheService.idl',
+    'nsICacheSession.idl',
+    'nsICacheVisitor.idl',
+]
+
--- a/netwerk/cookie/Makefile.in
+++ b/netwerk/cookie/Makefile.in
@@ -12,28 +12,16 @@ relativesrcdir = @relativesrcdir@
 include $(DEPTH)/config/autoconf.mk
 
 # export required interfaces, even if --disable-cookies has been given
 MODULE       = necko
 XPIDL_MODULE = necko_cookie
 GRE_MODULE   = 1
 FAIL_ON_WARNINGS := 1
 
-SDK_XPIDLSRCS = \
-  nsICookie.idl \
-  nsICookieManager.idl \
-  $(NULL)
-
-XPIDLSRCS = \
-  nsICookie2.idl \
-  nsICookieManager2.idl \
-  nsICookiePermission.idl \
-  nsICookieService.idl \
-  $(NULL)
-
 ifdef NECKO_COOKIES
 LIBRARY_NAME     = neckocookie_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 CPPSRCS = \
   nsCookie.cpp \
   nsCookieService.cpp \
   $(NULL)
--- a/netwerk/cookie/moz.build
+++ b/netwerk/cookie/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsICookie.idl',
+    'nsICookie2.idl',
+    'nsICookieManager.idl',
+    'nsICookieManager2.idl',
+    'nsICookiePermission.idl',
+    'nsICookieService.idl',
+]
+
--- a/netwerk/dns/Makefile.in
+++ b/netwerk/dns/Makefile.in
@@ -12,25 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 
 MODULE         = necko
 LIBRARY_NAME   = neckodns_s
 LIBXUL_LIBRARY = 1
 XPIDL_MODULE   = necko_dns
 GRE_MODULE     = 1
 FAIL_ON_WARNINGS := 1
 
-XPIDLSRCS = \
-  nsIDNSListener.idl \
-  nsIDNSRecord.idl \
-  nsIDNSService.idl \
-  nsIEffectiveTLDService.idl \
-  nsIIDNService.idl \
-  nsPIDNSService.idl \
-  $(NULL)
-
 CPPSRCS = \
   DNS.cpp \
   nsIDNService.cpp \
   nsHostResolver.cpp \
   nsDNSService2.cpp \
   nsEffectiveTLDService.cpp \
   $(NULL)
 
--- a/netwerk/dns/moz.build
+++ b/netwerk/dns/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIDNSListener.idl',
+    'nsIDNSRecord.idl',
+    'nsIDNSService.idl',
+    'nsIEffectiveTLDService.idl',
+    'nsIIDNService.idl',
+    'nsPIDNSService.idl',
+]
+
--- a/netwerk/ipc/Makefile.in
+++ b/netwerk/ipc/Makefile.in
@@ -13,20 +13,16 @@ include $(DEPTH)/config/autoconf.mk
 MODULE = necko
 
 LIBRARY_NAME = neckoipc_s
 LIBXUL_LIBRARY = 1
 FORCE_STATIC_LIB = 1
 EXPORT_LIBRARY = 1
 XPIDL_MODULE   = necko_ipc
 
-XPIDLSRCS = \
-  nsIRemoteOpenFileListener.idl \
-  $(NULL)
-
 EXPORTS_NAMESPACES = mozilla/net
 
 EXPORTS_mozilla/net = \
   NeckoParent.h       \
   NeckoChild.h        \
   NeckoCommon.h       \
   NeckoMessageUtils.h \
   ChannelEventQueue.h \
--- a/netwerk/ipc/moz.build
+++ b/netwerk/ipc/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIRemoteOpenFileListener.idl',
+]
+
--- a/netwerk/mime/Makefile.in
+++ b/netwerk/mime/Makefile.in
@@ -16,22 +16,16 @@ LIBRARY_NAME   = nkmime_s
 LIBXUL_LIBRARY = 1
 
 FORCE_STATIC_LIB = 1
 
 EXPORTS = \
   nsMimeTypes.h \
   $(NULL)
 
-XPIDLSRCS = \
-  nsIMIMEHeaderParam.idl \
-  nsIMIMEInfo.idl \
-  nsIMIMEService.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsMIMEHeaderParamImpl.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
 DEFINES += -DIMPL_NS_NET
 
--- a/netwerk/mime/moz.build
+++ b/netwerk/mime/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIMIMEHeaderParam.idl',
+    'nsIMIMEInfo.idl',
+    'nsIMIMEService.idl',
+]
+
--- a/netwerk/protocol/about/Makefile.in
+++ b/netwerk/protocol/about/Makefile.in
@@ -16,18 +16,16 @@ LIBRARY_NAME   = nkabout_s
 LIBXUL_LIBRARY = 1
 XPIDL_MODULE   = necko_about
 GRE_MODULE     = 1
 
 FORCE_STATIC_LIB = 1
 
 EXPORTS = nsAboutProtocolUtils.h
 
-XPIDLSRCS = nsIAboutModule.idl
-
 CPPSRCS = \
   nsAboutProtocolHandler.cpp \
   nsAboutBlank.cpp \
   nsAboutBloat.cpp \
   nsAboutCache.cpp \
   nsAboutCacheEntry.cpp \
   $(NULL)
 
--- a/netwerk/protocol/about/moz.build
+++ b/netwerk/protocol/about/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIAboutModule.idl',
+]
+
--- a/netwerk/protocol/file/Makefile.in
+++ b/netwerk/protocol/file/Makefile.in
@@ -14,21 +14,16 @@ include $(DEPTH)/config/autoconf.mk
 MODULE         = necko
 LIBRARY_NAME   = nkfile_s
 LIBXUL_LIBRARY = 1
 XPIDL_MODULE   = necko_file
 GRE_MODULE     = 1
 
 FORCE_STATIC_LIB = 1
 
-XPIDLSRCS = \
-  nsIFileChannel.idl \
-  nsIFileProtocolHandler.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsFileProtocolHandler.cpp \
   nsFileChannel.cpp \
   $(NULL)
 
 LOCAL_INCLUDES = \
   -I$(srcdir)/../../base/src \
   -I$(topsrcdir)/xpcom/ds \
--- a/netwerk/protocol/file/moz.build
+++ b/netwerk/protocol/file/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIFileChannel.idl',
+    'nsIFileProtocolHandler.idl',
+]
+
--- a/netwerk/protocol/ftp/Makefile.in
+++ b/netwerk/protocol/ftp/Makefile.in
@@ -16,20 +16,16 @@ LIBRARY_NAME   = nkftp_s
 LIBXUL_LIBRARY = 1
 XPIDL_MODULE   = necko_ftp
 GRE_MODULE     = 1
 
 FORCE_STATIC_LIB = 1
 
 EXPORTS = ftpCore.h
 
-XPIDLSRCS = \
-  nsIFTPChannel.idl \
-  $(NULL)
-
 EXPORTS_NAMESPACES = mozilla/net
 
 EXPORTS_mozilla/net += \
   FTPChannelParent.h \
   FTPChannelChild.h  \
   $(NULL)
 
 CPPSRCS = \
--- a/netwerk/protocol/ftp/moz.build
+++ b/netwerk/protocol/ftp/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIFTPChannel.idl',
+]
+
--- a/netwerk/protocol/http/Makefile.in
+++ b/netwerk/protocol/http/Makefile.in
@@ -15,33 +15,16 @@ LIBRARY_NAME   = nkhttp_s
 LIBXUL_LIBRARY = 1
 XPIDL_MODULE   = necko_http
 GRE_MODULE     = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 EXPORTS_NAMESPACES = mozilla/net
 
-SDK_XPIDLSRCS = \
-  nsIHttpChannel.idl \
-  nsIHttpHeaderVisitor.idl \
-  $(NULL)
-
-XPIDLSRCS = \
-  nsIHttpActivityObserver.idl \
-  nsIHttpAuthManager.idl \
-  nsIHttpAuthenticator.idl \
-  nsIHttpChannelInternal.idl \
-  nsIHttpEventSink.idl \
-  nsIHttpProtocolHandler.idl \
-  nsIHttpChannelAuthProvider.idl \
-  nsIHttpAuthenticableChannel.idl \
-  nsIHttpChannelChild.idl \
-  $(NULL)
-
 EXPORTS_mozilla/net = \
   HttpBaseChannel.h \
   $(NULL)
 
 EXPORTS_mozilla/net += \
   HttpChannelParent.h \
   HttpChannelChild.h  \
   PHttpChannelParams.h \
--- a/netwerk/protocol/http/moz.build
+++ b/netwerk/protocol/http/moz.build
@@ -1,5 +1,19 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIHttpActivityObserver.idl',
+    'nsIHttpAuthManager.idl',
+    'nsIHttpAuthenticableChannel.idl',
+    'nsIHttpAuthenticator.idl',
+    'nsIHttpChannel.idl',
+    'nsIHttpChannelAuthProvider.idl',
+    'nsIHttpChannelChild.idl',
+    'nsIHttpChannelInternal.idl',
+    'nsIHttpEventSink.idl',
+    'nsIHttpHeaderVisitor.idl',
+    'nsIHttpProtocolHandler.idl',
+]
+
--- a/netwerk/protocol/res/Makefile.in
+++ b/netwerk/protocol/res/Makefile.in
@@ -14,20 +14,16 @@ MODULE         = necko
 LIBRARY_NAME   = nkres_s
 LIBXUL_LIBRARY = 1
 XPIDL_MODULE   = necko_res
 GRE_MODULE     = 1
 FAIL_ON_WARNINGS = 1
 
 FORCE_STATIC_LIB = 1
 
-XPIDLSRCS = \
-  nsIResProtocolHandler.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsResProtocolHandler.cpp \
   $(NULL)
 
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/netwerk/base/src \
   $(NULL)
 
--- a/netwerk/protocol/res/moz.build
+++ b/netwerk/protocol/res/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIResProtocolHandler.idl',
+]
+
--- a/netwerk/protocol/viewsource/Makefile.in
+++ b/netwerk/protocol/viewsource/Makefile.in
@@ -14,20 +14,16 @@ include $(DEPTH)/config/autoconf.mk
 MODULE         = necko
 LIBRARY_NAME   = nkviewsource_s
 LIBXUL_LIBRARY = 1
 XPIDL_MODULE   = necko_viewsource
 GRE_MODULE     = 1
 
 FORCE_STATIC_LIB = 1
 
-XPIDLSRCS = \
-  nsIViewSourceChannel.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsViewSourceHandler.cpp \
   nsViewSourceChannel.cpp \
   $(NULL)
 
 LOCAL_INCLUDES = \
   -I$(srcdir)/../../base/src \
   $(NULL)
--- a/netwerk/protocol/viewsource/moz.build
+++ b/netwerk/protocol/viewsource/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIViewSourceChannel.idl',
+]
+
--- a/netwerk/protocol/websocket/Makefile.in
+++ b/netwerk/protocol/websocket/Makefile.in
@@ -14,21 +14,16 @@ LIBRARY_NAME   = nkwebsocket_s
 LIBXUL_LIBRARY = 1
 XPIDL_MODULE   = necko_websocket
 GRE_MODULE     = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS = 1
 
 EXPORTS_NAMESPACES = mozilla/net
 
-XPIDLSRCS = \
-  nsIWebSocketChannel.idl \
-  nsIWebSocketListener.idl \
-  $(NULL)
-
 CPPSRCS = \
   WebSocketChannel.cpp \
   WebSocketChannelParent.cpp \
   WebSocketChannelChild.cpp \
   BaseWebSocketChannel.cpp \
   $(NULL)
 
 EXPORTS_mozilla/net = \
--- a/netwerk/protocol/websocket/moz.build
+++ b/netwerk/protocol/websocket/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIWebSocketChannel.idl',
+    'nsIWebSocketListener.idl',
+]
+
--- a/netwerk/protocol/wyciwyg/Makefile.in
+++ b/netwerk/protocol/wyciwyg/Makefile.in
@@ -14,20 +14,16 @@ LIBRARY_NAME	= nkwyciwyg_s
 LIBXUL_LIBRARY	= 1
 XPIDL_MODULE	= necko_wyciwyg
 GRE_MODULE	= 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS = 1
 
 EXPORTS_NAMESPACES = mozilla/net
 
-XPIDLSRCS	= \
-		nsIWyciwygChannel.idl \
-		$(NULL)
-
 EXPORTS_mozilla/net += \
   WyciwygChannelParent.h \
   WyciwygChannelChild.h  \
   $(NULL)
 
 CPPSRCS		= \
 		nsWyciwyg.cpp \
 		nsWyciwygChannel.cpp \
--- a/netwerk/protocol/wyciwyg/moz.build
+++ b/netwerk/protocol/wyciwyg/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIWyciwygChannel.idl',
+]
+
--- a/netwerk/socket/Makefile.in
+++ b/netwerk/socket/Makefile.in
@@ -13,24 +13,16 @@ include $(DEPTH)/config/autoconf.mk
 
 MODULE         = necko
 XPIDL_MODULE   = necko_socket
 LIBRARY_NAME   = neckosocket_s
 LIBXUL_LIBRARY = 1
 
 FORCE_STATIC_LIB = 1
 
-XPIDLSRCS = \
-  nsISocketProvider.idl \
-  nsISocketProviderService.idl \
-  nsISOCKSSocketInfo.idl \
-  nsISSLSocketControl.idl \
-  nsITransportSecurityInfo.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsSocketProviderService.cpp \
   nsSOCKSSocketProvider.cpp \
   nsSOCKSIOLayer.cpp \
   nsUDPSocketProvider.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/netwerk/socket/moz.build
+++ b/netwerk/socket/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsISOCKSSocketInfo.idl',
+    'nsISSLSocketControl.idl',
+    'nsISocketProvider.idl',
+    'nsISocketProviderService.idl',
+    'nsITransportSecurityInfo.idl',
+]
+
--- a/netwerk/streamconv/public/Makefile.in
+++ b/netwerk/streamconv/public/Makefile.in
@@ -10,25 +10,16 @@ VPATH		= @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= necko
 XPIDL_MODULE	= necko_strconv
 GRE_MODULE	= 1
 
-XPIDLSRCS	= \
-		nsIStreamConverter.idl \
-		nsIStreamConverterService.idl \
-		mozITXTToHTMLConv.idl \
-		nsITXTToHTMLConv.idl \
-		nsIDirIndex.idl \
-		nsIDirIndexListener.idl \
-		$(NULL)
-
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 XPIDLSRCS += \
 		nsIAppleFileDecoder.idl \
 		$(NULL)
 endif
 
 include $(topsrcdir)/config/rules.mk
 
--- a/netwerk/streamconv/public/moz.build
+++ b/netwerk/streamconv/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'mozITXTToHTMLConv.idl',
+    'nsIDirIndex.idl',
+    'nsIDirIndexListener.idl',
+    'nsIStreamConverter.idl',
+    'nsIStreamConverterService.idl',
+    'nsITXTToHTMLConv.idl',
+]
+
--- a/netwerk/test/httpserver/Makefile.in
+++ b/netwerk/test/httpserver/Makefile.in
@@ -23,17 +23,13 @@ ifdef XPI_NAME
 NO_JS_MANIFEST = 1
 USE_EXTENSION_MANIFEST = 1
 else
 EXTRA_COMPONENTS += \
                    httpd.manifest \
                    $(NULL)
 endif
 
-XPIDLSRCS       = \
-                  nsIHttpServer.idl \
-                  $(NULL)
-
 XPCSHELL_TESTS = test
 
 TESTING_JS_MODULES = httpd.js
 
 include $(topsrcdir)/config/rules.mk
--- a/netwerk/test/httpserver/moz.build
+++ b/netwerk/test/httpserver/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIHttpServer.idl',
+]
+
--- a/netwerk/wifi/Makefile.in
+++ b/netwerk/wifi/Makefile.in
@@ -17,22 +17,16 @@ GRE_MODULE     = 1
 
 FORCE_STATIC_LIB = 1
 
 ifneq ($(OS_ARCH),Darwin)
 # osx_corewlan.mm has warnings I don't understand.
 FAIL_ON_WARNINGS := 1
 endif
 
-XPIDLSRCS = \
-  nsIWifiAccessPoint.idl \
-  nsIWifiListener.idl \
-  nsIWifiMonitor.idl \
-  $(NULL)
-
 ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
 CPPSRCS += nsWifiMonitorGonk.cpp
 else
 CPPSRCS += nsWifiMonitor.cpp
 endif
 
 CPPSRCS += nsWifiAccessPoint.cpp
 
--- a/netwerk/wifi/moz.build
+++ b/netwerk/wifi/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIWifiAccessPoint.idl',
+    'nsIWifiListener.idl',
+    'nsIWifiMonitor.idl',
+]
+
--- a/parser/html/Makefile.in
+++ b/parser/html/Makefile.in
@@ -8,21 +8,16 @@ srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= html5
 LIBRARY_NAME	= html5p_s
 LIBXUL_LIBRARY	= 1
 
-XPIDLSRCS = \
-  nsIParserUtils.idl \
-  nsIScriptableUnescapeHTML.idl \
-  $(NULL)
-
 EXPORTS		= \
 		jArray.h \
 		nsAHtml5TreeBuilderState.h \
 		nsHtml5ArrayCopy.h \
 		nsHtml5Atoms.h \
 		nsHtml5AtomList.h \
 		nsHtml5AtomTable.h \
 		nsHtml5ByteReadable.h \
--- a/parser/html/moz.build
+++ b/parser/html/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIParserUtils.idl',
+    'nsIScriptableUnescapeHTML.idl',
+]
+
--- a/parser/htmlparser/public/Makefile.in
+++ b/parser/htmlparser/public/Makefile.in
@@ -8,21 +8,16 @@ topsrcdir   = @top_srcdir@
 srcdir      = @srcdir@
 VPATH       = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE      = htmlparser
 GRE_MODULE	= 1
 
-XPIDLSRCS = \
-	nsIExpatSink.idl \
-	nsIExtendedExpatSink.idl \
-	$(NULL)
-
 EXPORTS = \
 		nsIContentSink.h            \
 		nsITokenizer.h              \
 		nsIHTMLContentSink.h        \
 		nsIFragmentContentSink.h    \
 		nsIParserNode.h             \
 		nsIParser.h                 \
 		nsIDTD.h                    \
--- a/parser/htmlparser/public/moz.build
+++ b/parser/htmlparser/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIExpatSink.idl',
+    'nsIExtendedExpatSink.idl',
+]
+
--- a/parser/xml/public/Makefile.in
+++ b/parser/xml/public/Makefile.in
@@ -7,22 +7,9 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = xml
 XPIDL_MODULE = saxparser
 
-XPIDLSRCS	= \
-                nsISAXAttributes.idl \
-                nsISAXMutableAttributes.idl \
-                nsISAXContentHandler.idl \
-                nsISAXDTDHandler.idl \
-                nsISAXErrorHandler.idl \
-                nsISAXLexicalHandler.idl \
-                nsISAXLocator.idl \
-                nsISAXXMLReader.idl \
-                nsISAXXMLFilter.idl \
-                nsIMozSAXXMLDeclarationHandler.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/parser/xml/public/moz.build
+++ b/parser/xml/public/moz.build
@@ -1,5 +1,18 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIMozSAXXMLDeclarationHandler.idl',
+    'nsISAXAttributes.idl',
+    'nsISAXContentHandler.idl',
+    'nsISAXDTDHandler.idl',
+    'nsISAXErrorHandler.idl',
+    'nsISAXLexicalHandler.idl',
+    'nsISAXLocator.idl',
+    'nsISAXMutableAttributes.idl',
+    'nsISAXXMLFilter.idl',
+    'nsISAXXMLReader.idl',
+]
+
--- a/profile/public/Makefile.in
+++ b/profile/public/Makefile.in
@@ -7,14 +7,10 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= profile
 
-XPIDLSRCS	= \
-	        nsIProfileUnlocker.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/profile/public/moz.build
+++ b/profile/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIProfileUnlocker.idl',
+]
+
--- a/rdf/base/idl/Makefile.in
+++ b/rdf/base/idl/Makefile.in
@@ -8,35 +8,10 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= rdf
 GRE_MODULE	= 1
 
-XPIDLSRCS	= \
-		rdfIDataSource.idl \
-		rdfITripleVisitor.idl \
-		rdfISerializer.idl \
-		nsIRDFCompositeDataSource.idl \
-		nsIRDFContainer.idl \
-		nsIRDFContainerUtils.idl \
-		nsIRDFDelegateFactory.idl \
-		nsIRDFDataSource.idl \
-		nsIRDFLiteral.idl \
-		nsIRDFNode.idl \
-		nsIRDFObserver.idl \
-		nsIRDFInMemoryDataSource.idl \
-		nsIRDFPropagatableDataSource.idl \
-		nsIRDFPurgeableDataSource.idl \
-		nsIRDFRemoteDataSource.idl \
-		nsIRDFResource.idl \
-		nsIRDFService.idl \
-		nsIRDFXMLParser.idl \
-		nsIRDFXMLSerializer.idl \
-		nsIRDFXMLSink.idl \
-		nsIRDFXMLSource.idl \
-		nsIRDFInferDataSource.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/rdf/base/idl/moz.build
+++ b/rdf/base/idl/moz.build
@@ -1,5 +1,30 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIRDFCompositeDataSource.idl',
+    'nsIRDFContainer.idl',
+    'nsIRDFContainerUtils.idl',
+    'nsIRDFDataSource.idl',
+    'nsIRDFDelegateFactory.idl',
+    'nsIRDFInMemoryDataSource.idl',
+    'nsIRDFInferDataSource.idl',
+    'nsIRDFLiteral.idl',
+    'nsIRDFNode.idl',
+    'nsIRDFObserver.idl',
+    'nsIRDFPropagatableDataSource.idl',
+    'nsIRDFPurgeableDataSource.idl',
+    'nsIRDFRemoteDataSource.idl',
+    'nsIRDFResource.idl',
+    'nsIRDFService.idl',
+    'nsIRDFXMLParser.idl',
+    'nsIRDFXMLSerializer.idl',
+    'nsIRDFXMLSink.idl',
+    'nsIRDFXMLSource.idl',
+    'rdfIDataSource.idl',
+    'rdfISerializer.idl',
+    'rdfITripleVisitor.idl',
+]
+
--- a/security/manager/boot/public/Makefile.in
+++ b/security/manager/boot/public/Makefile.in
@@ -7,19 +7,9 @@ topsrcdir       = @top_srcdir@
 srcdir          = @srcdir@
 VPATH           = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = pipboot
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS = \
-    nsISecurityWarningDialogs.idl \
-    $(NULL)
-
-XPIDLSRCS = \
-    nsISSLStatusProvider.idl \
-    nsIBufEntropyCollector.idl \
-    nsISecurityUITelemetry.idl \
-    $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/security/manager/boot/public/moz.build
+++ b/security/manager/boot/public/moz.build
@@ -1,5 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIBufEntropyCollector.idl',
+    'nsISSLStatusProvider.idl',
+    'nsISecurityUITelemetry.idl',
+    'nsISecurityWarningDialogs.idl',
+]
+
--- a/security/manager/pki/public/Makefile.in
+++ b/security/manager/pki/public/Makefile.in
@@ -8,14 +8,9 @@ topsrcdir       = @top_srcdir@
 srcdir          = @srcdir@
 VPATH           = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = pippki
 GRE_MODULE	= 1
 
-XPIDLSRCS = \
-    nsIPKIParamBlock.idl \
-    nsIASN1Tree.idl \
-    $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/security/manager/pki/public/moz.build
+++ b/security/manager/pki/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIASN1Tree.idl',
+    'nsIPKIParamBlock.idl',
+]
+
--- a/security/manager/ssl/public/Makefile.in
+++ b/security/manager/ssl/public/Makefile.in
@@ -8,70 +8,13 @@ topsrcdir       = @top_srcdir@
 srcdir          = @srcdir@
 VPATH           = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = pipnss
 GRE_MODULE	= 1
 
-SDK_XPIDLSRCS = \
-    nsIASN1Object.idl \
-    nsIASN1Sequence.idl \
-    nsICertificateDialogs.idl \
-    nsICRLInfo.idl \
-    nsIX509Cert.idl \
-    nsIX509CertDB.idl \
-    nsIX509CertValidity.idl \
-    nsINSSVersion.idl \
-    $(NULL)
-
-XPIDLSRCS = \
-    nsISSLCertErrorDialog.idl \
-    nsIBadCertListener2.idl \
-    nsISSLErrorListener.idl \
-    nsIIdentityInfo.idl \
-    nsIAssociatedContentSecurity.idl \
-    nsICertOverrideService.idl \
-    nsIRecentBadCertsService.idl \
-    nsIFormSigningDialog.idl \
-    nsIX509Cert2.idl \
-    nsIX509Cert3.idl \
-    nsIX509CertDB2.idl \
-    nsIX509CertList.idl \
-    nsIPKCS11.idl \
-    nsIPKCS11Slot.idl \
-    nsIPK11TokenDB.idl \
-    nsICertPickDialogs.idl \
-    nsIClientAuthDialogs.idl \
-    nsIDOMCryptoDialogs.idl \
-    nsIGenKeypairInfoDlg.idl \
-    nsITokenDialogs.idl \
-    nsITokenPasswordDialogs.idl \
-    nsISSLStatus.idl \
-    nsIKeygenThread.idl \
-    nsICMSSecureMessage.idl \
-    nsIUserCertPicker.idl \
-    nsIASN1PrintableItem.idl \
-    nsICMSDecoder.idl \
-    nsICMSEncoder.idl \
-    nsICMSMessageErrors.idl \
-    nsICMSMessage.idl \
-    nsICMSMessage2.idl \
-    nsINSSCertCache.idl \
-    nsIPK11Token.idl \
-    nsIPKCS11ModuleDB.idl \
-    nsIPKCS11Module.idl \
-    nsICRLManager.idl \
-    nsISMimeCert.idl \
-    nsIStreamCipher.idl \
-    nsIKeyModule.idl \
-    nsIProtectedAuthThread.idl \
-    nsIDataSignatureVerifier.idl \
-    nsISignatureVerifier.idl \
-    nsICertificatePrincipal.idl \
-    $(NULL)
-
 ifdef MOZ_XUL
 XPIDLSRCS += nsICertTree.idl
 endif
 
 include $(topsrcdir)/config/rules.mk
--- a/security/manager/ssl/public/moz.build
+++ b/security/manager/ssl/public/moz.build
@@ -1,5 +1,59 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIASN1Object.idl',
+    'nsIASN1PrintableItem.idl',
+    'nsIASN1Sequence.idl',
+    'nsIAssociatedContentSecurity.idl',
+    'nsIBadCertListener2.idl',
+    'nsICMSDecoder.idl',
+    'nsICMSEncoder.idl',
+    'nsICMSMessage.idl',
+    'nsICMSMessage2.idl',
+    'nsICMSMessageErrors.idl',
+    'nsICMSSecureMessage.idl',
+    'nsICRLInfo.idl',
+    'nsICRLManager.idl',
+    'nsICertOverrideService.idl',
+    'nsICertPickDialogs.idl',
+    'nsICertificateDialogs.idl',
+    'nsICertificatePrincipal.idl',
+    'nsIClientAuthDialogs.idl',
+    'nsIDOMCryptoDialogs.idl',
+    'nsIDataSignatureVerifier.idl',
+    'nsIFormSigningDialog.idl',
+    'nsIGenKeypairInfoDlg.idl',
+    'nsIIdentityInfo.idl',
+    'nsIKeyModule.idl',
+    'nsIKeygenThread.idl',
+    'nsINSSCertCache.idl',
+    'nsINSSVersion.idl',
+    'nsIPK11Token.idl',
+    'nsIPK11TokenDB.idl',
+    'nsIPKCS11.idl',
+    'nsIPKCS11Module.idl',
+    'nsIPKCS11ModuleDB.idl',
+    'nsIPKCS11Slot.idl',
+    'nsIProtectedAuthThread.idl',
+    'nsIRecentBadCertsService.idl',
+    'nsISMimeCert.idl',
+    'nsISSLCertErrorDialog.idl',
+    'nsISSLErrorListener.idl',
+    'nsISSLStatus.idl',
+    'nsISignatureVerifier.idl',
+    'nsIStreamCipher.idl',
+    'nsITokenDialogs.idl',
+    'nsITokenPasswordDialogs.idl',
+    'nsIUserCertPicker.idl',
+    'nsIX509Cert.idl',
+    'nsIX509Cert2.idl',
+    'nsIX509Cert3.idl',
+    'nsIX509CertDB.idl',
+    'nsIX509CertDB2.idl',
+    'nsIX509CertList.idl',
+    'nsIX509CertValidity.idl',
+]
+
--- a/services/crypto/component/Makefile.in
+++ b/services/crypto/component/Makefile.in
@@ -9,20 +9,16 @@ VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 FAIL_ON_WARNINGS := 1
 
 MODULE := services-crypto
 XPIDL_MODULE := services-crypto-component
 
-XPIDLSRCS := \
-  nsISyncJPAKE.idl \
-  $(NULL)
-
 LIBRARY_NAME := services-crypto
 EXPORT_LIBRARY := 1
 IS_COMPONENT := 1
 MODULE_NAME := nsServicesCryptoModule
 LIBXUL_LIBRARY := 1
 MOZILLA_INTERNAL_API := 1
 
 CPPSRCS := \
--- a/services/crypto/component/moz.build
+++ b/services/crypto/component/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['tests']
+
+XPIDL_SOURCES += [
+    'nsISyncJPAKE.idl',
+]
+
--- a/startupcache/Makefile.in
+++ b/startupcache/Makefile.in
@@ -24,12 +24,9 @@ CPPSRCS = StartupCache.cpp \
   StartupCacheModule.cpp \
   $(NULL)
 
 EXPORTS_NAMESPACES = mozilla/scache
 EXPORTS_mozilla/scache = StartupCache.h \
   StartupCacheUtils.h \
   $(NULL)
 
-XPIDLSRCS = nsIStartupCache.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/startupcache/moz.build
+++ b/startupcache/moz.build
@@ -1,6 +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/.
 
 TEST_TOOL_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsIStartupCache.idl',
+]
+
--- a/storage/public/Makefile.in
+++ b/storage/public/Makefile.in
@@ -10,40 +10,16 @@ VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE       = storage
 GRE_MODULE   = 1
 
 # NOTE When adding something to this list, you probably need to add it to the
 #      storage.h file too.
-XPIDLSRCS = \
-	mozIStorageService.idl \
-	mozIStorageConnection.idl \
-	mozIStorageAggregateFunction.idl \
-	mozIStorageFunction.idl \
-	mozIStorageProgressHandler.idl \
-	mozIStorageStatement.idl \
-	mozIStorageValueArray.idl \
-	mozIStorageResultSet.idl \
-	mozIStorageRow.idl \
-  mozIStorageError.idl \
-  mozIStorageStatementParams.idl \
-  mozIStorageStatementRow.idl \
-  mozIStorageStatementCallback.idl \
-  mozIStoragePendingStatement.idl \
-  mozIStorageBindingParamsArray.idl \
-  mozIStorageBindingParams.idl \
-  mozIStorageCompletionCallback.idl \
-  mozIStorageBaseStatement.idl \
-  mozIStorageAsyncStatement.idl \
-  mozIStorageVacuumParticipant.idl \
-	$(NULL)
-# SEE ABOVE NOTE!
-
 EXPORTS_NAMESPACES = mozilla mozilla/storage
 
 EXPORTS = \
 	mozStorageHelper.h \
 	$(NULL)
 
 EXPORTS_mozilla = storage.h
 
--- a/storage/public/moz.build
+++ b/storage/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'mozIStorageAggregateFunction.idl',
+    'mozIStorageAsyncStatement.idl',
+    'mozIStorageBaseStatement.idl',
+    'mozIStorageBindingParams.idl',
+    'mozIStorageBindingParamsArray.idl',
+    'mozIStorageCompletionCallback.idl',
+    'mozIStorageConnection.idl',
+    'mozIStorageError.idl',
+    'mozIStorageFunction.idl',
+    'mozIStoragePendingStatement.idl',
+    'mozIStorageProgressHandler.idl',
+    'mozIStorageResultSet.idl',
+    'mozIStorageRow.idl',
+    'mozIStorageService.idl',
+    'mozIStorageStatement.idl',
+    'mozIStorageStatementCallback.idl',
+    'mozIStorageStatementParams.idl',
+    'mozIStorageStatementRow.idl',
+    'mozIStorageVacuumParticipant.idl',
+    'mozIStorageValueArray.idl',
+]
+
--- a/toolkit/components/alerts/Makefile.in
+++ b/toolkit/components/alerts/Makefile.in
@@ -5,18 +5,16 @@
 DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = alerts
-XPIDLSRCS = nsIAlertsService.idl
-
 LIBRARY_NAME = alerts_s
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 CPPSRCS = \
   nsAlertsService.cpp \
   $(NULL)
 LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/components/build/
 
--- a/toolkit/components/alerts/moz.build
+++ b/toolkit/components/alerts/moz.build
@@ -3,8 +3,13 @@
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsIAlertsService.idl',
+]
+
--- a/toolkit/components/autocomplete/Makefile.in
+++ b/toolkit/components/autocomplete/Makefile.in
@@ -13,23 +13,14 @@ MODULE = autocomplete
 MODULE_NAME = tkAutoCompleteModule
 LIBRARY_NAME = tkautocomplete
 SHORT_LIBNAME = tkautoc
 IS_COMPONENT = 1
 EXPORT_LIBRARY = 1
 LIBXUL_LIBRARY = 1
 FAIL_ON_WARNINGS = 1
 
-XPIDLSRCS = \
-  nsIAutoCompleteController.idl \
-  nsIAutoCompleteInput.idl \
-  nsIAutoCompletePopup.idl \
-  nsIAutoCompleteResult.idl \
-  nsIAutoCompleteSearch.idl \
-  nsIAutoCompleteSimpleResult.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsAutoCompleteController.cpp \
   nsAutoCompleteSimpleResult.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/components/autocomplete/moz.build
+++ b/toolkit/components/autocomplete/moz.build
@@ -1,6 +1,16 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsIAutoCompleteController.idl',
+    'nsIAutoCompleteInput.idl',
+    'nsIAutoCompletePopup.idl',
+    'nsIAutoCompleteResult.idl',
+    'nsIAutoCompleteSearch.idl',
+    'nsIAutoCompleteSimpleResult.idl',
+]
+
--- a/toolkit/components/captivedetect/Makefile.in
+++ b/toolkit/components/captivedetect/Makefile.in
@@ -6,18 +6,14 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE         = captivedetect
 
-XPIDLSRCS = \
-  nsICaptivePortalDetector.idl \
-  $(NULL)
-
 EXTRA_COMPONENTS = \
   CaptivePortalDetectComponents.manifest \
   captivedetect.js \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/components/captivedetect/moz.build
+++ b/toolkit/components/captivedetect/moz.build
@@ -1,7 +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/.
 
 TEST_DIRS += ['test']
 
+XPIDL_SOURCES += [
+    'nsICaptivePortalDetector.idl',
+]
+
--- a/toolkit/components/commandlines/Makefile.in
+++ b/toolkit/components/commandlines/Makefile.in
@@ -13,20 +13,13 @@ MODULE = toolkitcomps
 XPIDL_MODULE = commandlines
 LIBRARY_NAME = commandlines
 SHORT_LIBNAME = cmdlines
 EXPORT_LIBRARY = 1
 IS_COMPONENT = 1
 MODULE_NAME = CommandLineModule
 LIBXUL_LIBRARY = 1
 
-XPIDLSRCS = \
-  nsICommandLine.idl \
-  nsICommandLineHandler.idl \
-  nsICommandLineRunner.idl \
-  nsICommandLineValidator.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsCommandLine.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/components/commandlines/moz.build
+++ b/toolkit/components/commandlines/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsICommandLine.idl',
+    'nsICommandLineHandler.idl',
+    'nsICommandLineRunner.idl',
+    'nsICommandLineValidator.idl',
+]
+
--- a/toolkit/components/downloads/Makefile.in
+++ b/toolkit/components/downloads/Makefile.in
@@ -10,23 +10,16 @@ VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = downloads
 LIBRARY_NAME = download_s
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 
-XPIDLSRCS = \
-  nsIDownload.idl \
-  nsIDownloadManager.idl \
-  nsIDownloadManagerUI.idl \
-  nsIDownloadProgressListener.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsDownloadManager.cpp \
   SQLFunctions.cpp \
   $(NULL)
 
 ifeq ($(OS_ARCH),WINNT)
 CPPSRCS += nsDownloadScanner.cpp
 endif
--- a/toolkit/components/downloads/moz.build
+++ b/toolkit/components/downloads/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsIDownload.idl',
+    'nsIDownloadManager.idl',
+    'nsIDownloadManagerUI.idl',
+    'nsIDownloadProgressListener.idl',
+]
+
--- a/toolkit/components/exthelper/Makefile.in
+++ b/toolkit/components/exthelper/Makefile.in
@@ -6,11 +6,9 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE        = exthelper
 
-XPIDLSRCS = extIApplication.idl
-
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/components/exthelper/moz.build
+++ b/toolkit/components/exthelper/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'extIApplication.idl',
+]
+
--- a/toolkit/components/feeds/Makefile.in
+++ b/toolkit/components/feeds/Makefile.in
@@ -11,29 +11,16 @@ VPATH = @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = feeds
 LIBRARY_NAME = feed_s
 MOZILLA_INTERNAL_API = 1
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 
-XPIDLSRCS = \
-  nsIFeed.idl \
-  nsIFeedContainer.idl \
-  nsIFeedElementBase.idl \
-  nsIFeedEntry.idl \
-  nsIFeedGenerator.idl \
-  nsIFeedListener.idl \
-  nsIFeedPerson.idl \
-  nsIFeedProcessor.idl \
-  nsIFeedResult.idl \
-  nsIFeedTextConstruct.idl \
-  $(NULL)
-
 EXTRA_COMPONENTS = FeedProcessor.js FeedProcessor.manifest
 
 include $(topsrcdir)/config/rules.mk
 
 ABS_SRCDIR := $(call core_abspath,$(srcdir))
 ifeq ($(OS_ARCH),WINNT)
 
 ABS_DEPTH := $(call core_abspath,$(DEPTH))
--- a/toolkit/components/feeds/moz.build
+++ b/toolkit/components/feeds/moz.build
@@ -1,6 +1,20 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsIFeed.idl',
+    'nsIFeedContainer.idl',
+    'nsIFeedElementBase.idl',
+    'nsIFeedEntry.idl',
+    'nsIFeedGenerator.idl',
+    'nsIFeedListener.idl',
+    'nsIFeedPerson.idl',
+    'nsIFeedProcessor.idl',
+    'nsIFeedResult.idl',
+    'nsIFeedTextConstruct.idl',
+]
+
--- a/toolkit/components/find/Makefile.in
+++ b/toolkit/components/find/Makefile.in
@@ -10,17 +10,13 @@ VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = mozfind
 LIBRARY_NAME = mozfind_s
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 
-XPIDLSRCS = \
-  nsIFindService.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsFindService.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/components/find/moz.build
+++ b/toolkit/components/find/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIFindService.idl',
+]
+
--- a/toolkit/components/parentalcontrols/Makefile.in
+++ b/toolkit/components/parentalcontrols/Makefile.in
@@ -7,20 +7,16 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = parentalcontrols
 
-XPIDLSRCS = \
-  nsIParentalControlsService.idl \
-  $(NULL)
-
 ifndef MOZ_DISABLE_PARENTAL_CONTROLS
 ifeq (WINNT,$(OS_ARCH))
 LIBRARY_NAME = parentalcontrols_s
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 CPPSRCS = \
   nsParentalControlsServiceWin.cpp \
   $(NULL)
--- a/toolkit/components/parentalcontrols/moz.build
+++ b/toolkit/components/parentalcontrols/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIParentalControlsService.idl',
+]
+
--- a/toolkit/components/passwordmgr/Makefile.in
+++ b/toolkit/components/passwordmgr/Makefile.in
@@ -6,26 +6,16 @@ DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = loginmgr
 
-XPIDLSRCS = \
-  nsILoginInfo.idl \
-  nsILoginManager.idl \
-  nsILoginManagerCrypto.idl \
-  nsILoginManagerIEMigrationHelper.idl \
-  nsILoginManagerPrompter.idl \
-  nsILoginManagerStorage.idl \
-  nsILoginMetaInfo.idl \
-  $(NULL)
-
 EXTRA_COMPONENTS = \
   crypto-SDR.js \
   nsLoginInfo.js \
   nsLoginManager.js \
   nsLoginManagerPrompter.js \
   passwordmgr.manifest \
   storage-Legacy.js \
   $(NULL)
--- a/toolkit/components/passwordmgr/moz.build
+++ b/toolkit/components/passwordmgr/moz.build
@@ -1,6 +1,17 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsILoginInfo.idl',
+    'nsILoginManager.idl',
+    'nsILoginManagerCrypto.idl',
+    'nsILoginManagerIEMigrationHelper.idl',
+    'nsILoginManagerPrompter.idl',
+    'nsILoginManagerStorage.idl',
+    'nsILoginMetaInfo.idl',
+]
+
--- a/toolkit/components/places/Makefile.in
+++ b/toolkit/components/places/Makefile.in
@@ -6,20 +6,16 @@ DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = places
 
-XPIDLSRCS = \
-  nsINavHistoryService.idl \
-  $(NULL)
-
 ifdef MOZ_PLACES
 LIBRARY_NAME  = places
 LIBXUL_LIBRARY = 1
 EXPORT_LIBRARY = 1
 MODULE_NAME = nsPlacesModule
 IS_COMPONENT = 1
 
 XPIDLSRCS += \
--- a/toolkit/components/places/moz.build
+++ b/toolkit/components/places/moz.build
@@ -1,7 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsINavHistoryService.idl',
+]
+
--- a/toolkit/components/remote/Makefile.in
+++ b/toolkit/components/remote/Makefile.in
@@ -15,18 +15,16 @@ XPIDL_MODULE   = toolkitremote
 LIBRARY_NAME	 = remoteservice
 EXPORT_LIBRARY = 1
 IS_COMPONENT   = 1
 MODULE_NAME    = RemoteServiceModule
 
 LIBXUL_LIBRARY = 1
 
 
-XPIDLSRCS = nsIRemoteService.idl
-
 CPPSRCS += nsXRemoteService.cpp
 ifneq (,$(filter gtk2,$(MOZ_WIDGET_TOOLKIT)))
 CPPSRCS += nsGTKRemoteService.cpp
 endif
 
 ifeq (qt,$(MOZ_WIDGET_TOOLKIT))
 CPPSRCS += nsQtRemoteService.cpp
 endif
--- a/toolkit/components/remote/moz.build
+++ b/toolkit/components/remote/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIRemoteService.idl',
+]
+
--- a/toolkit/components/satchel/Makefile.in
+++ b/toolkit/components/satchel/Makefile.in
@@ -11,23 +11,16 @@ include $(DEPTH)/config/autoconf.mk
 
 MODULE = satchel
 LIBRARY_NAME = satchel
 MODULE_NAME = satchel
 IS_COMPONENT = 1
 LIBXUL_LIBRARY = 1
 EXPORT_LIBRARY = 1
 
-XPIDLSRCS = \
-  nsIFormAutoComplete.idl \
-  nsIFormFillController.idl \
-  nsIFormHistory.idl \
-  nsIInputListAutoComplete.idl \
-  $(NULL)
-
 LOCAL_INCLUDES = \
   -I$(srcdir)/../build \
   $(NULL)
 
 CPPSRCS = \
   nsFormFillController.cpp \
   $(NULL)
 
--- a/toolkit/components/satchel/moz.build
+++ b/toolkit/components/satchel/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsIFormAutoComplete.idl',
+    'nsIFormFillController.idl',
+    'nsIFormHistory.idl',
+    'nsIInputListAutoComplete.idl',
+]
+
--- a/toolkit/components/startup/public/Makefile.in
+++ b/toolkit/components/startup/public/Makefile.in
@@ -9,14 +9,9 @@ VPATH      = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 # note: everything depends on appcomps, so to avoid confusion these IDL files are
 # exported there, not toolkitcomps, which would be more logical
 MODULE       = appcomps
 XPIDL_MODULE = appstartup
 
-XPIDLSRCS = \
-  nsIAppStartup.idl \
-  nsIUserInfo.idl \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/components/startup/public/moz.build
+++ b/toolkit/components/startup/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIAppStartup.idl',
+    'nsIUserInfo.idl',
+]
+
--- a/toolkit/components/telemetry/Makefile.in
+++ b/toolkit/components/telemetry/Makefile.in
@@ -25,21 +25,16 @@ LIBRARY_NAME = telemetry
 EXPORTS_NAMESPACES = mozilla
 
 EXPORTS_mozilla = \
   Telemetry.h \
   ProcessedStack.h \
   TelemetryHistogramEnums.h \
   $(NULL)
 
-XPIDLSRCS = \
-  nsITelemetry.idl \
-  nsITelemetryPing.idl \
-  $(NULL)
-
 EXTRA_PP_COMPONENTS = \
   TelemetryPing.js \
   $(NULL)
 
 EXTRA_COMPONENTS = \
   TelemetryPing.manifest \
   $(NULL)
 
--- a/toolkit/components/telemetry/moz.build
+++ b/toolkit/components/telemetry/moz.build
@@ -1,6 +1,12 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsITelemetry.idl',
+    'nsITelemetryPing.idl',
+]
+
--- a/toolkit/components/typeaheadfind/Makefile.in
+++ b/toolkit/components/typeaheadfind/Makefile.in
@@ -10,17 +10,13 @@ VPATH = @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = fastfind
 LIBRARY_NAME = fastfind_s
 GRE_MODULE = 1
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 
-XPIDLSRCS = \
-  nsITypeAheadFind.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsTypeAheadFind.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/components/typeaheadfind/moz.build
+++ b/toolkit/components/typeaheadfind/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsITypeAheadFind.idl',
+]
+
--- a/toolkit/components/url-classifier/Makefile.in
+++ b/toolkit/components/url-classifier/Makefile.in
@@ -11,25 +11,16 @@ VPATH     = @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = url-classifier
 LIBRARY_NAME = urlclassifier_s
 LIBXUL_LIBRARY = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS = 1
 
-XPIDLSRCS = \
-  nsIUrlClassifierDBService.idl \
-  nsIUrlClassifierHashCompleter.idl \
-  nsIUrlClassifierStreamUpdater.idl \
-  nsIUrlClassifierPrefixSet.idl \
-  nsIUrlClassifierUtils.idl \
-  nsIUrlListManager.idl \
-  $(NULL)
-
 CPPSRCS = \
   ChunkSet.cpp \
   Classifier.cpp \
   HashStore.cpp \
   ProtocolParser.cpp \
   LookupCache.cpp \
   nsUrlClassifierDBService.cpp \
   nsUrlClassifierStreamUpdater.cpp \
--- a/toolkit/components/url-classifier/moz.build
+++ b/toolkit/components/url-classifier/moz.build
@@ -1,6 +1,16 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsIUrlClassifierDBService.idl',
+    'nsIUrlClassifierHashCompleter.idl',
+    'nsIUrlClassifierPrefixSet.idl',
+    'nsIUrlClassifierStreamUpdater.idl',
+    'nsIUrlClassifierUtils.idl',
+    'nsIUrlListManager.idl',
+]
+
--- a/toolkit/components/urlformatter/Makefile.in
+++ b/toolkit/components/urlformatter/Makefile.in
@@ -7,18 +7,14 @@ DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = urlformatter
 
-XPIDLSRCS = \
-  nsIURLFormatter.idl \
-  $(NULL)
-
 EXTRA_COMPONENTS = \
   nsURLFormatter.manifest \
   nsURLFormatter.js \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/toolkit/components/urlformatter/moz.build
+++ b/toolkit/components/urlformatter/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['tests']
+
+XPIDL_SOURCES += [
+    'nsIURLFormatter.idl',
+]
+
--- a/toolkit/devtools/debugger/Makefile.in
+++ b/toolkit/devtools/debugger/Makefile.in
@@ -22,17 +22,13 @@ CPPSRCS = \
     nsJSInspector.cpp \
     $(NULL)
 
 EXTRA_DSO_LDOPTS += \
     $(MOZ_COMPONENT_LIBS) \
     $(MOZ_JS_LIBS) \
     $(NULL)
 
-XPIDLSRCS = \
-	nsIJSInspector.idl \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 libs::
 	$(INSTALL) $(IFLAGS1) $(srcdir)/*.jsm $(FINAL_TARGET)/modules/devtools
 	$(INSTALL) $(IFLAGS1) $(srcdir)/server/*.jsm $(FINAL_TARGET)/modules/devtools
--- a/toolkit/devtools/debugger/moz.build
+++ b/toolkit/devtools/debugger/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['tests']
+
+XPIDL_SOURCES += [
+    'nsIJSInspector.idl',
+]
+
--- a/toolkit/identity/Makefile.in
+++ b/toolkit/identity/Makefile.in
@@ -15,20 +15,16 @@ MODULE = identity
 MODULE_NAME = identity
 LIBRARY_NAME = identity
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 IS_COMPONENT = 1
 GRE_MODULE = 1
 EXPORT_LIBRARY = 1
 
-XPIDLSRCS = \
-  nsIIdentityCryptoService.idl \
-  $(NULL)
-
 CPPSRCS = \
   IdentityCryptoService.cpp \
   $(NULL)
 
 EXTRA_JS_MODULES = \
 	IdentityUtils.jsm \
 	Identity.jsm \
 	IdentityProvider.jsm \
--- a/toolkit/identity/moz.build
+++ b/toolkit/identity/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['tests']
+
+XPIDL_SOURCES += [
+    'nsIIdentityCryptoService.idl',
+]
+
--- a/toolkit/mozapps/extensions/Makefile.in
+++ b/toolkit/mozapps/extensions/Makefile.in
@@ -22,22 +22,16 @@ DEFINES += -DMOZ_EXTENSIONS_DB_SCHEMA=14
 ifneq (,$(MOZ_EM_DEBUG))
 DEFINES += -DMOZ_EM_DEBUG=1
 else ifdef MOZ_DEBUG
 DEFINES += -DMOZ_EM_DEBUG=1
 endif
 
 MODULE = extensions
 
-XPIDLSRCS = \
-  amIInstallTrigger.idl \
-  amIWebInstallListener.idl \
-  amIWebInstaller.idl \
-  $(NULL)
-
 EXTRA_PP_COMPONENTS = \
   nsBlocklistService.js \
   extensions.manifest \
   $(NULL)
 
 EXTRA_COMPONENTS = \
   addonManager.js \
   amContentHandler.js \
--- a/toolkit/mozapps/extensions/moz.build
+++ b/toolkit/mozapps/extensions/moz.build
@@ -1,6 +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 += ['test']
+
+XPIDL_SOURCES += [
+    'amIInstallTrigger.idl',
+    'amIWebInstallListener.idl',
+    'amIWebInstaller.idl',
+]
+
--- a/toolkit/mozapps/update/Makefile.in
+++ b/toolkit/mozapps/update/Makefile.in
@@ -6,18 +6,16 @@ DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = update
 
-XPIDLSRCS = nsIUpdateTimerManager.idl
-
 EXTRA_COMPONENTS = \
   nsUpdateTimerManager.js \
   nsUpdateTimerManager.manifest \
   $(NULL)
 
 ifdef MOZ_UPDATER
 
 XPIDLSRCS += nsIUpdateService.idl
--- a/toolkit/mozapps/update/moz.build
+++ b/toolkit/mozapps/update/moz.build
@@ -16,8 +16,13 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'andr
 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']
+
+XPIDL_SOURCES += [
+    'nsIUpdateTimerManager.idl',
+]
+
--- a/toolkit/profile/Makefile.in
+++ b/toolkit/profile/Makefile.in
@@ -11,22 +11,16 @@ VPATH = @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 MODULE = xulapp
 XPIDL_MODULE = toolkitprofile
 LIBRARY_NAME = profile_s
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 
-XPIDLSRCS = \
-  nsIProfileMigrator.idl \
-  nsIToolkitProfile.idl \
-  nsIToolkitProfileService.idl \
-  $(NULL)
-
 CPPSRCS = \
   nsProfileLock.cpp \
   nsToolkitProfileService.cpp \
   $(NULL)
 
 LOCAL_INCLUDES = \
   -I$(srcdir)/../xre \
   -I$(topsrcdir)/profile/dirserviceprovider/src \
--- a/toolkit/profile/moz.build
+++ b/toolkit/profile/moz.build
@@ -1,6 +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 += ['test']
+
+XPIDL_SOURCES += [
+    'nsIProfileMigrator.idl',
+    'nsIToolkitProfile.idl',
+    'nsIToolkitProfileService.idl',
+]
+
--- a/toolkit/xre/Makefile.in
+++ b/toolkit/xre/Makefile.in
@@ -18,20 +18,16 @@ include $(topsrcdir)/config/makefiles/ma
 milestone_txt = $(topsrcdir)/config/milestone.txt
 
 MODULE = xulapp
 LIBRARY_NAME = xulapp_s
 LIBXUL_LIBRARY = 1
 
 FORCE_STATIC_LIB = 1
 
-XPIDLSRCS = \
-  nsINativeAppSupport.idl \
-  $(NULL)
-
 ifeq ($(OS_ARCH),WINNT)
 XPIDLSRCS += nsIWinAppHelper.idl
 endif
 
 CPPSRCS = \
   nsAppRunner.cpp \
   nsConsoleWriter.cpp \
   nsXREDirProvider.cpp \
--- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build
@@ -1,6 +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/.
 
 TEST_DIRS += ['test']
+
+XPIDL_SOURCES += [
+    'nsINativeAppSupport.idl',
+]
+
--- a/uriloader/base/Makefile.in
+++ b/uriloader/base/Makefile.in
@@ -17,31 +17,16 @@ LIBXUL_LIBRARY  = 1
 FAIL_ON_WARNINGS = 1
 
 
 CPPSRCS = 							\
 				nsURILoader.cpp 		\
 				nsDocLoader.cpp			\
 				$(NULL)
 
-SDK_XPIDLSRCS = 						\
-				nsIURIContentListener.idl 	\
-				nsIWebProgress.idl 	\
-				nsIWebProgressListener.idl 	\
-				$(NULL)
-
-XPIDLSRCS = 							\
-				nsIContentHandler.idl 		\
-				nsIURILoader.idl	 	\
-				nsCURILoader.idl		\
-				nsITransfer.idl \
-				nsIDocumentLoader.idl		\
-				nsIWebProgressListener2.idl \
-				$(NULL)
-
 EXPORTS = 							\
 				nsURILoader.h	 		\
 				nsDocLoader.h			\
 				$(NULL)
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
--- a/uriloader/base/moz.build
+++ b/uriloader/base/moz.build
@@ -1,5 +1,17 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsCURILoader.idl',
+    'nsIContentHandler.idl',
+    'nsIDocumentLoader.idl',
+    'nsITransfer.idl',
+    'nsIURIContentListener.idl',
+    'nsIURILoader.idl',
+    'nsIWebProgress.idl',
+    'nsIWebProgressListener.idl',
+    'nsIWebProgressListener2.idl',
+]
+
--- a/uriloader/exthandler/Makefile.in
+++ b/uriloader/exthandler/Makefile.in
@@ -92,27 +92,16 @@ EXPORTS_mozilla/dom = \
     ExternalHelperAppParent.h \
     ExternalHelperAppChild.h
 
 EXPORTS += \
 		$(OSDIR)/nsOSHelperAppService.h \
 		nsExternalHelperAppService.h \
 		$(NULL)
 
-XPIDLSRCS = \
-	nsCExternalHandlerService.idl	\
-	nsIExternalProtocolService.idl \
-	nsIExternalHelperAppService.idl	\
-	nsIHelperAppLauncherDialog.idl \
-	nsIContentDispatchChooser.idl \
-	nsIHandlerService.idl	\
-	nsIExternalSharingAppService.idl \
-	nsIExternalURLHandlerService.idl \
-	$(NULL)
-
 CPPSRCS	= \
 	nsExternalHelperAppService.cpp	\
 	nsExternalProtocolHandler.cpp \
 	nsMIMEInfoImpl.cpp \
 	nsLocalHandlerApp.cpp \
 	$(OSHELPER) \
 	ExternalHelperAppChild.cpp \
 	ExternalHelperAppParent.cpp \
--- a/uriloader/exthandler/moz.build
+++ b/uriloader/exthandler/moz.build
@@ -1,6 +1,18 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
+
+XPIDL_SOURCES += [
+    'nsCExternalHandlerService.idl',
+    'nsIContentDispatchChooser.idl',
+    'nsIExternalHelperAppService.idl',
+    'nsIExternalProtocolService.idl',
+    'nsIExternalSharingAppService.idl',
+    'nsIExternalURLHandlerService.idl',
+    'nsIHandlerService.idl',
+    'nsIHelperAppLauncherDialog.idl',
+]
+
--- a/uriloader/prefetch/Makefile.in
+++ b/uriloader/prefetch/Makefile.in
@@ -26,21 +26,16 @@ CPPSRCS = \
 		nsPrefetchService.cpp \
 		nsOfflineCacheUpdate.cpp \
 		nsOfflineCacheUpdateService.cpp  \
 		OfflineCacheUpdateGlue.cpp \
 		OfflineCacheUpdateChild.cpp \
 		OfflineCacheUpdateParent.cpp \
 		$(NULL)
 
-XPIDLSRCS =	\
-		nsIPrefetchService.idl \
-		nsIOfflineCacheUpdate.idl \
-		$(NULL)
-
 EXPORTS = \
 		nsCPrefetchService.h \
 		$(NULL)
 
 LOCAL_INCLUDES = \
 		-I$(topsrcdir)/content/base/src \
 		-I$(topsrcdir)/content/events/src \
 		$(NULL)
--- a/uriloader/prefetch/moz.build
+++ b/uriloader/prefetch/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIOfflineCacheUpdate.idl',
+    'nsIPrefetchService.idl',
+]
+
--- a/widget/Makefile.in
+++ b/widget/Makefile.in
@@ -63,44 +63,16 @@ EXPORTS		+= \
 endif
 
 ifneq (,$(filter qt gtk2,$(MOZ_WIDGET_TOOLKIT)))
 EXPORTS		+= \
 		nsIPrintDialogService.h \
 		$(NULL)
 endif
 
-XPIDLSRCS	= \
-		nsIAppShell.idl \
-		nsIFilePicker.idl \
-		nsISound.idl \
-		nsITransferable.idl \
-		nsIClipboardDragDropHooks.idl \
-		nsIClipboardDragDropHookList.idl \
-		nsIDragSession.idl \
-		nsIDragService.idl \
-		nsIFormatConverter.idl \
-		nsIClipboard.idl \
-		nsIClipboardHelper.idl \
-		nsIClipboardOwner.idl \
-		nsIBaseWindow.idl \
-		nsIBidiKeyboard.idl \
-		nsIScreen.idl \
-		nsIScreenManager.idl \
-		nsIPrintSession.idl \
-		nsIPrintSettings.idl \
-		nsIPrintSettingsService.idl \
-		nsIPrintOptions.idl \
-		nsIIdleService.idl \
-		nsIIdleServiceInternal.idl \
-		nsIGfxInfo.idl \
-                nsIGfxInfoDebug.idl \
-		nsIIMEPicker.idl \
-		$(NULL)
-
 ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
 XPIDLSRCS	+= nsIPrintSettingsWin.idl \
 		nsIWinTaskbar.idl	\
 		nsITaskbarPreview.idl	\
 		nsITaskbarTabPreview.idl \
 		nsITaskbarWindowPreview.idl \
 		nsITaskbarPreviewController.idl \
 		nsITaskbarPreviewButton.idl \
--- a/widget/android/Makefile.in
+++ b/widget/android/Makefile.in
@@ -50,20 +50,16 @@ NOT_THERE_YET_CPPSRCS = \
 	nsQtKeyUtils.cpp \
 	nsBidiKeyboard.cpp \
 	nsDragService.cpp \
 	nsNativeThemeQt.cpp \
 	mozqwidget.cpp \
 	nsSound.cpp \
 	$(NULL)
 
-XPIDLSRCS	= \
-	nsIAndroidBridge.idl \
-	$(NULL)
-
 SHARED_LIBRARY_LIBS = ../xpwidgets/libxpwidgets_s.a
 
 EXPORTS = AndroidBridge.h AndroidJavaWrappers.h
 
 include $(topsrcdir)/config/rules.mk
 
 DEFINES += -D_IMPL_NS_WIDGET
 #DEFINES += -DDEBUG_WIDGETS
--- a/widget/android/moz.build
+++ b/widget/android/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIAndroidBridge.idl',
+]
+
--- a/widget/cocoa/Makefile.in
+++ b/widget/cocoa/Makefile.in
@@ -66,20 +66,16 @@ CMMSRCS = \
   GfxInfo.mm \
   WidgetTraceEvent.mm \
   $(NULL)
 
 ifeq (x86_64,$(TARGET_CPU))
 CMMSRCS += ComplexTextInputPanel.mm
 endif
 
-XPIDLSRCS	+= \
-		nsPIWidgetCocoa.idl \
-		$(NULL)
-
 SHARED_LIBRARY_LIBS = ../xpwidgets/libxpwidgets_s.a
 
 include $(topsrcdir)/config/rules.mk
 
 NIB_FILES = \
 	classes.nib \
 	info.nib \
 	keyedobjects.nib \
--- a/widget/cocoa/moz.build
+++ b/widget/cocoa/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsPIWidgetCocoa.idl',
+]
+
--- a/widget/moz.build
+++ b/widget/moz.build
@@ -21,8 +21,37 @@ TEST_TOOL_DIRS += ['tests']
 # multiple implementations of widget can be built on the same
 # source tree.
 #
 if CONFIG['MOZ_ENABLE_GTK2']:
     DIRS += ['gtk2']
 
     if CONFIG['MOZ_X11']:
         DIRS += ['gtkxtbin']
+
+XPIDL_SOURCES += [
+    'nsIAppShell.idl',
+    'nsIBaseWindow.idl',
+    'nsIBidiKeyboard.idl',
+    'nsIClipboard.idl',
+    'nsIClipboardDragDropHookList.idl',
+    'nsIClipboardDragDropHooks.idl',
+    'nsIClipboardHelper.idl',
+    'nsIClipboardOwner.idl',
+    'nsIDragService.idl',
+    'nsIDragSession.idl',
+    'nsIFilePicker.idl',
+    'nsIFormatConverter.idl',
+    'nsIGfxInfo.idl',
+    'nsIGfxInfoDebug.idl',
+    'nsIIMEPicker.idl',
+    'nsIIdleService.idl',
+    'nsIIdleServiceInternal.idl',
+    'nsIPrintOptions.idl',
+    'nsIPrintSession.idl',
+    'nsIPrintSettings.idl',
+    'nsIPrintSettingsService.idl',
+    'nsIScreen.idl',
+    'nsIScreenManager.idl',
+    'nsISound.idl',
+    'nsITransferable.idl',
+]
+
--- a/xpcom/base/Makefile.in
+++ b/xpcom/base/Makefile.in
@@ -94,26 +94,16 @@ ifeq ($(OS_ARCH),WINNT)
 
 ifdef MOZ_DEBUG
 CSRCS		+= pure_api.c
 EXPORTS		+= pure.h
 endif
 
 endif #if OS_ARCH == WINNT
 
-SDK_XPIDLSRCS   = \
-		nsIDebug.idl               \
-		nsIInterfaceRequestor.idl  \
-		nsIMemory.idl		   \
-		nsIProgrammingLanguage.idl \
-		nsISupports.idl		   \
-		nsITraceRefcnt.idl         \
-		nsIWeakReference.idl	   \
-		nsrootidl.idl
-
 SDK_HEADERS     = \
 		nsAutoPtr.h \
 		nsError.h \
 		ErrorList.h \
 		ErrorListCxxDefines.h \
 		ErrorListCDefines.h \
 		nsISupportsBase.h \
 		nscore.h \
@@ -122,34 +112,16 @@ SDK_HEADERS     = \
 		nsObjCExceptions.h \
 
 ifeq ($(OS_ARCH),WINNT)
 SDK_HEADERS += \
 		nsWindowsHelpers.h \
 		$(NULL)
 endif
 
-XPIDLSRCS	= \
-		nsIConsoleListener.idl \
-		nsIConsoleMessage.idl \
-		nsIConsoleService.idl \
-		nsICycleCollectorListener.idl \
-		nsIDebug2.idl \
-		nsIErrorService.idl \
-		nsIException.idl \
-		nsIExceptionService.idl \
-		nsIVersionComparator.idl \
-		nsIUUIDGenerator.idl \
-		nsIMutable.idl \
-		nsIMemoryInfoDumper.idl \
-		nsIMemoryReporter.idl \
-		nsIGZFileWriter.idl \
-		nsIMessageLoop.idl \
-		$(NULL)
-
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 XPIDLSRCS	+= nsIMacUtils.idl
 endif
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 
--- a/xpcom/base/moz.build
+++ b/xpcom/base/moz.build
@@ -1,5 +1,31 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIConsoleListener.idl',
+    'nsIConsoleMessage.idl',
+    'nsIConsoleService.idl',
+    'nsICycleCollectorListener.idl',
+    'nsIDebug.idl',
+    'nsIDebug2.idl',
+    'nsIErrorService.idl',
+    'nsIException.idl',
+    'nsIExceptionService.idl',
+    'nsIGZFileWriter.idl',
+    'nsIInterfaceRequestor.idl',
+    'nsIMemory.idl',
+    'nsIMemoryInfoDumper.idl',
+    'nsIMemoryReporter.idl',
+    'nsIMessageLoop.idl',
+    'nsIMutable.idl',
+    'nsIProgrammingLanguage.idl',
+    'nsISupports.idl',
+    'nsITraceRefcnt.idl',
+    'nsIUUIDGenerator.idl',
+    'nsIVersionComparator.idl',
+    'nsIWeakReference.idl',
+    'nsrootidl.idl',
+]
+
--- a/xpcom/components/Makefile.in
+++ b/xpcom/components/Makefile.in
@@ -31,26 +31,16 @@ EXPORTS_mozilla = \
 
 CPPSRCS		= \
 		nsCategoryManager.cpp \
 		nsComponentManager.cpp \
 		ManifestParser.cpp \
 		nsNativeComponentLoader.cpp \
 		$(NULL)
 
-SDK_XPIDLSRCS	= \
-		nsIClassInfo.idl	      \
-		nsIComponentRegistrar.idl     \
-		nsIFactory.idl		      \
-		nsIModule.idl		      \
-		nsIServiceManager.idl	      \
-		nsIComponentManager.idl       \
-		nsICategoryManager.idl        \
-		$(NULL)
-
 LOCAL_INCLUDES	= \
 	-I$(srcdir)/../reflect/xptinfo/src \
 	-I$(srcdir)/../base \
 	-I$(srcdir)/../ds \
 	-I$(srcdir)/../build \
 	-I.. \
 	-I$(topsrcdir)/chrome/src \
 	-I$(topsrcdir)/modules/libjar \
--- a/xpcom/components/moz.build
+++ b/xpcom/components/moz.build
@@ -1,5 +1,15 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsICategoryManager.idl',
+    'nsIClassInfo.idl',
+    'nsIComponentManager.idl',
+    'nsIComponentRegistrar.idl',
+    'nsIFactory.idl',
+    'nsIModule.idl',
+    'nsIServiceManager.idl',
+]
+
--- a/xpcom/ds/Makefile.in
+++ b/xpcom/ds/Makefile.in
@@ -85,46 +85,16 @@ EXPORTS		= \
 		nsSupportsPrimitives.h \
 		nsVariant.h \
 		nsStringEnumerator.h \
 		nsHashPropertyBag.h \
 		nsWhitespaceTokenizer.h \
 		nsCharSeparatedTokenizer.h \
 		$(NULL)			
 
-XPIDLSRCS	= \
-		nsIAtom.idl \
-		nsIAtomService.idl \
-		nsICollection.idl \
-		nsIEnumerator.idl \
-		nsIINIParser.idl \
-		nsIPersistentProperties2.idl \
-		nsIProperty.idl \
-		nsIPropertyBag.idl \
-		nsIPropertyBag2.idl \
-		nsIWritablePropertyBag.idl \
-		nsIWritablePropertyBag2.idl \
-		nsIVariant.idl \
-		nsISerializable.idl \
-		nsIStringEnumerator.idl \
-		nsISupportsArray.idl \
-		nsISupportsIterators.idl \
-		$(NULL)
-
-SDK_XPIDLSRCS   = \
-		nsIArray.idl               \
-		nsIHashable.idl            \
-		nsIMutableArray.idl        \
-		nsIObserverService.idl	   \
-		nsIObserver.idl		   \
-		nsIProperties.idl          \
-		nsISimpleEnumerator.idl	   \
-		nsISupportsPrimitives.idl  \
-		$(NULL)
-
 ifeq ($(OS_ARCH),WINNT)
 CPPSRCS += nsWindowsRegKey.cpp
 XPIDLSRCS += nsIWindowsRegKey.idl
 EXPORTS += nsWindowsRegKey.h
 endif
 
 EXTRA_COMPONENTS = \
   nsINIProcessor.js \
--- a/xpcom/ds/moz.build
+++ b/xpcom/ds/moz.build
@@ -1,5 +1,32 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIArray.idl',
+    'nsIAtom.idl',
+    'nsIAtomService.idl',
+    'nsICollection.idl',
+    'nsIEnumerator.idl',
+    'nsIHashable.idl',
+    'nsIINIParser.idl',
+    'nsIMutableArray.idl',
+    'nsIObserver.idl',
+    'nsIObserverService.idl',
+    'nsIPersistentProperties2.idl',
+    'nsIProperties.idl',
+    'nsIProperty.idl',
+    'nsIPropertyBag.idl',
+    'nsIPropertyBag2.idl',
+    'nsISerializable.idl',
+    'nsISimpleEnumerator.idl',
+    'nsIStringEnumerator.idl',
+    'nsISupportsArray.idl',
+    'nsISupportsIterators.idl',
+    'nsISupportsPrimitives.idl',
+    'nsIVariant.idl',
+    'nsIWritablePropertyBag.idl',
+    'nsIWritablePropertyBag2.idl',
+]
+
--- a/xpcom/io/Makefile.in
+++ b/xpcom/io/Makefile.in
@@ -94,61 +94,24 @@ EXPORTS		+= nsLocalFileUnix.h
 endif # windows
 endif # os2
 
 EXPORTS_NAMESPACES = mozilla
 EXPORTS_mozilla = \
     Base64.h \
     $(NULL)
 
-XPIDLSRCS	= \
-		nsIBinaryInputStream.idl \
-		nsIBinaryOutputStream.idl  \
-		nsIDirectoryEnumerator.idl \
-		nsIInputStreamTee.idl \
-		nsILocalFileWin.idl \
-		nsILineInputStream.idl \
-		nsIUnicharLineInputStream.idl \
-		nsISimpleUnicharStreamFactory.idl \
-		nsIMultiplexInputStream.idl \
-		nsIObjectInputStream.idl \
-		nsIObjectOutputStream.idl \
-		nsIPipe.idl \
-		nsISeekableStream.idl \
-		nsIStorageStream.idl \
-		nsIStringStream.idl \
-		nsIStreamBufferAccess.idl \
-		nsIAsyncInputStream.idl \
-		nsIAsyncOutputStream.idl \
-		nsIUnicharInputStream.idl \
-		nsIUnicharOutputStream.idl \
-		nsIConverterInputStream.idl \
-		nsIConverterOutputStream.idl \
-		nsIIOUtil.idl \
-		nsISafeOutputStream.idl \
-		nsIScriptableBase64Encoder.idl \
-		$(NULL)
-
 ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
 XPIDLSRCS	+= nsILocalFileOS2.idl
 else
 ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
 XPIDLSRCS	+= nsILocalFileMac.idl
 endif # cocoa
 endif # os2
 
-SDK_XPIDLSRCS   = \
-		nsIDirectoryService.idl \
-		nsIFile.idl \
-		nsILocalFile.idl \
-		nsIInputStream.idl \
-		nsIOutputStream.idl \
-		nsIScriptableInputStream.idl \
-		$(NULL)
-
 SDK_HEADERS =  \
 		nsDirectoryServiceDefs.h \
 		nsDirectoryServiceUtils.h \
 		$(NULL)
 
 EXPORTS		:= $(addprefix $(srcdir)/, $(EXPORTS))
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
--- a/xpcom/io/moz.build
+++ b/xpcom/io/moz.build
@@ -1,5 +1,39 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIAsyncInputStream.idl',
+    'nsIAsyncOutputStream.idl',
+    'nsIBinaryInputStream.idl',
+    'nsIBinaryOutputStream.idl',
+    'nsIConverterInputStream.idl',
+    'nsIConverterOutputStream.idl',
+    'nsIDirectoryEnumerator.idl',
+    'nsIDirectoryService.idl',
+    'nsIFile.idl',
+    'nsIIOUtil.idl',
+    'nsIInputStream.idl',
+    'nsIInputStreamTee.idl',
+    'nsILineInputStream.idl',
+    'nsILocalFile.idl',
+    'nsILocalFileWin.idl',
+    'nsIMultiplexInputStream.idl',
+    'nsIObjectInputStream.idl',
+    'nsIObjectOutputStream.idl',
+    'nsIOutputStream.idl',
+    'nsIPipe.idl',
+    'nsISafeOutputStream.idl',
+    'nsIScriptableBase64Encoder.idl',
+    'nsIScriptableInputStream.idl',
+    'nsISeekableStream.idl',
+    'nsISimpleUnicharStreamFactory.idl',
+    'nsIStorageStream.idl',
+    'nsIStreamBufferAccess.idl',
+    'nsIStringStream.idl',
+    'nsIUnicharInputStream.idl',
+    'nsIUnicharLineInputStream.idl',
+    'nsIUnicharOutputStream.idl',
+]
+
--- a/xpcom/reflect/xptinfo/public/Makefile.in
+++ b/xpcom/reflect/xptinfo/public/Makefile.in
@@ -15,19 +15,14 @@ MODULE		= xpcom
 XPIDL_MODULE = xpcom_xpti
 
 GRE_MODULE	= 1
 
 EXPORTS		= \
 		xptinfo.h \
 		$(NULL)
 
-XPIDLSRCS = \
-	nsIInterfaceInfo.idl          \
-	nsIInterfaceInfoManager.idl   \
-	$(NULL)
-
 EXPORTS		:= $(addprefix $(srcdir)/, $(EXPORTS))
 
 include $(topsrcdir)/config/rules.mk
 
 CFLAGS		+= -DEXPORT_XPCI_API
 
--- a/xpcom/reflect/xptinfo/public/moz.build
+++ b/xpcom/reflect/xptinfo/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIInterfaceInfo.idl',
+    'nsIInterfaceInfoManager.idl',
+]
+
--- a/xpcom/system/Makefile.in
+++ b/xpcom/system/Makefile.in
@@ -7,26 +7,13 @@ topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE          = xpcom
 XPIDL_MODULE    = xpcom_system
 
-XPIDLSRCS = \
-        nsIXULAppInfo.idl \
-        nsIXULRuntime.idl \
-        nsIGConfService.idl \
-        nsIGnomeVFSService.idl \
-        nsIBlocklistService.idl \
-        nsIGIOService.idl \
-        nsIGSettingsService.idl \
-        nsIDeviceSensors.idl \
-        nsIGeolocationProvider.idl \
-        nsIHapticFeedback.idl \
-        $(NULL)
-
 ifdef MOZ_CRASHREPORTER
 XPIDLSRCS += nsICrashReporter.idl
 endif
 
 include $(topsrcdir)/config/rules.mk
--- a/xpcom/system/moz.build
+++ b/xpcom/system/moz.build
@@ -1,5 +1,18 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsIBlocklistService.idl',
+    'nsIDeviceSensors.idl',
+    'nsIGConfService.idl',
+    'nsIGIOService.idl',
+    'nsIGSettingsService.idl',
+    'nsIGeolocationProvider.idl',
+    'nsIGnomeVFSService.idl',
+    'nsIHapticFeedback.idl',
+    'nsIXULAppInfo.idl',
+    'nsIXULRuntime.idl',
+]
+
--- a/xpcom/threads/Makefile.in
+++ b/xpcom/threads/Makefile.in
@@ -38,30 +38,16 @@ EXPORTS		= \
 		nsEventQueue.h \
 		$(NULL)
 
 EXPORTS_mozilla = \
   HangMonitor.h \
   LazyIdleThread.h \
   $(NULL)
 
-XPIDLSRCS	= \
-		nsIEventTarget.idl \
-		nsIThread.idl \
-		nsIThreadInternal.idl \
-		nsIThreadManager.idl \
-		nsIThreadPool.idl \
-		nsITimer.idl \
-		nsIRunnable.idl \
-		nsICancelableRunnable.idl \
-		nsIEnvironment.idl \
-		nsIProcess.idl \
-		nsISupportsPriority.idl \
-		$(NULL)
-
 EXPORTS		:= $(addprefix $(srcdir)/, $(EXPORTS))
 
 LOCAL_INCLUDES	= -I$(srcdir)/../components
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 
--- a/xpcom/threads/moz.build
+++ b/xpcom/threads/moz.build
@@ -1,5 +1,19 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+XPIDL_SOURCES += [
+    'nsICancelableRunnable.idl',
+    'nsIEnvironment.idl',
+    'nsIEventTarget.idl',
+    'nsIProcess.idl',
+    'nsIRunnable.idl',
+    'nsISupportsPriority.idl',
+    'nsIThread.idl',
+    'nsIThreadInternal.idl',
+    'nsIThreadManager.idl',
+    'nsIThreadPool.idl',
+    'nsITimer.idl',
+]
+
--- a/xpfe/appshell/public/Makefile.in
+++ b/xpfe/appshell/public/Makefile.in
@@ -12,19 +12,10 @@ include $(DEPTH)/config/autoconf.mk
 
 MODULE		= appshell
 GRE_MODULE	= 1
 
 EXPORTS		= \
 		nsAppShellCID.h \
 		$(NULL)
 
-XPIDLSRCS	= \
-		nsIAppShellService.idl \
-		nsIWindowMediator.idl \
-		nsIWindowMediatorListener.idl \
-		nsIXULWindow.idl \
-		nsIPopupWindowManager.idl \
-		nsIXULBrowserWindow.idl \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/xpfe/appshell/public/moz.build
+++ b/xpfe/appshell/public/moz.build
@@ -1,5 +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/.
 
+XPIDL_SOURCES += [
+    'nsIAppShellService.idl',
+    'nsIPopupWindowManager.idl',
+    'nsIWindowMediator.idl',
+    'nsIWindowMediatorListener.idl',
+    'nsIXULBrowserWindow.idl',
+    'nsIXULWindow.idl',
+]
+
--- a/xpfe/components/autocomplete/public/Makefile.in
+++ b/xpfe/components/autocomplete/public/Makefile.in
@@ -8,16 +8,10 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@