Bug 882963 - Move EXTRA_COMPONENTS to moz.build, r=Standard8
authorJoshua Cranmer <Pidgeot18@gmail.com>
Wed, 19 Jun 2013 08:13:35 -0500
changeset 15759 32b90d9f17689baf4255f3c896b4d6dcd4268c40
parent 15758 a84b653101aa53f146974821f8c1d366141a56e5
child 15760 3c8b64fa8547b6cd4cbb4deaa29c1758c71c26fd
push id942
push userbugzilla@standard8.plus.com
push dateMon, 05 Aug 2013 19:15:38 +0000
treeherdercomm-beta@0e1a1c4a9f0c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersStandard8
bugs882963
Bug 882963 - Move EXTRA_COMPONENTS to moz.build, r=Standard8
calendar/base/backend/Makefile.in
calendar/base/backend/icaljs/Makefile.in
calendar/base/backend/icaljs/moz.build
calendar/base/backend/moz.build
calendar/base/src/Makefile.in
calendar/base/src/moz.build
calendar/import-export/Makefile.in
calendar/import-export/moz.build
calendar/itip/Makefile.in
calendar/itip/moz.build
calendar/lightning/components/Makefile.in
calendar/lightning/components/moz.build
calendar/providers/caldav/Makefile.in
calendar/providers/caldav/moz.build
calendar/providers/composite/Makefile.in
calendar/providers/composite/moz.build
calendar/providers/gdata/components/Makefile.in
calendar/providers/gdata/components/moz.build
calendar/providers/ics/Makefile.in
calendar/providers/ics/moz.build
calendar/providers/memory/Makefile.in
calendar/providers/memory/moz.build
calendar/providers/storage/Makefile.in
calendar/providers/storage/moz.build
calendar/providers/wcap/Makefile.in
calendar/providers/wcap/moz.build
calendar/resources/Makefile.in
calendar/resources/moz.build
chat/components/src/Makefile.in
chat/components/src/moz.build
chat/protocols/facebook/Makefile.in
chat/protocols/facebook/moz.build
chat/protocols/gtalk/Makefile.in
chat/protocols/gtalk/moz.build
chat/protocols/irc/Makefile.in
chat/protocols/irc/moz.build
chat/protocols/jsTest/Makefile.in
chat/protocols/jsTest/moz.build
chat/protocols/odnoklassniki/Makefile.in
chat/protocols/odnoklassniki/moz.build
chat/protocols/twitter/Makefile.in
chat/protocols/twitter/moz.build
chat/protocols/vkontakte/Makefile.in
chat/protocols/vkontakte/moz.build
chat/protocols/xmpp/Makefile.in
chat/protocols/xmpp/moz.build
editor/ui/Makefile.in
editor/ui/moz.build
ldap/xpcom/src/Makefile.in
ldap/xpcom/src/moz.build
mail/components/Makefile.in
mail/components/activity/Makefile.in
mail/components/activity/moz.build
mail/components/cloudfile/Makefile.in
mail/components/cloudfile/moz.build
mail/components/im/Makefile.in
mail/components/im/moz.build
mail/components/moz.build
mail/components/phishing/Makefile.in
mail/components/phishing/moz.build
mail/components/shell/Makefile.in
mail/components/shell/moz.build
mail/steel/Makefile.in
mail/steel/moz.build
mailnews/addrbook/src/Makefile.in
mailnews/addrbook/src/moz.build
mailnews/base/search/src/Makefile.in
mailnews/base/search/src/moz.build
mailnews/base/src/Makefile.in
mailnews/base/src/moz.build
mailnews/compose/src/Makefile.in
mailnews/compose/src/moz.build
mailnews/db/gloda/components/Makefile.in
mailnews/db/gloda/components/moz.build
mailnews/extensions/dsn/Makefile.in
mailnews/extensions/dsn/moz.build
mailnews/extensions/mdn/src/Makefile.in
mailnews/extensions/mdn/src/moz.build
mailnews/extensions/newsblog/Makefile.in
mailnews/extensions/newsblog/moz.build
mailnews/extensions/offline-startup/Makefile.in
mailnews/extensions/offline-startup/moz.build
mailnews/extensions/smime/src/Makefile.in
mailnews/extensions/smime/src/moz.build
mailnews/mime/src/Makefile.in
mailnews/mime/src/moz.build
suite/browser/Makefile.in
suite/browser/moz.build
suite/common/src/Makefile.in
suite/common/src/moz.build
suite/feeds/src/Makefile.in
suite/feeds/src/moz.build
suite/shell/src/Makefile.in
suite/shell/src/moz.build
suite/smile/src/Makefile.in
suite/smile/src/moz.build
deleted file mode 100644
--- a/calendar/base/backend/Makefile.in
+++ /dev/null
@@ -1,14 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = calBackendLoader.js calBackendLoader.manifest
-
-include $(topsrcdir)/config/rules.mk
--- a/calendar/base/backend/icaljs/Makefile.in
+++ b/calendar/base/backend/icaljs/Makefile.in
@@ -5,17 +5,16 @@
 DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 NO_COMPONENTS_MANIFEST = 1
-EXTRA_COMPONENTS = calICALJSComponents.js
 BACKEND_MANIFESTS = icaljs.manifest
 DEFINES += -DXPIDL_MODULE=$(XPIDL_MODULE)
 NO_JS_MANIFEST = 1
 NO_INTERFACES_MANIFEST = 1
 
 EXTRA_SCRIPTS = \
 	calDateTime.js \
 	calDuration.js \
--- a/calendar/base/backend/icaljs/moz.build
+++ b/calendar/base/backend/icaljs/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/.
 
 XPIDL_SOURCES += [
     'calIDateTimeJS.idl',
 ]
 
 XPIDL_MODULE = 'caldatetime_icaljs'
