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 124660 d54481a205e308b645e33d977e40fe753c9e5682
parent 124659 b7be91238e89165faedc277ab1b023f0b47cfdc2
child 124661 b5dc4f0d5a32f120dc402b31ccda80af5501a69b
push id24538
push usergszorc@mozilla.com
push dateWed, 13 Mar 2013 16:03:40 +0000
treeherdermozilla-inbound@dc9c8f3f4f3b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs818246
milestone22.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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/.