Bug 864744 - Move CPPSRCS to moz.build, comm-central version. r=Standard8.
authorJoshua Cranmer <Pidgeot18@gmail.com>
Wed, 19 Jun 2013 08:12:29 -0500
changeset 15757 951512af3e4970248d0dbb5b7681183449a45199
parent 15756 7a6a3257525d9d033fe2e19396c27cc85ffaf1b3
child 15758 a84b653101aa53f146974821f8c1d366141a56e5
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
bugs864744
Bug 864744 - Move CPPSRCS to moz.build, comm-central version. r=Standard8.
calendar/base/backend/libical/Makefile.in
calendar/base/backend/libical/build/Makefile.in
calendar/base/backend/libical/build/moz.build
calendar/base/backend/libical/moz.build
db/mork/build/Makefile.in
db/mork/build/moz.build
db/mork/src/Makefile.in
db/mork/src/moz.build
ldap/xpcom/src/Makefile.in
ldap/xpcom/src/moz.build
mail/app/Makefile.in
mail/app/moz.build
mail/components/build/Makefile.in
mail/components/build/moz.build
mail/components/migration/src/Makefile.in
mail/components/migration/src/moz.build
mail/components/search/Makefile.in
mail/components/search/moz.build
mail/components/search/wsenable/Makefile.in
mail/components/search/wsenable/moz.build
mail/components/shell/Makefile.in
mail/components/shell/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/base/util/Makefile.in
mailnews/base/util/moz.build
mailnews/build/Makefile.in
mailnews/build/moz.build
mailnews/compose/src/Makefile.in
mailnews/compose/src/moz.build
mailnews/db/msgdb/src/Makefile.in
mailnews/db/msgdb/src/moz.build
mailnews/extensions/bayesian-spam-filter/src/Makefile.in
mailnews/extensions/bayesian-spam-filter/src/moz.build
mailnews/extensions/fts3/src/Makefile.in
mailnews/extensions/fts3/src/moz.build
mailnews/extensions/mailviews/src/Makefile.in
mailnews/extensions/mailviews/src/moz.build
mailnews/extensions/mdn/src/Makefile.in
mailnews/extensions/mdn/src/moz.build
mailnews/extensions/smime/build/Makefile.in
mailnews/extensions/smime/build/moz.build
mailnews/extensions/smime/src/Makefile.in
mailnews/extensions/smime/src/moz.build
mailnews/imap/src/Makefile.in
mailnews/imap/src/moz.build
mailnews/import/applemail/src/Makefile.in
mailnews/import/applemail/src/moz.build
mailnews/import/build/Makefile.in
mailnews/import/build/moz.build
mailnews/import/eudora/src/Makefile.in
mailnews/import/eudora/src/moz.build
mailnews/import/oexpress/Makefile.in
mailnews/import/oexpress/moz.build
mailnews/import/outlook/src/Makefile.in
mailnews/import/outlook/src/moz.build
mailnews/import/src/Makefile.in
mailnews/import/src/moz.build
mailnews/import/text/src/Makefile.in
mailnews/import/text/src/moz.build
mailnews/import/vcard/src/Makefile.in
mailnews/import/vcard/src/moz.build
mailnews/import/winlivemail/Makefile.in
mailnews/import/winlivemail/moz.build
mailnews/local/src/Makefile.in
mailnews/local/src/moz.build
mailnews/mapi/mapiDll/Makefile.in
mailnews/mapi/mapiDll/moz.build
mailnews/mapi/mapihook/src/Makefile.in
mailnews/mapi/mapihook/src/moz.build
mailnews/mime/cthandlers/glue/Makefile.in
mailnews/mime/cthandlers/glue/moz.build
mailnews/mime/cthandlers/pgpmime/Makefile.in
mailnews/mime/cthandlers/pgpmime/moz.build
mailnews/mime/cthandlers/smimestub/Makefile.in
mailnews/mime/cthandlers/smimestub/moz.build
mailnews/mime/cthandlers/vcard/Makefile.in
mailnews/mime/cthandlers/vcard/moz.build
mailnews/mime/emitters/Makefile.in
mailnews/mime/emitters/moz.build
mailnews/mime/src/Makefile.in
mailnews/mime/src/moz.build
mailnews/news/src/Makefile.in
mailnews/news/src/moz.build
suite/app/Makefile.in
suite/app/moz.build
suite/build/Makefile.in
suite/build/moz.build
suite/feeds/src/Makefile.in
suite/feeds/src/moz.build
suite/profile/Makefile.in
suite/profile/migration/src/Makefile.in
suite/profile/migration/src/moz.build
suite/profile/moz.build
suite/shell/src/Makefile.in
suite/shell/src/moz.build
--- a/calendar/base/backend/libical/Makefile.in
+++ b/calendar/base/backend/libical/Makefile.in
@@ -12,18 +12,9 @@ include $(DEPTH)/config/autoconf.mk
 LIBRARY_NAME     = calbase_s
 MODULE_NAME      = calBaseModule
 FORCE_STATIC_LIB = 1
 GRE_MODULE       = 1
 FORCE_USE_PIC   = 1 # Force use of PIC
 USE_STATIC_LIBS = 1
 NO_INTERFACES_MANIFEST = 1
 
-CPPSRCS = calDateTime.cpp \
-	  calDuration.cpp \
-	  calPeriod.cpp \
-	  calICSService.cpp \
-	  calTimezone.cpp \
-	  calRecurrenceRule.cpp \
-	  calUtils.cpp \
-	  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/calendar/base/backend/libical/build/Makefile.in
+++ b/calendar/base/backend/libical/build/Makefile.in
@@ -15,19 +15,16 @@ SHORT_LIBNAME = calbscmp
 IS_COMPONENT = 1
 MODULE_NAME = calBaseModule
 # We don't want an EXPORT_LIBRARY
 FORCE_SHARED_LIB = 1
 FORCE_USE_PIC   = 1 # Force use of PIC
 USE_STATIC_LIBS = 1
 NO_COMPONENTS_MANIFEST = 1
 
-CPPSRCS = calBaseModule.cpp \
-	$(NULL)
-
 LOCAL_INCLUDES = \
 	-I$(srcdir)/..
 
 SHARED_LIBRARY_LIBS = \
     $(DEPTH)/calendar/base/backend/libical/$(LIB_PREFIX)calbase_s.$(LIB_SUFFIX) \
     $(DEPTH)/calendar/libical/src/libical/$(LIB_PREFIX)mozical.$(LIB_SUFFIX) \
     $(NULL)
 
--- a/calendar/base/backend/libical/build/moz.build
+++ b/calendar/base/backend/libical/build/moz.build
@@ -1,8 +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_MODULE = 'caldatetime_libical'
 MODULE = 'calbasecomps'
 
+CPP_SOURCES += [
+    'calBaseModule.cpp',
+]
+
--- a/calendar/base/backend/libical/moz.build
+++ b/calendar/base/backend/libical/moz.build
@@ -9,8 +9,19 @@ DIRS = [
     'build'
 ]
 
 XPIDL_SOURCES += [
     'calIDateTime.idl',
 ]
 
 XPIDL_MODULE = 'caldatetime_libical'
+
+CPP_SOURCES += [
+    'calDateTime.cpp',
+    'calDuration.cpp',
+    'calICSService.cpp',
+    'calPeriod.cpp',
+    'calRecurrenceRule.cpp',
+    'calTimezone.cpp',
+    'calUtils.cpp',
+]
+
--- a/db/mork/build/Makefile.in
+++ b/db/mork/build/Makefile.in
@@ -17,18 +17,16 @@ MODULE_NAME	= nsMorkModule
 
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY	= 1
 else
 FORCE_SHARED_LIB = 1
 endif
 
-CPPSRCS		= nsMorkFactory.cpp
-
 SHARED_LIBRARY_LIBS = ../src/$(LIB_PREFIX)msgmork_s.$(LIB_SUFFIX)
 
 ifdef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 EXTRA_DSO_LDOPTS += \
 	$(XPCOM_GLUE_LDOPTS) \
 	$(NSPR_LIBS) \
 	$(NULL)
 endif
--- a/db/mork/build/moz.build
+++ b/db/mork/build/moz.build
@@ -5,8 +5,12 @@
 
 MODULE = 'mork'
 
 EXPORTS += [
     'nsIMdbFactoryFactory.h',
     'nsMorkCID.h',
 ]
 
+CPP_SOURCES += [
+    'nsMorkFactory.cpp',
+]
+
--- a/db/mork/src/Makefile.in
+++ b/db/mork/src/Makefile.in
@@ -13,59 +13,10 @@ include $(DEPTH)/config/autoconf.mk
 LIBRARY_NAME	= msgmork_s
 FORCE_STATIC_LIB=1
 
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY	= 1
 endif
 
-CPPSRCS		= \
-		orkinHeap.cpp \
-		morkArray.cpp \
-		morkAtom.cpp \
-		morkAtomMap.cpp \
-		morkAtomSpace.cpp \
-		morkBlob.cpp \
-		morkBuilder.cpp \
-		morkCell.cpp \
-		morkCellObject.cpp \
-		morkCh.cpp \
-		morkConfig.cpp \
-		morkCursor.cpp \
-		morkDeque.cpp \
-		morkEnv.cpp \
-		morkFactory.cpp \
-		morkFile.cpp \
-		morkHandle.cpp \
-		morkIntMap.cpp \
-		morkMap.cpp \
-		morkNode.cpp \
-		morkNodeMap.cpp \
-		morkObject.cpp \
-		morkParser.cpp \
-		morkPool.cpp \
-		morkRow.cpp \
-		morkRowCellCursor.cpp \
-		morkRowMap.cpp \
-		morkRowObject.cpp \
-		morkRowSpace.cpp \
-		morkSink.cpp \
-		morkSpace.cpp \
-		morkStore.cpp \
-		morkStream.cpp \
-		morkTable.cpp \
-		morkPortTableCursor.cpp \
-		morkTableRowCursor.cpp \
-		morkThumb.cpp \
-		morkWriter.cpp \
-		morkYarn.cpp \
-		morkBead.cpp \
-		morkProbeMap.cpp \
-		morkZone.cpp \
-		$(NULL)
-
-ifeq ($(OS_ARCH),WINNT)
-CPPSRCS		+= morkSearchRowCursor.cpp
-endif
-
 include $(topsrcdir)/config/rules.mk
 