+
+EXTRA_COMPONENTS += [
+    'calICALJSComponents.js',
+]
+
--- a/calendar/base/backend/moz.build
+++ b/calendar/base/backend/moz.build
@@ -2,8 +2,14 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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 = [
     'libical',
     'icaljs'
 ]
+
+EXTRA_COMPONENTS += [
+    'calBackendLoader.js',
+    'calBackendLoader.manifest',
+]
+
--- a/calendar/base/src/Makefile.in
+++ b/calendar/base/src/Makefile.in
@@ -5,25 +5,16 @@
 
 DEPTH   = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-    calItemModule.manifest \
-    calItemModule.js \
-    calTimezoneService.manifest \
-    calTimezoneService.js \
-    calDefaultACLManager.js \
-    calDefaultACLManager.manifest \
-    $(NULL)
-
 EXTRA_SCRIPTS = \
     calAlarm.js \
     calAlarmService.js \
     calAlarmMonitor.js \
     calAttachment.js \
     calAttendee.js \
     calCalendarManager.js \
     calCachedCalendar.js \
--- a/calendar/base/src/moz.build
+++ b/calendar/base/src/moz.build
@@ -6,8 +6,17 @@
 XPIDL_SOURCES += [
     'calInternalInterfaces.idl',
 ]
 
 XPIDL_MODULE = 'calbaseinternal'
 
 MODULE = 'calbase'
 
+EXTRA_COMPONENTS += [
+    'calDefaultACLManager.js',
+    'calDefaultACLManager.manifest',
+    'calItemModule.js',
+    'calItemModule.manifest',
+    'calTimezoneService.js',
+    'calTimezoneService.manifest',
+]
+
--- a/calendar/import-export/Makefile.in
+++ b/calendar/import-export/Makefile.in
@@ -4,21 +4,16 @@
 
 DEPTH   = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-    calImportExportModule.js \
-    calImportExportModule.manifest \
-    $(NULL)
-
 EXTRA_SCRIPTS = \
     calHtmlExport.js \
     calIcsImportExport.js \
     calListFormatter.js \
     calMonthGridPrinter.js \
     calOutlookCSVImportExport.js \
     calWeekPrinter.js \
     $(NULL)
--- a/calendar/import-export/moz.build
+++ b/calendar/import-export/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/.
 
+EXTRA_COMPONENTS += [
+    'calImportExportModule.js',
+    'calImportExportModule.manifest',
+]
+
deleted file mode 100644
--- a/calendar/itip/Makefile.in
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = \
-    calItipEmailTransport.js \
-    calItipEmailTransport.manifest \
-    $(NULL)
-
-include $(topsrcdir)/config/rules.mk
--- a/calendar/itip/moz.build
+++ b/calendar/itip/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/.
 
 MODULE = 'calItipEmailTransport'
 
+EXTRA_COMPONENTS += [
+    'calItipEmailTransport.js',
+    'calItipEmailTransport.manifest',
+]
+
deleted file mode 100644
--- a/calendar/lightning/components/Makefile.in
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH   = @DEPTH@
-topsrcdir = @top_srcdir@
-srcdir    = @srcdir@
-VPATH   = @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = \
-	lightningTextCalendarConverter.js \
-	lightningTextCalendarConverter.manifest \
-	calItipProtocolHandler.js \
-	calItipProtocolHandler.manifest \
-	$(NULL)
-
-include $(topsrcdir)/config/rules.mk
--- a/calendar/lightning/components/moz.build
+++ b/calendar/lightning/components/moz.build
@@ -1,7 +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/.
 
 MODULE = 'lightning'
 
+EXTRA_COMPONENTS += [
+    'calItipProtocolHandler.js',
+    'calItipProtocolHandler.manifest',
+    'lightningTextCalendarConverter.js',
+    'lightningTextCalendarConverter.manifest',
+]
+
--- a/calendar/providers/caldav/Makefile.in
+++ b/calendar/providers/caldav/Makefile.in
@@ -4,17 +4,16 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = calDavCalendar.js calDavCalendar.manifest
 EXTRA_SCRIPTS = calDavRequestHandlers.js
 
 libs:: $(EXTRA_SCRIPTS)
 	if test ! -d $(FINAL_TARGET)/calendar-js; then $(NSINSTALL) -D $(FINAL_TARGET)/calendar-js; fi
 	$(INSTALL) $^ $(FINAL_TARGET)/calendar-js
 
 # The install target must use SYSINSTALL, which is NSINSTALL in copy mode.
 install:: $(EXTRA_SCRIPTS)
--- a/calendar/providers/caldav/moz.build
+++ b/calendar/providers/caldav/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/.
 
 DIRS += ['public']
 
 MODULE = 'caldav'
 
+EXTRA_COMPONENTS += [
+    'calDavCalendar.js',
+    'calDavCalendar.manifest',
+]
+
deleted file mode 100644
--- a/calendar/providers/composite/Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-# 
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = calCompositeCalendar.js calCompositeCalendar.manifest
-
-include $(topsrcdir)/config/rules.mk
--- a/calendar/providers/composite/moz.build
+++ b/calendar/providers/composite/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/.
 
 MODULE = 'calCompositeCalendar'
 
+EXTRA_COMPONENTS += [
+    'calCompositeCalendar.js',
+    'calCompositeCalendar.manifest',
+]
+
--- a/calendar/providers/gdata/components/Makefile.in
+++ b/calendar/providers/gdata/components/Makefile.in
@@ -4,18 +4,16 @@
 
 DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = calGoogleCalendarModule.js calGoogleCalendarModule.manifest
-
 EXTRA_SCRIPTS = \
     calGoogleCalendar.js \
     calGoogleRequest.js \
     calGoogleSession.js \
     calGoogleUtils.js \
     $(NULL)
 
 # Use NSINSTALL to make the directory, as there's no mtime to preserve.
--- a/calendar/providers/gdata/components/moz.build
+++ b/calendar/providers/gdata/components/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/.
 
 MODULE = 'gdata-provider'
 
+EXTRA_COMPONENTS += [
+    'calGoogleCalendarModule.js',
+    'calGoogleCalendarModule.manifest',
+]
+
deleted file mode 100644
--- a/calendar/providers/ics/Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-# 
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = calICSCalendar.js calICSCalendar.manifest
-
-include $(topsrcdir)/config/rules.mk
--- a/calendar/providers/ics/moz.build
+++ b/calendar/providers/ics/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/.
 
 MODULE = 'calICSCalendar'
 
+EXTRA_COMPONENTS += [
+    'calICSCalendar.js',
+    'calICSCalendar.manifest',
+]
+
deleted file mode 100644
--- a/calendar/providers/memory/Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-# 
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = calMemoryCalendar.js calMemoryCalendar.manifest
-
-include $(topsrcdir)/config/rules.mk
--- a/calendar/providers/memory/moz.build
+++ b/calendar/providers/memory/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/.
 
 MODULE = 'calMemoryCalendar'
 
+EXTRA_COMPONENTS += [
+    'calMemoryCalendar.js',
+    'calMemoryCalendar.manifest',
+]
+
--- a/calendar/providers/storage/Makefile.in
+++ b/calendar/providers/storage/Makefile.in
@@ -4,19 +4,14 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-    calStorageCalendar.js \
-    calStorageCalendar.manifest \
-    $(NULL)
-
 EXTRA_JS_MODULES = \
     calStorageHelpers.jsm \
     calStorageUpgrade.jsm \
     $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/calendar/providers/storage/moz.build
+++ b/calendar/providers/storage/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/.
 
 MODULE = 'calStorageCalendar'
 
+EXTRA_COMPONENTS += [
+    'calStorageCalendar.js',
+    'calStorageCalendar.manifest',
+]
+
--- a/calendar/providers/wcap/Makefile.in
+++ b/calendar/providers/wcap/Makefile.in
@@ -13,24 +13,16 @@ EXTRA_SCRIPTS = \
                 calWcapUtils.js \
                 calWcapRequest.js \
                 calWcapErrors.js \
                 calWcapSession.js \
                 calWcapCalendarItems.js \
                 calWcapCalendar.js \
                 $(NULL)
 
-EXTRA_COMPONENTS = \
-                calWcapCalendarModule.js \
-                calWcapCalendarModule.manifest \
-                $(NULL)
-
-# installing EXTRA_SCRIPTS into js/
-
-# using NSINSTALL to make directory: no mtime to preserve:
 libs:: $(EXTRA_SCRIPTS)
 	if test ! -d $(FINAL_TARGET)/calendar-js; then $(NSINSTALL) -D $(FINAL_TARGET)/calendar-js; fi
 	$(INSTALL) $^ $(FINAL_TARGET)/calendar-js
 
 # using SYSINSTALL (i.e. NSINSTALL in copy mode):
 install:: $(EXTRA_SCRIPTS)
 	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/calendar-js
 
--- a/calendar/providers/wcap/moz.build
+++ b/calendar/providers/wcap/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/.
 
 DIRS += ['public']
 
 MODULE = 'wcap'
 
+EXTRA_COMPONENTS += [
+    'calWcapCalendarModule.js',
+    'calWcapCalendarModule.manifest',
+]
+
--- a/calendar/resources/Makefile.in
+++ b/calendar/resources/Makefile.in
@@ -2,21 +2,16 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
-EXTRA_COMPONENTS = \
-	content/calendarService.js \
-	content/calendarService.manifest \
-	$(NULL)
-
 include $(DEPTH)/config/autoconf.mk
 
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 THEME = osx
 else
 THEME = windows
 endif
 
--- a/calendar/resources/moz.build
+++ b/calendar/resources/moz.build
@@ -1,4 +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/.
+
+EXTRA_COMPONENTS += [
+    'content/calendarService.js',
+    'content/calendarService.manifest',
+]
+
deleted file mode 100644
--- a/chat/components/src/Makefile.in
+++ /dev/null
@@ -1,22 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = \
-		imAccounts.js imAccounts.manifest \
-		imCommands.js imCommands.manifest \
-		imContacts.js imContacts.manifest \
-		imConversations.js imConversations.manifest \
-		imCore.js imCore.manifest \
-		logger.js logger.manifest \
-		smileProtocolHandler.js smileProtocolHandler.manifest \
-		$(NULL)
-
-include $(topsrcdir)/config/rules.mk
--- a/chat/components/src/moz.build
+++ b/chat/components/src/moz.build
@@ -1,4 +1,22 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+EXTRA_COMPONENTS += [
+    'imAccounts.js',
+    'imAccounts.manifest',
+    'imCommands.js',
+    'imCommands.manifest',
+    'imContacts.js',
+    'imContacts.manifest',
+    'imConversations.js',
+    'imConversations.manifest',
+    'imCore.js',
+    'imCore.manifest',
+    'logger.js',
+    'logger.manifest',
+    'smileProtocolHandler.js',
+    'smileProtocolHandler.manifest',
+]
+
deleted file mode 100644
--- a/chat/protocols/facebook/Makefile.in
+++ /dev/null
@@ -1,17 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = \
-		facebook.js \
-		facebook.manifest \
-		$(NULL)
-
-include $(topsrcdir)/config/rules.mk
--- a/chat/protocols/facebook/moz.build
+++ b/chat/protocols/facebook/moz.build
@@ -1,4 +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/.
+
+EXTRA_COMPONENTS += [
+    'facebook.js',
+    'facebook.manifest',
+]
+
deleted file mode 100644
--- a/chat/protocols/gtalk/Makefile.in
+++ /dev/null
@@ -1,17 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = \
-		gtalk.js \
-		gtalk.manifest \
-		$(NULL)
-
-include $(topsrcdir)/config/rules.mk
--- a/chat/protocols/gtalk/moz.build
+++ b/chat/protocols/gtalk/moz.build
@@ -1,4 +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/.
+
+EXTRA_COMPONENTS += [
+    'gtalk.js',
+    'gtalk.manifest',
+]
+
--- a/chat/protocols/irc/Makefile.in
+++ b/chat/protocols/irc/Makefile.in
@@ -5,21 +5,16 @@
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-		irc.js \
-		irc.manifest \
-		$(NULL)
-
 EXTRA_JS_MODULES = \
 		ircBase.jsm \
 		ircCAP.jsm \
 		ircCommands.jsm \
 		ircCTCP.jsm \
 		ircDCC.jsm \
 		ircHandlers.jsm \
 		ircISUPPORT.jsm \