--- a/db/mork/src/moz.build
+++ b/db/mork/src/moz.build
@@ -1,7 +1,55 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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 = 'mork'
 
+CPP_SOURCES += [
+    'morkArray.cpp',
+    'morkAtom.cpp',
+    'morkAtomMap.cpp',
+    'morkAtomSpace.cpp',
+    'morkBead.cpp',
+    'morkBlob.cpp',
+    'morkBuilder.cpp',
+    'morkCell.cpp',
+    'morkCellObject.cpp',
+    'morkCh.cpp',
+    'morkConfig.cpp',
+    'morkCursor.cpp',
+    'morkDeque.cpp',
+    'morkEnv.cpp',
+    'morkFactory.cpp',
+    'morkFile.cpp',
+    'morkHandle.cpp',
+    'morkIntMap.cpp',
+    'morkMap.cpp',
+    'morkNode.cpp',
+    'morkNodeMap.cpp',
+    'morkObject.cpp',
+    'morkParser.cpp',
+    'morkPool.cpp',
+    'morkPortTableCursor.cpp',
+    'morkProbeMap.cpp',
+    'morkRow.cpp',
+    'morkRowCellCursor.cpp',
+    'morkRowMap.cpp',
+    'morkRowObject.cpp',
+    'morkRowSpace.cpp',
+    'morkSink.cpp',
+    'morkSpace.cpp',
+    'morkStore.cpp',
+    'morkStream.cpp',
+    'morkTable.cpp',
+    'morkTableRowCursor.cpp',
+    'morkThumb.cpp',
+    'morkWriter.cpp',
+    'morkYarn.cpp',
+    'morkZone.cpp',
+    'orkinHeap.cpp',
+]
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+    CPP_SOURCES += ['morkSearchRowCursor.cpp']
+
--- a/ldap/xpcom/src/Makefile.in
+++ b/ldap/xpcom/src/Makefile.in
@@ -22,41 +22,22 @@ else
 FORCE_SHARED_LIB = 1
 endif
 
 EXTRA_COMPONENTS = \
 		nsLDAPProtocolHandler.js \
 		ldapComponents.manifest \
 		$(NULL)
 
-CPPSRCS		= \
-		nsLDAPProtocolModule.cpp \
-		nsLDAPMessage.cpp \
-		nsLDAPConnection.cpp \
-		nsLDAPOperation.cpp \
-		nsLDAPURL.cpp \
-		nsLDAPServer.cpp \
-		nsLDAPService.cpp \
-		nsLDAPBERValue.cpp \
-		nsLDAPControl.cpp \
-		nsLDAPBERElement.cpp \
-		nsLDAPModification.cpp \
-		$(NULL)
-
 ifdef MOZ_PREF_EXTENSIONS
 DEFINES += -DMOZ_PREF_EXTENSIONS
-
-CPPSRCS += nsLDAPSyncQuery.cpp
 endif
 
 ifdef MOZ_PSM
 DEFINES		+= -DMOZ_PSM
-CPPSRCS		+= \
-		nsLDAPSecurityGlue.cpp \
-		$(NULL)
 endif
 
 EXTRA_DSO_LDOPTS += $(LDAP_LIBS)
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 EXTRA_DSO_LDOPTS += $(MOZ_COMPONENT_LIBS)
 else
 EXTRA_DSO_LDOPTS += \
 	$(XPCOM_GLUE_LDOPTS) \
--- a/ldap/xpcom/src/moz.build
+++ b/ldap/xpcom/src/moz.build
@@ -1,7 +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/.
 
 MODULE = 'mozldap'
 
+CPP_SOURCES += [
+    'nsLDAPBERElement.cpp',
+    'nsLDAPBERValue.cpp',
+    'nsLDAPConnection.cpp',
+    'nsLDAPControl.cpp',
+    'nsLDAPMessage.cpp',
+    'nsLDAPModification.cpp',
+    'nsLDAPOperation.cpp',
+    'nsLDAPProtocolModule.cpp',
+    'nsLDAPServer.cpp',
+    'nsLDAPService.cpp',
+    'nsLDAPURL.cpp',
+]
+
+if CONFIG['MOZ_PREF_EXTENSIONS']:
+    CPP_SOURCES += ['nsLDAPSyncQuery.cpp']
+
+if CONFIG['MOZ_PSM']:
+    CPP_SOURCES += ['nsLDAPSecurityGlue.cpp']
--- a/mail/app/Makefile.in
+++ b/mail/app/Makefile.in
@@ -41,18 +41,16 @@ DEFINES += \
   -DGRE_BUILDID=$(GRE_BUILDID) \
    $(NULL)
 
 ifdef LIBXUL_SDK
 include $(topsrcdir)/config/rules.mk
 else
 # Build a binary bootstrapping with XRE_main
 
-CPPSRCS = nsMailApp.cpp
-
 DIST_FILES = application.ini
 
 LOCAL_INCLUDES += \
   -I$(MOZILLA_SRCDIR)/toolkit/xre \
   -I$(MOZILLA_SRCDIR)/xpcom/base \
   -I$(MOZILLA_SRCDIR)/xpcom/build \
   $(NULL)
 
--- a/mail/app/moz.build
+++ b/mail/app/moz.build
@@ -2,8 +2,9 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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 += ['profile']
 
 if not CONFIG['LIBXUL_SDK']:
     PROGRAM = CONFIG['MOZ_APP_NAME']
+    CPP_SOURCES += ['nsMailApp.cpp']
--- a/mail/components/build/Makefile.in
+++ b/mail/components/build/Makefile.in
@@ -16,19 +16,16 @@ LIBRARY_NAME	= mailcomps
 SHORT_LIBNAME	= mailcmp
 EXPORT_LIBRARY	= 1
 IS_COMPONENT	= 1
 MODULE_NAME	= nsMailCompsModule
 LIBXUL_LIBRARY = 1
 MOZILLA_INTERNAL_API = 1
 FORCE_USE_PIC = 1
 
-CPPSRCS = nsMailComps.cpp \
-          $(NULL)
-
 ifeq ($(OS_ARCH),WINNT)
 OS_LIBS += $(call EXPAND_LIBNAME,ole32 shell32)
 endif
 
 LOCAL_INCLUDES = \
 	-I$(srcdir)/../migration/src \
 	-I$(srcdir)/../shell \
 	-I$(srcdir)/../history \
--- a/mail/components/build/moz.build
+++ b/mail/components/build/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 = 'mailcomps'
 
+CPP_SOURCES += [
+    'nsMailComps.cpp',
+]
+
--- a/mail/components/migration/src/Makefile.in
+++ b/mail/components/migration/src/Makefile.in
@@ -8,34 +8,11 @@ srcdir=@srcdir@
 VPATH=@srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = profilemigration_s
 MODULE_NAME = nsMailProfileMigratorModule
 MOZILLA_INTERNAL_API = 1
 
-CPPSRCS = \
-	nsProfileMigrator.cpp \
-	nsMailProfileMigratorUtils.cpp \
-	nsNetscapeProfileMigratorBase.cpp \
-	nsSeamonkeyProfileMigrator.cpp \
-	$(NULL)
-
-ifeq ($(OS_ARCH),WINNT)
-CPPSRCS += \
-	nsProfileMigratorBase.cpp \
-	nsOEProfileMigrator.cpp \
-	nsOutlookProfileMigrator.cpp \
-	nsEudoraProfileMigrator.cpp \
-	$(NULL)
-endif
-
-ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-CPPSRCS += \
-	nsProfileMigratorBase.cpp \
-	nsEudoraProfileMigrator.cpp \
-        $(NULL)
-endif
-
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
--- a/mail/components/migration/src/moz.build
+++ b/mail/components/migration/src/moz.build
@@ -1,7 +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/.
 
 MODULE = 'mailprofilemigration'
 
+CPP_SOURCES += [
+    'nsMailProfileMigratorUtils.cpp',
+    'nsNetscapeProfileMigratorBase.cpp',
+    'nsProfileMigrator.cpp',
+    'nsSeamonkeyProfileMigrator.cpp',
+]
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+    CPP_SOURCES += [
+        'nsEudoraProfileMigrator.cpp',
+        'nsOEProfileMigrator.cpp',
+        'nsOutlookProfileMigrator.cpp',
+        'nsProfileMigratorBase.cpp',
+    ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    CPP_SOURCES += [
+        'nsEudoraProfileMigrator.cpp',
+        'nsProfileMigratorBase.cpp',
+    ]
+
--- a/mail/components/search/Makefile.in
+++ b/mail/components/search/Makefile.in
@@ -24,21 +24,16 @@ endif
 # If on Windows, build Windows Search integration
 ifneq (,$(filter windows, $(MOZ_WIDGET_TOOLKIT)))
 LIBRARY_NAME = winsearch_s
 MODULE_NAME = nsMailWinSearchHelperModule
 ifneq ($(MOZ_WIDGET_TOOLKIT), gtk2)
 MOZILLA_INTERNAL_API = 1
 endif
 
-
-CPPSRCS = \
-  nsMailWinSearchHelper.cpp \
-  $(NULL)
-
 # Windows Search component
 EXTRA_PP_JS_MODULES += \
   WinSearchIntegration.js \
   $(NULL)
 
 FORCE_STATIC_LIB = 1
 endif
 
--- a/mail/components/search/moz.build
+++ b/mail/components/search/moz.build
@@ -2,13 +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/.
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     DIRS += ['mdimporter']
 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
     DIRS += ['wsenable']
+    CPP_SOURCES += ['nsMailWinSearchHelper.cpp']
 
 MODULE = 'mailwinsearch'
 
 DIRS += ['public']
 
--- a/mail/components/search/wsenable/Makefile.in
+++ b/mail/components/search/wsenable/Makefile.in
@@ -4,19 +4,15 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-CPPSRCS = \
-  WSEnable.cpp \
-  $(NULL)
-
 RCINCLUDE = WSEnable.rc
 OS_LIBS += ole32.lib shell32.lib
 
 # This isn't XPCOM code, but it wants to use STL so disable STL wrappers
 STL_FLAGS =
 
 include $(topsrcdir)/config/rules.mk
--- a/mail/components/search/wsenable/moz.build
+++ b/mail/components/search/wsenable/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/.
 
 PROGRAM = 'WSEnable'
 
+CPP_SOURCES += [
+    'WSEnable.cpp',
+]
+
--- a/mail/components/shell/Makefile.in
+++ b/mail/components/shell/Makefile.in
@@ -15,27 +15,13 @@ LIBRARY_NAME = shellservice_s
 MODULE_NAME = nsMailShellModule
 MOZILLA_INTERNAL_API = 1
 
 EXTRA_COMPONENTS = \
   nsSetDefaultMail.js \
   shell.manifest \
   $(NULL)
 
-CPPSRCS = DirectoryProvider.cpp
-
-ifeq ($(OS_ARCH),WINNT)
-CPPSRCS += nsMailWinIntegration.cpp
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT), gtk2)
-CPPSRCS += nsMailGNOMEIntegration.cpp
-endif
-
-ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-CPPSRCS += nsMailMacIntegration.cpp
-endif
-
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
 
 CXXFLAGS += $(TK_CFLAGS)