--- a/chat/protocols/irc/moz.build
+++ b/chat/protocols/irc/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/.
 
 XPCSHELL_TESTS_MANIFESTS += ['test/xpcshell.ini']
+
+EXTRA_COMPONENTS += [
+    'irc.js',
+    'irc.manifest',
+]
+
deleted file mode 100644
--- a/chat/protocols/jsTest/Makefile.in
+++ /dev/null
@@ -1,16 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-ifdef MOZ_DEBUG
-EXTRA_COMPONENTS += jsTestProtocol.js jsTestProtocol.manifest
-endif
-
-include $(topsrcdir)/config/rules.mk
--- a/chat/protocols/jsTest/moz.build
+++ b/chat/protocols/jsTest/moz.build
@@ -1,4 +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/.
+
+if CONFIG['MOZ_DEBUG']:
+    EXTRA_COMPONENTS += [
+        'jsTestProtocol.js',
+        'jsTestProtocol.manifest',
+    ]
+
deleted file mode 100644
--- a/chat/protocols/odnoklassniki/Makefile.in
+++ /dev/null
@@ -1,17 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= ../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = \
-		odnoklassniki.js \
-		odnoklassniki.manifest \
-		$(NULL)
-
-include $(topsrcdir)/config/rules.mk
--- a/chat/protocols/odnoklassniki/moz.build
+++ b/chat/protocols/odnoklassniki/moz.build
@@ -1,4 +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/.
+
+EXTRA_COMPONENTS += [
+    'odnoklassniki.js',
+    'odnoklassniki.manifest',
+]
+
deleted file mode 100644
--- a/chat/protocols/twitter/Makefile.in
+++ /dev/null
@@ -1,17 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = \
-		twitter.js \
-		twitter.manifest \
-		$(NULL)
-
-include $(topsrcdir)/config/rules.mk
--- a/chat/protocols/twitter/moz.build
+++ b/chat/protocols/twitter/moz.build
@@ -1,4 +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/.
+
+EXTRA_COMPONENTS += [
+    'twitter.js',
+    'twitter.manifest',
+]
+
deleted file mode 100644
--- a/chat/protocols/vkontakte/Makefile.in
+++ /dev/null
@@ -1,17 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = \
-		vkontakte.js \
-		vkontakte.manifest \
-		$(NULL)
-
-include $(topsrcdir)/config/rules.mk
--- a/chat/protocols/vkontakte/moz.build
+++ b/chat/protocols/vkontakte/moz.build
@@ -1,4 +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/.
+
+EXTRA_COMPONENTS += [
+    'vkontakte.js',
+    'vkontakte.manifest',
+]
+
--- a/chat/protocols/xmpp/Makefile.in
+++ b/chat/protocols/xmpp/Makefile.in
@@ -4,21 +4,16 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-		xmpp.js \
-		xmpp.manifest \
-		$(NULL)
-
 EXTRA_JS_MODULES = \
 		xmpp.jsm \
 		xmpp-authmechs.jsm \
 		xmpp-session.jsm \
 		xmpp-xml.jsm \
 		$(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/chat/protocols/xmpp/moz.build
+++ b/chat/protocols/xmpp/moz.build
@@ -1,4 +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/.
+
+EXTRA_COMPONENTS += [
+    'xmpp.js',
+    'xmpp.manifest',
+]
+
--- a/editor/ui/Makefile.in
+++ b/editor/ui/Makefile.in
@@ -6,18 +6,15 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 ifndef MOZ_STANDALONE_COMPOSER
 PREF_JS_EXPORTS = $(srcdir)/composer.js
-ifdef MOZ_SUITE
-EXTRA_COMPONENTS = nsComposerCmdLineHandler.manifest nsComposerCmdLineHandler.js
-endif
 endif
 
 EXTRA_JS_MODULES += \
   editorUtilities.jsm \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/editor/ui/moz.build
+++ b/editor/ui/moz.build
@@ -1,7 +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/.
 
 DIRS += ['locales']
 
+if not CONFIG['MOZ_STANDALONE_COMPOSER']:
+    if CONFIG['MOZ_SUITE']:
+        EXTRA_COMPONENTS += [
+            'nsComposerCmdLineHandler.js',
+            'nsComposerCmdLineHandler.manifest',
+        ]
+
--- a/ldap/xpcom/src/Makefile.in
+++ b/ldap/xpcom/src/Makefile.in
@@ -17,21 +17,16 @@ MODULE_NAME	= nsLDAPProtocolModule
 
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY	= 1
 else
 FORCE_SHARED_LIB = 1
 endif
 
-EXTRA_COMPONENTS = \
-		nsLDAPProtocolHandler.js \
-		ldapComponents.manifest \
-		$(NULL)
-
 ifdef MOZ_PREF_EXTENSIONS
 DEFINES += -DMOZ_PREF_EXTENSIONS
 endif
 
 ifdef MOZ_PSM
 DEFINES		+= -DMOZ_PSM
 endif
 
--- a/ldap/xpcom/src/moz.build
+++ b/ldap/xpcom/src/moz.build
@@ -19,8 +19,14 @@ CPP_SOURCES += [
     'nsLDAPURL.cpp',
 ]
 
 if CONFIG['MOZ_PREF_EXTENSIONS']:
     CPP_SOURCES += ['nsLDAPSyncQuery.cpp']
 
 if CONFIG['MOZ_PSM']:
     CPP_SOURCES += ['nsLDAPSecurityGlue.cpp']
+
+EXTRA_COMPONENTS += [
+    'ldapComponents.manifest',
+    'nsLDAPProtocolHandler.js',
+]
+
--- a/mail/components/Makefile.in
+++ b/mail/components/Makefile.in
@@ -5,23 +5,15 @@
 
 DEPTH   = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-	nsMailDefaultHandler.js \
-	mailContentHandler.js \
-	aboutRedirector.js \
-	mailGlue.js \
-	mailComponents.manifest \
-	$(NULL)
-
 EXTRA_JS_MODULES = \
   appIdleManager.js \
   $(NULL)
 
 
 include $(topsrcdir)/config/rules.mk
 
--- a/mail/components/activity/Makefile.in
+++ b/mail/components/activity/Makefile.in
@@ -4,19 +4,12 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-  nsActivity.js \
-  nsActivityManager.js \
-  nsActivityManagerUI.js \
-  activityComponents.manifest \
-  $(NULL)
-
 libs:: $(wildcard $(srcdir)/modules/*.js)
 	$(INSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)/modules/activity
 
 include $(topsrcdir)/config/rules.mk
--- a/mail/components/activity/moz.build
+++ b/mail/components/activity/moz.build
@@ -6,8 +6,15 @@
 XPIDL_SOURCES += [
     'nsIActivity.idl',
     'nsIActivityManager.idl',
     'nsIActivityManagerUI.idl',
 ]
 
 MODULE = 'activity'
 
+EXTRA_COMPONENTS += [
+    'activityComponents.manifest',
+    'nsActivity.js',
+    'nsActivityManager.js',
+    'nsActivityManagerUI.js',
+]
+
--- a/mail/components/cloudfile/Makefile.in
+++ b/mail/components/cloudfile/Makefile.in
@@ -4,20 +4,13 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-  nsYouSendIt.js \
-  nsUbuntuOne.js \
-  nsBox.js \
-  cloudFileComponents.manifest \
-  $(NULL)
-
 EXTRA_JS_MODULES = \
   cloudFileAccounts.js \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/mail/components/cloudfile/moz.build
+++ b/mail/components/cloudfile/moz.build
@@ -4,8 +4,15 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 XPIDL_SOURCES += [
     'nsIMsgCloudFileProvider.idl',
 ]
 
 MODULE = 'cloudfile'
 
+EXTRA_COMPONENTS += [
+    'cloudFileComponents.manifest',
+    'nsBox.js',
+    'nsUbuntuOne.js',
+    'nsYouSendIt.js',
+]
+
--- a/mail/components/im/Makefile.in
+++ b/mail/components/im/Makefile.in
@@ -4,22 +4,16 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-		imIncomingServer.js \
-		imProtocolInfo.js \
-		im.manifest \
-		$(NULL)
-
 EXTRA_JS_MODULES = \
 		modules/chatHandler.jsm \
 		modules/index_im.js \
 		modules/search_im.js \
 		$(NULL)
 
 PREF_JS_EXPORTS = $(srcdir)/all-im.js
 
--- a/mail/components/im/moz.build
+++ b/mail/components/im/moz.build
@@ -1,4 +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/.
+
+EXTRA_COMPONENTS += [
+    'im.manifest',
+    'imIncomingServer.js',
+    'imProtocolInfo.js',
+]
+
--- a/mail/components/moz.build
+++ b/mail/components/moz.build
@@ -33,8 +33,16 @@ DIRS += ['build']
 XPIDL_SOURCES += [
     'nsIMailGlue.idl',
 ]
 
 XPIDL_MODULE = 'mailcompsbase'
 
 MODULE = 'mailcomps'
 
+EXTRA_COMPONENTS += [
+    'aboutRedirector.js',
+    'mailComponents.manifest',
+    'mailContentHandler.js',
+    'mailGlue.js',
+    'nsMailDefaultHandler.js',
+]
+
--- a/mail/components/phishing/Makefile.in
+++ b/mail/components/phishing/Makefile.in
@@ -8,13 +8,9 @@ srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 EXTRA_PP_COMPONENTS = \
   nsPhishingProtectionApplication.js \
   $(NULL)
 
-EXTRA_COMPONENTS = \
-  phishing.manifest \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/mail/components/phishing/moz.build
+++ b/mail/components/phishing/moz.build
@@ -1,4 +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/.
+
+EXTRA_COMPONENTS += [
+    'phishing.manifest',
+]
+
--- a/mail/components/shell/Makefile.in
+++ b/mail/components/shell/Makefile.in
@@ -10,18 +10,13 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 DEFINES += -DMOZ_APP_NAME=\"$(MOZ_APP_NAME)\"
 
 LIBRARY_NAME = shellservice_s
 MODULE_NAME = nsMailShellModule
 MOZILLA_INTERNAL_API = 1
 
-EXTRA_COMPONENTS = \
-  nsSetDefaultMail.js \
-  shell.manifest \
-  $(NULL)
-
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
 
 CXXFLAGS += $(TK_CFLAGS)
--- a/mail/components/shell/moz.build
+++ b/mail/components/shell/moz.build
@@ -15,8 +15,13 @@ if CONFIG['OS_ARCH'] == 'WINNT':
     CPP_SOURCES += ['nsMailWinIntegration.cpp']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2':
     CPP_SOURCES += ['nsMailGNOMEIntegration.cpp']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     CPP_SOURCES += ['nsMailMacIntegration.cpp']
 
+EXTRA_COMPONENTS += [
+    'nsSetDefaultMail.js',
+    'shell.manifest',
+]
+
--- a/mail/steel/Makefile.in
+++ b/mail/steel/Makefile.in
@@ -5,12 +5,11 @@
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 relativesrcdir = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = steelApplication.manifest
 EXTRA_PP_COMPONENTS = steelApplication.js
 
 include $(topsrcdir)/config/rules.mk
--- a/mail/steel/moz.build
+++ b/mail/steel/moz.build
@@ -6,8 +6,12 @@
 XPIDL_SOURCES += [
     'steelIApplication.idl',
 ]
 
 XPIDL_MODULE = 'steel'
 
 XPCSHELL_TESTS_MANIFESTS += ['test/xpcshell.ini']
 
+EXTRA_COMPONENTS += [
+    'steelApplication.manifest',
+]
+
--- a/mailnews/addrbook/src/Makefile.in
+++ b/mailnews/addrbook/src/Makefile.in
@@ -11,38 +11,29 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= addrbook_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-EXTRA_COMPONENTS += \
-		nsAbLDAPAttributeMap.js \
-		nsAbAutoCompleteMyDomain.js \
-		nsAbAutoCompleteSearch.js \
-		$(NULL)
-
 EXTRA_PP_COMPONENTS += \
 		nsAddrbook.manifest \
 		$(NULL)
 
 ifeq ($(OS_ARCH),WINNT)
 OS_CXXFLAGS += -DNOMINMAX
 endif
 
 ifdef MOZ_LDAP_XPCOM
 DEFINES += -DMOZ_LDAP_XPCOM
 
 ifdef MOZ_INCOMPLETE_TOOLKIT_LDAP_AUTOCOMPLETE
 DEFINES += -DMOZ_INCOMPLETE_TOOLKIT_LDAP_AUTOCOMPLETE
-EXTRA_COMPONENTS += \
-		nsAbLDAPAutoCompleteSearch.js \
-		$(NULL)
 endif
 
 # XXX These files are not being built as they don't work. Bug 311632 should
 # fix them.
 # nsAbLDAPChangeLogQuery.cpp
 # nsAbLDAPChangeLogData.cpp
 endif
 
--- a/mailnews/addrbook/src/moz.build
+++ b/mailnews/addrbook/src/moz.build
@@ -65,14 +65,22 @@ if CONFIG['MOZ_LDAP_XPCOM']:
         'nsAbLDAPDirectoryQuery.cpp',
         'nsAbLDAPDirectoryModify.cpp',
         'nsAbLDAPListenerBase.cpp',
         'nsAbLDAPReplicationData.cpp',
         'nsAbLDAPReplicationQuery.cpp',
         'nsAbLDAPReplicationService.cpp',
     ]
 
-    if not CONFIG['MOZ_INCOMPLETE_TOOLKIT_LDAP_AUTOCOMPLETE']:
+    if CONFIG['MOZ_INCOMPLETE_TOOLKIT_LDAP_AUTOCOMPLETE']:
+        EXTRA_COMPONENTS += ['nsAbLDAPAutoCompleteSearch.js']
+    else:
         CPP_SOURCES += [
             'nsAbLDAPAutoCompFormatter.cpp',
             'nsLDAPAutoCompleteSession.cpp',
         ]
 
+EXTRA_COMPONENTS += [
+    'nsAbAutoCompleteMyDomain.js',
+    'nsAbAutoCompleteSearch.js',
+    'nsAbLDAPAttributeMap.js',
+]
+
--- a/mailnews/base/search/src/Makefile.in
+++ b/mailnews/base/search/src/Makefile.in
@@ -13,21 +13,16 @@ include $(DEPTH)/config/autoconf.mk
 LIBRARY_NAME	= msgsearch_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 EXPORT_DIR	= $(DIST)/bin/isp
 
 
-EXTRA_COMPONENTS += \
-		nsMsgTraitService.js \
-		nsMsgTraitService.manifest \
-		$(NULL)
- 
 EXPORT_RESOURCE_FILES	= \
 				  Bogofilter.sfd \
 				  DSPAM.sfd \
 				  POPFile.sfd \
 				  SpamAssassin.sfd \
 				  SpamPal.sfd \
 			        $(NULL)
 
--- a/mailnews/base/search/src/moz.build
+++ b/mailnews/base/search/src/moz.build
@@ -16,8 +16,13 @@ CPP_SOURCES += [
     'nsMsgLocalSearch.cpp',
     'nsMsgSearchAdapter.cpp',
     'nsMsgSearchNews.cpp',
     'nsMsgSearchSession.cpp',
     'nsMsgSearchTerm.cpp',
     'nsMsgSearchValue.cpp',
 ]
 
+EXTRA_COMPONENTS += [
+    'nsMsgTraitService.js',
+    'nsMsgTraitService.manifest',
+]
+
--- a/mailnews/base/src/Makefile.in
+++ b/mailnews/base/src/Makefile.in
@@ -15,23 +15,16 @@ ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 ifdef MOZ_LDAP_XPCOM
 DEFINES         += -DMOZ_LDAP_XPCOM
 endif
 
-EXTRA_COMPONENTS = \
-		nsMailNewsCommandLineHandler.js \
-		msgAsyncPrompter.js \
-		newMailNotificationService.js \
-		msgBase.manifest \
-		$(NULL)
-
 EXTRA_JS_MODULES = \
 		virtualFolderWrapper.js \
 		$(NULL)
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
--- a/mailnews/base/src/moz.build
+++ b/mailnews/base/src/moz.build
@@ -62,8 +62,16 @@ if CONFIG['OS_ARCH'] == 'WINNT':
     CPP_SOURCES += ['nsMessengerWinIntegration.cpp']
 elif CONFIG['OS_ARCH'] == 'OS2':
     CPP_SOURCES += ['nsMessengerOS2Integration.cpp']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2':
     CPP_SOURCES += ['nsMessengerUnixIntegration.cpp']
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     CMMSRCS += ['nsMessengerOSXIntegration.mm']
+
+EXTRA_COMPONENTS += [
+    'msgAsyncPrompter.js',
+    'msgBase.manifest',
+    'newMailNotificationService.js',
+    'nsMailNewsCommandLineHandler.js',
+]
+
--- a/mailnews/compose/src/Makefile.in
+++ b/mailnews/compose/src/Makefile.in
@@ -11,22 +11,16 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgcompose_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-EXTRA_COMPONENTS = \
-		nsSMTPProtocolHandler.js \
-		nsSMTPProtocolHandler.manifest \
-		$(NULL)
-
-# we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
 
 ifeq ($(OS_ARCH),WINNT)
 ifdef MOZ_UNICODE
 DEFINES		+= -DMOZ_UNICODE
 endif
--- a/mailnews/compose/src/moz.build
+++ b/mailnews/compose/src/moz.build
@@ -34,8 +34,13 @@ CPP_SOURCES += [
 ]
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     CPP_SOURCES += [
         'nsMsgAppleDoubleEncode.cpp',
         'nsMsgAppleEncode.cpp',
     ]
 
+EXTRA_COMPONENTS += [
+    'nsSMTPProtocolHandler.js',
+    'nsSMTPProtocolHandler.manifest',
+]
+
deleted file mode 100644
--- a/mailnews/db/gloda/components/Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = $(wildcard $(srcdir)/*.js) \
-                   gloda.manifest
-include $(topsrcdir)/config/rules.mk
--- a/mailnews/db/gloda/components/moz.build
+++ b/mailnews/db/gloda/components/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/.
 
 MODULE = 'mailnewsglobaldb'
 
+EXTRA_COMPONENTS += [
+    'glautocomp.js',
+    'gloda.manifest',
+    'jsmimeemitter.js',
+]
+
--- a/mailnews/extensions/dsn/Makefile.in
+++ b/mailnews/extensions/dsn/Makefile.in
@@ -5,19 +5,16 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS =  src/dsn-service.js \
-                    src/dsn-service.manifest
-
 include $(topsrcdir)/config/rules.mk
 
 libs::
 	$(INSTALL) $(srcdir)/content/dsn.js $(DIST)/bin/defaults/pref
 
 install::
 	$(SYSINSTALL) $(IFLAGS1) $(srcdir)/content/dsn.js $(DESTDIR)$(mozappdir)/defaults/pref
 
--- a/mailnews/extensions/dsn/moz.build
+++ b/mailnews/extensions/dsn/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/.
 
 MODULE = 'msgdsn'
 
+EXTRA_COMPONENTS += [
+    'src/dsn-service.js',
+    'src/dsn-service.manifest',
+]
+
--- a/mailnews/extensions/mdn/src/Makefile.in
+++ b/mailnews/extensions/mdn/src/Makefile.in
@@ -12,16 +12,12 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgmdn_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-EXTRA_COMPONENTS =  mdn-service.js \
-                    mdn-service.manifest
-
-# we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
 
--- a/mailnews/extensions/mdn/src/moz.build
+++ b/mailnews/extensions/mdn/src/moz.build
@@ -4,8 +4,13 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'msgmdn'
 
 CPP_SOURCES += [
     'nsMsgMdnGenerator.cpp',
 ]
 
+EXTRA_COMPONENTS += [
+    'mdn-service.js',
+    'mdn-service.manifest',
+]
+
--- a/mailnews/extensions/newsblog/Makefile.in
+++ b/mailnews/extensions/newsblog/Makefile.in
@@ -24,14 +24,9 @@ EXPORT_DIR	= $(DIST)/bin/isp
 GARBAGE += $(EXPORT_DIR)/rss.rdf 
 
 libs:: rss.rdf
 	$(INSTALL) $^ $(EXPORT_DIR)
 
 install:: rss.rdf
 	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/isp
 
-EXTRA_COMPONENTS = \
-		js/newsblog.js \
-		js/newsblog.manifest \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/mailnews/extensions/newsblog/moz.build
+++ b/mailnews/extensions/newsblog/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/.
 
 MODULE = 'newsblog'
 
+EXTRA_COMPONENTS += [
+    'js/newsblog.js',
+    'js/newsblog.manifest',
+]
+
deleted file mode 100644
--- a/mailnews/extensions/offline-startup/Makefile.in
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= @DEPTH@
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-EXTRA_COMPONENTS = \
-  js/offlineStartup.js \
-  js/offlineStartup.manifest \
-  $(NULL)
-
-include $(topsrcdir)/config/rules.mk
--- a/mailnews/extensions/offline-startup/moz.build
+++ b/mailnews/extensions/offline-startup/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/.
 
 MODULE = 'offline-startup'
 
+EXTRA_COMPONENTS += [
+    'js/offlineStartup.js',
+    'js/offlineStartup.manifest',
+]
+
--- a/mailnews/extensions/smime/src/Makefile.in
+++ b/mailnews/extensions/smime/src/Makefile.in
@@ -12,18 +12,12 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgsmime_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-EXTRA_COMPONENTS = \
-  smime-service.js \
-  smime-service.manifest \
-  $(NULL)
-
-# we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
 
--- a/mailnews/extensions/smime/src/moz.build
+++ b/mailnews/extensions/smime/src/moz.build
@@ -6,8 +6,13 @@
 MODULE = 'msgsmime'
 
 CPP_SOURCES += [
     'nsEncryptedSMIMEURIsService.cpp',
     'nsMsgComposeSecure.cpp',
     'nsSMimeJSHelper.cpp',
 ]
 
+EXTRA_COMPONENTS += [
+    'smime-service.js',
+    'smime-service.manifest',
+]
+
--- a/mailnews/mime/src/Makefile.in
+++ b/mailnews/mime/src/Makefile.in
@@ -15,18 +15,13 @@ DEFINES		+= -DENABLE_SMIME
 endif
 
 LIBRARY_NAME	= mime_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-EXTRA_COMPONENTS = \
-		mimeJSComponents.js \
-		msgMime.manifest \
-		$(NULL)
-
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
 
 
--- a/mailnews/mime/src/moz.build
+++ b/mailnews/mime/src/moz.build
@@ -70,8 +70,13 @@ CPP_SOURCES += [
 ]
 
 if CONFIG['MOZ_PSM']:
     CPP_SOURCES += [
         'mimecms.cpp',
         'mimemcms.cpp',
     ]
 
+EXTRA_COMPONENTS += [
+    'mimeJSComponents.js',
+    'msgMime.manifest',
+]
+
--- a/suite/browser/Makefile.in
+++ b/suite/browser/Makefile.in
@@ -5,22 +5,16 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-	SuiteBrowser.manifest \
-	nsBrowserContentHandler.js \
-	nsTypeAheadFind.js \
-	$(NULL)
-
 PREF_JS_EXPORTS = \
 	$(srcdir)/browser-prefs.js \
 	$(NULL)
 
 ifdef LIBXUL_SDK
 PREF_JS_EXPORTS += \
 	$(srcdir)/channel-prefs.js
 	$(NULL)
--- a/suite/browser/moz.build
+++ b/suite/browser/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/.
 
 TEST_DIRS += ['test']
 
+EXTRA_COMPONENTS += [
+    'SuiteBrowser.manifest',
+    'nsBrowserContentHandler.js',
+    'nsTypeAheadFind.js',
+]
+
--- a/suite/common/src/Makefile.in
+++ b/suite/common/src/Makefile.in
@@ -5,25 +5,16 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = \
-	nsAbout.js \
-	nsSessionStartup.js \
-	nsSidebar.js \
-	SuiteCommon.manifest \
-	nsSuiteDownloadManagerUI.js \
-	nsSuiteGlue.js \
-	$(NULL)
-
 EXTRA_PP_COMPONENTS = \
 	nsSessionStore.js \
 	$(NULL)
 
 EXTRA_JS_MODULES = \
 	PlacesUIUtils.jsm \
 	$(NULL)
 
--- a/suite/common/src/moz.build
+++ b/suite/common/src/moz.build
@@ -1,7 +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/.
 
 MODULE = 'suitecommon'
 
+EXTRA_COMPONENTS += [
+    'SuiteCommon.manifest',
+    'nsAbout.js',
+    'nsSessionStartup.js',
+    'nsSidebar.js',
+    'nsSuiteDownloadManagerUI.js',
+    'nsSuiteGlue.js',
+]
+
--- a/suite/feeds/src/Makefile.in
+++ b/suite/feeds/src/Makefile.in
@@ -7,16 +7,9 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = suitefeeds_s
 FORCE_STATIC_LIB = 1
 
-EXTRA_COMPONENTS = \
-	SuiteFeeds.manifest \
-	FeedConverter.js \
-	FeedWriter.js \
-	WebContentConverter.js \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/suite/feeds/src/moz.build
+++ b/suite/feeds/src/moz.build
@@ -4,8 +4,15 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'suitefeeds'
 
 CPP_SOURCES += [
     'nsFeedSniffer.cpp',
 ]
 
+EXTRA_COMPONENTS += [
+    'FeedConverter.js',
+    'FeedWriter.js',
+    'SuiteFeeds.manifest',
+    'WebContentConverter.js',
+]
+
--- a/suite/shell/src/Makefile.in
+++ b/suite/shell/src/Makefile.in
@@ -8,28 +8,16 @@ srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 FORCE_STATIC_LIB=1
 
 
 ifeq ($(OS_ARCH),WINNT)
-build_extra := 1
 OS_LIBS         += $(call EXPAND_LIBNAME,ole32 version uuid shell32)
-else
-ifeq ($(MOZ_WIDGET_TOOLKIT), cocoa)
-build_extra := 1
-else
-ifeq ($(MOZ_WIDGET_TOOLKIT), gtk2)
-build_extra := 1
-endif
-endif
 endif
 
-ifdef build_extra
-EXTRA_COMPONENTS = nsSetDefault.manifest nsSetDefault.js
 LIBRARY_NAME = shellservice_s
-endif
 
 include $(topsrcdir)/config/rules.mk
 
 CXXFLAGS += $(TK_CFLAGS)
--- a/suite/shell/src/moz.build
+++ b/suite/shell/src/moz.build
@@ -7,8 +7,14 @@ MODULE = 'shellservice'
 
 if CONFIG['OS_ARCH'] == 'WINNT':
     CPP_SOURCES += ['nsWindowsShellService.cpp']
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     CPP_SOURCES += ['nsMacShellService.cpp']
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2':
     CPP_SOURCES += ['nsGNOMEShellService.cpp']
 
+if CPP_SOURCES:
+    EXTRA_COMPONENTS += [
+        'nsSetDefault.js',
+        'nsSetDefault.manifest',
+    ]
+
--- a/suite/smile/src/Makefile.in
+++ b/suite/smile/src/Makefile.in
@@ -4,13 +4,11 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXTRA_COMPONENTS = smileApplication.manifest
-
 EXTRA_PP_COMPONENTS = smileApplication.js
 
 include $(topsrcdir)/config/rules.mk
--- a/suite/smile/src/moz.build
+++ b/suite/smile/src/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/.
 
 MODULE = 'smile'
 
+EXTRA_COMPONENTS += [
+    'smileApplication.manifest',
+]
+