--- a/mail/components/shell/moz.build
+++ b/mail/components/shell/moz.build
@@ -2,8 +2,21 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['public']
 
 MODULE = 'shellservice'
 
+CPP_SOURCES += [
+    'DirectoryProvider.cpp',
+]
+
+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']
+
--- a/mailnews/addrbook/src/Makefile.in
+++ b/mailnews/addrbook/src/Makefile.in
@@ -11,107 +11,47 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= addrbook_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-CPPSRCS		= \
-		nsAbManager.cpp \
-		nsAbCardProperty.cpp \
-		nsDirPrefs.cpp \
-		nsAddrDatabase.cpp \
-		nsAbDirProperty.cpp \
-		nsAbAddressCollector.cpp \
-		nsAddbookProtocolHandler.cpp  \
-		nsAbMDBDirProperty.cpp \
-		nsAbMDBDirectory.cpp \
-		nsAbMDBCard.cpp \
-		nsAbBSDirectory.cpp \
-		nsAddbookUrl.cpp    \
-		nsAbDirFactoryService.cpp	\
-		nsAbMDBDirFactory.cpp	\
-                nsAbDirectoryQuery.cpp    \
-                nsAbDirectoryQueryProxy.cpp    \
-                nsAbBooleanExpression.cpp \
-                nsAbQueryStringToExpression.cpp \
-                nsAbView.cpp \
-                nsVCard.cpp \
-                nsVCardObj.cpp \
-                nsMsgVCardService.cpp \
-                nsAbLDIFService.cpp \
-                nsAbContentHandler.cpp \
-		$(NULL)
-
 EXTRA_COMPONENTS += \
 		nsAbLDAPAttributeMap.js \
 		nsAbAutoCompleteMyDomain.js \
 		nsAbAutoCompleteSearch.js \
 		$(NULL)
 
 EXTRA_PP_COMPONENTS += \
 		nsAddrbook.manifest \
 		$(NULL)
 
 ifeq ($(OS_ARCH),WINNT)
 OS_CXXFLAGS += -DNOMINMAX
-ifndef GNU_CC
-
-CPPSRCS		+= \
-		nsAbOutlookDirFactory.cpp \
-		nsAbOutlookDirectory.cpp \
-		nsAbWinHelper.cpp \
-		nsMapiAddressBook.cpp \
-		nsWabAddressBook.cpp \
-		$(NULL)
-
-endif
 endif
 
 ifdef MOZ_LDAP_XPCOM
 DEFINES += -DMOZ_LDAP_XPCOM
 
-CPPSRCS		+= \
-		nsAbLDAPDirectory.cpp \
-		nsAbLDAPDirFactory.cpp	\
-		nsAbLDAPCard.cpp \
-		nsAbLDAPListenerBase.cpp \
-		nsAbLDAPDirectoryQuery.cpp \
-		nsAbLDAPDirectoryModify.cpp \
-		nsAbBoolExprToLDAPFilter.cpp \
-		nsAbLDAPReplicationService.cpp \
-		nsAbLDAPReplicationQuery.cpp \
-		nsAbLDAPReplicationData.cpp \
-		$(NULL)
-
-ifndef MOZ_INCOMPLETE_TOOLKIT_LDAP_AUTOCOMPLETE
-CPPSRCS		+= \
-		nsAbLDAPAutoCompFormatter.cpp \
-		nsLDAPAutoCompleteSession.cpp \
-		$(NULL)
-else
+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
 
 ifeq ($(OS_ARCH),Darwin)
-CPPSRCS		+= \
-		nsAbOSXDirFactory.cpp \
-		$(NULL)
-
 CMMSRCS		+= \
 		nsAbOSXCard.mm \
 		nsAbOSXDirectory.mm \
 		nsAbOSXUtils.mm \
 		$(NULL)
 endif
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
--- a/mailnews/addrbook/src/moz.build
+++ b/mailnews/addrbook/src/moz.build
@@ -4,8 +4,69 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'addrbook'
 
 EXPORTS += [
     'nsVCardObj.h',
 ]
 
+CPP_SOURCES += [
+    'nsAbAddressCollector.cpp',
+    'nsAbBSDirectory.cpp',
+    'nsAbBooleanExpression.cpp',
+    'nsAbCardProperty.cpp',
+    'nsAbContentHandler.cpp',
+    'nsAbDirFactoryService.cpp',
+    'nsAbDirProperty.cpp',
+    'nsAbDirectoryQuery.cpp',
+    'nsAbDirectoryQueryProxy.cpp',
+    'nsAbLDIFService.cpp',
+    'nsAbMDBCard.cpp',
+    'nsAbMDBDirFactory.cpp',
+    'nsAbMDBDirProperty.cpp',
+    'nsAbMDBDirectory.cpp',
+    'nsAbManager.cpp',
+    'nsAbQueryStringToExpression.cpp',
+    'nsAbView.cpp',
+    'nsAddbookProtocolHandler.cpp',
+    'nsAddbookUrl.cpp',
+    'nsAddrDatabase.cpp',
+    'nsDirPrefs.cpp',
+    'nsMsgVCardService.cpp',
+    'nsVCard.cpp',
+    'nsVCardObj.cpp',
+]
+
+if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']:
+    CPP_SOURCES += [
+        'nsAbOutlookDirFactory.cpp',
+        'nsAbOutlookDirectory.cpp',
+        'nsAbWinHelper.cpp',
+        'nsMapiAddressBook.cpp',
+        'nsWabAddressBook.cpp',
+    ]
+
+if CONFIG['OS_ARCH'] == 'Darwin':
+    CPP_SOURCES += [
+        'nsAbOSXDirFactory.cpp',
+    ]
+
+if CONFIG['MOZ_LDAP_XPCOM']:
+    CPP_SOURCES += [
+        'nsAbBoolExprToLDAPFilter.cpp',
+        'nsAbLDAPCard.cpp',
+        'nsAbLDAPDirFactory.cpp',
+        'nsAbLDAPDirectory.cpp',
+        'nsAbLDAPDirectoryQuery.cpp',
+        'nsAbLDAPDirectoryModify.cpp',
+        'nsAbLDAPListenerBase.cpp',
+        'nsAbLDAPReplicationData.cpp',
+        'nsAbLDAPReplicationQuery.cpp',
+        'nsAbLDAPReplicationService.cpp',
+    ]
+
+    if not CONFIG['MOZ_INCOMPLETE_TOOLKIT_LDAP_AUTOCOMPLETE']:
+        CPP_SOURCES += [
+            'nsAbLDAPAutoCompFormatter.cpp',
+            'nsLDAPAutoCompleteSession.cpp',
+        ]
+
--- a/mailnews/base/search/src/Makefile.in
+++ b/mailnews/base/search/src/Makefile.in
@@ -13,30 +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
 
 
-CPPSRCS		= \
-		nsMsgFilterService.cpp \
-		nsMsgFilterList.cpp \
-		nsMsgFilter.cpp \
-		nsMsgSearchTerm.cpp \
-		nsMsgBodyHandler.cpp \
-		nsMsgLocalSearch.cpp \
-		nsMsgSearchValue.cpp \
-		nsMsgSearchAdapter.cpp \
-		nsMsgSearchSession.cpp \
-		nsMsgImapSearch.cpp \
-		nsMsgSearchNews.cpp \
-		$(NULL)
-
 EXTRA_COMPONENTS += \
 		nsMsgTraitService.js \
 		nsMsgTraitService.manifest \
 		$(NULL)
  
 EXPORT_RESOURCE_FILES	= \
 				  Bogofilter.sfd \
 				  DSPAM.sfd \
--- a/mailnews/base/search/src/moz.build
+++ b/mailnews/base/search/src/moz.build
@@ -2,8 +2,22 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 XPIDL_MODULE = 'msgsearch'
 
 MODULE = 'msgbase'
 
+CPP_SOURCES += [
+    'nsMsgBodyHandler.cpp',
+    'nsMsgFilter.cpp',
+    'nsMsgFilterList.cpp',
+    'nsMsgFilterService.cpp',
+    'nsMsgImapSearch.cpp',
+    'nsMsgLocalSearch.cpp',
+    'nsMsgSearchAdapter.cpp',
+    'nsMsgSearchNews.cpp',
+    'nsMsgSearchSession.cpp',
+    'nsMsgSearchTerm.cpp',
+    'nsMsgSearchValue.cpp',
+]
+
--- a/mailnews/base/src/Makefile.in
+++ b/mailnews/base/src/Makefile.in
@@ -11,80 +11,20 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgbase_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-CPPSRCS		= \
-		nsMessenger.cpp \
-		nsMessengerBootstrap.cpp \
-		nsMsgMailSession.cpp \
-		nsMsgAccountManager.cpp \
-		nsMsgAccount.cpp \
-		nsCopyMessageStreamListener.cpp \
-		nsMsgRDFDataSource.cpp \
-		nsMsgFolderDataSource.cpp \
-		nsMsgAccountManagerDS.cpp \
-		nsMsgRDFUtils.cpp \
-		nsMsgBiffManager.cpp \
-		nsMsgPurgeService.cpp \
-		nsMsgCopyService.cpp \
-		nsMsgFolderCache.cpp \
-		nsMsgFolderCacheElement.cpp \
-		nsMsgFolderCompactor.cpp \
-		nsMsgStatusFeedback.cpp \
-		nsMsgWindow.cpp \
-		nsMsgServiceProvider.cpp \
-		nsSubscribeDataSource.cpp \
-		nsSubscribableServer.cpp \
-		nsStatusBarBiffManager.cpp \
-		nsMsgDBView.cpp \
-		nsMsgThreadedDBView.cpp \
-		nsMsgSpecialViews.cpp \
-		nsMsgQuickSearchDBView.cpp \
-		nsMsgSearchDBView.cpp \
-		nsMsgXFVirtualFolderDBView.cpp \
-		nsMsgXFViewThread.cpp \
-		nsMsgGroupThread.cpp \
-		nsMsgGroupView.cpp \
-		nsMsgOfflineManager.cpp \
-		nsMsgProgress.cpp \
-		nsMessengerContentHandler.cpp \
-		nsSpamSettings.cpp \
-		nsCidProtocolHandler.cpp \
-		nsMsgContentPolicy.cpp \
-		nsMsgTagService.cpp\
-                nsMsgFolderNotificationService.cpp\
-		nsMailDirProvider.cpp\
-		MailNewsDLF.cpp \
-		$(NULL)
-
-ifdef NS_PRINTING
-CPPSRCS += nsMsgPrintEngine.cpp
-endif
-
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 CMMSRCS = nsMessengerOSXIntegration.mm
 endif
 
-ifeq ($(OS_ARCH),WINNT)
-CPPSRCS		+= nsMessengerWinIntegration.cpp 
-endif
-
-ifeq ($(OS_ARCH),OS2)
-CPPSRCS		+= nsMessengerOS2Integration.cpp 
-endif
-
-ifneq (,$(filter $(MOZ_WIDGET_TOOLKIT),gtk gtk2))
-CPPSRCS		+= nsMessengerUnixIntegration.cpp 
-endif
-
 ifdef MOZ_LDAP_XPCOM
 DEFINES         += -DMOZ_LDAP_XPCOM
 endif
 
 EXTRA_COMPONENTS = \
 		nsMailNewsCommandLineHandler.js \
 		msgAsyncPrompter.js \
 		newMailNotificationService.js \
--- a/mailnews/base/src/moz.build
+++ b/mailnews/base/src/moz.build
@@ -6,8 +6,62 @@
 MODULE = 'msgbase'
 
 EXPORTS += [
     'nsMailDirServiceDefs.h',
     'nsMsgRDFDataSource.h',
     'nsMsgRDFUtils.h',
 ]
 
+CPP_SOURCES += [
+    'MailNewsDLF.cpp',
+    'nsCidProtocolHandler.cpp',
+    'nsCopyMessageStreamListener.cpp',
+    'nsMailDirProvider.cpp',
+    'nsMessenger.cpp',
+    'nsMessengerBootstrap.cpp',
+    'nsMessengerContentHandler.cpp',
+    'nsMsgAccount.cpp',
+    'nsMsgAccountManager.cpp',
+    'nsMsgAccountManagerDS.cpp',
+    'nsMsgBiffManager.cpp',
+    'nsMsgContentPolicy.cpp',
+    'nsMsgCopyService.cpp',
+    'nsMsgDBView.cpp',
+    'nsMsgFolderCache.cpp',
+    'nsMsgFolderCacheElement.cpp',
+    'nsMsgFolderCompactor.cpp',
+    'nsMsgFolderDataSource.cpp',
+    'nsMsgFolderNotificationService.cpp',
+    'nsMsgGroupThread.cpp',
+    'nsMsgGroupView.cpp',
+    'nsMsgMailSession.cpp',
+    'nsMsgOfflineManager.cpp',
+    'nsMsgProgress.cpp',
+    'nsMsgPurgeService.cpp',
+    'nsMsgQuickSearchDBView.cpp',
+    'nsMsgRDFDataSource.cpp',
+    'nsMsgRDFUtils.cpp',
+    'nsMsgSearchDBView.cpp',
+    'nsMsgServiceProvider.cpp',
+    'nsMsgSpecialViews.cpp',
+    'nsMsgStatusFeedback.cpp',
+    'nsMsgTagService.cpp',
+    'nsMsgThreadedDBView.cpp',
+    'nsMsgWindow.cpp',
+    'nsMsgXFViewThread.cpp',
+    'nsMsgXFVirtualFolderDBView.cpp',
+    'nsSpamSettings.cpp',
+    'nsStatusBarBiffManager.cpp',
+    'nsSubscribableServer.cpp',
+    'nsSubscribeDataSource.cpp',
+]
+
+if CONFIG['NS_PRINTING']:
+    CPP_SOURCES += ['nsMsgPrintEngine.cpp']
+
+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']
--- a/mailnews/base/util/Makefile.in
+++ b/mailnews/base/util/Makefile.in
@@ -11,37 +11,16 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgbsutl_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-CPPSRCS		= \
-		nsMsgLineBuffer.cpp \
-		nsMsgDBFolder.cpp \
-		nsMsgKeyArray.cpp \
-		nsMsgKeySet.cpp \
-		nsMsgIdentity.cpp \
-		nsMsgIncomingServer.cpp \
-		nsMsgUtils.cpp \
-		nsMsgProtocol.cpp \
-		nsMsgMailNewsUrl.cpp \
-		nsMsgTxn.cpp \
-		nsMsgI18N.cpp \
-		nsImapMoveCoalescer.cpp \
-		nsMsgFileStream.cpp \
-		nsMsgCompressIStream.cpp \
-		nsMsgCompressOStream.cpp \
-		nsMsgReadStateTxn.cpp \
-		nsStopwatch.cpp \
-		Services.cpp \
-		$(NULL)
-
 EXTRA_JS_MODULES = \
 		folderUtils.jsm \
 		errUtils.js \
 		iteratorUtils.jsm \
 		jsTreeSelection.js \
 		traceHelper.js \
 		StringBundle.js \
 		templateUtils.js \
--- a/mailnews/base/util/moz.build
+++ b/mailnews/base/util/moz.build
@@ -23,8 +23,30 @@ EXPORTS += [
     'nsMsgTxn.h',
     'nsMsgUtils.h',
 ]
 
 EXPORTS.mozilla.mailnews += [
     'ServiceList.h',
     'Services.h',
 ]
+
+CPP_SOURCES += [
+    'Services.cpp',
+    'nsImapMoveCoalescer.cpp',
+    'nsMsgCompressIStream.cpp',
+    'nsMsgCompressOStream.cpp',
+    'nsMsgDBFolder.cpp',
+    'nsMsgFileStream.cpp',
+    'nsMsgI18N.cpp',
+    'nsMsgIdentity.cpp',
+    'nsMsgIncomingServer.cpp',
+    'nsMsgKeyArray.cpp',
+    'nsMsgKeySet.cpp',
+    'nsMsgLineBuffer.cpp',
+    'nsMsgMailNewsUrl.cpp',
+    'nsMsgProtocol.cpp',
+    'nsMsgReadStateTxn.cpp',
+    'nsMsgTxn.cpp',
+    'nsMsgUtils.cpp',
+    'nsStopwatch.cpp',
+]
+
--- a/mailnews/build/Makefile.in
+++ b/mailnews/build/Makefile.in
@@ -29,18 +29,16 @@ ifdef MOZ_INCOMPLETE_TOOLKIT_LDAP_AUTOCO
 DEFINES += -DMOZ_INCOMPLETE_TOOLKIT_LDAP_AUTOCOMPLETE
 endif
 endif
 
 ifeq ($(OS_ARCH),WINNT)
 DEFINES		+= -DZLIB_DLL
 endif
 
-CPPSRCS		= nsMailModule.cpp
-
 SHARED_LIBRARY_LIBS = \
 	        ../base/util/$(LIB_PREFIX)msgbsutl_s.$(LIB_SUFFIX) \
 		../base/src/$(LIB_PREFIX)msgbase_s.$(LIB_SUFFIX) \
 		../base/search/src/$(LIB_PREFIX)msgsearch_s.$(LIB_SUFFIX) \
 		../local/src//$(LIB_PREFIX)msglocal_s.$(LIB_SUFFIX) \
 	        ../compose/src/$(LIB_PREFIX)msgcompose_s.$(LIB_SUFFIX) \
 	        ../db/msgdb/src/$(LIB_PREFIX)msgdb_s.$(LIB_SUFFIX) \
 	        ../imap/src/$(LIB_PREFIX)msgimap_s.$(LIB_SUFFIX) \
--- a/mailnews/build/moz.build
+++ b/mailnews/build/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 = 'mail'
 
+CPP_SOURCES += [
+    'nsMailModule.cpp',
+]
+
--- a/mailnews/compose/src/Makefile.in
+++ b/mailnews/compose/src/Makefile.in
@@ -16,47 +16,16 @@ MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 EXTRA_COMPONENTS = \
 		nsSMTPProtocolHandler.js \
 		nsSMTPProtocolHandler.manifest \
 		$(NULL)
 
-CPPSRCS		= \
-		nsMsgCompFields.cpp \
-		nsSmtpUrl.cpp \
-		nsSmtpProtocol.cpp \
-		nsMsgSend.cpp \
-		nsMsgSendPart.cpp \
-		nsMsgSendReport.cpp \
-		nsSmtpService.cpp \
-		nsMsgCopy.cpp \
-		nsMsgSendLater.cpp \
-		nsMsgCompUtils.cpp \
-		nsMsgAttachment.cpp \
-		nsMsgAttachmentHandler.cpp \
-		nsMsgPrompts.cpp \
-		nsMsgComposeService.cpp \
-		nsMsgComposeParams.cpp \
-		nsMsgComposeProgressParams.cpp \
-		nsMsgComposeContentHandler.cpp \
-		nsMsgCompose.cpp \
-		nsMsgQuote.cpp \
-		nsURLFetcher.cpp \
-		nsSmtpServer.cpp \
-		$(NULL)
-
-ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-CPPSRCS += \
-	nsMsgAppleDoubleEncode.cpp \
-	nsMsgAppleEncode.cpp \
-	$(NULL)
-endif
-
 # 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
--- a/mailnews/compose/src/moz.build
+++ b/mailnews/compose/src/moz.build
@@ -4,8 +4,38 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'msgcompose'
 
 EXPORTS += [
     'nsComposeStrings.h',
 ]
 
+CPP_SOURCES += [
+    'nsMsgAttachment.cpp',
+    'nsMsgAttachmentHandler.cpp',
+    'nsMsgCompFields.cpp',
+    'nsMsgCompUtils.cpp',
+    'nsMsgCompose.cpp',
+    'nsMsgComposeContentHandler.cpp',
+    'nsMsgComposeParams.cpp',
+    'nsMsgComposeProgressParams.cpp',
+    'nsMsgComposeService.cpp',
+    'nsMsgCopy.cpp',
+    'nsMsgPrompts.cpp',
+    'nsMsgQuote.cpp',
+    'nsMsgSend.cpp',
+    'nsMsgSendLater.cpp',
+    'nsMsgSendPart.cpp',
+    'nsMsgSendReport.cpp',
+    'nsSmtpProtocol.cpp',
+    'nsSmtpServer.cpp',
+    'nsSmtpService.cpp',
+    'nsSmtpUrl.cpp',
+    'nsURLFetcher.cpp',
+]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    CPP_SOURCES += [
+        'nsMsgAppleDoubleEncode.cpp',
+        'nsMsgAppleEncode.cpp',
+    ]
+
--- a/mailnews/db/msgdb/src/Makefile.in
+++ b/mailnews/db/msgdb/src/Makefile.in
@@ -12,24 +12,12 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgdb_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-		nsMsgDatabase.cpp \
-		nsDBFolderInfo.cpp \
-		nsMsgHdr.cpp \
-		nsNewsDatabase.cpp \
-		nsMailDatabase.cpp \
-		nsImapMailDatabase.cpp \
-		nsMsgThread.cpp \
-		nsMsgOfflineImapOperation.cpp \
-		$(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/db/msgdb/src/moz.build
+++ b/mailnews/db/msgdb/src/moz.build
@@ -1,7 +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/.
 
 MODULE = 'msgdb'
 
+CPP_SOURCES += [
+    'nsDBFolderInfo.cpp',
+    'nsImapMailDatabase.cpp',
+    'nsMailDatabase.cpp',
+    'nsMsgDatabase.cpp',
+    'nsMsgHdr.cpp',
+    'nsMsgOfflineImapOperation.cpp',
+    'nsMsgThread.cpp',
+    'nsNewsDatabase.cpp',
+]
+
--- a/mailnews/extensions/bayesian-spam-filter/src/Makefile.in
+++ b/mailnews/extensions/bayesian-spam-filter/src/Makefile.in
@@ -12,16 +12,11 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= bayesflt_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-		nsBayesianFilter.cpp \
-		$(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/bayesian-spam-filter/src/moz.build
+++ b/mailnews/extensions/bayesian-spam-filter/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 = 'bayesflt'
 
+CPP_SOURCES += [
+    'nsBayesianFilter.cpp',
+]
+
--- a/mailnews/extensions/fts3/src/Makefile.in
+++ b/mailnews/extensions/fts3/src/Makefile.in
@@ -12,20 +12,15 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= fts3tok_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-		nsFts3Tokenizer.cpp \
-		nsGlodaRankerFunction.cpp \
-		$(NULL)
-
 LOCAL_INCLUDES = \
 		$(SQLITE_CFLAGS)
 
 # 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/fts3/src/moz.build
+++ b/mailnews/extensions/fts3/src/moz.build
@@ -5,8 +5,13 @@
 
 MODULE = 'fts3tok'
 
 CSRCS += [
     'Normalize.c',
     'fts3_porter.c',
 ]
 
+CPP_SOURCES += [
+    'nsFts3Tokenizer.cpp',
+    'nsGlodaRankerFunction.cpp',
+]
+
--- a/mailnews/extensions/mailviews/src/Makefile.in
+++ b/mailnews/extensions/mailviews/src/Makefile.in
@@ -12,17 +12,12 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= mailview_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-                nsMsgMailViewList.cpp \
-		$(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/mailviews/src/moz.build
+++ b/mailnews/extensions/mailviews/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 = 'mailview'
 
+CPP_SOURCES += [
+    'nsMsgMailViewList.cpp',
+]
+
--- a/mailnews/extensions/mdn/src/Makefile.in
+++ b/mailnews/extensions/mdn/src/Makefile.in
@@ -12,20 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgmdn_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-                nsMsgMdnGenerator.cpp \
-		$(NULL)
-
 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
@@ -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 = 'msgmdn'
 
+CPP_SOURCES += [
+    'nsMsgMdnGenerator.cpp',
+]
+
--- a/mailnews/extensions/smime/build/Makefile.in
+++ b/mailnews/extensions/smime/build/Makefile.in
@@ -15,18 +15,16 @@ EXPORT_LIBRARY = 1
 IS_COMPONENT	= 1
 MODULE_NAME	= nsMsgSMIMEModule
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= nsMsgSMIMEFactory.cpp
-
 LOCAL_INCLUDES += -I$(srcdir)/../src
 
 SHARED_LIBRARY_LIBS = \
 		../src/$(LIB_PREFIX)msgsmime_s.$(LIB_SUFFIX) \
 		$(NULL)
 
 ifdef MOZILLA_INTERNAL_API
 EXTRA_DSO_LDOPTS = \
--- a/mailnews/extensions/smime/build/moz.build
+++ b/mailnews/extensions/smime/build/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 = 'msgsmime'
 
+CPP_SOURCES += [
+    'nsMsgSMIMEFactory.cpp',
+]
+
--- a/mailnews/extensions/smime/src/Makefile.in
+++ b/mailnews/extensions/smime/src/Makefile.in
@@ -12,22 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgsmime_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-                nsMsgComposeSecure.cpp \
-                nsSMimeJSHelper.cpp \
-                nsEncryptedSMIMEURIsService.cpp \
-		$(NULL)
-
 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
 
--- a/mailnews/extensions/smime/src/moz.build
+++ b/mailnews/extensions/smime/src/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 = 'msgsmime'
 
+CPP_SOURCES += [
+    'nsEncryptedSMIMEURIsService.cpp',
+    'nsMsgComposeSecure.cpp',
+    'nsSMimeJSHelper.cpp',
+]
+
--- a/mailnews/imap/src/Makefile.in
+++ b/mailnews/imap/src/Makefile.in
@@ -12,38 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgimap_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-		nsImapUtils.cpp \
-		nsIMAPBodyShell.cpp \
-		nsIMAPGenericParser.cpp \
-		nsIMAPHostSessionList.cpp \
-		nsIMAPNamespace.cpp \
-		nsImapIncomingServer.cpp \
-		nsImapMailFolder.cpp \
-		nsImapProtocol.cpp \
-		nsImapSearchResults.cpp \
-		nsImapServerResponseParser.cpp \
-		nsImapService.cpp \
-		nsImapUrl.cpp \
-		nsImapFlagAndUidState.cpp \
-		nsImapUndoTxn.cpp \
-		nsImapStringBundle.cpp \
-		nsImapOfflineSync.cpp \
-		nsAutoSyncState.cpp \
-		nsAutoSyncManager.cpp \
-		nsSyncRunnableHelpers.cpp \
-		$(NULL)
-
 include $(topsrcdir)/config/config.mk
 
 ifeq ($(OS_ARCH),WINNT)
 OS_CXXFLAGS += -DNOMINMAX
 endif
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
--- a/mailnews/imap/src/moz.build
+++ b/mailnews/imap/src/moz.build
@@ -4,8 +4,30 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'msgimap'
 
 EXPORTS += [
     'nsImapCore.h',
 ]
 
+CPP_SOURCES += [
+    'nsAutoSyncManager.cpp',
+    'nsAutoSyncState.cpp',
+    'nsIMAPBodyShell.cpp',
+    'nsIMAPGenericParser.cpp',
+    'nsIMAPHostSessionList.cpp',
+    'nsIMAPNamespace.cpp',
+    'nsImapFlagAndUidState.cpp',
+    'nsImapIncomingServer.cpp',
+    'nsImapMailFolder.cpp',
+    'nsImapOfflineSync.cpp',
+    'nsImapProtocol.cpp',
+    'nsImapSearchResults.cpp',
+    'nsImapServerResponseParser.cpp',
+    'nsImapService.cpp',
+    'nsImapStringBundle.cpp',
+    'nsImapUndoTxn.cpp',
+    'nsImapUrl.cpp',
+    'nsImapUtils.cpp',
+    'nsSyncRunnableHelpers.cpp',
+]
+
--- a/mailnews/import/applemail/src/Makefile.in
+++ b/mailnews/import/applemail/src/Makefile.in
@@ -10,20 +10,16 @@ VPATH			= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= applmail_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-CPPSRCS = \
-		nsAppleMailImport.cpp \
-		$(NULL)
-
 CMMSRCS = \
 		nsEmlxHelperUtils.mm \
 		$(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/import/applemail/src/moz.build
+++ b/mailnews/import/applemail/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 = 'impapplemail'
 
+CPP_SOURCES += [
+    'nsAppleMailImport.cpp',
+]
+
--- a/mailnews/import/build/Makefile.in
+++ b/mailnews/import/build/Makefile.in
@@ -17,18 +17,16 @@ FORCE_SHARED_LIB=1
 else
 EXPORT_LIBRARY = 1
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 MODULE_NAME	= nsImportServiceModule
 
-CPPSRCS		=  nsImportModule.cpp
-
 SHARED_LIBRARY_LIBS = \
 		../src/$(LIB_PREFIX)import_s.$(LIB_SUFFIX) \
 		../text/src/$(LIB_PREFIX)imptext_s.$(LIB_SUFFIX) \
 		../vcard/src/$(LIB_PREFIX)impvcard_s.$(LIB_SUFFIX) \
 		$(NULL)
 
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 SHARED_LIBRARY_LIBS += ../eudora/src/$(LIB_PREFIX)impEudra_s.$(LIB_SUFFIX)
--- a/mailnews/import/build/moz.build
+++ b/mailnews/import/build/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 = 'import'
 
+CPP_SOURCES += [
+    'nsImportModule.cpp',
+]
+
--- a/mailnews/import/eudora/src/Makefile.in
+++ b/mailnews/import/eudora/src/Makefile.in
@@ -12,34 +12,18 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME   = impEudra_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-		nsEudoraStringBundle.cpp \
-		nsEudoraImport.cpp \
-		nsEudoraMailbox.cpp \
-		nsEudoraSettings.cpp \
-		nsEudoraEditor.cpp \
-		nsEudoraCompose.cpp \
-		nsEudoraAddress.cpp \
-		nsEudoraFilters.cpp \
-		$(NULL)
-
 ifeq ($(OS_ARCH),WINNT)
-CPPSRCS += nsEudoraWin32.cpp
 OS_CXXFLAGS += -DNOMINMAX
 endif
 
-ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-CPPSRCS += nsEudoraMac.cpp
-endif
-
 LOCAL_INCLUDES += -I$(srcdir)/../../src
 
 # 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/import/eudora/src/moz.build
+++ b/mailnews/import/eudora/src/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/.
 
 MODULE = 'impEudra'
 
+CPP_SOURCES += [
+    'nsEudoraAddress.cpp',
+    'nsEudoraCompose.cpp',
+    'nsEudoraEditor.cpp',
+    'nsEudoraFilters.cpp',
+    'nsEudoraImport.cpp',
+    'nsEudoraMailbox.cpp',
+    'nsEudoraSettings.cpp',
+    'nsEudoraStringBundle.cpp',
+]
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+    CPP_SOURCES += ['nsEudoraWin32.cpp']
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    CPP_SOURCES += ['nsEudoraMac.cpp']
+
--- a/mailnews/import/oexpress/Makefile.in
+++ b/mailnews/import/oexpress/Makefile.in
@@ -11,28 +11,15 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME   = importOE_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-CPPSRCS		= \
-		nsOEImport.cpp			\
-		nsOEScanBoxes.cpp		\
-		nsOEMailbox.cpp			\
-		nsOEAddressIterator.cpp		\
-		WabObject.cpp			\
-		nsOERegUtil.cpp			\
-		nsOE5File.cpp			\
-		nsOESettings.cpp		\
-		nsOEStringBundle.cpp		\
-		$(NULL)
-
-# we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 ifeq ($(OS_ARCH),WINNT)
 OS_CXXFLAGS += -DNOMINMAX
 endif
 
 include $(topsrcdir)/config/rules.mk
--- a/mailnews/import/oexpress/moz.build
+++ b/mailnews/import/oexpress/moz.build
@@ -1,7 +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/.
 
 MODULE = 'importOE'
 
+CPP_SOURCES += [
+    'WabObject.cpp',
+    'nsOE5File.cpp',
+    'nsOEAddressIterator.cpp',
+    'nsOEImport.cpp',
+    'nsOEMailbox.cpp',
+    'nsOERegUtil.cpp',
+    'nsOEScanBoxes.cpp',
+    'nsOESettings.cpp',
+    'nsOEStringBundle.cpp',
+]
+
--- a/mailnews/import/outlook/src/Makefile.in
+++ b/mailnews/import/outlook/src/Makefile.in
@@ -12,27 +12,14 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME   = impOutlk_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-		nsOutlookStringBundle.cpp	\
-		nsOutlookImport.cpp		\
-		nsOutlookSettings.cpp		\
-		MapiApi.cpp			\
-		nsOutlookMail.cpp		\
-		MapiMessage.cpp			\
-		MapiMimeTypes.cpp		\
-		nsOutlookCompose.cpp		\
-		rtfDecoder.cpp		\
-		rtfMailDecoder.cpp		\
-		$(NULL)
-
 LOCAL_INCLUDES += -I$(srcdir)/../../src
 
 # 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/import/outlook/src/moz.build
+++ b/mailnews/import/outlook/src/moz.build
@@ -1,7 +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/.
 
 MODULE = 'impOutlk'
 
+CPP_SOURCES += [
+    'MapiApi.cpp',
+    'MapiMessage.cpp',
+    'MapiMimeTypes.cpp',
+    'nsOutlookCompose.cpp',
+    'nsOutlookImport.cpp',
+    'nsOutlookMail.cpp',
+    'nsOutlookSettings.cpp',
+    'nsOutlookStringBundle.cpp',
+    'rtfDecoder.cpp',
+    'rtfMailDecoder.cpp',
+]
+
--- a/mailnews/import/src/Makefile.in
+++ b/mailnews/import/src/Makefile.in
@@ -14,30 +14,11 @@ LIBRARY_NAME = import_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
 
 
-CPPSRCS		= 	\
-			nsImportService.cpp				\
-			nsImportMail.cpp				\
-			nsImportMailboxDescriptor.cpp 	\
-			nsImportABDescriptor.cpp		\
-			nsImportAddressBooks.cpp		\
-			nsImportStringBundle.cpp		\
-			ImportTranslate.cpp				\
-			nsImportTranslator.cpp			\
-			ImportCharSet.cpp				\
-			ImportOutFile.cpp				\
-			nsImportScanFile.cpp			\
-			nsImportEncodeScan.cpp			\
-			nsImportMimeEncode.cpp			\
-			nsImportFieldMap.cpp			\
-			nsImportEmbeddedImageData.cpp			\
-			$(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/import/src/moz.build
+++ b/mailnews/import/src/moz.build
@@ -1,7 +1,25 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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 = 'import'
 
+CPP_SOURCES += [
+    'ImportCharSet.cpp',
+    'ImportOutFile.cpp',
+    'ImportTranslate.cpp',
+    'nsImportABDescriptor.cpp',
+    'nsImportAddressBooks.cpp',
+    'nsImportEmbeddedImageData.cpp',
+    'nsImportEncodeScan.cpp',
+    'nsImportFieldMap.cpp',
+    'nsImportMail.cpp',
+    'nsImportMailboxDescriptor.cpp',
+    'nsImportMimeEncode.cpp',
+    'nsImportScanFile.cpp',
+    'nsImportService.cpp',
+    'nsImportStringBundle.cpp',
+    'nsImportTranslator.cpp',
+]
+
--- a/mailnews/import/text/src/Makefile.in
+++ b/mailnews/import/text/src/Makefile.in
@@ -11,19 +11,14 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME   = imptext_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-CPPSRCS		= \
-		nsTextImport.cpp				\
-		nsTextAddress.cpp 				\
-		$(NULL)
-
 LOCAL_INCLUDES += -I$(srcdir)/../../src
 
 # 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/import/text/src/moz.build
+++ b/mailnews/import/text/src/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 = 'impText'
 
+CPP_SOURCES += [
+    'nsTextAddress.cpp',
+    'nsTextImport.cpp',
+]
+
--- a/mailnews/import/vcard/src/Makefile.in
+++ b/mailnews/import/vcard/src/Makefile.in
@@ -31,19 +31,14 @@ REQUIRES	= xpcom \
 		  msgbaseutil \
 		  msgdb \
 		  msglocal \
 		  mimetype \
 		  unicharutil \
 		  pref \
 		  $(NULL)
 
-CPPSRCS		= \
-    nsVCardAddress.cpp \
-    nsVCardImport.cpp \
-    $(NULL)
-
 LOCAL_INCLUDES += -I$(srcdir)/../../src
 
 # 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/import/vcard/src/moz.build
+++ b/mailnews/import/vcard/src/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 = 'impvcard'
 
+CPP_SOURCES += [
+    'nsVCardAddress.cpp',
+    'nsVCardImport.cpp',
+]
+
--- a/mailnews/import/winlivemail/Makefile.in
+++ b/mailnews/import/winlivemail/Makefile.in
@@ -11,19 +11,11 @@ VPATH       =   @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME   =        importWM_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-CPPSRCS     = \
-                        nsWMSettings.cpp        \
-                        nsWMImport.cpp  \
-                        nsWMStringBundle.cpp    \
-                        nsWMUtils.cpp           \
-                        $(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/import/winlivemail/moz.build
+++ b/mailnews/import/winlivemail/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 = 'importWM'
 
+CPP_SOURCES += [
+    'nsWMImport.cpp',
+    'nsWMSettings.cpp',
+    'nsWMStringBundle.cpp',
+    'nsWMUtils.cpp',
+]
+
--- a/mailnews/local/src/Makefile.in
+++ b/mailnews/local/src/Makefile.in
@@ -11,46 +11,16 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msglocal_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-
-CPPSRCS		= \
-		nsPop3Protocol.cpp \
-		nsPop3URL.cpp \
-		nsPop3Sink.cpp \
-		nsParseMailbox.cpp \
-		nsMailboxProtocol.cpp \
-		nsMailboxUrl.cpp \
-		nsLocalMailFolder.cpp \
-		nsMailboxService.cpp \
-		nsPop3Service.cpp \
-		nsMailboxServer.cpp \
-		nsMsgBrkMBoxStore.cpp \
-		nsMsgLocalStoreUtils.cpp \
-		nsMsgMaildirStore.cpp \
-		nsPop3IncomingServer.cpp \
-		nsLocalUtils.cpp \
-		nsLocalUndoTxn.cpp \
-		nsNoIncomingServer.cpp \
-		nsNoneService.cpp       \
-		nsRssIncomingServer.cpp \
-		nsRssService.cpp       \
-		$(NULL)
-
-ifdef MOZ_MOVEMAIL
-CPPSRCS		+= \
-		nsMovemailService.cpp \
-		nsMovemailIncomingServer.cpp
-endif
-
 # 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
 
 ifdef MOZ_MOVEMAIL
 DEFINES	+= -DHAVE_MOVEMAIL
 endif
--- a/mailnews/local/src/moz.build
+++ b/mailnews/local/src/moz.build
@@ -1,7 +1,35 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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 = 'msglocal'
 
+CPP_SOURCES += [
+    'nsLocalMailFolder.cpp',
+    'nsLocalUndoTxn.cpp',
+    'nsLocalUtils.cpp',
+    'nsMailboxProtocol.cpp',
+    'nsMailboxServer.cpp',
+    'nsMailboxService.cpp',
+    'nsMailboxUrl.cpp',
+    'nsMsgBrkMBoxStore.cpp',
+    'nsMsgLocalStoreUtils.cpp',
+    'nsMsgMaildirStore.cpp',
+    'nsNoIncomingServer.cpp',
+    'nsNoneService.cpp',
+    'nsParseMailbox.cpp',
+    'nsPop3IncomingServer.cpp',
+    'nsPop3Protocol.cpp',
+    'nsPop3Service.cpp',
+    'nsPop3Sink.cpp',
+    'nsPop3URL.cpp',
+    'nsRssIncomingServer.cpp',
+    'nsRssService.cpp',
+]
+
+if CONFIG['MOZ_MOVEMAIL']:
+    CPP_SOURCES += [
+        'nsMovemailIncomingServer.cpp',
+        'nsMovemailService.cpp',
+    ]
--- a/mailnews/mapi/mapiDll/Makefile.in
+++ b/mailnews/mapi/mapiDll/Makefile.in
@@ -16,18 +16,16 @@ USE_STATIC_LIBS = 1
 
 LIBRARY_NAME	= $(MODULE)
 DEFFILE		= $(win_srcdir)/Mapi32.def
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 endif
 
 
-CPPSRCS		= MapiDll.cpp
-
 OS_LIBS		+= ole32.lib
 
 # Force use of PIC
 FORCE_USE_PIC	= 1 
 FORCE_SHARED_LIB = 1
 
 EMBED_MANIFEST_AT = 2
 
--- a/mailnews/mapi/mapiDll/moz.build
+++ b/mailnews/mapi/mapiDll/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 = 'mozMapi32'
 
+CPP_SOURCES += [
+    'MapiDll.cpp',
+]
+
--- a/mailnews/mapi/mapihook/src/Makefile.in
+++ b/mailnews/mapi/mapihook/src/Makefile.in
@@ -15,25 +15,16 @@ MODULE_NAME	= msgMapiModule
 EXPORT_LIBRARY  = 1
 IS_COMPONENT	= 1
 LIBXUL_LIBRARY  = 1
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 endif
 
 
-CPPSRCS		= \
-		msgMapiFactory.cpp \
-		msgMapiHook.cpp \
-		msgMapiImp.cpp \
-		msgMapiMain.cpp \
-		msgMapiSupport.cpp \
-		Registry.cpp \
-		$(NULL)
-
 LOBJS		= ../build/msgMapi_i.$(OBJ_SUFFIX)
 
 ifdef MOZILLA_INTERNAL_API
 EXTRA_DSO_LDOPTS= \
 		$(EXTRA_DSO_LIBS) \
 		$(MOZ_UNICHARUTIL_LIBS) \
 		$(XPCOM_LIBS) \
 		$(NSPR_LIBS) \
--- a/mailnews/mapi/mapihook/src/moz.build
+++ b/mailnews/mapi/mapihook/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 = 'msgMapi'
 
+CPP_SOURCES += [
+    'Registry.cpp',
+    'msgMapiFactory.cpp',
+    'msgMapiHook.cpp',
+    'msgMapiImp.cpp',
+    'msgMapiMain.cpp',
+    'msgMapiSupport.cpp',
+]
+
--- a/mailnews/mime/cthandlers/glue/Makefile.in
+++ b/mailnews/mime/cthandlers/glue/Makefile.in
@@ -13,17 +13,12 @@ include $(DEPTH)/config/autoconf.mk
 LIBRARY_NAME	= mimecthglue_s
 EXPORT_LIBRARY = 1
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-		mimexpcom.cpp \
-		nsMimeContentTypeHandler.cpp \
-		$(NULL)
-
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
 
--- a/mailnews/mime/cthandlers/glue/moz.build
+++ b/mailnews/mime/cthandlers/glue/moz.build
@@ -4,8 +4,13 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'mime'
 
 EXPORTS += [
     'nsMimeContentTypeHandler.h',
 ]
 
+CPP_SOURCES += [
+    'mimexpcom.cpp',
+    'nsMimeContentTypeHandler.cpp',
+]
+
--- a/mailnews/mime/cthandlers/pgpmime/Makefile.in
+++ b/mailnews/mime/cthandlers/pgpmime/Makefile.in
@@ -15,20 +15,16 @@ IS_COMPONENT   = 1
 MODULE_NAME    = nsPgpMimeModule
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 EXTRA_DSO_LIBS = mimecthglue_s
 
-CPPSRCS = \
-  nsPgpMimeProxy.cpp \
-  $(NULL)
-
 ifdef MOZILLA_INTERNAL_API
 EXTRA_DSO_LDOPTS = \
   $(LIBS_DIR) \
   $(EXTRA_DSO_LIBS) \
   $(MOZ_COMPONENT_LIBS) \
   $(NULL)
 else
 EXTRA_DSO_LDOPTS = \
--- a/mailnews/mime/cthandlers/pgpmime/moz.build
+++ b/mailnews/mime/cthandlers/pgpmime/moz.build
@@ -4,8 +4,12 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'pgpmime'
 
 EXPORTS += [
     'nsPgpMimeProxy.h',
 ]
 
+CPP_SOURCES += [
+    'nsPgpMimeProxy.cpp',
+]
+
--- a/mailnews/mime/cthandlers/smimestub/Makefile.in
+++ b/mailnews/mime/cthandlers/smimestub/Makefile.in
@@ -22,21 +22,16 @@ endif
 
 ifeq ($(OS_ARCH),WINNT)
 MAPFILE		= smimestb.map
 DEFFILE		= $(win_srcdir)/smime.def
 endif
 
 EXTRA_DSO_LIBS	= mimecthglue_s
 
-CPPSRCS		= \
-		nsSMIMEStub.cpp \
-		nsSMIMEStubFactory.cpp \
-		$(NULL)
-
 ifdef MOZILLA_INTERNAL_API
 EXTRA_DSO_LDOPTS = \
 		$(LIBS_DIR) \
 		$(EXTRA_DSO_LIBS) \
 		$(MOZ_COMPONENT_LIBS) \
 		$(NULL)
 else
 EXTRA_DSO_LDOPTS = \
--- a/mailnews/mime/cthandlers/smimestub/moz.build
+++ b/mailnews/mime/cthandlers/smimestub/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 = 'smime'
 
+CPP_SOURCES += [
+    'nsSMIMEStub.cpp',
+    'nsSMIMEStubFactory.cpp',
+]
+
--- a/mailnews/mime/cthandlers/vcard/Makefile.in
+++ b/mailnews/mime/cthandlers/vcard/Makefile.in
@@ -13,16 +13,11 @@ include $(DEPTH)/config/autoconf.mk
 LIBRARY_NAME = vcard_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 LOCAL_INCLUDES = -I$(srcdir)/../glue
 
-CPPSRCS		= \
-		mimevcrd.cpp \
-		$(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/mime/cthandlers/vcard/moz.build
+++ b/mailnews/mime/cthandlers/vcard/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 = 'vcard'
 
+CPP_SOURCES += [
+    'mimevcrd.cpp',
+]
+
--- a/mailnews/mime/emitters/Makefile.in
+++ b/mailnews/mime/emitters/Makefile.in
@@ -12,23 +12,12 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= emitterutil_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-		nsMimeBaseEmitter.cpp \
-		nsEmitterUtils.cpp \
-		nsMimeRebuffer.cpp \
-		nsMimeRawEmitter.cpp \
-		nsMimePlainEmitter.cpp \
-		nsMimeXmlEmitter.cpp \
-		nsMimeHtmlEmitter.cpp \
-		$(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/mime/emitters/moz.build
+++ b/mailnews/mime/emitters/moz.build
@@ -4,8 +4,18 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'mimeemitter'
 
 EXPORTS += [
     'nsMimeEmitterCID.h',
 ]
 
+CPP_SOURCES += [
+    'nsEmitterUtils.cpp',
+    'nsMimeBaseEmitter.cpp',
+    'nsMimeHtmlEmitter.cpp',
+    'nsMimePlainEmitter.cpp',
+    'nsMimeRawEmitter.cpp',
+    'nsMimeRebuffer.cpp',
+    'nsMimeXmlEmitter.cpp',
+]
+
--- a/mailnews/mime/src/Makefile.in
+++ b/mailnews/mime/src/Makefile.in
@@ -6,78 +6,25 @@
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 ifdef MOZ_PSM
-BUILD_SMIME=1
-endif
-
-ifdef BUILD_SMIME
 DEFINES		+= -DENABLE_SMIME
 endif
 
 LIBRARY_NAME	= mime_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
-CPPSRCS		= \
-		nsMimeObjectClassAccess.cpp \
-		nsMimeConverter.cpp \
-		nsSimpleMimeConverterStub.cpp \
-		mimecont.cpp \
-		mimeebod.cpp \
-		mimeenc.cpp \
-		mimeeobj.cpp \
-		mimehdrs.cpp \
-		mimei.cpp \
-		mimeiimg.cpp \
-		mimeleaf.cpp \
-		mimemalt.cpp \
-		mimemapl.cpp \
-		mimemdig.cpp \
-		mimemmix.cpp \
-		mimempar.cpp \
-		mimemrel.cpp \
-		mimemsg.cpp \
-		mimemsig.cpp \
-		mimemult.cpp \
-		mimeobj.cpp \
-		mimepbuf.cpp \
-		mimesun.cpp \
-		mimetenr.cpp \
-		mimetext.cpp \
-		mimethtm.cpp \
-		mimethpl.cpp \
-		mimethsa.cpp \
-		mimetpla.cpp \
-		mimetpfl.cpp \
-		mimetric.cpp \
-		mimeunty.cpp \
-		mimecth.cpp \
-		mimebuf.cpp \
-		mimecom.cpp \
-		mimemoz2.cpp \
-		comi18n.cpp \
-		nsMsgHeaderParser.cpp \
-		nsStreamConverter.cpp \
-		mimedrft.cpp \
-                mimecryp.cpp
-
-ifdef BUILD_SMIME
-CPPSRCS += \
-                mimecms.cpp \
-                mimemcms.cpp
-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
@@ -20,8 +20,58 @@ EXPORTS += [
     'mimepbuf.h',
     'mimetext.h',
     'modlmime.h',
     'modmimee.h',
     'nsMimeStringResources.h',
     'nsStreamConverter.h',
 ]
 
+CPP_SOURCES += [
+    'comi18n.cpp',
+    'mimebuf.cpp',
+    'mimecom.cpp',
+    'mimecont.cpp',
+    'mimecryp.cpp',
+    'mimecth.cpp',
+    'mimedrft.cpp',
+    'mimeebod.cpp',
+    'mimeenc.cpp',
+    'mimeeobj.cpp',
+    'mimehdrs.cpp',
+    'mimei.cpp',
+    'mimeiimg.cpp',
+    'mimeleaf.cpp',
+    'mimemalt.cpp',
+    'mimemapl.cpp',
+    'mimemdig.cpp',
+    'mimemmix.cpp',
+    'mimemoz2.cpp',
+    'mimempar.cpp',
+    'mimemrel.cpp',
+    'mimemsg.cpp',
+    'mimemsig.cpp',
+    'mimemult.cpp',
+    'mimeobj.cpp',
+    'mimepbuf.cpp',
+    'mimesun.cpp',
+    'mimetenr.cpp',
+    'mimetext.cpp',
+    'mimethpl.cpp',
+    'mimethsa.cpp',
+    'mimethtm.cpp',
+    'mimetpfl.cpp',
+    'mimetpla.cpp',
+    'mimetric.cpp',
+    'mimeunty.cpp',
+    'nsMimeConverter.cpp',
+    'nsMimeObjectClassAccess.cpp',
+    'nsMsgHeaderParser.cpp',
+    'nsSimpleMimeConverterStub.cpp',
+    'nsStreamConverter.cpp',
+]
+
+if CONFIG['MOZ_PSM']:
+    CPP_SOURCES += [
+        'mimecms.cpp',
+        'mimemcms.cpp',
+    ]
+
--- a/mailnews/news/src/Makefile.in
+++ b/mailnews/news/src/Makefile.in
@@ -12,31 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= msgnews_s
 ifndef MOZ_INCOMPLETE_EXTERNAL_LINKAGE
 MOZILLA_INTERNAL_API = 1
 LIBXUL_LIBRARY = 1
 endif
 
 
-CPPSRCS		= \
-		nsNNTPArticleList.cpp \
-		nsNNTPNewsgroupList.cpp \
-		nsNNTPNewsgroupPost.cpp \
-		nsNNTPProtocol.cpp \
-		nsNntpUrl.cpp \
-		nsNntpService.cpp \
-		nsNewsFolder.cpp \
-		nsNntpIncomingServer.cpp \
-		nsNntpMockChannel.cpp \
-		nsNewsUtils.cpp \
-		nsNewsDownloadDialogArgs.cpp \
-		nsNewsDownloader.cpp \
-		$(NULL)
-
 ifeq ($(OS_ARCH),WINNT)
 OS_CXXFLAGS += -DNOMINMAX
 endif
 
 # 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/news/src/moz.build
+++ b/mailnews/news/src/moz.build
@@ -1,7 +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/.
 
 MODULE = 'msgnews'
 
+CPP_SOURCES += [
+    'nsNNTPArticleList.cpp',
+    'nsNNTPNewsgroupList.cpp',
+    'nsNNTPNewsgroupPost.cpp',
+    'nsNNTPProtocol.cpp',
+    'nsNewsDownloadDialogArgs.cpp',
+    'nsNewsDownloader.cpp',
+    'nsNewsFolder.cpp',
+    'nsNewsUtils.cpp',
+    'nsNntpIncomingServer.cpp',
+    'nsNntpMockChannel.cpp',
+    'nsNntpService.cpp',
+    'nsNntpUrl.cpp',
+]
+
--- a/suite/app/Makefile.in
+++ b/suite/app/Makefile.in
@@ -18,18 +18,16 @@ DEFINES += \
 	-DNO_BLOCKLIST_CRASHREPORTER \
 	$(NULL)
 
 ifdef LIBXUL_SDK
 include $(topsrcdir)/config/rules.mk
 else
 # Build a binary bootstrapping with XRE_main
 
-CPPSRCS = nsSuiteApp.cpp
-
 LOCAL_INCLUDES += \
   -I$(MOZILLA_SRCDIR)/toolkit/xre \
   -I$(MOZILLA_SRCDIR)/xpcom/base \
   -I$(MOZILLA_SRCDIR)/xpcom/build \
   -I$(DEPTH)/mozilla/build \
   $(NULL)
 
 DEFINES += -DXPCOM_GLUE
--- a/suite/app/moz.build
+++ b/suite/app/moz.build
@@ -1,7 +1,8 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 if not CONFIG['LIBXUL_SDK']:
     PROGRAM = CONFIG['MOZ_APP_NAME']
+    CPP_SOURCES += ['nsSuiteApp.cpp']
--- a/suite/build/Makefile.in
+++ b/suite/build/Makefile.in
@@ -10,20 +10,16 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	 = suite
 FORCE_SHARED_LIB = 1
 IS_COMPONENT	 = 1
 MODULE_NAME	 = nsSuiteModule
 
 
-CPPSRCS 	= \
-		nsSuiteModule.cpp \
-		$(NULL)
-
 ifeq ($(OS_ARCH),WINNT)
 OS_LIBS += $(call EXPAND_LIBNAME,ole32 shell32)
 endif
 
 LOCAL_INCLUDES += \
 		-I$(topsrcdir)/suite/profile \
 		-I$(topsrcdir)/suite/profile/migration/src \
 		-I$(topsrcdir)/suite/shell/src \
--- a/suite/build/moz.build
+++ b/suite/build/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 = 'suite'
 
+CPP_SOURCES += [
+    'nsSuiteModule.cpp',
+]
+
--- a/suite/feeds/src/Makefile.in
+++ b/suite/feeds/src/Makefile.in
@@ -14,13 +14,9 @@ FORCE_STATIC_LIB = 1
 
 EXTRA_COMPONENTS = \
 	SuiteFeeds.manifest \
 	FeedConverter.js \
 	FeedWriter.js \
 	WebContentConverter.js \
 	$(NULL)
 
-CPPSRCS = \
-	nsFeedSniffer.cpp \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/suite/feeds/src/moz.build
+++ b/suite/feeds/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 = 'suitefeeds'
 
+CPP_SOURCES += [
+    'nsFeedSniffer.cpp',
+]
+
--- a/suite/profile/Makefile.in
+++ b/suite/profile/Makefile.in
@@ -7,19 +7,15 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= suiteprofile_s
 
 
-CPPSRCS 	= \
-		nsSuiteDirectoryProvider.cpp \
-		$(NULL)
-
 EXTRA_DSO_LDOPTS = $(MOZ_COMPONENT_LIBS)
 
 # 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/suite/profile/migration/src/Makefile.in
+++ b/suite/profile/migration/src/Makefile.in
@@ -6,19 +6,11 @@ DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= suitemigration_s
 
-CPPSRCS = \
-		nsProfileMigrator.cpp \
-		nsSuiteProfileMigratorUtils.cpp \
-		nsNetscapeProfileMigratorBase.cpp \
-		nsThunderbirdProfileMigrator.cpp \
-		$(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/suite/profile/migration/src/moz.build
+++ b/suite/profile/migration/src/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 = 'suitemigration'
 
+CPP_SOURCES += [
+    'nsNetscapeProfileMigratorBase.cpp',
+    'nsProfileMigrator.cpp',
+    'nsSuiteProfileMigratorUtils.cpp',
+    'nsThunderbirdProfileMigrator.cpp',
+]
+
--- a/suite/profile/moz.build
+++ b/suite/profile/moz.build
@@ -5,8 +5,12 @@
 
 PARALLEL_DIRS += [
     'migration/public',
     'migration/src',
 ]
 
 MODULE = 'suiteprofile'
 
+CPP_SOURCES += [
+    'nsSuiteDirectoryProvider.cpp',
+]
+
--- a/suite/shell/src/Makefile.in
+++ b/suite/shell/src/Makefile.in
@@ -8,30 +8,28 @@ srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 FORCE_STATIC_LIB=1
 
 
 ifeq ($(OS_ARCH),WINNT)
-CPPSRCS = nsWindowsShellService.cpp
+build_extra := 1
 OS_LIBS         += $(call EXPAND_LIBNAME,ole32 version uuid shell32)
-
 else
 ifeq ($(MOZ_WIDGET_TOOLKIT), cocoa)
-CPPSRCS = nsMacShellService.cpp
-
+build_extra := 1
 else
 ifeq ($(MOZ_WIDGET_TOOLKIT), gtk2)
-CPPSRCS = nsGNOMEShellService.cpp
+build_extra := 1
 endif
 endif
 endif
 
-ifdef CPPSRCS
+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
@@ -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 = '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']
+