Bug 846634 - Part 2: Move EXPORTS to moz.build; r=joey
authorMike Shal <mshal@mozilla.com>
Tue, 16 Apr 2013 15:24:43 -0400
changeset 139919 51644264df6d5b25226a49f8641ed13cb8b0aa27
parent 139918 0627e8608a9776363f61b532f2c3e75b50eb1e78
child 139920 3a26ebb943ea587b7557df095caa3fd8e085f1af
push id2579
push userakeybl@mozilla.com
push dateMon, 24 Jun 2013 18:52:47 +0000
treeherdermozilla-beta@b69b7de8a05a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjoey
bugs846634
milestone23.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 846634 - Part 2: Move EXPORTS to moz.build; r=joey
accessible/public/Makefile.in
accessible/public/ia2/Makefile.in
accessible/public/ia2/moz.build
accessible/public/moz.build
accessible/public/msaa/Makefile.in
accessible/public/msaa/moz.build
accessible/src/atk/Makefile.in
accessible/src/atk/moz.build
accessible/src/base/Makefile.in
accessible/src/base/moz.build
accessible/src/generic/Makefile.in
accessible/src/generic/moz.build
accessible/src/mac/Makefile.in
accessible/src/mac/moz.build
accessible/src/other/Makefile.in
accessible/src/other/moz.build
accessible/src/windows/ia2/Makefile.in
accessible/src/windows/ia2/moz.build
accessible/src/windows/msaa/Makefile.in
accessible/src/windows/msaa/moz.build
accessible/src/xpcom/Makefile.in
accessible/src/xpcom/moz.build
browser/components/about/Makefile.in
browser/components/about/moz.build
browser/components/build/Makefile.in
browser/components/build/moz.build
browser/components/dirprovider/Makefile.in
browser/components/dirprovider/moz.build
caps/include/Makefile.in
caps/include/moz.build
chrome/src/Makefile.in
chrome/src/moz.build
content/base/public/Makefile.in
content/base/public/moz.build
content/base/src/Makefile.in
content/base/src/moz.build
content/canvas/public/Makefile.in
content/canvas/public/moz.build
content/canvas/src/Makefile.in
content/canvas/src/moz.build
content/events/public/Makefile.in
content/events/public/moz.build
content/events/src/Makefile.in
content/events/src/moz.build
content/html/content/public/Makefile.in
content/html/content/public/moz.build
content/html/content/src/Makefile.in
content/html/content/src/moz.build
content/html/document/src/Makefile.in
content/html/document/src/moz.build
content/media/Makefile.in
content/media/dash/Makefile.in
content/media/dash/moz.build
content/media/gstreamer/Makefile.in
content/media/gstreamer/moz.build
content/media/moz.build
content/media/ogg/Makefile.in
content/media/ogg/moz.build
content/media/omx/Makefile.in
content/media/omx/moz.build
content/media/plugins/Makefile.in
content/media/plugins/moz.build
content/media/raw/Makefile.in
content/media/raw/moz.build
content/media/wave/Makefile.in
content/media/wave/moz.build
content/media/webaudio/Makefile.in
content/media/webaudio/moz.build
content/media/webm/Makefile.in
content/media/webm/moz.build
content/media/webrtc/Makefile.in
content/media/webrtc/moz.build
content/media/webspeech/recognition/Makefile.in
content/media/webspeech/recognition/moz.build
content/media/webspeech/synth/Makefile.in
content/media/webspeech/synth/moz.build
content/media/wmf/Makefile.in
content/media/wmf/moz.build
content/smil/Makefile.in
content/smil/moz.build
content/svg/content/src/Makefile.in
content/svg/content/src/moz.build
content/svg/document/src/Makefile.in
content/svg/document/src/moz.build
content/xbl/src/Makefile.in
content/xbl/src/moz.build
content/xml/content/src/Makefile.in
content/xml/content/src/moz.build
content/xml/document/public/Makefile.in
content/xml/document/public/moz.build
content/xml/document/src/Makefile.in
content/xml/document/src/moz.build
content/xslt/public/Makefile.in
content/xslt/public/moz.build
content/xul/document/public/Makefile.in
content/xul/document/public/moz.build
db/sqlite3/src/Makefile.in
db/sqlite3/src/moz.build
docshell/base/Makefile.in
docshell/base/moz.build
docshell/build/Makefile.in
docshell/build/moz.build
docshell/shistory/src/Makefile.in
docshell/shistory/src/moz.build
dom/activities/src/Makefile.in
dom/activities/src/moz.build
dom/alarm/Makefile.in
dom/alarm/moz.build
dom/audiochannel/Makefile.in
dom/audiochannel/moz.build
dom/base/Makefile.in
dom/base/moz.build
dom/battery/Makefile.in
dom/battery/moz.build
dom/bindings/Makefile.in
dom/bindings/moz.build
dom/bluetooth/Makefile.in
dom/bluetooth/moz.build
dom/browser-element/Makefile.in
dom/browser-element/moz.build
dom/camera/Makefile.in
dom/camera/moz.build
dom/cellbroadcast/src/Makefile.in
dom/cellbroadcast/src/moz.build
dom/devicestorage/Makefile.in
dom/devicestorage/moz.build
dom/encoding/Makefile.in
dom/encoding/moz.build
dom/file/Makefile.in
dom/file/moz.build
dom/icc/src/Makefile.in
dom/icc/src/moz.build
dom/indexedDB/Makefile.in
dom/indexedDB/ipc/Makefile.in
dom/indexedDB/ipc/moz.build
dom/indexedDB/moz.build
dom/interfaces/storage/Makefile.in
dom/interfaces/storage/moz.build
dom/ipc/Makefile.in
dom/ipc/moz.build
dom/media/Makefile.in
dom/media/moz.build
dom/mobilemessage/src/Makefile.in
dom/mobilemessage/src/moz.build
dom/network/src/Makefile.in
dom/network/src/moz.build
dom/plugins/base/Makefile.in
dom/plugins/base/android/Makefile.in
dom/plugins/base/android/moz.build
dom/plugins/base/moz.build
dom/plugins/ipc/Makefile.in
dom/plugins/ipc/moz.build
dom/power/Makefile.in
dom/power/moz.build
dom/quota/Makefile.in
dom/quota/moz.build
dom/src/geolocation/Makefile.in
dom/src/geolocation/moz.build
dom/src/json/Makefile.in
dom/src/json/moz.build
dom/src/jsurl/Makefile.in
dom/src/jsurl/moz.build
dom/src/notification/Makefile.in
dom/src/notification/moz.build
dom/src/storage/Makefile.in
dom/src/storage/moz.build
dom/system/Makefile.in
dom/system/gonk/Makefile.in
dom/system/gonk/moz.build
dom/system/moz.build
dom/time/Makefile.in
dom/time/moz.build
dom/voicemail/Makefile.in
dom/voicemail/moz.build
dom/workers/Makefile.in
dom/workers/moz.build
editor/public/Makefile.in
editor/public/moz.build
editor/txmgr/public/Makefile.in
editor/txmgr/public/moz.build
editor/txtsvc/public/Makefile.in
editor/txtsvc/public/moz.build
embedding/browser/webBrowser/Makefile.in
embedding/browser/webBrowser/moz.build
embedding/components/appstartup/src/Makefile.in
embedding/components/appstartup/src/moz.build
embedding/components/windowwatcher/public/Makefile.in
embedding/components/windowwatcher/public/moz.build
gfx/2d/Makefile.in
gfx/2d/moz.build
gfx/angle/Makefile.in
gfx/angle/moz.build
gfx/cairo/cairo/src/Makefile.in
gfx/cairo/cairo/src/moz.build
gfx/cairo/libpixman/src/Makefile.in
gfx/cairo/libpixman/src/moz.build
gfx/gl/Makefile.in
gfx/gl/moz.build
gfx/graphite2/moz-gr-update.sh
gfx/graphite2/src/Makefile.in
gfx/graphite2/src/moz.build
gfx/harfbuzz/src/Makefile.in
gfx/harfbuzz/src/moz.build
gfx/ipc/Makefile.in
gfx/ipc/moz.build
gfx/layers/Makefile.in
gfx/layers/moz.build
gfx/ots/src/Makefile.in
gfx/ots/src/moz.build
gfx/qcms/Makefile.in
gfx/qcms/moz.build
gfx/skia/Makefile.in
gfx/skia/moz.build
gfx/src/Makefile.in
gfx/src/moz.build
gfx/thebes/Makefile.in
gfx/thebes/moz.build
gfx/ycbcr/Makefile.in
gfx/ycbcr/moz.build
hal/Makefile.in
hal/moz.build
image/public/Makefile.in
image/public/moz.build
image/src/Makefile.in
image/src/moz.build
intl/chardet/public/Makefile.in
intl/chardet/public/moz.build
intl/hyphenation/public/Makefile.in
intl/hyphenation/public/moz.build
intl/locale/public/Makefile.in
intl/locale/public/moz.build
intl/locale/src/Makefile.in
intl/locale/src/moz.build
intl/lwbrk/public/Makefile.in
intl/lwbrk/public/moz.build
intl/uconv/public/Makefile.in
intl/uconv/public/moz.build
intl/uconv/ucvcn/Makefile.in
intl/uconv/ucvcn/moz.build
intl/uconv/ucvibm/Makefile.in
intl/uconv/ucvibm/moz.build
intl/uconv/ucvja/Makefile.in
intl/uconv/ucvja/moz.build
intl/uconv/ucvko/Makefile.in
intl/uconv/ucvko/moz.build
intl/uconv/ucvlatin/Makefile.in
intl/uconv/ucvlatin/moz.build
intl/uconv/ucvtw/Makefile.in
intl/uconv/ucvtw/moz.build
intl/uconv/ucvtw2/Makefile.in
intl/uconv/ucvtw2/moz.build
intl/unicharutil/public/Makefile.in
intl/unicharutil/public/moz.build
intl/unicharutil/util/Makefile.in
intl/unicharutil/util/moz.build
ipc/dbus/Makefile.in
ipc/dbus/moz.build
ipc/glue/Makefile.in
ipc/glue/moz.build
ipc/ipdl/test/cxx/Makefile.in
ipc/ipdl/test/cxx/moz.build
ipc/netd/Makefile.in
ipc/netd/moz.build
ipc/ril/Makefile.in
ipc/ril/moz.build
ipc/testshell/Makefile.in
ipc/testshell/moz.build
ipc/unixsocket/Makefile.in
ipc/unixsocket/moz.build
js/ipc/Makefile.in
js/ipc/moz.build
js/jsd/Makefile.in
js/jsd/moz.build
js/src/Makefile.in
js/src/moz.build
js/xpconnect/public/Makefile.in
js/xpconnect/public/moz.build
js/xpconnect/src/Makefile.in
js/xpconnect/src/moz.build
js/xpconnect/wrappers/Makefile.in
js/xpconnect/wrappers/moz.build
layout/base/Makefile.in
layout/base/moz.build
layout/build/Makefile.in
layout/build/moz.build
layout/forms/Makefile.in
layout/forms/moz.build
layout/generic/Makefile.in
layout/generic/moz.build
layout/inspector/src/Makefile.in
layout/inspector/src/moz.build
layout/ipc/Makefile.in
layout/ipc/moz.build
layout/style/Makefile.in
layout/style/moz.build
layout/svg/Makefile.in
layout/svg/moz.build
layout/tables/Makefile.in
layout/tables/moz.build
layout/tools/layout-debug/src/Makefile.in
layout/tools/layout-debug/src/moz.build
layout/xul/base/public/Makefile.in
layout/xul/base/public/moz.build
layout/xul/grid/Makefile.in
layout/xul/grid/moz.build
layout/xul/tree/Makefile.in
layout/xul/tree/moz.build
media/kiss_fft/Makefile.in
media/kiss_fft/moz.build
media/libcubeb/include/Makefile.in
media/libcubeb/include/moz.build
media/libjpeg/Makefile.in
media/libjpeg/moz.build
media/libnestegg/include/Makefile.in
media/libnestegg/include/moz.build
media/libogg/include/ogg/Makefile.in
media/libogg/include/ogg/moz.build
media/libopus/Makefile.in
media/libopus/moz.build
media/libpng/Makefile.in
media/libpng/moz.build
media/libsoundtouch/src/Makefile.in
media/libsoundtouch/src/moz.build
media/libspeex_resampler/src/Makefile.in
media/libspeex_resampler/src/moz.build
media/libtheora/include/theora/Makefile.in
media/libtheora/include/theora/moz.build
media/libtremor/include/tremor/Makefile.in
media/libtremor/include/tremor/moz.build
media/libvorbis/include/vorbis/Makefile.in
media/libvorbis/include/vorbis/moz.build
media/libvpx/Makefile.in
media/libvpx/moz.build
media/mtransport/build/Makefile.in
media/mtransport/build/moz.build
media/mtransport/standalone/Makefile.in
media/mtransport/standalone/moz.build
media/webvtt/Makefile.in
media/webvtt/moz.build
memory/build/Makefile.in
memory/build/moz.build
memory/mozalloc/Makefile.in
memory/mozalloc/moz.build
memory/mozjemalloc/Makefile.in
memory/mozjemalloc/moz.build
memory/replace/dmd/Makefile.in
memory/replace/dmd/moz.build
mobile/android/components/build/Makefile.in
mobile/android/components/build/moz.build
modules/libbz2/src/Makefile.in
modules/libbz2/src/moz.build
modules/libjar/Makefile.in
modules/libjar/moz.build
modules/libjar/objs.mk
modules/libmar/src/Makefile.in
modules/libmar/src/moz.build
modules/libpref/public/Makefile.in
modules/libpref/public/moz.build
modules/zlib/src/Makefile.in
modules/zlib/src/moz.build
mozglue/android/Makefile.in
mozglue/android/moz.build
netwerk/Makefile.in
netwerk/base/public/Makefile.in
netwerk/base/public/moz.build
netwerk/base/src/Makefile.in
netwerk/base/src/moz.build
netwerk/build/Makefile.in
netwerk/build/moz.build
netwerk/cache/Makefile.in
netwerk/cache/moz.build
netwerk/cookie/Makefile.in
netwerk/cookie/moz.build
netwerk/dns/Makefile.in
netwerk/dns/moz.build
netwerk/ipc/Makefile.in
netwerk/ipc/moz.build
netwerk/mime/Makefile.in
netwerk/mime/moz.build
netwerk/moz.build
netwerk/protocol/about/Makefile.in
netwerk/protocol/about/moz.build
netwerk/protocol/device/Makefile.in
netwerk/protocol/device/moz.build
netwerk/protocol/ftp/Makefile.in
netwerk/protocol/ftp/moz.build
netwerk/protocol/http/Makefile.in
netwerk/protocol/http/moz.build
netwerk/protocol/websocket/Makefile.in
netwerk/protocol/websocket/moz.build
netwerk/protocol/wyciwyg/Makefile.in
netwerk/protocol/wyciwyg/moz.build
netwerk/sctp/datachannel/Makefile.in
netwerk/sctp/datachannel/moz.build
netwerk/sctp/src/Makefile.in
netwerk/sctp/src/moz.build
netwerk/srtp/src/Makefile.in
other-licenses/skia-npapi/Makefile.in
other-licenses/skia-npapi/moz.build
other-licenses/snappy/Makefile.in
other-licenses/snappy/moz.build
parser/Makefile.in
parser/expat/Makefile.in
parser/expat/lib/Makefile.in
parser/expat/lib/moz.build
parser/expat/moz.build
parser/html/Makefile.in
parser/html/moz.build
parser/htmlparser/public/Makefile.in
parser/htmlparser/public/moz.build
parser/moz.build
parser/xml/src/Makefile.in
parser/xml/src/moz.build
profile/dirserviceprovider/public/Makefile.in
profile/dirserviceprovider/public/moz.build
rdf/base/public/Makefile.in
rdf/base/public/moz.build
rdf/build/Makefile.in
rdf/build/moz.build
rdf/datasource/public/Makefile.in
rdf/datasource/public/moz.build
rdf/util/public/Makefile.in
rdf/util/public/moz.build
security/manager/ssl/src/Makefile.in
security/manager/ssl/src/moz.build
startupcache/Makefile.in
startupcache/moz.build
storage/build/Makefile.in
storage/build/moz.build
storage/public/Makefile.in
storage/public/moz.build
storage/src/Makefile.in
storage/src/moz.build
testing/gtest/Makefile.in
testing/gtest/moz.build
toolkit/components/build/Makefile.in
toolkit/components/build/moz.build
toolkit/components/mediasniffer/Makefile.in
toolkit/components/mediasniffer/moz.build
toolkit/components/places/Makefile.in
toolkit/components/places/moz.build
toolkit/components/protobuf/Makefile.in
toolkit/components/protobuf/moz.build
toolkit/components/startup/Makefile.in
toolkit/components/startup/moz.build
toolkit/components/telemetry/Makefile.in
toolkit/components/telemetry/moz.build
toolkit/crashreporter/Makefile.in
toolkit/crashreporter/moz.build
toolkit/mozapps/update/common/Makefile.in
toolkit/mozapps/update/common/moz.build
toolkit/xre/Makefile.in
toolkit/xre/moz.build
tools/jprof/stub/Makefile.in
tools/jprof/stub/moz.build
tools/profiler/Makefile.in
tools/profiler/moz.build
tools/trace-malloc/lib/Makefile.in
tools/trace-malloc/lib/moz.build
uriloader/base/Makefile.in
uriloader/base/moz.build
uriloader/exthandler/Makefile.in
uriloader/exthandler/moz.build
uriloader/prefetch/Makefile.in
uriloader/prefetch/moz.build
view/public/Makefile.in
view/public/moz.build
widget/Makefile.in
widget/android/Makefile.in
widget/android/moz.build
widget/cocoa/Makefile.in
widget/cocoa/moz.build
widget/gonk/Makefile.in
widget/gonk/moz.build
widget/gtk2/Makefile.in
widget/gtk2/moz.build
widget/gtkxtbin/Makefile.in
widget/gtkxtbin/moz.build
widget/moz.build
widget/qt/Makefile.in
widget/qt/moz.build
widget/windows/Makefile.in
widget/windows/moz.build
widget/xpwidgets/Makefile.in
widget/xpwidgets/moz.build
xpcom/base/Makefile.in
xpcom/base/moz.build
xpcom/build/Makefile.in
xpcom/build/moz.build
xpcom/components/Makefile.in
xpcom/components/moz.build
xpcom/ds/Makefile.in
xpcom/ds/moz.build
xpcom/glue/Makefile.in
xpcom/glue/moz.build
xpcom/io/Makefile.in
xpcom/io/moz.build
xpcom/reflect/xptcall/public/Makefile.in
xpcom/reflect/xptcall/public/moz.build
xpcom/reflect/xptinfo/public/Makefile.in
xpcom/reflect/xptinfo/public/moz.build
xpcom/string/public/Makefile.in
xpcom/string/public/moz.build
xpcom/threads/Makefile.in
xpcom/threads/moz.build
xpcom/typelib/xpt/public/Makefile.in
xpcom/typelib/xpt/public/moz.build
xpfe/appshell/public/Makefile.in
xpfe/appshell/public/moz.build
--- a/accessible/public/Makefile.in
+++ b/accessible/public/Makefile.in
@@ -6,14 +6,10 @@
 DEPTH   = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH   = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 
-EXPORTS		= \
-      nsIAccessibilityService.h \
-      $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/accessible/public/ia2/Makefile.in
+++ b/accessible/public/ia2/Makefile.in
@@ -17,16 +17,18 @@ include $(DEPTH)/config/autoconf.mk
 DEFINES       += -DREGISTER_PROXY_DLL
 
 GARBAGE       += $(MIDL_GENERATED_FILES)
 
 FORCE_SHARED_LIB = 1
 
 SRCS_IN_OBJDIR   = 1
 
+# Please keep this list in sync with the moz.build file until the rest of this
+# Makefile is ported over.
 MIDL_INTERFACES = \
   Accessible2.idl \
   AccessibleAction.idl \
   AccessibleApplication.idl \
   AccessibleComponent.idl \
   AccessibleEditableText.idl \
   AccessibleHyperlink.idl \
   AccessibleHypertext.idl \
@@ -34,29 +36,25 @@ MIDL_INTERFACES = \
   AccessibleRelation.idl \
   AccessibleTable.idl \
   AccessibleTable2.idl \
   AccessibleTableCell.idl \
   AccessibleText.idl \
   AccessibleValue.idl \
   $(NULL)
 
+# Please keep this list in sync with the moz.build file until the rest of this
+# Makefile is ported over.
 MIDL_ENUMS = \
   AccessibleEventId.idl \
   AccessibleRole.idl \
   AccessibleStates.idl \
   IA2CommonTypes.idl \
   $(NULL)
 
-EXPORTS = \
-  $(MIDL_INTERFACES:%.idl=%.h) \
-  $(MIDL_INTERFACES:%.idl=%_i.c) \
-  $(MIDL_ENUMS:%.idl=%.h) \
-  $(NULL)
-
 CSRCS	= \
   dlldata.c \
   $(MIDL_INTERFACES:%.idl=%_p.c) \
   $(MIDL_INTERFACES:%.idl=%_i.c) \
   $(NULL)
 
 MIDL_GENERATED_FILES = \
   dlldata.c \
--- a/accessible/public/ia2/moz.build
+++ b/accessible/public/ia2/moz.build
@@ -1,8 +1,39 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+# Please keep this list in sync with the Makefile.in until the rest of that file
+# is ported over.
+midl_interfaces = [
+    'Accessible2',
+    'AccessibleAction',
+    'AccessibleApplication',
+    'AccessibleComponent',
+    'AccessibleEditableText',
+    'AccessibleHyperlink',
+    'AccessibleHypertext',
+    'AccessibleImage',
+    'AccessibleRelation',
+    'AccessibleTable',
+    'AccessibleTable2',
+    'AccessibleTableCell',
+    'AccessibleText',
+    'AccessibleValue',
+]
+
+# Please keep this list in sync with the Makefile.in until the rest of that file
+# is ported over.
+midl_enums = [
+    'AccessibleEventId',
+    'AccessibleRole',
+    'AccessibleStates',
+    'IA2CommonTypes',
+]
+
+EXPORTS += [x + '.h' for x in midl_enums]
+EXPORTS += [x + '.h' for x in midl_interfaces]
+EXPORTS += [x + '_i.c' for x in midl_interfaces]
--- a/accessible/public/moz.build
+++ b/accessible/public/moz.build
@@ -34,8 +34,12 @@ XPIDL_SOURCES += [
     'nsIAccessibleText.idl',
     'nsIAccessibleTypes.idl',
     'nsIAccessibleValue.idl',
     'nsIXBLAccessible.idl',
 ]
 
 MODULE = 'accessibility'
 
+EXPORTS += [
+    'nsIAccessibilityService.h',
+]
+
--- a/accessible/public/msaa/Makefile.in
+++ b/accessible/public/msaa/Makefile.in
@@ -52,25 +52,16 @@ done_gen: ISimpleDOMNode.idl \
           ISimpleDOMDocument.idl \
           ISimpleDOMText.idl
 
 	$(MIDL) $(MIDL_FLAGS) -I $(srcdir) -Oicf $(srcdir)/ISimpleDOMNode.idl
 	$(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMDocument.idl
 	$(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMText.idl
 	touch $@
 
-EXPORTS = \
-	ISimpleDOMNode.h \
-	ISimpleDOMNode_i.c \
-	ISimpleDOMDocument.h \
-	ISimpleDOMDocument_i.c \
-	ISimpleDOMText.h \
-	ISimpleDOMText_i.c \
-	$(NULL)
-
 export:: done_gen
 
 # This marshall dll is also registered in the installer
 register::
 	regsvr32 -s $(DIST)/bin/$(SHARED_LIBRARY)
 
 EMBED_MANIFEST_AT = 2
 
--- a/accessible/public/msaa/moz.build
+++ b/accessible/public/msaa/moz.build
@@ -1,8 +1,17 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+EXPORTS += [
+    'ISimpleDOMDocument.h',
+    'ISimpleDOMDocument_i.c',
+    'ISimpleDOMNode.h',
+    'ISimpleDOMNode_i.c',
+    'ISimpleDOMText.h',
+    'ISimpleDOMText_i.c',
+]
+
--- a/accessible/src/atk/Makefile.in
+++ b/accessible/src/atk/Makefile.in
@@ -31,27 +31,16 @@ CPPSRCS = \
   nsMaiInterfaceTable.cpp \
   nsMaiInterfaceDocument.cpp \
   nsMaiInterfaceImage.cpp \
   Platform.cpp \
   RootAccessibleWrap.cpp \
   UtilInterface.cpp \
   $(NULL)
 
-EXPORTS = \
-  nsAccessNodeWrap.h \
-  $(NULL)
-
-EXPORTS_NAMESPACES = mozilla/a11y
-
-EXPORTS_mozilla/a11y = \
-  AccessibleWrap.h \
-  HyperTextAccessibleWrap.h \
-  $(null)
-
 # we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
 
 CFLAGS  	+= $(MOZ_GTK2_CFLAGS)
 CXXFLAGS  += $(MOZ_GTK2_CFLAGS)
 
--- a/accessible/src/atk/moz.build
+++ b/accessible/src/atk/moz.build
@@ -1,8 +1,17 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+EXPORTS += [
+    'nsAccessNodeWrap.h',
+]
+
+EXPORTS.mozilla.a11y += [
+    'AccessibleWrap.h',
+    'HyperTextAccessibleWrap.h',
+]
+
--- a/accessible/src/base/Makefile.in
+++ b/accessible/src/base/Makefile.in
@@ -41,40 +41,16 @@ CPPSRCS = \
   $(NULL)
 
 ifneq ($(A11Y_LOG),0)
 CPPSRCS += \
   Logging.cpp \
   $(NULL)
 endif
 
-EXPORTS = \
-  AccEvent.h \
-  nsAccessibilityService.h \
-  nsAccessNode.h \
-  $(NULL)
-
-EXPORTS_NAMESPACES = mozilla/a11y
-
-EXPORTS_mozilla/a11y = \
-  DocManager.h \
-  FocusManager.h \
-  AccTypes.h \
-  Platform.h \
-  States.h \
-  SelectionManager.h \
-  Role.h \
-  $(NULL)
-
-ifdef MOZ_DEBUG
-EXPORTS_mozilla/a11y += \
-  Logging.h \
-  $(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
 
 LOCAL_INCLUDES += \
   -I$(srcdir) \
   -I$(srcdir)/../generic \
--- a/accessible/src/base/moz.build
+++ b/accessible/src/base/moz.build
@@ -1,8 +1,28 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+EXPORTS += [
+    'AccEvent.h',
+    'nsAccessNode.h',
+    'nsAccessibilityService.h',
+]
+
+EXPORTS.mozilla.a11y += [
+    'AccTypes.h',
+    'DocManager.h',
+    'FocusManager.h',
+    'Platform.h',
+    'Role.h',
+    'SelectionManager.h',
+    'States.h',
+]
+
+if CONFIG['MOZ_DEBUG']:
+    EXPORTS.mozilla.a11y += [
+        'Logging.h',
+    ]
--- a/accessible/src/generic/Makefile.in
+++ b/accessible/src/generic/Makefile.in
@@ -23,24 +23,16 @@ CPPSRCS = \
   HyperTextAccessible.cpp \
   ImageAccessible.cpp \
   OuterDocAccessible.cpp \
   RootAccessible.cpp \
   TableCellAccessible.cpp \
   TextLeafAccessible.cpp \
   $(NULL)
 
-EXPORTS_NAMESPACES = mozilla/a11y
-
-EXPORTS_mozilla/a11y = \
-  Accessible.h \
-  DocAccessible.h \
-  HyperTextAccessible.h \
-  $(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
 
 LOCAL_INCLUDES = \
   -I$(srcdir)/../xpcom \
   -I$(srcdir)/../base \
--- a/accessible/src/generic/moz.build
+++ b/accessible/src/generic/moz.build
@@ -1,8 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+EXPORTS.mozilla.a11y += [
+    'Accessible.h',
+    'DocAccessible.h',
+    'HyperTextAccessible.h',
+]
+
--- a/accessible/src/mac/Makefile.in
+++ b/accessible/src/mac/Makefile.in
@@ -21,28 +21,16 @@ CMMSRCS = \
           mozActionElements.mm \
           mozTextAccessible.mm \
           mozHTMLAccessible.mm \
           MacUtils.mm \
           Platform.mm \
           RootAccessibleWrap.mm \
           $(NULL)
 
-EXPORTS = \
-  nsAccessNodeWrap.h \
-  mozAccessibleProtocol.h \
-  $(NULL)
-
-EXPORTS_NAMESPACES = mozilla/a11y
-
-EXPORTS_mozilla/a11y = \
-  AccessibleWrap.h \
-  HyperTextAccessibleWrap.h \
-  $(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
 
 LOCAL_INCLUDES += \
   -I$(srcdir) \
   -I$(srcdir)/../base \
--- a/accessible/src/mac/moz.build
+++ b/accessible/src/mac/moz.build
@@ -1,8 +1,18 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+EXPORTS += [
+    'mozAccessibleProtocol.h',
+    'nsAccessNodeWrap.h',
+]
+
+EXPORTS.mozilla.a11y += [
+    'AccessibleWrap.h',
+    'HyperTextAccessibleWrap.h',
+]
+
--- a/accessible/src/other/Makefile.in
+++ b/accessible/src/other/Makefile.in
@@ -14,27 +14,16 @@ EXPORT_LIBRARY = ..
 LIBXUL_LIBRARY = 1
 
 
 CPPSRCS = \
   AccessibleWrap.cpp \
   Platform.cpp \
   $(NULL)
 
-EXPORTS = \
-  nsAccessNodeWrap.h \
-  $(null)
-
-EXPORTS_NAMESPACES = mozilla/a11y
-
-EXPORTS_mozilla/a11y = \
-  AccessibleWrap.h \
-  HyperTextAccessibleWrap.h \
-  $(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
 
 LOCAL_INCLUDES += \
   -I$(srcdir) \
   -I$(srcdir)/../base \
--- a/accessible/src/other/moz.build
+++ b/accessible/src/other/moz.build
@@ -1,8 +1,17 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+EXPORTS += [
+    'nsAccessNodeWrap.h',
+]
+
+EXPORTS.mozilla.a11y += [
+    'AccessibleWrap.h',
+    'HyperTextAccessibleWrap.h',
+]
+
--- a/accessible/src/windows/ia2/Makefile.in
+++ b/accessible/src/windows/ia2/Makefile.in
@@ -23,26 +23,16 @@ CPPSRCS += \
   ia2AccessibleImage.cpp \
   ia2AccessibleRelation.cpp \
   ia2AccessibleTable.cpp \
   ia2AccessibleTableCell.cpp \
   ia2AccessibleText.cpp \
   ia2AccessibleValue.cpp \
   $(NULL)
 
-EXPORTS = \
-  ia2AccessibleValue.h \
-  ia2AccessibleAction.h \
-  ia2AccessibleComponent.h \
-  ia2AccessibleEditableText.h \
-  ia2AccessibleHyperlink.h \
-  ia2AccessibleHypertext.h \
-  ia2AccessibleText.h \
-  $(NULL)
-
 # The midl generated code include Windows headers which defines min and max
 # macros which conflicts with std::min/max.  Suppress the macros:
 OS_CXXFLAGS += -DNOMINMAX
 
 # 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/config.mk
--- a/accessible/src/windows/ia2/moz.build
+++ b/accessible/src/windows/ia2/moz.build
@@ -1,8 +1,18 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+EXPORTS += [
+    'ia2AccessibleAction.h',
+    'ia2AccessibleComponent.h',
+    'ia2AccessibleEditableText.h',
+    'ia2AccessibleHyperlink.h',
+    'ia2AccessibleHypertext.h',
+    'ia2AccessibleText.h',
+    'ia2AccessibleValue.h',
+]
+
--- a/accessible/src/windows/msaa/Makefile.in
+++ b/accessible/src/windows/msaa/Makefile.in
@@ -36,28 +36,16 @@ CPPSRCS = \
 ifdef MOZ_XUL
 CPPSRCS += \
   XULListboxAccessibleWrap.cpp \
   XULMenuAccessibleWrap.cpp \
   XULTreeGridAccessibleWrap.cpp \
   $(NULL)
 endif
 
-EXPORTS = \
-  nsAccessNodeWrap.h \
-  $(NULL)
-
-EXPORTS_NAMESPACES = mozilla/a11y \
-
-EXPORTS_mozilla/a11y = \
-  AccessibleWrap.h \
-  Compatibility.h \
-  HyperTextAccessibleWrap.h \
-  $(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/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
 
 LOCAL_INCLUDES += \
--- a/accessible/src/windows/msaa/moz.build
+++ b/accessible/src/windows/msaa/moz.build
@@ -1,8 +1,18 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+EXPORTS += [
+    'nsAccessNodeWrap.h',
+]
+
+EXPORTS.mozilla.a11y += [
+    'AccessibleWrap.h',
+    'Compatibility.h',
+    'HyperTextAccessibleWrap.h',
+]
+
--- a/accessible/src/xpcom/Makefile.in
+++ b/accessible/src/xpcom/Makefile.in
@@ -8,18 +8,16 @@ topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = accessibility_xpcom_s
 LIBXUL_LIBRARY = 1
 
-EXPORTS := xpcAccEvents.h
-
 CPPSRCS = \
   xpcAccEvents.cpp \
   nsAccessibleRelation.cpp \
   xpcAccessibleTable.cpp \
   xpcAccessibleTableCell.cpp \
   $(NULL)
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
--- a/accessible/src/xpcom/moz.build
+++ b/accessible/src/xpcom/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'accessibility'
 
+EXPORTS += [
+    'xpcAccEvents.h',
+]
+
--- a/browser/components/about/Makefile.in
+++ b/browser/components/about/Makefile.in
@@ -9,17 +9,13 @@ VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = browserabout_s
 
 FORCE_STATIC_LIB = 1
 USE_STATIC_LIBS = 1
 
-EXPORTS_NAMESPACES = mozilla/browser
-
-EXPORTS_mozilla/browser = AboutRedirector.h
-
 CPPSRCS = AboutRedirector.cpp
 
 LOCAL_INCLUDES = -I$(srcdir)/../build
 
 include $(topsrcdir)/config/rules.mk
--- a/browser/components/about/moz.build
+++ b/browser/components/about/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'browserabout'
 
+EXPORTS.mozilla.browser += [
+    'AboutRedirector.h',
+]
+
--- a/browser/components/build/Makefile.in
+++ b/browser/components/build/Makefile.in
@@ -12,18 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 LIBRARY_NAME = browsercomps
 SHORT_LIBNAME = brwsrcmp
 IS_COMPONENT = 1
 MODULE_NAME = nsBrowserCompsModule
 FORCE_SHARED_LIB = 1
 
 USE_STATIC_LIBS = 1
 
-EXPORTS = nsBrowserCompsCID.h
-
 CPPSRCS = nsModule.cpp \
           $(NULL)
 
 ifeq ($(OS_ARCH),WINNT)
 OS_LIBS	+= $(call EXPAND_LIBNAME,ole32 shell32 shlwapi)
 endif
 
 LOCAL_INCLUDES = \
--- a/browser/components/build/moz.build
+++ b/browser/components/build/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'browsercomps'
 
+EXPORTS += [
+    'nsBrowserCompsCID.h',
+]
+
--- a/browser/components/dirprovider/Makefile.in
+++ b/browser/components/dirprovider/Makefile.in
@@ -9,19 +9,16 @@ VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = browserdir_s
 
 FORCE_STATIC_LIB = 1
 USE_STATIC_LIBS = 1
 
-EXPORTS_NAMESPACES = mozilla/browser
-EXPORTS_mozilla/browser = DirectoryProvider.h
-
 CPPSRCS = DirectoryProvider.cpp
 
 LOCAL_INCLUDES = -I$(srcdir)/../build
 
 EXTRA_DSO_LDOPTS = \
 	$(XPCOM_GLUE_LDOPTS) \
 	$(NSPR_LIBS) \
 	$(NULL)
--- a/browser/components/dirprovider/moz.build
+++ b/browser/components/dirprovider/moz.build
@@ -3,8 +3,12 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 TEST_DIRS += ['tests']
 
 MODULE = 'browserdir'
 
+EXPORTS.mozilla.browser += [
+    'DirectoryProvider.h',
+]
+
--- a/caps/include/Makefile.in
+++ b/caps/include/Makefile.in
@@ -5,14 +5,10 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXPORTS		= \
-            nsJSPrincipals.h \
-            $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/caps/include/moz.build
+++ b/caps/include/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'caps'
 
+EXPORTS += [
+    'nsJSPrincipals.h',
+]
+
--- a/chrome/src/Makefile.in
+++ b/chrome/src/Makefile.in
@@ -9,22 +9,16 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME    = chrome_s
 LIBXUL_LIBRARY  = 1
 FORCE_STATIC_LIB = 1
 
-EXPORTS_NAMESPACES = mozilla/chrome
-
-EXPORTS_mozilla/chrome = \
-		RegistryMessageUtils.h \
-		$(NULL)
-
 CPPSRCS		= \
 		nsChromeRegistry.cpp \
 		nsChromeRegistryChrome.cpp \
 		nsChromeProtocolHandler.cpp \
 		nsChromeRegistryContent.cpp \
 		$(NULL)
 
 include $(topsrcdir)/config/config.mk
--- a/chrome/src/moz.build
+++ b/chrome/src/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'chrome'
 
+EXPORTS.mozilla.chrome += [
+    'RegistryMessageUtils.h',
+]
+
--- a/content/base/public/Makefile.in
+++ b/content/base/public/Makefile.in
@@ -5,57 +5,10 @@
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 
-EXPORTS		= \
-mozFlushType.h \
-nsIContent.h \
-nsIAttribute.h \
-nsIContentIterator.h \
-nsContentPolicyUtils.h \
-nsContentUtils.h \
-nsDocElementCreatedNotificationRunner.h \
-nsIDocument.h \
-nsIDocumentInlines.h \
-nsDeprecatedOperationList.h \
-nsIDocumentObserver.h \
-nsIMutationObserver.h \
-nsINameSpaceManager.h \
-nsINode.h \
-nsINodeInfo.h \
-nsINodeList.h \
-nsIScriptElement.h \
-nsIStyleSheetLinkingElement.h \
-nsIContentSerializer.h \
-nsIXPathEvaluatorInternal.h \
-nsCaseTreatment.h \
-nsContentCID.h \
-nsCopySupport.h \
-nsContentCreatorFunctions.h \
-nsDOMFile.h \
-nsLineBreaker.h \
-nsReferencedElement.h \
-nsTreeSanitizer.h \
-nsViewportInfo.h \
-nsXMLNameSpaceMap.h \
-nsHostObjectProtocolHandler.h \
-$(NULL)
-
-EXPORTS_NAMESPACES = mozilla/dom mozilla
-
-EXPORTS_mozilla/dom = \
-		DirectionalityUtils.h \
-		Element.h \
-		FragmentOrElement.h \
-		FromParser.h \
-		$(NULL)
-
-EXPORTS_mozilla = \
-		CORSMode.h \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/content/base/public/moz.build
+++ b/content/base/public/moz.build
@@ -28,8 +28,53 @@ XPIDL_SOURCES += [
     'nsISelectionPrivate.idl',
     'nsIXMLHttpRequest.idl',
 ]
 
 XPIDL_MODULE = 'content_base'
 
 MODULE = 'content'
 
+EXPORTS += [
+    'mozFlushType.h',
+    'nsCaseTreatment.h',
+    'nsContentCID.h',
+    'nsContentCreatorFunctions.h',
+    'nsContentPolicyUtils.h',
+    'nsContentUtils.h',
+    'nsCopySupport.h',
+    'nsDOMFile.h',
+    'nsDeprecatedOperationList.h',
+    'nsDocElementCreatedNotificationRunner.h',
+    'nsHostObjectProtocolHandler.h',
+    'nsIAttribute.h',
+    'nsIContent.h',
+    'nsIContentIterator.h',
+    'nsIContentSerializer.h',
+    'nsIDocument.h',
+    'nsIDocumentInlines.h',
+    'nsIDocumentObserver.h',
+    'nsIMutationObserver.h',
+    'nsINameSpaceManager.h',
+    'nsINode.h',
+    'nsINodeInfo.h',
+    'nsINodeList.h',
+    'nsIScriptElement.h',
+    'nsIStyleSheetLinkingElement.h',
+    'nsIXPathEvaluatorInternal.h',
+    'nsLineBreaker.h',
+    'nsReferencedElement.h',
+    'nsTreeSanitizer.h',
+    'nsViewportInfo.h',
+    'nsXMLNameSpaceMap.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'DirectionalityUtils.h',
+    'Element.h',
+    'FragmentOrElement.h',
+    'FromParser.h',
+]
+
+EXPORTS.mozilla += [
+    'CORSMode.h',
+]
+
--- a/content/base/src/Makefile.in
+++ b/content/base/src/Makefile.in
@@ -8,60 +8,16 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconbase_s
 LIBXUL_LIBRARY	= 1
 
-
-EXPORTS		= \
-		nsAtomListUtils.h \
-		nsAttrName.h \
-		nsContentList.h \
-		nsContentListDeclarations.h \
-		nsContentSink.h \
-		nsGkAtomList.h \
-		nsGkAtoms.h \
-		nsNodeInfoManager.h \
-		nsNodeUtils.h \
-		nsPropertyTable.h \
-		nsRange.h \
-		nsScriptLoader.h \
-		nsStubDocumentObserver.h \
-		nsStubMutationObserver.h \
-		nsTextFragment.h \
-		mozAutoDocUpdate.h \
-		nsFrameMessageManager.h \
-		nsAttrAndChildArray.h \
-		nsAttrValue.h \
-		nsAttrValueInlines.h \
-		nsCrossSiteListenerProxy.h \
-		nsDOMAttributeMap.h \
-		nsMappedAttributeElement.h \
-		nsStyledElement.h \
-		nsSandboxFlags.h \
-		$(NULL)
-
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-  Attr.h \
-  Comment.h \
-  DocumentFragment.h \
-  DocumentType.h \
-  DOMImplementation.h \
-  EventSource.h \
-  Link.h \
-  NodeIterator.h \
-  Text.h \
-  TreeWalker.h \
-  $(NULL)
-
 CPPSRCS		= \
 		Comment.cpp \
 		DirectionalityUtils.cpp \
 		DocumentType.cpp \
 		DOMImplementation.cpp \
 		EventSource.cpp \
 		FileIOObject.cpp \
 		nsAtomListUtils.cpp \
@@ -143,17 +99,16 @@ CPPSRCS		= \
 		nsFrameMessageManager.cpp \
 		nsInProcessTabChildGlobal.cpp \
 		ThirdPartyUtil.cpp \
 		nsDOMMutationObserver.cpp \
 		nsMixedContentBlocker.cpp \
 		$(NULL)
 
 ifdef MOZ_WEBRTC
-EXPORTS += nsDOMDataChannel.h
 CPPSRCS += nsDOMDataChannel.cpp
 LOCAL_INCLUDES += \
 		-I$(topsrcdir)/netwerk/sctp/datachannel \
 		$(NULL)
 endif
 
 # Are we targeting x86-32 or x86-64?  If so, we want to include SSE2 code for
 # nsTextFragment.cpp
--- a/content/base/src/moz.build
+++ b/content/base/src/moz.build
@@ -1,8 +1,52 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsAtomListUtils.h',
+    'nsAttrName.h',
+    'nsContentList.h',
+    'nsContentListDeclarations.h',
+    'nsContentSink.h',
+    'nsGkAtomList.h',
+    'nsGkAtoms.h',
+    'nsNodeInfoManager.h',
+    'nsNodeUtils.h',
+    'nsPropertyTable.h',
+    'nsRange.h',
+    'nsScriptLoader.h',
+    'nsStubDocumentObserver.h',
+    'nsStubMutationObserver.h',
+    'nsTextFragment.h',
+    'mozAutoDocUpdate.h',
+    'nsFrameMessageManager.h',
+    'nsAttrAndChildArray.h',
+    'nsAttrValue.h',
+    'nsAttrValueInlines.h',
+    'nsCrossSiteListenerProxy.h',
+    'nsDOMAttributeMap.h',
+    'nsMappedAttributeElement.h',
+    'nsStyledElement.h',
+    'nsSandboxFlags.h',
+]
+
+if CONFIG['MOZ_WEBRTC']:
+    EXPORTS += ['nsDOMDataChannel.h']
+
+EXPORTS.mozilla.dom += [
+    'Attr.h',
+    'Comment.h',
+    'DocumentFragment.h',
+    'DocumentType.h',
+    'DOMImplementation.h',
+    'EventSource.h',
+    'Link.h',
+    'NodeIterator.h',
+    'Text.h',
+    'TreeWalker.h',
+]
+
--- a/content/canvas/public/Makefile.in
+++ b/content/canvas/public/Makefile.in
@@ -5,25 +5,9 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXPORTS_NAMESPACES = mozilla/ipc
-
-EXPORTS		= \
-		nsICanvasRenderingContextInternal.h \
-		nsICanvasElementExternal.h \
-		$(NULL)
-
-EXPORTS_mozilla/ipc = \
-		DocumentRendererChild.h \
-		DocumentRendererParent.h \
-		DocumentRendererShmemChild.h \
-		DocumentRendererShmemParent.h \
-		DocumentRendererNativeIDChild.h \
-		DocumentRendererNativeIDParent.h \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/content/canvas/public/moz.build
+++ b/content/canvas/public/moz.build
@@ -7,8 +7,22 @@
 XPIDL_SOURCES += [
     'nsICanvasGLPrivate.idl',
 ]
 
 XPIDL_MODULE = 'content_canvas'
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsICanvasElementExternal.h',
+    'nsICanvasRenderingContextInternal.h',
+]
+
+EXPORTS.mozilla.ipc += [
+    'DocumentRendererChild.h',
+    'DocumentRendererNativeIDChild.h',
+    'DocumentRendererNativeIDParent.h',
+    'DocumentRendererParent.h',
+    'DocumentRendererShmemChild.h',
+    'DocumentRendererShmemParent.h',
+]
+
--- a/content/canvas/src/Makefile.in
+++ b/content/canvas/src/Makefile.in
@@ -11,24 +11,16 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconcvs_s
 LIBXUL_LIBRARY  = 1
 ifndef _MSC_VER
 FAIL_ON_WARNINGS = 1
 endif # !_MSC_VER
 
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-	CanvasUtils.h \
-	CanvasRenderingContext2D.h \
-  ImageData.h \
-  $(NULL)
-
 CPPSRCS	= \
 	CanvasImageCache.cpp \
 	CanvasRenderingContext2D.cpp \
 	CanvasUtils.cpp \
 	DocumentRendererParent.cpp \
 	DocumentRendererChild.cpp \
 	ImageData.cpp \
 	$(NULL)
--- a/content/canvas/src/moz.build
+++ b/content/canvas/src/moz.build
@@ -1,8 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS.mozilla.dom += [
+    'CanvasRenderingContext2D.h',
+    'CanvasUtils.h',
+    'ImageData.h',
+]
+
--- a/content/events/public/Makefile.in
+++ b/content/events/public/Makefile.in
@@ -5,27 +5,10 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXPORTS		= \
-		nsMutationEvent.h \
-		nsIPrivateTextEvent.h \
-		nsIPrivateTextRange.h \
-		nsAsyncDOMEvent.h \
-		nsEventDispatcher.h \
-		nsEventStates.h \
-		nsEventNameList.h \
-		nsVKList.h \
-		$(NULL)
-
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-  EventTarget.h \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/content/events/public/moz.build
+++ b/content/events/public/moz.build
@@ -7,8 +7,23 @@
 XPIDL_SOURCES += [
     'nsIEventListenerService.idl',
 ]
 
 XPIDL_MODULE = 'content_events'
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsAsyncDOMEvent.h',
+    'nsEventDispatcher.h',
+    'nsEventNameList.h',
+    'nsEventStates.h',
+    'nsIPrivateTextEvent.h',
+    'nsIPrivateTextRange.h',
+    'nsMutationEvent.h',
+    'nsVKList.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'EventTarget.h',
+]
+
--- a/content/events/src/Makefile.in
+++ b/content/events/src/Makefile.in
@@ -9,32 +9,16 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconevents_s
 LIBXUL_LIBRARY  = 1
 FAIL_ON_WARNINGS = 1
 
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-		Touch.h \
-		$(NULL)
-
-EXPORTS		= \
-		nsEventStateManager.h \
-		nsEventListenerManager.h \
-		nsDOMEventTargetHelper.h \
-		nsDOMEvent.h \
-		nsDOMGamepad.h \
-		nsDOMTouchEvent.h \
-		nsDOMUIEvent.h \
-		$(NULL)
-
 CPPSRCS		= \
 		nsEventListenerManager.cpp \
 		nsEventStateManager.cpp \
 		nsDOMEvent.cpp \
 		nsDOMDataContainerEvent.cpp \
 		nsDOMUIEvent.cpp \
 		nsDOMKeyboardEvent.cpp \
 		nsDOMTextEvent.cpp \
--- a/content/events/src/moz.build
+++ b/content/events/src/moz.build
@@ -1,8 +1,22 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsDOMEvent.h',
+    'nsDOMEventTargetHelper.h',
+    'nsDOMGamepad.h',
+    'nsDOMTouchEvent.h',
+    'nsDOMUIEvent.h',
+    'nsEventListenerManager.h',
+    'nsEventStateManager.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'Touch.h',
+]
+
--- a/content/html/content/public/Makefile.in
+++ b/content/html/content/public/Makefile.in
@@ -5,31 +5,9 @@
 
 DEPTH     = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXPORTS = \
-		nsIConstraintValidation.h \
-		nsIFormControl.h \
-		nsIForm.h \
-		nsIFormProcessor.h \
-		nsILink.h \
-		nsIRadioVisitor.h \
-		nsIRadioGroupContainer.h \
-		nsITextControlElement.h \
-		nsFormSubmission.h \
-		nsIHTMLCollection.h \
-		$(NULL)
-
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-		HTMLCanvasElement.h \
-		HTMLMediaElement.h \
-		HTMLAudioElement.h \
-		HTMLVideoElement.h \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
--- a/content/html/content/public/moz.build
+++ b/content/html/content/public/moz.build
@@ -10,8 +10,28 @@ XPIDL_SOURCES += [
     'nsIMenuBuilder.idl',
     'nsIPhonetic.idl',
 ]
 
 XPIDL_MODULE = 'content_html'
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsFormSubmission.h',
+    'nsIConstraintValidation.h',
+    'nsIForm.h',
+    'nsIFormControl.h',
+    'nsIFormProcessor.h',
+    'nsIHTMLCollection.h',
+    'nsILink.h',
+    'nsIRadioGroupContainer.h',
+    'nsIRadioVisitor.h',
+    'nsITextControlElement.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'HTMLAudioElement.h',
+    'HTMLCanvasElement.h',
+    'HTMLMediaElement.h',
+    'HTMLVideoElement.h',
+]
+
--- a/content/html/content/src/Makefile.in
+++ b/content/html/content/src/Makefile.in
@@ -8,86 +8,16 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconhtmlcon_s
 LIBXUL_LIBRARY	= 1
 
-EXPORTS		= \
-		HTMLPropertiesCollection.h \
-		nsGenericHTMLElement.h \
-		nsClientRect.h \
-		nsHTMLDNSPrefetch.h \
-		$(NULL)
-
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-		HTMLAnchorElement.h \
-		HTMLAreaElement.h \
-		HTMLBodyElement.h \
-		HTMLBRElement.h \
-		HTMLButtonElement.h \
-		HTMLDataElement.h \
-		HTMLDataListElement.h \
-		HTMLDivElement.h \
-		HTMLFieldSetElement.h \
-		HTMLFontElement.h \
-		HTMLFrameElement.h \
-		HTMLFrameSetElement.h \
-		HTMLHeadingElement.h \
-		HTMLHRElement.h \
-		HTMLIFrameElement.h \
-		HTMLImageElement.h \
-		HTMLInputElement.h \
-		HTMLLabelElement.h \
-		HTMLLegendElement.h \
-		HTMLLIElement.h \
-		HTMLLinkElement.h \
-		HTMLMapElement.h \
-		HTMLMenuElement.h \
-		HTMLMenuItemElement.h \
-		HTMLMetaElement.h \
-		HTMLMeterElement.h \
-		HTMLModElement.h \
-		HTMLObjectElement.h \
-		HTMLOptionElement.h \
-		HTMLOptionsCollection.h \
-		HTMLOptGroupElement.h \
-		HTMLOutputElement.h \
-		HTMLParagraphElement.h \
-		HTMLPreElement.h \
-		HTMLProgressElement.h \
-		HTMLScriptElement.h \
-		HTMLSelectElement.h \
-		HTMLSharedElement.h \
-		HTMLSharedListElement.h \
-		HTMLSharedObjectElement.h \
-		HTMLSourceElement.h \
-		HTMLSpanElement.h \
-		HTMLStyleElement.h \
-		HTMLTableCaptionElement.h \
-		HTMLTableCellElement.h \
-		HTMLTableColElement.h \
-		HTMLTableElement.h \
-		HTMLTableRowElement.h \
-		HTMLTableSectionElement.h \
-		HTMLTemplateElement.h \
-		HTMLTextAreaElement.h \
-		HTMLTimeElement.h \
-		HTMLTitleElement.h \
-		HTMLUnknownElement.h \
-		MediaError.h \
-		TimeRanges.h \
-		UndoManager.h \
-		ValidityState.h \
-		$(NULL)
-
 CPPSRCS		= \
 		HTMLPropertiesCollection.cpp \
 		nsClientRect.cpp \
 		nsHTMLDNSPrefetch.cpp \
 		nsGenericHTMLElement.cpp \
 		nsGenericHTMLFrameElement.cpp \
 		nsFormSubmission.cpp \
 		nsTextEditorState.cpp \
--- a/content/html/content/src/moz.build
+++ b/content/html/content/src/moz.build
@@ -1,8 +1,76 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'HTMLPropertiesCollection.h',
+    'nsGenericHTMLElement.h',
+    'nsClientRect.h',
+    'nsHTMLDNSPrefetch.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'HTMLAnchorElement.h',
+    'HTMLAreaElement.h',
+    'HTMLBodyElement.h',
+    'HTMLBRElement.h',
+    'HTMLButtonElement.h',
+    'HTMLDataElement.h',
+    'HTMLDataListElement.h',
+    'HTMLDivElement.h',
+    'HTMLFieldSetElement.h',
+    'HTMLFontElement.h',
+    'HTMLFrameElement.h',
+    'HTMLFrameSetElement.h',
+    'HTMLHeadingElement.h',
+    'HTMLHRElement.h',
+    'HTMLIFrameElement.h',
+    'HTMLImageElement.h',
+    'HTMLInputElement.h',
+    'HTMLLabelElement.h',
+    'HTMLLegendElement.h',
+    'HTMLLIElement.h',
+    'HTMLLinkElement.h',
+    'HTMLMapElement.h',
+    'HTMLMenuElement.h',
+    'HTMLMenuItemElement.h',
+    'HTMLMetaElement.h',
+    'HTMLMeterElement.h',
+    'HTMLModElement.h',
+    'HTMLObjectElement.h',
+    'HTMLOptionElement.h',
+    'HTMLOptionsCollection.h',
+    'HTMLOptGroupElement.h',
+    'HTMLOutputElement.h',
+    'HTMLParagraphElement.h',
+    'HTMLPreElement.h',
+    'HTMLProgressElement.h',
+    'HTMLScriptElement.h',
+    'HTMLSelectElement.h',
+    'HTMLSharedElement.h',
+    'HTMLSharedListElement.h',
+    'HTMLSharedObjectElement.h',
+    'HTMLSourceElement.h',
+    'HTMLSpanElement.h',
+    'HTMLStyleElement.h',
+    'HTMLTableCaptionElement.h',
+    'HTMLTableCellElement.h',
+    'HTMLTableColElement.h',
+    'HTMLTableElement.h',
+    'HTMLTableRowElement.h',
+    'HTMLTableSectionElement.h',
+    'HTMLTemplateElement.h',
+    'HTMLTextAreaElement.h',
+    'HTMLTimeElement.h',
+    'HTMLTitleElement.h',
+    'HTMLUnknownElement.h',
+    'MediaError.h',
+    'TimeRanges.h',
+    'UndoManager.h',
+    'ValidityState.h',
+]
+
--- a/content/html/document/src/Makefile.in
+++ b/content/html/document/src/Makefile.in
@@ -18,20 +18,16 @@ CPPSRCS		= \
 		nsHTMLContentSink.cpp \
 		nsHTMLDocument.cpp \
 		ImageDocument.cpp \
 		MediaDocument.cpp \
 		PluginDocument.cpp \
 		VideoDocument.cpp \
 		$(NULL)
 
-EXPORTS		= \
-		nsIHTMLDocument.h \
-		$(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
 
 LOCAL_INCLUDES += \
 		-I$(srcdir)/../../../base/src \
 		-I$(srcdir)/../../../events/src \
--- a/content/html/document/src/moz.build
+++ b/content/html/document/src/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsIHTMLDocument.h',
+]
+
--- a/content/media/Makefile.in
+++ b/content/media/Makefile.in
@@ -10,48 +10,16 @@ VPATH     = @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = gkconmedia_s
 LIBXUL_LIBRARY = 1
 ifndef _MSC_VER
 FAIL_ON_WARNINGS := 1
 endif # !_MSC_VER
 
-EXPORTS = \
-  AbstractMediaDecoder.h \
-  AudioChannelFormat.h \
-  AudioEventTimeline.h \
-  AudioNodeEngine.h \
-  AudioNodeStream.h \
-  AudioSampleFormat.h \
-  AudioSegment.h \
-  AudioStream.h \
-  BufferMediaResource.h \
-  DecoderTraits.h \
-  DOMMediaStream.h \
-  FileBlockCache.h \
-  MediaDecoderOwner.h \
-  MediaResource.h \
-  MediaSegment.h \
-  MediaStreamGraph.h \
-  AudioAvailableEventManager.h \
-  MediaDecoder.h \
-  MediaDecoderStateMachine.h \
-  MediaDecoderReader.h \
-  MediaCache.h \
-  SharedBuffer.h \
-  StreamBuffer.h \
-  TimeVarying.h \
-  VideoFrameContainer.h \
-  VideoUtils.h \
-  VideoSegment.h \
-  VorbisUtils.h \
-  MediaMetadataManager.h \
-  $(NULL)
-
 CPPSRCS = \
   AudioChannelFormat.cpp \
   AudioNodeEngine.cpp \
   AudioNodeStream.cpp \
   AudioSegment.cpp \
   AudioStream.cpp \
   DecoderTraits.cpp \
   DOMMediaStream.cpp \
--- a/content/media/dash/Makefile.in
+++ b/content/media/dash/Makefile.in
@@ -13,23 +13,16 @@ topsrcdir  := @top_srcdir@
 srcdir     := @srcdir@
 VPATH      := @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME   := gkcondash_s
 LIBXUL_LIBRARY := 1
 
-EXPORTS := \
-  DASHDecoder.h \
-  DASHRepDecoder.h \
-  DASHReader.h \
-  DASHRepReader.h \
-  $(NULL)
-
 CPPSRCS := \
   DASHDecoder.cpp \
   DASHRepDecoder.cpp \
   DASHReader.cpp \
   $(NULL)
 
 FORCE_STATIC_LIB := 1
 
--- a/content/media/dash/moz.build
+++ b/content/media/dash/moz.build
@@ -1,8 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'DASHDecoder.h',
+    'DASHReader.h',
+    'DASHRepDecoder.h',
+    'DASHRepReader.h',
+]
+
--- a/content/media/gstreamer/Makefile.in
+++ b/content/media/gstreamer/Makefile.in
@@ -9,22 +9,16 @@ VPATH		= @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkcongstreamer_s
 LIBXUL_LIBRARY 	= 1
 
 
-EXPORTS		+= \
-		GStreamerDecoder.h \
-		GStreamerReader.h \
-		GStreamerFormatHelper.h \
-		$(NULL)
-
 CPPSRCS		= \
 		GStreamerReader.cpp \
 		GStreamerDecoder.cpp \
 		GStreamerFormatHelper.cpp \
 		$(NULL)
 
 FORCE_STATIC_LIB = 1
 
--- a/content/media/gstreamer/moz.build
+++ b/content/media/gstreamer/moz.build
@@ -1,8 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'GStreamerDecoder.h',
+    'GStreamerFormatHelper.h',
+    'GStreamerReader.h',
+]
+
--- a/content/media/moz.build
+++ b/content/media/moz.build
@@ -37,8 +37,40 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk
 
 if CONFIG['MOZ_WEBSPEECH']:
     PARALLEL_DIRS += ['webspeech']
 
 TEST_DIRS += ['test']
 
 MODULE = 'content'
 
+EXPORTS += [
+    'AbstractMediaDecoder.h',
+    'AudioAvailableEventManager.h',
+    'AudioChannelFormat.h',
+    'AudioEventTimeline.h',
+    'AudioNodeEngine.h',
+    'AudioNodeStream.h',
+    'AudioSampleFormat.h',
+    'AudioSegment.h',
+    'AudioStream.h',
+    'BufferMediaResource.h',
+    'DOMMediaStream.h',
+    'DecoderTraits.h',
+    'FileBlockCache.h',
+    'MediaCache.h',
+    'MediaDecoder.h',
+    'MediaDecoderOwner.h',
+    'MediaDecoderReader.h',
+    'MediaDecoderStateMachine.h',
+    'MediaMetadataManager.h',
+    'MediaResource.h',
+    'MediaSegment.h',
+    'MediaStreamGraph.h',
+    'SharedBuffer.h',
+    'StreamBuffer.h',
+    'TimeVarying.h',
+    'VideoFrameContainer.h',
+    'VideoSegment.h',
+    'VideoUtils.h',
+    'VorbisUtils.h',
+]
+
--- a/content/media/ogg/Makefile.in
+++ b/content/media/ogg/Makefile.in
@@ -9,22 +9,16 @@ VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconogg_s
 LIBXUL_LIBRARY 	= 1
 FAIL_ON_WARNINGS := 1
 
 
-EXPORTS		+= \
-		OggDecoder.h \
-		OggCodecState.h \
-		OggReader.h \
-		$(NULL)
-
 CPPSRCS		= \
 		OggDecoder.cpp \
 		OggCodecState.cpp \
 		OggReader.cpp \
 		$(NULL)
 
 FORCE_STATIC_LIB = 1
 
--- a/content/media/ogg/moz.build
+++ b/content/media/ogg/moz.build
@@ -1,8 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'OggCodecState.h',
+    'OggDecoder.h',
+    'OggReader.h',
+]
+
--- a/content/media/omx/Makefile.in
+++ b/content/media/omx/Makefile.in
@@ -7,21 +7,16 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconomx_s
 LIBXUL_LIBRARY 	= 1
 
-EXPORTS		+= \
-		MediaOmxDecoder.h \
-		MediaOmxReader.h \
-		$(NULL)
-
 CPPSRCS		= \
 		MediaOmxDecoder.cpp \
 		MediaOmxReader.cpp \
 		OmxDecoder.cpp \
 		$(NULL)
 
 FORCE_STATIC_LIB = 1
 
--- a/content/media/omx/moz.build
+++ b/content/media/omx/moz.build
@@ -1,8 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'MediaOmxDecoder.h',
+    'MediaOmxReader.h',
+]
+
--- a/content/media/plugins/Makefile.in
+++ b/content/media/plugins/Makefile.in
@@ -7,23 +7,16 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconmediaplugins_s
 LIBXUL_LIBRARY 	= 1
 
-EXPORTS		+= \
-		MPAPI.h \
-		MediaPluginHost.h \
-		MediaPluginDecoder.h \
-		MediaPluginReader.h \
-		$(NULL)
-
 CPPSRCS		= \
 		MediaPluginHost.cpp \
 		MediaPluginDecoder.cpp \
 		MediaPluginReader.cpp \
 		$(NULL)
 
 FORCE_STATIC_LIB = 1
 
--- a/content/media/plugins/moz.build
+++ b/content/media/plugins/moz.build
@@ -1,8 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'MPAPI.h',
+    'MediaPluginDecoder.h',
+    'MediaPluginHost.h',
+    'MediaPluginReader.h',
+]
+
--- a/content/media/raw/Makefile.in
+++ b/content/media/raw/Makefile.in
@@ -9,22 +9,16 @@ srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = gkconraw_s
 LIBXUL_LIBRARY = 1
 FAIL_ON_WARNINGS := 1
 
-EXPORTS += \
-  RawDecoder.h \
-  RawReader.h \
-  RawStructs.h \
-  $(NULL)
-
 CPPSRCS += \
   RawDecoder.cpp \
   RawReader.cpp \
   $(NULL)
 
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
--- a/content/media/raw/moz.build
+++ b/content/media/raw/moz.build
@@ -1,8 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'RawDecoder.h',
+    'RawReader.h',
+    'RawStructs.h',
+]
+
--- a/content/media/wave/Makefile.in
+++ b/content/media/wave/Makefile.in
@@ -9,21 +9,16 @@ VPATH		= @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconwave_s
 LIBXUL_LIBRARY 	= 1
 
 
-EXPORTS		+= \
-		WaveDecoder.h \
-		WaveReader.h \
-		$(NULL)
-
 CPPSRCS		= \
 		WaveDecoder.cpp \
 		WaveReader.cpp \
 		$(NULL)
 
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
--- a/content/media/wave/moz.build
+++ b/content/media/wave/moz.build
@@ -1,8 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'WaveDecoder.h',
+    'WaveReader.h',
+]
+
--- a/content/media/webaudio/Makefile.in
+++ b/content/media/webaudio/Makefile.in
@@ -30,36 +30,11 @@ CPPSRCS := \
   EnableWebAudioCheck.cpp \
   GainNode.cpp \
   MediaBufferDecoder.cpp \
   PannerNode.cpp \
   ThreeDPoint.cpp \
   WebAudioUtils.cpp \
   $(NULL)
 
-EXPORTS_NAMESPACES := mozilla/dom
-EXPORTS_mozilla/dom := \
-  AnalyserNode.h \
-  AudioBuffer.h \
-  AudioBufferSourceNode.h \
-  AudioContext.h \
-  AudioDestinationNode.h \
-  AudioListener.h \
-  AudioNode.h \
-  AudioParam.h \
-  BiquadFilterNode.h \
-  DelayNode.h \
-  DynamicsCompressorNode.h \
-  EnableWebAudioCheck.h \
-  GainNode.h \
-  PannerNode.h \
-  $(NULL)
-
-EXPORTS := \
-  AudioParamTimeline.h \
-  MediaBufferDecoder.h \
-  ThreeDPoint.h \
-  WebAudioUtils.h \
-  $(NULL)
-
 FORCE_STATIC_LIB := 1
 
 include $(topsrcdir)/config/rules.mk
--- a/content/media/webaudio/moz.build
+++ b/content/media/webaudio/moz.build
@@ -5,8 +5,32 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 PARALLEL_DIRS += ['test']
 
 TEST_TOOL_DIRS += ['compiledtest']
 
 MODULE = 'content'
 
+EXPORTS += [
+    'AudioParamTimeline.h',
+    'MediaBufferDecoder.h',
+    'ThreeDPoint.h',
+    'WebAudioUtils.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'AnalyserNode.h',
+    'AudioBuffer.h',
+    'AudioBufferSourceNode.h',
+    'AudioContext.h',
+    'AudioDestinationNode.h',
+    'AudioListener.h',
+    'AudioNode.h',
+    'AudioParam.h',
+    'BiquadFilterNode.h',
+    'DelayNode.h',
+    'DynamicsCompressorNode.h',
+    'EnableWebAudioCheck.h',
+    'GainNode.h',
+    'PannerNode.h',
+]
+
--- a/content/media/webm/Makefile.in
+++ b/content/media/webm/Makefile.in
@@ -9,21 +9,16 @@ VPATH		= @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconwebm_s
 LIBXUL_LIBRARY 	= 1
 
 
-EXPORTS		+= \
-		WebMDecoder.h \
-		WebMReader.h \
-		$(NULL)
-
 CPPSRCS		= \
 		WebMBufferedParser.cpp \
 		WebMDecoder.cpp \
 		WebMReader.cpp \
 		$(NULL)
 
 FORCE_STATIC_LIB = 1
 
--- a/content/media/webm/moz.build
+++ b/content/media/webm/moz.build
@@ -1,8 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'WebMDecoder.h',
+    'WebMReader.h',
+]
+
--- a/content/media/webrtc/Makefile.in
+++ b/content/media/webrtc/Makefile.in
@@ -7,30 +7,21 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = gkconwebrtc_s
 LIBXUL_LIBRARY = 1
 
-EXPORTS	+= \
-  MediaEngine.h \
-  MediaEngineDefault.h \
-  $(NULL)
-
 CPPSRCS	= \
   MediaEngineDefault.cpp \
   $(NULL)
 
 ifdef MOZ_WEBRTC
-EXPORTS += \
-  MediaEngineWebRTC.h \
-  $(NULL)
-
 CPPSRCS += \
   MediaEngineWebRTC.cpp \
   MediaEngineWebRTCVideo.cpp \
   MediaEngineWebRTCAudio.cpp \
   $(NULL)
 endif
 
 ifeq ($(OS_ARCH),WINNT)
--- a/content/media/webrtc/moz.build
+++ b/content/media/webrtc/moz.build
@@ -1,8 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'MediaEngine.h',
+    'MediaEngineDefault.h',
+]
+
+if CONFIG['MOZ_WEBRTC']:
+    EXPORTS += ['MediaEngineWebRTC.h']
--- a/content/media/webspeech/recognition/Makefile.in
+++ b/content/media/webspeech/recognition/Makefile.in
@@ -29,25 +29,13 @@ CPPSRCS := \
   SpeechRecognitionResultList.cpp \
   SpeechStreamListener.cpp \
   endpointer.cc \
   energy_endpointer.cc \
   energy_endpointer_params.cc \
   FakeSpeechRecognitionService.cpp \
   $(NULL)
 
-EXPORTS_NAMESPACES := mozilla/dom
-EXPORTS_mozilla/dom := \
-  FakeSpeechRecognitionService.h \
-  SpeechGrammar.h \
-  SpeechGrammarList.h \
-  SpeechRecognitionAlternative.h \
-  SpeechRecognition.h \
-  SpeechRecognitionResult.h \
-  SpeechRecognitionResultList.h \
-  SpeechStreamListener.h \
-  $(NULL)
-
 FORCE_STATIC_LIB := 1
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
--- a/content/media/webspeech/recognition/moz.build
+++ b/content/media/webspeech/recognition/moz.build
@@ -9,8 +9,20 @@ XPIDL_MODULE = 'dom_webspeechrecognition
 
 XPIDL_SOURCES = [
   'nsIDOMSpeechRecognitionEvent.idl',
   'nsIDOMSpeechRecognitionError.idl',
   'nsISpeechRecognitionService.idl'
 ]
 
 TEST_DIRS += ['test']
+
+EXPORTS.mozilla.dom += [
+    'FakeSpeechRecognitionService.h',
+    'SpeechGrammar.h',
+    'SpeechGrammarList.h',
+    'SpeechRecognition.h',
+    'SpeechRecognitionAlternative.h',
+    'SpeechRecognitionResult.h',
+    'SpeechRecognitionResultList.h',
+    'SpeechStreamListener.h',
+]
+
--- a/content/media/webspeech/synth/Makefile.in
+++ b/content/media/webspeech/synth/Makefile.in
@@ -28,25 +28,13 @@ CPPSRCS := \
   SpeechSynthesisVoice.cpp \
   SpeechSynthesis.cpp \
   SpeechSynthesisChild.cpp \
   SpeechSynthesisParent.cpp \
   nsSynthVoiceRegistry.cpp \
   nsSpeechTask.cpp \
   $(NULL)
 
-EXPORTS_NAMESPACES := mozilla/dom
-EXPORTS_mozilla/dom := \
-  EnableSpeechSynthesisCheck.h \
-  SpeechSynthesisUtterance.h \
-  SpeechSynthesisVoice.h \
-  SpeechSynthesis.h \
-  SpeechSynthesisChild.h \
-  SpeechSynthesisParent.h \
-  nsSynthVoiceRegistry.h \
-  nsSpeechTask.h \
-  $(NULL)
-
 FORCE_STATIC_LIB := 1
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
--- a/content/media/webspeech/synth/moz.build
+++ b/content/media/webspeech/synth/moz.build
@@ -9,8 +9,20 @@ TEST_DIRS += ['test', 'ipc/test']
 
 XPIDL_MODULE = 'dom_webspeechsynth'
 
 XPIDL_SOURCES += [
     'nsIDOMSpeechSynthesisEvent.idl',
     'nsISpeechService.idl',
     'nsISynthVoiceRegistry.idl'
     ]
+
+EXPORTS.mozilla.dom += [
+    'EnableSpeechSynthesisCheck.h',
+    'SpeechSynthesis.h',
+    'SpeechSynthesisChild.h',
+    'SpeechSynthesisParent.h',
+    'SpeechSynthesisUtterance.h',
+    'SpeechSynthesisVoice.h',
+    'nsSpeechTask.h',
+    'nsSynthVoiceRegistry.h',
+]
+
--- a/content/media/wmf/Makefile.in
+++ b/content/media/wmf/Makefile.in
@@ -8,22 +8,16 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconwmf_s
 LIBXUL_LIBRARY 	= 1
 
-EXPORTS		+= \
-		WMFDecoder.h \
-		WMFReader.h \
-		WMF.h \
-		$(NULL)
-
 CPPSRCS		= \
 		WMFByteStream.cpp \
 		WMFDecoder.cpp \
 		WMFReader.cpp \
 		WMFUtils.cpp \
 		WMFSourceReaderCallback.cpp \
 		$(NULL)
 
--- a/content/media/wmf/moz.build
+++ b/content/media/wmf/moz.build
@@ -1,8 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'WMF.h',
+    'WMFDecoder.h',
+    'WMFReader.h',
+]
+
--- a/content/smil/Makefile.in
+++ b/content/smil/Makefile.in
@@ -9,41 +9,16 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconsmil_s
 LIBXUL_LIBRARY	= 1
 FAIL_ON_WARNINGS = 1
 
-EXPORTS	= \
-	nsISMILAttr.h \
-	nsISMILType.h \
-	nsSMILAnimationController.h \
-	nsSMILAnimationFunction.h \
-	nsSMILCompositorTable.h \
-	nsSMILCSSProperty.h \
-	nsSMILInstanceTime.h \
-	nsSMILInterval.h \
-	nsSMILKeySpline.h \
-	nsSMILMappedAttribute.h \
-	nsSMILMilestone.h \
-	nsSMILNullType.h \
-	nsSMILRepeatCount.h \
-	nsSMILSetAnimationFunction.h \
-	nsSMILTargetIdentifier.h \
-	nsSMILTimeContainer.h \
-	nsSMILTimedElement.h \
-	nsSMILTimeValue.h \
-	nsSMILTimeValueSpec.h \
-	nsSMILTimeValueSpecParams.h \
-	nsSMILTypes.h \
-	nsSMILValue.h \
-	$(NULL)
-
 CPPSRCS	= \
 	nsDOMTimeEvent.cpp \
 	nsSMILAnimationController.cpp \
 	nsSMILAnimationFunction.cpp \
 	nsSMILCompositor.cpp \
 	nsSMILCSSProperty.cpp \
 	nsSMILCSSValueType.cpp \
 	nsSMILFloatType.cpp \
--- a/content/smil/moz.build
+++ b/content/smil/moz.build
@@ -3,8 +3,33 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 TEST_TOOL_DIRS += ['test']
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsISMILAttr.h',
+    'nsISMILType.h',
+    'nsSMILAnimationController.h',
+    'nsSMILAnimationFunction.h',
+    'nsSMILCSSProperty.h',
+    'nsSMILCompositorTable.h',
+    'nsSMILInstanceTime.h',
+    'nsSMILInterval.h',
+    'nsSMILKeySpline.h',
+    'nsSMILMappedAttribute.h',
+    'nsSMILMilestone.h',
+    'nsSMILNullType.h',
+    'nsSMILRepeatCount.h',
+    'nsSMILSetAnimationFunction.h',
+    'nsSMILTargetIdentifier.h',
+    'nsSMILTimeContainer.h',
+    'nsSMILTimeValue.h',
+    'nsSMILTimeValueSpec.h',
+    'nsSMILTimeValueSpecParams.h',
+    'nsSMILTimedElement.h',
+    'nsSMILTypes.h',
+    'nsSMILValue.h',
+]
+
--- a/content/svg/content/src/Makefile.in
+++ b/content/svg/content/src/Makefile.in
@@ -156,104 +156,16 @@ CPPSRCS		= \
 		$(NULL)
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
-EXPORTS =  			\
-	nsSVGClass.h               \
-	nsSVGElement.h             \
-	nsSVGFeatures.h            \
-	SVGAttrValueWrapper.h      \
-	SVGStringList.h            \
-	$(NULL)
-
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-	nsSVGAnimatedTransformList.h \
-	SVGAElement.h \
-	SVGAltGlyphElement.h \
-	SVGAngle.h \
-	SVGAnimatedAngle.h \
-	SVGAnimatedBoolean.h \
-	SVGAnimatedLength.h \
-	SVGAnimatedTransformList.h \
-	SVGAnimateElement.h \
-	SVGAnimateTransformElement.h \
-	SVGAnimateMotionElement.h \
-	SVGAnimationElement.h \
-	SVGClipPathElement.h \
-	SVGCircleElement.h \
-	SVGComponentTransferFunctionElement.h \
-	SVGDefsElement.h \
-	SVGDescElement.h \
-	SVGEllipseElement.h \
-	SVGFEBlendElement.h \
-	SVGFEColorMatrixElement.h \
-	SVGFEComponentTransferElement.h \
-	SVGFECompositeElement.h \
-	SVGFEConvolveMatrixElement.h \
-	SVGFEDiffuseLightingElement.h \
-	SVGFEDisplacementMapElement.h \
-	SVGFEDistantLightElement.h \
-	SVGFEFloodElement.h \
-	SVGFEGaussianBlurElement.h \
-	SVGFEImageElement.h \
-	SVGFEMergeElement.h \
-	SVGFEMergeNodeElement.h \
-	SVGFEMorphologyElement.h \
-	SVGFEOffsetElement.h \
-	SVGFEPointLightElement.h \
-	SVGFESpecularLightingElement.h \
-	SVGFESpotLightElement.h \
-	SVGFETileElement.h \
-	SVGFETurbulenceElement.h \
-	SVGFilterElement.h \
-	SVGForeignObjectElement.h \
-	SVGGElement.h \
-	SVGGradientElement.h \
-	SVGGraphicsElement.h \
-	SVGImageElement.h \
-	SVGLineElement.h \
-	SVGMarkerElement.h \
-	SVGMaskElement.h \
-	SVGMatrix.h \
-	SVGMetadataElement.h \
-	SVGMPathElement.h \
-	SVGPathElement.h \
-	SVGPatternElement.h \
-	SVGPolygonElement.h \
-	SVGPolylineElement.h \
-	SVGRect.h \
-	SVGIRect.h \
-	SVGRectElement.h \
-	SVGScriptElement.h \
-	SVGSetElement.h \
-	SVGStopElement.h \
-	SVGStyleElement.h \
-	SVGSymbolElement.h \
-	SVGSVGElement.h \
-	SVGSwitchElement.h \
-	SVGTests.h \
-	SVGTextContentElement.h \
-	SVGTextElement.h \
-	SVGTextPathElement.h \
-	SVGTextPositioningElement.h \
-	SVGTitleElement.h \
-	SVGTransform.h \
-	SVGTransformableElement.h \
-	SVGTSpanElement.h \
-	SVGUseElement.h \
-	SVGViewElement.h \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 INCLUDES += 	\
 		-I$(srcdir)/../../../xml/content/src \
 		-I$(srcdir)/../../../../dom \
 		-I$(srcdir)/../../../base/src \
 		-I$(srcdir)/../../../../layout/generic \
 		-I$(srcdir)/../../../../layout/xul/base/src \
--- a/content/svg/content/src/moz.build
+++ b/content/svg/content/src/moz.build
@@ -1,8 +1,94 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'SVGAttrValueWrapper.h',
+    'SVGStringList.h',
+    'nsSVGClass.h',
+    'nsSVGElement.h',
+    'nsSVGFeatures.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'nsSVGAnimatedTransformList.h',
+    'SVGAElement.h',
+    'SVGAltGlyphElement.h',
+    'SVGAngle.h',
+    'SVGAnimatedAngle.h',
+    'SVGAnimatedBoolean.h',
+    'SVGAnimatedLength.h',
+    'SVGAnimatedTransformList.h',
+    'SVGAnimateElement.h',
+    'SVGAnimateMotionElement.h',
+    'SVGAnimateTransformElement.h',
+    'SVGAnimationElement.h',
+    'SVGCircleElement.h',
+    'SVGClipPathElement.h',
+    'SVGComponentTransferFunctionElement.h',
+    'SVGDefsElement.h',
+    'SVGDescElement.h',
+    'SVGEllipseElement.h',
+    'SVGFEBlendElement.h',
+    'SVGFEColorMatrixElement.h',
+    'SVGFEComponentTransferElement.h',
+    'SVGFECompositeElement.h',
+    'SVGFEConvolveMatrixElement.h',
+    'SVGFEDiffuseLightingElement.h',
+    'SVGFEDisplacementMapElement.h',
+    'SVGFEDistantLightElement.h',
+    'SVGFEFloodElement.h',
+    'SVGFEGaussianBlurElement.h',
+    'SVGFEImageElement.h',
+    'SVGFEMergeElement.h',
+    'SVGFEMergeNodeElement.h',
+    'SVGFEMorphologyElement.h',
+    'SVGFEOffsetElement.h',
+    'SVGFEPointLightElement.h',
+    'SVGFESpecularLightingElement.h',
+    'SVGFESpotLightElement.h',
+    'SVGFETileElement.h',
+    'SVGFETurbulenceElement.h',
+    'SVGFilterElement.h',
+    'SVGForeignObjectElement.h',
+    'SVGGElement.h',
+    'SVGGradientElement.h',
+    'SVGGraphicsElement.h',
+    'SVGImageElement.h',
+    'SVGIRect.h',
+    'SVGLineElement.h',
+    'SVGMarkerElement.h',
+    'SVGMaskElement.h',
+    'SVGMatrix.h',
+    'SVGMetadataElement.h',
+    'SVGMPathElement.h',
+    'SVGPathElement.h',
+    'SVGPatternElement.h',
+    'SVGPolygonElement.h',
+    'SVGPolylineElement.h',
+    'SVGRectElement.h',
+    'SVGRect.h',
+    'SVGScriptElement.h',
+    'SVGSetElement.h',
+    'SVGStopElement.h',
+    'SVGStyleElement.h',
+    'SVGSVGElement.h',
+    'SVGSwitchElement.h',
+    'SVGSymbolElement.h',
+    'SVGTests.h',
+    'SVGTextContentElement.h',
+    'SVGTextElement.h',
+    'SVGTextPathElement.h',
+    'SVGTextPositioningElement.h',
+    'SVGTitleElement.h',
+    'SVGTransformableElement.h',
+    'SVGTransform.h',
+    'SVGTSpanElement.h',
+    'SVGUseElement.h',
+    'SVGViewElement.h',
+]
+
--- a/content/svg/document/src/Makefile.in
+++ b/content/svg/document/src/Makefile.in
@@ -16,22 +16,16 @@ FAIL_ON_WARNINGS = 1
 
 CPPSRCS		= \
 		SVGDocument.cpp \
 		$(NULL)
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-	SVGDocument.h \
-	$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 INCLUDES	+= \
 		-I$(srcdir) \
 		-I$(srcdir)/../../../xml/document/src \
 		-I$(srcdir)/../../../html/document/src \
 		-I$(srcdir)/../../../../layout/style \
 		-I$(srcdir)/../../../base/src \
--- a/content/svg/document/src/moz.build
+++ b/content/svg/document/src/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS.mozilla.dom += [
+    'SVGDocument.h',
+]
+
--- a/content/xbl/src/Makefile.in
+++ b/content/xbl/src/Makefile.in
@@ -29,22 +29,16 @@ CPPSRCS		= \
     nsXBLWindowKeyHandler.cpp \
     nsXBLPrototypeHandler.cpp \
     nsXBLService.cpp \
     nsBindingManager.cpp \
     nsXBLInsertionPoint.cpp \
     nsXBLSerialize.cpp \
 		$(NULL)
 
-EXPORTS   = \
-  nsBindingManager.h \
-  nsXBLBinding.h \
-  nsXBLService.h \
-  $(NULL)
-
 include $(topsrcdir)/config/config.mk
 
 # 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
 
 LOCAL_INCLUDES	= \
--- a/content/xbl/src/moz.build
+++ b/content/xbl/src/moz.build
@@ -1,8 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsBindingManager.h',
+    'nsXBLBinding.h',
+    'nsXBLService.h',
+]
+
--- a/content/xml/content/src/Makefile.in
+++ b/content/xml/content/src/Makefile.in
@@ -9,24 +9,16 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconxmlcon_s
 LIBXUL_LIBRARY	= 1
 FAIL_ON_WARNINGS = 1
 
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-  CDATASection.h \
-  ProcessingInstruction.h \
-  XMLStylesheetProcessingInstruction.h \
-  $(NULL)
-
 CPPSRCS		= \
 		nsXMLElement.cpp \
 		CDATASection.cpp \
 		ProcessingInstruction.cpp \
 		XMLStylesheetProcessingInstruction.cpp \
 		$(NULL)
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
--- a/content/xml/content/src/moz.build
+++ b/content/xml/content/src/moz.build
@@ -1,8 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS.mozilla.dom += [
+    'CDATASection.h',
+    'ProcessingInstruction.h',
+    'XMLStylesheetProcessingInstruction.h',
+]
+
--- a/content/xml/document/public/Makefile.in
+++ b/content/xml/document/public/Makefile.in
@@ -5,14 +5,10 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXPORTS		= \
-		nsIXMLContentSink.h \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/content/xml/document/public/moz.build
+++ b/content/xml/document/public/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsIXMLContentSink.h',
+]
+
--- a/content/xml/document/src/Makefile.in
+++ b/content/xml/document/src/Makefile.in
@@ -9,22 +9,16 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkconxmldoc_s
 LIBXUL_LIBRARY	= 1
 FAIL_ON_WARNINGS = 1
 
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-  XMLDocument.h \
-  $(NULL)
-
 CPPSRCS		= \
 		nsXMLContentSink.cpp \
 		nsXMLFragmentContentSink.cpp \
 		XMLDocument.cpp \
 		nsXMLPrettyPrinter.cpp \
 		$(NULL)
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
--- a/content/xml/document/src/moz.build
+++ b/content/xml/document/src/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'content'
 
+EXPORTS.mozilla.dom += [
+    'XMLDocument.h',
+]
+
--- a/content/xslt/public/Makefile.in
+++ b/content/xslt/public/Makefile.in
@@ -4,14 +4,10 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXPORTS		= \
-		nsIDocumentTransformer.h \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/content/xslt/public/moz.build
+++ b/content/xslt/public/moz.build
@@ -13,8 +13,12 @@ XPIDL_SOURCES += [
     'txINodeSet.idl',
     'txIXPathObject.idl',
 ]
 
 XPIDL_MODULE = 'content_xslt'
 
 MODULE = 'content'
 
+EXPORTS += [
+    'nsIDocumentTransformer.h',
+]
+
--- a/content/xul/document/public/Makefile.in
+++ b/content/xul/document/public/Makefile.in
@@ -5,17 +5,10 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-
-ifdef MOZ_XUL
-EXPORTS		= \
-		nsIXULDocument.h \
-		$(NULL)
-endif
-
 include $(topsrcdir)/config/rules.mk
 
--- a/content/xul/document/public/moz.build
+++ b/content/xul/document/public/moz.build
@@ -8,11 +8,14 @@ XPIDL_SOURCES += [
     'nsIController.idl',
     'nsIControllers.idl',
 ]
 
 if CONFIG['MOZ_XUL']:
     XPIDL_SOURCES += [
         'nsIXULOverlayProvider.idl',
     ]
+    EXPORTS += [
+        'nsIXULDocument.h',
+    ]
 
 MODULE = 'xuldoc'
 
--- a/db/sqlite3/src/Makefile.in
+++ b/db/sqlite3/src/Makefile.in
@@ -56,20 +56,16 @@ MODULE_OPTIMIZE_FLAGS = -O2
 endif
 
 # Force /O2 optimisation on Windows because using the default /O1 causes
 # crashes with MSVC2005 and PGO. See bug 719584.
 ifeq ($(OS_ARCH),WINNT)
 MODULE_OPTIMIZE_FLAGS = -O2
 endif
 
-EXPORTS = \
-  sqlite3.h \
-  $(NULL)
-
 CSRCS = \
   sqlite3.c \
   $(NULL)
 
 # -DSQLITE_SECURE_DELETE=1 will cause SQLITE to 0-fill delete data so we
 # don't have to vacuum to make sure the data is not visible in the file.
 # -DSQLITE_ENABLE_FTS3=1 enables the full-text index module.
 # -DSQLITE_CORE=1 statically links that module into the SQLite library.
--- a/db/sqlite3/src/moz.build
+++ b/db/sqlite3/src/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'sqlite3'
 
+EXPORTS += [
+    'sqlite3.h',
+]
+
--- a/docshell/base/Makefile.in
+++ b/docshell/base/Makefile.in
@@ -12,30 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME   = basedocshell_s
 LIBXUL_LIBRARY = 1
 
 ifdef MOZ_TOOLKIT_SEARCH
 DEFINES += -DMOZ_TOOLKIT_SEARCH
 endif
 
-EXPORTS = \
-  nsDocShellLoadTypes.h \
-  nsILinkHandler.h \
-  nsIWebShellServices.h \
-  SerializedLoadContext.h \
-  $(NULL)
-
-EXPORTS_NAMESPACES = mozilla
-
-EXPORTS_mozilla = \
-  IHistory.h \
-  LoadContext.h \
-  $(NULL)
-
 CPPSRCS = \
   nsDocShell.cpp \
   nsDocShellLoadInfo.cpp \
   nsDocShellEditorData.cpp \
   nsDocShellTransferableHooks.cpp \
   nsDocShellEnumerator.cpp \
   nsDSURIContentListener.cpp \
   nsDefaultURIFixup.cpp \
--- a/docshell/base/moz.build
+++ b/docshell/base/moz.build
@@ -30,8 +30,20 @@ XPIDL_SOURCES += [
     'nsIURIFixup.idl',
     'nsIWebNavigation.idl',
     'nsIWebNavigationInfo.idl',
     'nsIWebPageDescriptor.idl',
 ]
 
 MODULE = 'docshell'
 
+EXPORTS += [
+    'SerializedLoadContext.h',
+    'nsDocShellLoadTypes.h',
+    'nsILinkHandler.h',
+    'nsIWebShellServices.h',
+]
+
+EXPORTS.mozilla += [
+    'IHistory.h',
+    'LoadContext.h',
+]
+
--- a/docshell/build/Makefile.in
+++ b/docshell/build/Makefile.in
@@ -13,20 +13,16 @@ MODULE_NAME	= docshell_provider
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= docshell
 EXPORT_LIBRARY = 1
 LIBXUL_LIBRARY	= 1
 
 
-EXPORTS = \
-		  nsDocShellCID.h \
-		  $(NULL)
-
 CPPSRCS		= \
 		nsDocShellModule.cpp		\
 		$(NULL)
 
 SHARED_LIBRARY_LIBS= \
 		../base/$(LIB_PREFIX)basedocshell_s.$(LIB_SUFFIX) \
 		$(DEPTH)/uriloader/base/$(LIB_PREFIX)uriloaderbase_s.$(LIB_SUFFIX) \
 		$(DEPTH)/uriloader/exthandler/$(LIB_PREFIX)exthandler_s.$(LIB_SUFFIX) \
--- a/docshell/build/moz.build
+++ b/docshell/build/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'docshell'
 
+EXPORTS += [
+    'nsDocShellCID.h',
+]
+
--- a/docshell/shistory/src/Makefile.in
+++ b/docshell/shistory/src/Makefile.in
@@ -10,19 +10,16 @@ VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= shistory_s
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY	= 1
 FAIL_ON_WARNINGS = 1
 
-EXPORTS		= nsSHEntryShared.h \
-		  $(NULL)
-
 CPPSRCS		= nsSHEntry.cpp        \
             nsSHTransaction.cpp   \
             nsSHistory.cpp \
 	    nsSHEntryShared.cpp \
             $(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
--- a/docshell/shistory/src/moz.build
+++ b/docshell/shistory/src/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'shistory'
 
+EXPORTS += [
+    'nsSHEntryShared.h',
+]
+
--- a/dom/activities/src/Makefile.in
+++ b/dom/activities/src/Makefile.in
@@ -15,21 +15,16 @@ FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
 CPPSRCS = \
   Activity.cpp \
   $(NULL)
 
-EXPORTS_NAMESPACES = mozilla/dom
-EXPORTS_mozilla/dom = \
-  Activity.h \
-  $(NULL)
-
 EXTRA_COMPONENTS = \
   ActivityOptions.js \
   ActivityProxy.js \
   ActivityRequestHandler.js \
   ActivityWrapper.js \
   Activities.manifest \
   $(NULL)
 
--- a/dom/activities/src/moz.build
+++ b/dom/activities/src/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'dom'
 
+EXPORTS.mozilla.dom += [
+    'Activity.h',
+]
+
--- a/dom/alarm/Makefile.in
+++ b/dom/alarm/Makefile.in
@@ -11,32 +11,26 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME        = domalarm_s
 LIBXUL_LIBRARY      = 1
 FORCE_STATIC_LIB    = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom/alarm
-
 EXTRA_COMPONENTS =       \
   AlarmsManager.js       \
   AlarmsManager.manifest \
   $(NULL)
 
 EXTRA_JS_MODULES = \
   AlarmDB.jsm      \
   AlarmService.jsm \
   $(NULL)
 
-EXPORTS_mozilla/dom/alarm = \
-  AlarmHalService.h         \
-  $(NULL)
-
 CPPSRCS =             \
   AlarmHalService.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
 
--- a/dom/alarm/moz.build
+++ b/dom/alarm/moz.build
@@ -14,8 +14,12 @@ XPIDL_SOURCES += [
 XPIDL_MODULE = 'dom_alarm'
 
 XPIDL_FLAGS += [
     '-I$(topsrcdir)/dom/interfaces/base',
 ]
 
 MODULE = 'dom'
 
+EXPORTS.mozilla.dom.alarm += [
+    'AlarmHalService.h',
+]
+
--- a/dom/audiochannel/Makefile.in
+++ b/dom/audiochannel/Makefile.in
@@ -22,25 +22,16 @@ include $(DEPTH)/config/autoconf.mk
 LIBRARY_NAME     = domaudiochannel_s
 LIBXUL_LIBRARY = 1
 FORCE_STATIC_LIB = 1
 EXPORT_LIBRARY = 1
 ifndef _MSC_VER
 FAIL_ON_WARNINGS := 1
 endif # !_MSC_VER
 
-EXPORTS_NAMESPACES = \
-  mozilla/dom \
-  $(NULL)
-
-EXPORTS = AudioChannelService.h \
-          AudioChannelServiceChild.h \
-          AudioChannelCommon.h \
-          AudioChannelAgent.h
-
 CPPSRCS += \
   AudioChannelService.cpp \
   AudioChannelServiceChild.cpp \
   AudioChannelAgent.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
--- a/dom/audiochannel/moz.build
+++ b/dom/audiochannel/moz.build
@@ -9,8 +9,15 @@ TEST_TOOL_DIRS += ['tests']
 XPIDL_SOURCES += [
     'nsIAudioChannelAgent.idl',
 ]
 
 XPIDL_MODULE = 'dom_audiochannel'
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'AudioChannelAgent.h',
+    'AudioChannelCommon.h',
+    'AudioChannelService.h',
+    'AudioChannelServiceChild.h',
+]
+
--- a/dom/base/Makefile.in
+++ b/dom/base/Makefile.in
@@ -29,58 +29,16 @@ EXTRA_JS_MODULES = ConsoleAPIStorage.jsm
   $(NULL)
 
 EXTRA_JS_MODULES += \
   DOMRequestHelper.jsm \
   IndexedDBHelper.jsm \
   ObjectWrapper.jsm \
   $(NULL)
 
-EXPORTS = \
-  nsDOMCID.h \
-  nsDOMClassInfoClasses.h \
-  nsDOMClassInfoID.h \
-  nsDOMJSUtils.h \
-  nsDOMString.h \
-  nsIDOMClassInfo.h \
-  nsIDOMScriptObjectFactory.h \
-  nsIGlobalObject.h \
-  nsIJSEventListener.h \
-  nsIJSNativeInitializer.h \
-  nsIScriptContext.h	\
-  nsIScriptExternalNameSet.h \
-  nsIScriptGlobalObject.h \
-  nsIScriptGlobalObjectOwner.h \
-  nsIScriptNameSpaceManager.h \
-  nsIScriptObjectPrincipal.h \
-  nsIScriptRuntime.h \
-  nsIScriptTimeoutHandler.h \
-  nsJSEnvironment.h \
-  nsJSUtils.h \
-  nsPIDOMWindow.h \
-  nsPIWindowRoot.h \
-  nsFocusManager.h \
-  nsWrapperCache.h \
-  nsWrapperCacheInlines.h \
-  nsContentPermissionHelper.h \
-  nsStructuredCloneContainer.h \
-  nsWindowMemoryReporter.h \
-  Crypto.h \
-  $(NULL)
-
-EXPORTS_NAMESPACES = mozilla/dom
-EXPORTS_mozilla/dom = \
-  DOMError.h \
-  DOMRequest.h \
-  DOMCursor.h \
-  StructuredCloneTags.h \
-  ScreenOrientation.h \
-  URL.h \
-  $(NULL)
-
 CPPSRCS =			\
 	nsBarProps.cpp          \
 	nsDOMException.cpp 	\
 	nsDOMWindowUtils.cpp 	\
 	nsJSEnvironment.cpp	\
 	nsJSTimeoutHandler.cpp	\
 	nsFocusManager.cpp \
 	nsGlobalWindow.cpp      \
--- a/dom/base/moz.build
+++ b/dom/base/moz.build
@@ -17,8 +17,49 @@ XPIDL_SOURCES += [
 
 XPIDL_FLAGS += [
     '-I$(topsrcdir)/dom/interfaces/base',
     '-I$(topsrcdir)/dom/interfaces/events',
 ]
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'Crypto.h',
+    'nsContentPermissionHelper.h',
+    'nsDOMCID.h',
+    'nsDOMClassInfoClasses.h',
+    'nsDOMClassInfoID.h',
+    'nsDOMJSUtils.h',
+    'nsDOMString.h',
+    'nsFocusManager.h',
+    'nsIDOMClassInfo.h',
+    'nsIDOMScriptObjectFactory.h',
+    'nsIGlobalObject.h',
+    'nsIJSEventListener.h',
+    'nsIJSNativeInitializer.h',
+    'nsIScriptContext.h',
+    'nsIScriptExternalNameSet.h',
+    'nsIScriptGlobalObject.h',
+    'nsIScriptGlobalObjectOwner.h',
+    'nsIScriptNameSpaceManager.h',
+    'nsIScriptObjectPrincipal.h',
+    'nsIScriptRuntime.h',
+    'nsIScriptTimeoutHandler.h',
+    'nsJSEnvironment.h',
+    'nsJSUtils.h',
+    'nsPIDOMWindow.h',
+    'nsPIWindowRoot.h',
+    'nsStructuredCloneContainer.h',
+    'nsWindowMemoryReporter.h',
+    'nsWrapperCache.h',
+    'nsWrapperCacheInlines.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'DOMCursor.h',
+    'DOMError.h',
+    'DOMRequest.h',
+    'ScreenOrientation.h',
+    'StructuredCloneTags.h',
+    'URL.h',
+]
+
--- a/dom/battery/Makefile.in
+++ b/dom/battery/Makefile.in
@@ -11,23 +11,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = dom_battery_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom/battery
-
-EXPORTS_mozilla/dom/battery = \
-  Constants.h \
-  Types.h \
-  $(NULL)
-
 CPPSRCS = \
   BatteryManager.cpp \
   $(NULL)
 
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/content/events/src \
   $(NULL)
 
--- a/dom/battery/moz.build
+++ b/dom/battery/moz.build
@@ -12,8 +12,13 @@ XPIDL_SOURCES += [
 
 XPIDL_MODULE = 'dom_battery'
 
 XPIDL_FLAGS += [
     '-I$(topsrcdir)/dom/interfaces/base',
     '-I$(topsrcdir)/dom/interfaces/events',
 ]
 
+EXPORTS.mozilla.dom.battery += [
+    'Constants.h',
+    'Types.h',
+]
+
--- a/dom/bindings/Makefile.in
+++ b/dom/bindings/Makefile.in
@@ -46,41 +46,16 @@ CPPSRCS = \
   $(linked_binding_cpp_files) \
   $(filter %.cpp, $(globalgen_targets)) \
   BindingUtils.cpp \
   CallbackInterface.cpp \
   CallbackObject.cpp \
   DOMJSProxyHandler.cpp \
   $(NULL)
 
-EXPORTS_NAMESPACES = $(binding_include_path) mozilla
-
-EXPORTS_mozilla = \
-  ErrorResult.h \
-  $(NULL)
-
-EXPORTS_$(binding_include_path) = \
-  BindingDeclarations.h \
-  BindingUtils.h \
-  CallbackFunction.h \
-  CallbackInterface.h \
-  CallbackObject.h \
-  DOMJSClass.h \
-  DOMJSProxyHandler.h \
-  Errors.msg \
-  NonRefcountedDOMObject.h \
-  Nullable.h \
-  PrimitiveConversions.h \
-  PrototypeList.h \
-  RegisterBindings.h \
-  TypedArray.h \
-  UnionConversions.h \
-  UnionTypes.h \
-  $(NULL)
-
 LOCAL_INCLUDES += -I$(topsrcdir)/js/xpconnect/src \
   -I$(topsrcdir)/js/xpconnect/wrappers \
   -I$(topsrcdir)/content/canvas/src \
   -I$(topsrcdir)/content/html/content/src \
   -I$(topsrcdir)/media/webrtc/signaling/src/peerconnection \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/battery \
   -I$(topsrcdir)/dom/indexedDB \
--- a/dom/bindings/moz.build
+++ b/dom/bindings/moz.build
@@ -1,8 +1,30 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'dom'
 
+EXPORTS.mozilla += [
+    'ErrorResult.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'BindingDeclarations.h',
+    'BindingUtils.h',
+    'CallbackFunction.h',
+    'CallbackInterface.h',
+    'CallbackObject.h',
+    'DOMJSClass.h',
+    'DOMJSProxyHandler.h',
+    'Errors.msg',
+    'NonRefcountedDOMObject.h',
+    'Nullable.h',
+    'PrimitiveConversions.h',
+    'PrototypeList.h',
+    'RegisterBindings.h',
+    'TypedArray.h',
+    'UnionConversions.h',
+    'UnionTypes.h',
+]
--- a/dom/bluetooth/Makefile.in
+++ b/dom/bluetooth/Makefile.in
@@ -18,24 +18,16 @@ srcdir           = @srcdir@
 VPATH            = @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/dom/dom-config.mk
 
 VPATH += $(srcdir)/ipc
 
-EXPORTS_NAMESPACES = \
-  mozilla/dom/bluetooth \
-  mozilla/dom/bluetooth/ipc \
-  $(NULL)
-
-EXPORTS_mozilla/dom/bluetooth = BluetoothCommon.h
-EXPORTS_mozilla/dom/bluetooth/ipc = BluetoothMessageUtils.h
-
 ifneq (,$(MOZ_B2G_BT))
 
 LIBRARY_NAME     = dombluetooth_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 
 CPPSRCS += \
   BluetoothService.cpp \
--- a/dom/bluetooth/moz.build
+++ b/dom/bluetooth/moz.build
@@ -20,8 +20,16 @@ if CONFIG['MOZ_B2G_BT']:
     XPIDL_SOURCES += [
         'nsIDOMNavigatorBluetooth.idl',
         'nsIDOMBluetoothManager.idl',
         'nsIDOMBluetoothAdapter.idl',
         'nsIDOMBluetoothDevice.idl',
         'nsIDOMBluetoothDeviceEvent.idl'
     ]
 
+EXPORTS.mozilla.dom.bluetooth.ipc += [
+    'BluetoothMessageUtils.h',
+]
+
+EXPORTS.mozilla.dom.bluetooth += [
+    'BluetoothCommon.h',
+]
+
--- a/dom/browser-element/Makefile.in
+++ b/dom/browser-element/Makefile.in
@@ -11,26 +11,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = dom_browserelement_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS = \
-  nsOpenWindowEventDetail.h \
-  nsAsyncScrollEventDetail.h \
-  $(NULL)
-
-EXPORTS_NAMESPACES = mozilla
-EXPORTS_mozilla = \
-  BrowserElementParent.h \
-  $(NULL)
-
 CPPSRCS = \
   nsOpenWindowEventDetail.cpp \
   nsAsyncScrollEventDetail.cpp \
   BrowserElementParent.cpp \
   $(NULL)
 
 EXTRA_COMPONENTS = \
   BrowserElementParent.js \
--- a/dom/browser-element/moz.build
+++ b/dom/browser-element/moz.build
@@ -10,8 +10,17 @@ XPIDL_SOURCES += [
     'nsIAsyncScrollEventDetail.idl',
     'nsIOpenWindowEventDetail.idl',
 ]
 
 XPIDL_MODULE = 'dom_browserelement'
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'nsAsyncScrollEventDetail.h',
+    'nsOpenWindowEventDetail.h',
+]
+
+EXPORTS.mozilla += [
+    'BrowserElementParent.h',
+]
+
--- a/dom/camera/Makefile.in
+++ b/dom/camera/Makefile.in
@@ -47,18 +47,11 @@ CPPSRCS += \
   $(NULL)
 else
 CPPSRCS += \
   FallbackCameraManager.cpp \
   FallbackCameraControl.cpp \
   $(NULL)
 endif
 
-EXPORTS = \
-  CameraCommon.h \
-  DOMCameraManager.h \
-  GonkNativeWindow.h \
-  GonkNativeWindowClient.h \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
--- a/dom/camera/moz.build
+++ b/dom/camera/moz.build
@@ -15,8 +15,15 @@ XPIDL_FLAGS += [
     '-I$(topsrcdir)/dom/base',
     '-I$(topsrcdir)/dom/interfaces/base',
     '-I$(topsrcdir)/dom/interfaces/events',
     '-I$(topsrcdir)/dom/media',
 ]
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'CameraCommon.h',
+    'DOMCameraManager.h',
+    'GonkNativeWindow.h',
+    'GonkNativeWindowClient.h',
+]
+
--- a/dom/cellbroadcast/src/Makefile.in
+++ b/dom/cellbroadcast/src/Makefile.in
@@ -11,19 +11,13 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = dom_cellbroadcast_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom
-
-EXPORTS_mozilla/dom = \
-  CellBroadcast.h \
-  $(NULL)
-
 CPPSRCS = \
   CellBroadcast.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
--- a/dom/cellbroadcast/src/moz.build
+++ b/dom/cellbroadcast/src/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 XPIDL_MODULE = 'dom_cellbroadcast'
 
+EXPORTS.mozilla.dom += [
+    'CellBroadcast.h',
+]
+
--- a/dom/devicestorage/Makefile.in
+++ b/dom/devicestorage/Makefile.in
@@ -11,34 +11,22 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = domdevicestorage_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom/devicestorage
-
-EXPORTS_mozilla/dom/devicestorage = \
-  DeviceStorageRequestChild.h \
-  DeviceStorageRequestParent.h \
-  $(NULL)
-
 CPPSRCS		= \
 		nsDeviceStorage.cpp \
 		DeviceStorageRequestParent.cpp \
 		DeviceStorageRequestChild.cpp \
 		$(NULL)
 
-EXPORTS         = \
-		DeviceStorage.h \
-		nsDeviceStorage.h \
-		$(NULL)
-
 LOCAL_INCLUDES = \
 		-I$(topsrcdir)/dom/base \
 		-I$(topsrcdir)/dom/ipc \
 		-I$(topsrcdir)/content/base/src \
 		-I$(topsrcdir)/content/events/src \
 		$(NULL)
 
 include $(topsrcdir)/config/config.mk
--- a/dom/devicestorage/moz.build
+++ b/dom/devicestorage/moz.build
@@ -5,8 +5,18 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 TEST_DIRS += ['test', 'ipc']
 
 XPIDL_MODULE = 'dom_devicestorage'
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'DeviceStorage.h',
+    'nsDeviceStorage.h',
+]
+
+EXPORTS.mozilla.dom.devicestorage += [
+    'DeviceStorageRequestChild.h',
+    'DeviceStorageRequestParent.h',
+]
+
--- a/dom/encoding/Makefile.in
+++ b/dom/encoding/Makefile.in
@@ -9,25 +9,16 @@ VPATH		= @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= domencoding_s
 LIBXUL_LIBRARY	= 1
 FORCE_STATIC_LIB = 1
 
-EXPORTS_NAMESPACES = mozilla/dom
-EXPORTS_mozilla/dom = \
-  EncodingUtils.h \
-  TextDecoder.h \
-  TextDecoderBase.h \
-  TextEncoder.h \
-  TextEncoderBase.h \
-  $(NULL)
-
 CPPSRCS = \
 	EncodingUtils.cpp \
 	TextDecoder.cpp \
 	TextEncoder.cpp \
 	$(NULL)
 
 LOCAL_INCLUDES = \
 	-I$(topsrcdir)/intl/locale/src \
--- a/dom/encoding/moz.build
+++ b/dom/encoding/moz.build
@@ -3,8 +3,16 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 TEST_DIRS += ['test']
 
 MODULE = 'dom'
 
+EXPORTS.mozilla.dom += [
+    'EncodingUtils.h',
+    'TextDecoder.h',
+    'TextDecoderBase.h',
+    'TextEncoder.h',
+    'TextEncoderBase.h',
+]
+
--- a/dom/file/Makefile.in
+++ b/dom/file/Makefile.in
@@ -11,18 +11,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = domfile_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom/file
-
 CPPSRCS = \
   AsyncHelper.cpp \
   DOMFileHandle.cpp \
   DOMFileRequest.cpp \
   File.cpp \
   FileHandle.cpp \
   FileHelper.cpp \
   FileRequest.cpp \
@@ -33,30 +31,10 @@ CPPSRCS = \
   MetadataHelper.cpp \
   ArchiveEvent.cpp \
   ArchiveZipEvent.cpp \
   ArchiveZipFile.cpp \
   ArchiveReader.cpp \
   ArchiveRequest.cpp \
   $(NULL)
 
-EXPORTS = \
-  nsIFileStorage.h \
-  $(NULL)
-
-EXPORTS_mozilla/dom/file = \
-  DOMFileHandle.h \
-  DOMFileRequest.h \
-  File.h \
-  FileCommon.h \
-  FileHandle.h \
-  FileHelper.h \
-  FileService.h \
-  LockedFile.h \
-  ArchiveEvent.h \
-  ArchiveZipEvent.h \
-  ArchiveZipFile.h \
-  ArchiveReader.h \
-  ArchiveRequest.h \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/dom/file/moz.build
+++ b/dom/file/moz.build
@@ -16,8 +16,28 @@ XPIDL_MODULE = 'dom_file'
 XPIDL_FLAGS += [
     '-I$(topsrcdir)/dom/base',
     '-I$(topsrcdir)/dom/interfaces/base',
     '-I$(topsrcdir)/dom/interfaces/events',
 ]
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'nsIFileStorage.h',
+]
+
+EXPORTS.mozilla.dom.file += [
+    'ArchiveEvent.h',
+    'ArchiveReader.h',
+    'ArchiveRequest.h',
+    'ArchiveZipEvent.h',
+    'ArchiveZipFile.h',
+    'DOMFileHandle.h',
+    'DOMFileRequest.h',
+    'File.h',
+    'FileCommon.h',
+    'FileHandle.h',
+    'FileHelper.h',
+    'FileService.h',
+    'LockedFile.h',
+]
+
--- a/dom/icc/src/Makefile.in
+++ b/dom/icc/src/Makefile.in
@@ -11,22 +11,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = dom_icc_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom/icc
-
-EXPORTS_mozilla/dom/icc = \
-  StkCommandEvent.h \
-  $(NULL)
-
 CPPSRCS = \
   IccManager.cpp \
   StkCommandEvent.cpp \
   $(NULL)
 
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/content/events/src \
   $(NULL)
--- a/dom/icc/src/moz.build
+++ b/dom/icc/src/moz.build
@@ -1,6 +1,10 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+EXPORTS.mozilla.dom.icc += [
+    'StkCommandEvent.h',
+]
+
--- a/dom/indexedDB/Makefile.in
+++ b/dom/indexedDB/Makefile.in
@@ -11,18 +11,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = dom_indexeddb_s
 LIBXUL_LIBRARY = 1
 FORCE_STATIC_LIB = 1
 ifndef _MSC_VER
 FAIL_ON_WARNINGS := 1
 endif # !_MSC_VER
 
-EXPORTS_NAMESPACES = mozilla/dom/indexedDB
-
 CPPSRCS = \
   AsyncConnectionHelper.cpp \
   CheckPermissionsHelper.cpp \
   Client.cpp \
   DatabaseInfo.cpp \
   FileInfo.cpp \
   FileManager.cpp \
   IDBCursor.cpp \
@@ -38,38 +36,16 @@ CPPSRCS = \
   IDBWrapperCache.cpp \
   IndexedDatabaseManager.cpp \
   Key.cpp \
   KeyPath.cpp \
   OpenDatabaseHelper.cpp \
   TransactionThreadPool.cpp \
   $(NULL)
 
-EXPORTS_mozilla/dom/indexedDB = \
-  Client.h \
-  DatabaseInfo.h \
-  FileManager.h \
-  FileInfo.h \
-  IDBCursor.h \
-  IDBDatabase.h \
-  IDBEvents.h \
-  IDBFactory.h \
-  IDBFileHandle.h \
-  IDBIndex.h \
-  IDBKeyRange.h \
-  IDBObjectStore.h \
-  IDBRequest.h \
-  IDBTransaction.h \
-  IDBWrapperCache.h \
-  IndexedDatabase.h \
-  IndexedDatabaseManager.h \
-  Key.h \
-  KeyPath.h \
-  $(NULL)
-
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/caps/include \
   -I$(topsrcdir)/content/base/src \
   -I$(topsrcdir)/content/events/src \
   -I$(topsrcdir)/db/sqlite3/src \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/src/storage \
   -I$(topsrcdir)/dom/quota \
--- a/dom/indexedDB/ipc/Makefile.in
+++ b/dom/indexedDB/ipc/Makefile.in
@@ -10,25 +10,21 @@ VPATH = @srcdir@
 FAIL_ON_WARNINGS := 1
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = dom_indexeddb_ipc_s
 LIBXUL_LIBRARY = 1
 FORCE_STATIC_LIB = 1
 
-EXPORTS_NAMESPACES = mozilla/dom/indexedDB
-
 CPPSRCS += \
   IndexedDBChild.cpp \
   IndexedDBParent.cpp \
   $(NULL)
 
-EXPORTS_mozilla/dom/indexedDB = SerializationHelpers.h
-
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/dom/indexedDB \
   -I$(topsrcdir)/content/events/src \
   $(NULL)
 
 DEFINES += -D_IMPL_NS_LAYOUT
 
 MOCHITEST_FILES = test_ipc.html
--- a/dom/indexedDB/ipc/moz.build
+++ b/dom/indexedDB/ipc/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'dom'
 
+EXPORTS.mozilla.dom.indexedDB += [
+    'SerializationHelpers.h',
+]
+
--- a/dom/indexedDB/moz.build
+++ b/dom/indexedDB/moz.build
@@ -26,8 +26,30 @@ XPIDL_MODULE = 'dom_indexeddb'
 
 XPIDL_FLAGS += [
     '-I$(topsrcdir)/dom/interfaces/base',
     '-I$(topsrcdir)/dom/interfaces/events',
 ]
 
 MODULE = 'dom'
 
+EXPORTS.mozilla.dom.indexedDB += [
+    'Client.h',
+    'DatabaseInfo.h',
+    'FileInfo.h',
+    'FileManager.h',
+    'IDBCursor.h',
+    'IDBDatabase.h',
+    'IDBEvents.h',
+    'IDBFactory.h',
+    'IDBFileHandle.h',
+    'IDBIndex.h',
+    'IDBKeyRange.h',
+    'IDBObjectStore.h',
+    'IDBRequest.h',
+    'IDBTransaction.h',
+    'IDBWrapperCache.h',
+    'IndexedDatabase.h',
+    'IndexedDatabaseManager.h',
+    'Key.h',
+    'KeyPath.h',
+]
+
--- a/dom/interfaces/storage/Makefile.in
+++ b/dom/interfaces/storage/Makefile.in
@@ -6,14 +6,10 @@
 DEPTH          = @DEPTH@
 topsrcdir      = @top_srcdir@
 srcdir         = @srcdir@
 VPATH          = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 
-EXPORTS =                                      \
-       nsPIDOMStorage.h                        \
-       $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/dom/interfaces/storage/moz.build
+++ b/dom/interfaces/storage/moz.build
@@ -16,8 +16,12 @@ XPIDL_MODULE = 'dom_storage'
 
 XPIDL_FLAGS += [
     '-I$(topsrcdir)/dom/interfaces/base',
     '-I$(topsrcdir)/dom/interfaces/events',
 ]
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'nsPIDOMStorage.h',
+]
+
--- a/dom/ipc/Makefile.in
+++ b/dom/ipc/Makefile.in
@@ -10,51 +10,16 @@ VPATH = @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = domipc_s
 LIBXUL_LIBRARY = 1
 FORCE_STATIC_LIB = 1
 EXPORT_LIBRARY = 1
 FAIL_ON_WARNINGS := 1
 
-EXPORTS = \
-  nsICachedFileDescriptorListener.h \
-  PCOMContentPermissionRequestChild.h \
-  $(NULL)
-
-EXPORTS_NAMESPACES = \
-  mozilla \
-  mozilla/dom \
-  mozilla/dom/ipc \
-  $(NULL)
-
-EXPORTS_mozilla = \
-  AppProcessChecker.h \
-  $(NULL)
-
-EXPORTS_mozilla/dom = \
-  ContentChild.h \
-  ContentParent.h \
-  ContentProcess.h \
-  CrashReporterChild.h \
-  CrashReporterParent.h \
-  PermissionMessageUtils.h \
-  StructuredCloneUtils.h \
-  TabParent.h \
-  TabChild.h \
-  TabContext.h \
-  TabMessageUtils.h \
-  $(NULL)
-
-EXPORTS_mozilla/dom/ipc = \
-  Blob.h \
-  ProcessPriorityManager.h \
-  nsIRemoteBlob.h \
-  $(NULL)
-
 CPPSRCS = \
   AppProcessChecker.cpp \
   Blob.cpp \
   ContentProcess.cpp \
   ContentParent.cpp \
   ContentChild.cpp \
   CrashReporterParent.cpp \
   CrashReporterChild.cpp \
--- a/dom/ipc/moz.build
+++ b/dom/ipc/moz.build
@@ -4,8 +4,37 @@
 # License, v. 2.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':
     TEST_DIRS += ['tests']
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'PCOMContentPermissionRequestChild.h',
+    'nsICachedFileDescriptorListener.h',
+]
+
+EXPORTS.mozilla.dom.ipc += [
+    'Blob.h',
+    'ProcessPriorityManager.h',
+    'nsIRemoteBlob.h',
+]
+
+EXPORTS.mozilla.dom += [
+    'ContentChild.h',
+    'ContentParent.h',
+    'ContentProcess.h',
+    'CrashReporterChild.h',
+    'CrashReporterParent.h',
+    'PermissionMessageUtils.h',
+    'StructuredCloneUtils.h',
+    'TabChild.h',
+    'TabContext.h',
+    'TabMessageUtils.h',
+    'TabParent.h',
+]
+
+EXPORTS.mozilla += [
+    'AppProcessChecker.h',
+]
+
--- a/dom/media/Makefile.in
+++ b/dom/media/Makefile.in
@@ -17,22 +17,16 @@ FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
 EXTRA_COMPONENTS = \
   PeerConnection.js \
   PeerConnection.manifest \
   $(NULL)
 
-EXPORTS_NAMESPACES = mozilla
-
-EXPORTS_mozilla = \
-  MediaManager.h \
-  $(NULL)
-
 CPPSRCS = \
   MediaManager.cpp \
   $(NULL)
 
 ifdef MOZ_WEBRTC
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/media/webrtc/trunk/webrtc \
   -I$(topsrcdir)/media/webrtc/signaling/src/common \
--- a/dom/media/moz.build
+++ b/dom/media/moz.build
@@ -15,8 +15,12 @@ XPIDL_SOURCES += [
     'nsIDOMRTCPeerConnection.idl',
     'nsIMediaManager.idl',
 ]
 
 XPIDL_MODULE = 'dom_media'
 
 MODULE = 'dom'
 
+EXPORTS.mozilla += [
+    'MediaManager.h',
+]
+
--- a/dom/mobilemessage/src/Makefile.in
+++ b/dom/mobilemessage/src/Makefile.in
@@ -22,40 +22,16 @@ endif
 
 LIBRARY_NAME     = dom_mobilemessage_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = \
-  mozilla/dom \
-  mozilla/dom/mobilemessage \
-  $(NULL)
-
-EXPORTS_mozilla/dom = \
-  SmsManager.h \
-  MobileMessageManager.h \
-  SmsMessage.h \
-  MmsMessage.h \
-  SmsSegmentInfo.h \
-  SmsFilter.h \
-  $(NULL)
-
-EXPORTS_mozilla/dom/mobilemessage = \
-  SmsChild.h \
-  SmsParent.h \
-  MobileMessageService.h \
-  SmsServicesFactory.h \
-  Constants.h \
-  Types.h \
-  MobileMessageCallback.h \
-  $(NULL)
-
 CPPSRCS = \
   MobileMessageCursorCallback.cpp \
   MobileMessageThread.cpp \
   SmsManager.cpp \
   MobileMessageManager.cpp \
   SmsService.cpp \
   MobileMessageService.cpp \
   SmsIPCService.cpp \
@@ -85,21 +61,16 @@ LOCAL_INCLUDES += \
   -I$(topsrcdir)/dom/system/gonk \
   $(NULL)
 
 EXTRA_COMPONENTS = \
   ril/MobileMessageDatabaseService.js \
   ril/MobileMessageDatabaseService.manifest \
   $(NULL)
 else
-EXPORTS_mozilla/dom/mobilemessage += \
-  MobileMessageDatabaseService.h \
-  MmsService.h \
-  $(NULL)
-
 CPPSRCS += \
   MobileMessageDatabaseService.cpp \
   MmsService.cpp \
   $(NULL)
 endif
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
--- a/dom/mobilemessage/src/moz.build
+++ b/dom/mobilemessage/src/moz.build
@@ -1,6 +1,31 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+EXPORTS.mozilla.dom.mobilemessage += [
+    'SmsChild.h',
+    'SmsParent.h',
+    'MobileMessageService.h',
+    'SmsServicesFactory.h',
+    'Constants.h',
+    'Types.h',
+    'MobileMessageCallback.h',
+]
+
+if not CONFIG['MOZ_B2G_RIL']:
+    EXPORTS.mozilla.dom.mobilemessage += [
+        'MobileMessageDatabaseService.h',
+        'MmsService.h',
+    ]
+
+EXPORTS.mozilla.dom += [
+    'SmsManager.h',
+    'MobileMessageManager.h',
+    'SmsMessage.h',
+    'MmsMessage.h',
+    'SmsSegmentInfo.h',
+    'SmsFilter.h',
+]
+
--- a/dom/network/src/Makefile.in
+++ b/dom/network/src/Makefile.in
@@ -31,26 +31,16 @@ EXTRA_COMPONENTS += \
 EXTRA_JS_MODULES =   \
   NetworkStatsService.jsm \
   NetworkStatsDB.jsm \
   $(NULL)
 endif
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom/network
-
-EXPORTS_mozilla/dom/network = \
-  Utils.h \
-  Types.h \
-  Constants.h \
-  TCPSocketChild.h \
-  TCPSocketParent.h \
-  $(NULL)
-
 CPPSRCS = \
   Connection.cpp \
   Utils.cpp \
   TCPSocketParent.cpp \
   TCPSocketChild.cpp \
   $(NULL)
 
 ifdef MOZ_B2G_RIL
--- a/dom/network/src/moz.build
+++ b/dom/network/src/moz.build
@@ -1,6 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
+EXPORTS.mozilla.dom.network += [
+    'Constants.h',
+    'TCPSocketChild.h',
+    'TCPSocketParent.h',
+    'Types.h',
+    'Utils.h',
+]
+
--- a/dom/plugins/base/Makefile.in
+++ b/dom/plugins/base/Makefile.in
@@ -11,40 +11,16 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gkplugin
 EXPORT_LIBRARY = 1
 IS_COMPONENT    = 1
 MODULE_NAME	= nsPluginModule
 LIBXUL_LIBRARY = 1
 
-EXPORTS_NAMESPACES = mozilla
-
-EXPORTS = \
-  npapi.h \
-  npfunctions.h \
-  nptypes.h \
-  npruntime.h \
-  nsPluginLogging.h \
-  nsPluginNativeWindow.h \
-  nsPluginsCID.h \
-  nsNPAPIPluginInstance.h \
-  nsPluginsDir.h \
-  nsPluginTags.h \
-  nsPluginDirServiceProvider.h \
-  nsPluginHost.h \
-  nsJSNPRuntime.h \
-  nsPluginInstanceOwner.h \
-  nsPluginPlayPreviewInfo.h \
-  $(NULL)
-
-EXPORTS_mozilla = \
-  PluginPRLibrary.h \
-  $(NULL)
-
 CPPSRCS		= \
 		nsNPAPIPlugin.cpp \
 		nsNPAPIPluginInstance.cpp \
 		nsNPAPIPluginStreamListener.cpp \
 		nsPluginStreamListenerPeer.cpp \
 		nsPluginHost.cpp \
 		nsPluginModule.cpp \
 		nsJSNPRuntime.cpp \
--- a/dom/plugins/base/android/Makefile.in
+++ b/dom/plugins/base/android/Makefile.in
@@ -14,21 +14,16 @@ LIBRARY_NAME	= gkpluginandroid_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 EXPORT_LIBRARY = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
-EXPORTS = \
-  ANPKeyCodes.h \
-  android_npapi.h \
-  $(NULL)
-
 CPPSRCS += ANPAudio.cpp    \
            ANPEvent.cpp    \
            ANPMatrix.cpp   \
            ANPSystem.cpp   \
            ANPWindow.cpp   \
            ANPBitmap.cpp   \
            ANPLog.cpp      \
            ANPNativeWindow.cpp \
--- a/dom/plugins/base/android/moz.build
+++ b/dom/plugins/base/android/moz.build
@@ -1,8 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'plugin'
 
+EXPORTS += [
+    'ANPKeyCodes.h',
+    'android_npapi.h',
+]
+
--- a/dom/plugins/base/moz.build
+++ b/dom/plugins/base/moz.build
@@ -15,8 +15,30 @@ XPIDL_SOURCES += [
     'nsIPluginInstanceOwner.idl',
     'nsIPluginTag.idl',
     'nsIPluginTagInfo.idl',
     'nspluginroot.idl',
 ]
 
 MODULE = 'plugin'
 
+EXPORTS += [
+    'npapi.h',
+    'npfunctions.h',
+    'npruntime.h',
+    'nptypes.h',
+    'nsJSNPRuntime.h',
+    'nsNPAPIPluginInstance.h',
+    'nsPluginDirServiceProvider.h',
+    'nsPluginHost.h',
+    'nsPluginInstanceOwner.h',
+    'nsPluginLogging.h',
+    'nsPluginNativeWindow.h',
+    'nsPluginPlayPreviewInfo.h',
+    'nsPluginTags.h',
+    'nsPluginsCID.h',
+    'nsPluginsDir.h',
+]
+
+EXPORTS.mozilla += [
+    'PluginPRLibrary.h',
+]
+
--- a/dom/plugins/ipc/Makefile.in
+++ b/dom/plugins/ipc/Makefile.in
@@ -6,54 +6,16 @@ DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 FAIL_ON_WARNINGS := 1
 
-EXPORTS_NAMESPACES = mozilla
-
-EXPORTS_mozilla = \
-  PluginLibrary.h \
-  $(NULL)
-
-EXPORTS_NAMESPACES = mozilla mozilla/plugins
-
-EXPORTS_mozilla/plugins = \
-  BrowserStreamChild.h \
-  BrowserStreamParent.h \
-  ChildAsyncCall.h \
-  ChildTimer.h \
-  NPEventOSX.h \
-  NPEventWindows.h \
-  NPEventUnix.h \
-  NPEventAndroid.h \
-  PluginIdentifierChild.h \
-  PluginIdentifierParent.h \
-  PluginInstanceChild.h \
-  PluginInstanceParent.h \
-  PluginMessageUtils.h \
-  PluginModuleChild.h \
-  PluginModuleParent.h \
-  PluginProcessParent.h \
-  PluginScriptableObjectChild.h \
-  PluginScriptableObjectParent.h \
-  PluginScriptableObjectUtils.h \
-  PluginScriptableObjectUtils-inl.h \
-  PluginUtilsOSX.h \
-  AStream.h \
-  PluginStreamChild.h \
-  PluginStreamParent.h \
-  PluginProcessChild.h \
-  StreamNotifyChild.h \
-  StreamNotifyParent.h \
-  $(NULL)
-
 LIBRARY_NAME     = domplugins_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 EXPORT_LIBRARY = 1
 
 ifeq ($(MOZ_ENABLE_QT),1)
 MOCSRCS = \
   moc_NestedLoopTimer.cpp \
@@ -92,31 +54,23 @@ CPPSRCS += \
   PluginSurfaceParent.cpp \
   MiniShmParent.cpp \
   PluginHangUIParent.cpp \
   $(NULL)
 
 DEFINES += \
   -DMOZ_HANGUI_PROCESS_NAME=\"plugin-hang-ui$(BIN_SUFFIX)\" \
   $(NULL)
-
-EXPORTS_mozilla/plugins += \
-  PluginSurfaceParent.h \
-  $(NULL)
 endif
 
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 CMMSRCS   += \
     PluginUtilsOSX.mm \
     PluginInterposeOSX.mm \
     $(NULL)
-
-EXPORTS_mozilla/plugins += \
-    PluginInterposeOSX.h \
-    $(NULL)
 endif
 
 LOCAL_INCLUDES = \
   -I$(srcdir)/../base \
   -I$(topsrcdir)/xpcom/base/ \
   $(NULL)
 
 ifeq (WINNT,$(OS_ARCH))
--- a/dom/plugins/ipc/moz.build
+++ b/dom/plugins/ipc/moz.build
@@ -4,8 +4,51 @@
 # License, v. 2.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 += ['interpose']
 
 MODULE = 'dom'
 
+EXPORTS.mozilla += [
+    'PluginLibrary.h',
+]
+
+EXPORTS.mozilla.plugins += [
+    'AStream.h',
+    'BrowserStreamChild.h',
+    'BrowserStreamParent.h',
+    'ChildAsyncCall.h',
+    'ChildTimer.h',
+    'NPEventAndroid.h',
+    'NPEventOSX.h',
+    'NPEventUnix.h',
+    'NPEventWindows.h',
+    'PluginIdentifierChild.h',
+    'PluginIdentifierParent.h',
+    'PluginInstanceChild.h',
+    'PluginInstanceParent.h',
+    'PluginMessageUtils.h',
+    'PluginModuleChild.h',
+    'PluginModuleParent.h',
+    'PluginProcessChild.h',
+    'PluginProcessParent.h',
+    'PluginScriptableObjectChild.h',
+    'PluginScriptableObjectParent.h',
+    'PluginScriptableObjectUtils-inl.h',
+    'PluginScriptableObjectUtils.h',
+    'PluginStreamChild.h',
+    'PluginStreamParent.h',
+    'PluginUtilsOSX.h',
+    'StreamNotifyChild.h',
+    'StreamNotifyParent.h',
+]
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+    EXPORTS.mozilla.plugins += [
+        'PluginSurfaceParent.h',
+    ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    EXPORTS.mozilla.plugins += [
+        'PluginInterposeOSX.h',
+    ]
--- a/dom/power/Makefile.in
+++ b/dom/power/Makefile.in
@@ -13,23 +13,16 @@ LIBRARY_NAME     = dom_power_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 ifndef _MSC_VER
 FAIL_ON_WARNINGS := 1
 endif # !_MSC_VER
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom/power
-
-EXPORTS_mozilla/dom/power = \
-  PowerManagerService.h \
-  Types.h \
-  $(NULL)
-
 CPPSRCS = \
   PowerManager.cpp \
   PowerManagerService.cpp \
   WakeLock.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
--- a/dom/power/moz.build
+++ b/dom/power/moz.build
@@ -11,8 +11,13 @@ XPIDL_SOURCES += [
     'nsIDOMPowerManager.idl',
     'nsIDOMWakeLock.idl',
     'nsIDOMWakeLockListener.idl',
     'nsIPowerManagerService.idl',
 ]
 
 XPIDL_MODULE = 'dom_power'
 
+EXPORTS.mozilla.dom.power += [
+    'PowerManagerService.h',
+    'Types.h',
+]
+
--- a/dom/quota/Makefile.in
+++ b/dom/quota/Makefile.in
@@ -11,42 +11,22 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = domquota_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom/quota
-
 CPPSRCS = \
   CheckQuotaHelper.cpp \
   FileStreams.cpp \
   QuotaManager.cpp \
   QuotaObject.cpp \
   $(NULL)
 
-EXPORTS = \
-  nsIOfflineStorage.h \
-  $(NULL)
-
-EXPORTS_mozilla/dom/quota = \
-  AcquireListener.h \
-  ArrayCluster.h \
-  Client.h \
-  FileStreams.h \
-  OriginOrPatternString.h \
-  QuotaCommon.h \
-  QuotaManager.h \
-  QuotaObject.h \
-  StoragePrivilege.h \
-  UsageRunnable.h \
-  Utilities.h \
-  $(NULL)
-
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/caps/include \
   $(NULL)
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
--- a/dom/quota/moz.build
+++ b/dom/quota/moz.build
@@ -9,8 +9,26 @@ XPIDL_SOURCES += [
     'nsIQuotaRequest.idl',
     'nsIUsageCallback.idl',
 ]
 
 XPIDL_MODULE = 'dom_quota'
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'nsIOfflineStorage.h',
+]
+
+EXPORTS.mozilla.dom.quota += [
+    'AcquireListener.h',
+    'ArrayCluster.h',
+    'Client.h',
+    'FileStreams.h',
+    'OriginOrPatternString.h',
+    'QuotaCommon.h',
+    'QuotaManager.h',
+    'QuotaObject.h',
+    'StoragePrivilege.h',
+    'UsageRunnable.h',
+    'Utilities.h',
+]
+
--- a/dom/src/geolocation/Makefile.in
+++ b/dom/src/geolocation/Makefile.in
@@ -23,18 +23,16 @@ CPPSRCS		= \
 
 LOCAL_INCLUDES = \
 		-I$(topsrcdir)/dom/base \
 		-I$(topsrcdir)/dom/ipc \
 		-I$(topsrcdir)/content/base/src \
 		-I$(topsrcdir)/content/events/src \
 		$(NULL)
 
-EXPORTS        = nsGeoPosition.h
-
 ifdef MOZ_MAEMO_LIBLOCATION
 LOCAL_INCLUDES  += $(MOZ_PLATFORM_MAEMO_CFLAGS) \
                    -I$(topsrcdir)/dom/system/unix \
                    $(NULL)
 endif
 ifdef MOZ_ENABLE_QTMOBILITY
 LOCAL_INCLUDES  += $(MOZ_QT_CFLAGS) \
                    -I$(topsrcdir)/dom/system/unix \
@@ -44,15 +42,13 @@ endif
 ifeq ($(MOZ_WIDGET_TOOLKIT),android)
 LOCAL_INCLUDES  += -I$(topsrcdir)/dom/system/android
 endif
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),gonk)
 LOCAL_INCLUDES  += -I$(topsrcdir)/dom/system/gonk
 endif
 
-EXPORTS         += nsGeoPositionIPCSerialiser.h
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
 
 DEFINES += -D_IMPL_NS_LAYOUT
--- a/dom/src/geolocation/moz.build
+++ b/dom/src/geolocation/moz.build
@@ -1,8 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'nsGeoPosition.h',
+    'nsGeoPositionIPCSerialiser.h',
+]
+
--- a/dom/src/json/Makefile.in
+++ b/dom/src/json/Makefile.in
@@ -14,19 +14,16 @@ include $(DEPTH)/config/autoconf.mk
 LIBRARY_NAME   = json_s
 LIBXUL_LIBRARY = 1
 
 
 CPPSRCS =                      \
        nsJSON.cpp              \
        $(NULL)
 
-EXPORTS = nsJSON.h \
-          $(NULL)
-
 FORCE_STATIC_LIB = 1
 
 LOCAL_INCLUDES = \
 		-I$(srcdir)/../base \
 		-I$(topsrcdir)/content/events/src
 
 DEFINES += -D_IMPL_NS_LAYOUT
 
--- a/dom/src/json/moz.build
+++ b/dom/src/json/moz.build
@@ -3,8 +3,12 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'nsJSON.h',
+]
+
--- a/dom/src/jsurl/Makefile.in
+++ b/dom/src/jsurl/Makefile.in
@@ -13,18 +13,16 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= jsurl_s
 FORCE_STATIC_LIB = 1
 MODULE_NAME	= javascript__protocol
 LIBXUL_LIBRARY	= 1
 
 CPPSRCS		= nsJSProtocolHandler.cpp
 
-EXPORTS		= $(srcdir)/nsJSProtocolHandler.h
-
 LOCAL_INCLUDES += \
 		-I$(srcdir) \
 		-I$(topsrcdir)/dom/base \
 		-I$(topsrcdir)/netwerk/base/src \
 
 ifdef BUILD_DEBUG_GC
 DEFINES		+= -DDEBUG_GC
 endif
--- a/dom/src/jsurl/moz.build
+++ b/dom/src/jsurl/moz.build
@@ -3,8 +3,12 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
 
 MODULE = 'jsurl'
 
+EXPORTS += [
+    'nsJSProtocolHandler.h',
+]
+
--- a/dom/src/notification/Makefile.in
+++ b/dom/src/notification/Makefile.in
@@ -16,25 +16,16 @@ LIBXUL_LIBRARY = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 CPPSRCS = \
   Notification.cpp \
   DesktopNotification.cpp \
   $(NULL)
 
-EXPORTS_NAMESPACES = \
-  mozilla/dom \
-  $(NULL)
-
-EXPORTS_mozilla/dom = \
-  Notification.h \
-  DesktopNotification.h \
-  $(NULL)
-
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/ipc \
   -I$(topsrcdir)/content/base/src \
   -I$(topsrcdir)/content/events/src \
   $(NULL)
 
 include $(topsrcdir)/config/config.mk
--- a/dom/src/notification/moz.build
+++ b/dom/src/notification/moz.build
@@ -1,8 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'dom'
 
+EXPORTS.mozilla.dom += [
+    'Notification.h',
+    'DesktopNotification.h',
+]
+
--- a/dom/src/storage/Makefile.in
+++ b/dom/src/storage/Makefile.in
@@ -18,19 +18,16 @@ CPPSRCS = \
        DOMStorage.cpp \
        DOMStorageCache.cpp \
        DOMStorageDBThread.cpp \
        DOMStorageObserver.cpp \
        DOMStorageManager.cpp \
        DOMStorageIPC.cpp \
        $(NULL)
 
-EXPORTS_NAMESPACES = mozilla/dom
-EXPORTS_mozilla/dom = DOMStorageIPC.h
-
 # we don't want the shared lib, but we want to force the creation of a static lib.
 FORCE_STATIC_LIB = 1
 
 LOCAL_INCLUDES = \
                 -I$(topsrcdir)/dom/base \
 		-I$(topsrcdir)/content/events/src
 
 DEFINES += -D_IMPL_NS_LAYOUT
--- a/dom/src/storage/moz.build
+++ b/dom/src/storage/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'dom'
 
+EXPORTS.mozilla.dom += [
+    'DOMStorageIPC.h',
+]
+
--- a/dom/system/Makefile.in
+++ b/dom/system/Makefile.in
@@ -44,36 +44,20 @@ endif
 
 ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
 EXTRA_COMPONENTS = \
   NetworkGeolocationProvider.js \
   NetworkGeolocationProvider.manifest \
   $(NULL)
 endif
 
-EXPORTS_NAMESPACES = mozilla
-
-EXPORTS     = \
-  nsDeviceSensors.h \
-  $(NULL)
-
-EXPORTS_mozilla = \
-  OSFileConstants.h \
-  $(NULL)
-
 LOCAL_INCLUDES += \
   -I$(topsrcdir)/content/events/src \
   -I$(topsrcdir)/js/xpconnect/loader \
   $(NULL)
-ifdef MOZ_GAMEPAD
-EXPORTS_NAMESPACES += mozilla/dom
-EXPORTS_mozilla/dom = \
-  GamepadService.h \
-  $(NULL)
-endif
 
 include $(topsrcdir)/config/config.mk
 
 # we don't want the shared lib, but we want to force the creation of a static lib.
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 EXPORT_LIBRARY = 1
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
--- a/dom/system/gonk/Makefile.in
+++ b/dom/system/gonk/Makefile.in
@@ -54,20 +54,16 @@ CPPSRCS += \
   nsVolumeStat.cpp \
   TimeZoneSettingObserver.cpp \
   Volume.cpp \
   VolumeCommand.cpp \
   VolumeManager.cpp \
   VolumeServiceIOThread.cpp \
   VolumeServiceTest.cpp \
   $(NULL)
-EXPORTS = \
-  GonkGPSGeolocationProvider.h \
-  nsVolume.h \
-  $(NULL)
 endif
 
 EXTRA_COMPONENTS = \
   NetworkManager.manifest \
   NetworkManager.js \
   RadioInterfaceLayer.manifest \
   RadioInterfaceLayer.js \
   RILContentHelper.js \
--- a/dom/system/gonk/moz.build
+++ b/dom/system/gonk/moz.build
@@ -30,8 +30,13 @@ XPIDL_SOURCES += [
 XPIDL_MODULE = 'dom_system_gonk'
 
 XPIDL_FLAGS += [
     '-I$(topsrcdir)/dom/network/interfaces',
 ]
 
 MODULE = 'dom'
 
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+    EXPORTS += [
+        'GonkGPSGeolocationProvider.h',
+        'nsVolume.h',
+    ]
--- a/dom/system/moz.build
+++ b/dom/system/moz.build
@@ -21,8 +21,21 @@ TEST_DIRS += ['tests']
 XPIDL_SOURCES += [
     'nsIOSFileConstantsService.idl',
 ]
 
 XPIDL_MODULE = 'dom_system'
 
 MODULE = 'dom'
 
+EXPORTS += [
+    'nsDeviceSensors.h',
+]
+
+if CONFIG['MOZ_GAMEPAD']:
+    EXPORTS.mozilla.dom = [
+        'GamepadService.h',
+    ]
+
+EXPORTS.mozilla += [
+    'OSFileConstants.h',
+]
+
--- a/dom/time/Makefile.in
+++ b/dom/time/Makefile.in
@@ -11,26 +11,18 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = dom_time_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom/time
-
 CPPSRCS = \
   TimeManager.cpp \
   TimeService.cpp \
   TimeChangeObserver.cpp \
   DateCacheCleaner.cpp \
   $(NULL)
 
-EXPORTS_mozilla/dom/time = \
-  TimeService.h \
-  TimeChangeObserver.h \
-  DateCacheCleaner.h \
-  $(NULL)
-
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 include $(topsrcdir)/config/rules.mk
--- a/dom/time/moz.build
+++ b/dom/time/moz.build
@@ -9,8 +9,14 @@ XPIDL_SOURCES += [
     'nsIDOMTimeManager.idl',
     'nsITimeService.idl',
 ]
 
 XPIDL_MODULE = 'dom_time'
 
 MODULE = 'dom'
 
+EXPORTS.mozilla.dom.time += [
+    'DateCacheCleaner.h',
+    'TimeChangeObserver.h',
+    'TimeService.h',
+]
+
--- a/dom/voicemail/Makefile.in
+++ b/dom/voicemail/Makefile.in
@@ -11,19 +11,14 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = domvoicemail_s
 LIBXUL_LIBRARY   = 1
 FORCE_STATIC_LIB = 1
 FAIL_ON_WARNINGS := 1
 
 include $(topsrcdir)/dom/dom-config.mk
 
-EXPORTS_NAMESPACES = mozilla/dom
-EXPORTS_mozilla/dom = \
-  Voicemail.h \
-  $(NULL)
-
 CPPSRCS = \
   Voicemail.cpp \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
--- a/dom/voicemail/moz.build
+++ b/dom/voicemail/moz.build
@@ -17,8 +17,12 @@ XPIDL_MODULE = 'dom_voicemail'
 XPIDL_FLAGS += [
     '-I$(topsrcdir)/dom/base',
     '-I$(topsrcdir)/dom/interfaces/base',
     '-I$(topsrcdir)/dom/interfaces/events',
 ]
 
 MODULE = 'dom'
 
+EXPORTS.mozilla.dom += [
+    'Voicemail.h',
+]
+
--- a/dom/workers/Makefile.in
+++ b/dom/workers/Makefile.in
@@ -35,39 +35,16 @@ CPPSRCS = \
   Worker.cpp \
   WorkerPrivate.cpp \
   WorkerScope.cpp \
   XMLHttpRequestEventTarget.cpp \
   XMLHttpRequestUpload.cpp \
   XMLHttpRequest.cpp \
   $(NULL)
 
-EXPORTS_NAMESPACES = \
-  mozilla/dom/workers \
-  mozilla/dom/workers/bindings \
-  $(NULL)
-
-# Public stuff.
-EXPORTS_mozilla/dom/workers = Workers.h
-
-# Stuff needed for the bindings, not really public though.
-EXPORTS_mozilla/dom/workers/bindings = \
-  DOMBindingBase.h \
-  EventListenerManager.h \
-  EventTarget.h \
-  FileReaderSync.h \
-  URL.h \
-  TextDecoder.h \
-  TextEncoder.h \
-  WorkerFeature.h \
-  XMLHttpRequestEventTarget.h \
-  XMLHttpRequestUpload.h \
-  XMLHttpRequest.h \
-  $(NULL)
-
 LOCAL_INCLUDES = \
   -I$(topsrcdir)/content/base/src \
   -I$(topsrcdir)/content/events/src \
   -I$(topsrcdir)/dom/base \
   -I$(topsrcdir)/dom/system \
   -I$(topsrcdir)/xpcom/build \
   $(NULL)
 
--- a/dom/workers/moz.build
+++ b/dom/workers/moz.build
@@ -3,8 +3,28 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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']
 
 MODULE = 'dom'
 
+# Public stuff.
+EXPORTS.mozilla.dom.workers += [
+    'Workers.h',
+]
+
+# Stuff needed for the bindings, not really public though.
+EXPORTS.mozilla.dom.workers.bindings += [
+    'DOMBindingBase.h',
+    'EventListenerManager.h',
+    'EventTarget.h',
+    'FileReaderSync.h',
+    'TextDecoder.h',
+    'TextEncoder.h',
+    'URL.h',
+    'WorkerFeature.h',
+    'XMLHttpRequest.h',
+    'XMLHttpRequestEventTarget.h',
+    'XMLHttpRequestUpload.h',
+]
+
--- a/editor/public/Makefile.in
+++ b/editor/public/Makefile.in
@@ -5,14 +5,10 @@
 
 DEPTH           := @DEPTH@
 topsrcdir       := @top_srcdir@
 srcdir          := @srcdir@
 VPATH           := @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXPORTS         := \
-                nsEditorCID.h \
-                $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/editor/public/moz.build
+++ b/editor/public/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'editor'
 
+EXPORTS += [
+    'nsEditorCID.h',
+]
+
--- a/editor/txmgr/public/Makefile.in
+++ b/editor/txmgr/public/Makefile.in
@@ -5,14 +5,10 @@
 
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-EXPORTS		= \
-		nsTransactionManagerCID.h \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/editor/txmgr/public/moz.build
+++ b/editor/txmgr/public/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'txmgr'
 
+EXPORTS += [
+    'nsTransactionManagerCID.h',
+]
+
--- a/editor/txtsvc/public/Makefile.in
+++ b/editor/txtsvc/public/Makefile.in
@@ -6,17 +6,10 @@
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 
-EXPORTS		= \
-		nsISpellChecker.h \
-		nsITextService.h \
-		nsITextServicesDocument.h \
-		nsTextServicesCID.h \
-		$(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/editor/txtsvc/public/moz.build
+++ b/editor/txtsvc/public/moz.build
@@ -6,8 +6,15 @@
 
 XPIDL_SOURCES += [
     'nsIInlineSpellChecker.idl',
     'nsITextServicesFilter.idl',
 ]
 
 MODULE = 'txtsvc'
 
+EXPORTS += [
+    'nsISpellChecker.h',
+    'nsITextService.h',
+    'nsITextServicesDocument.h',
+    'nsTextServicesCID.h',
+]
+
--- a/embedding/browser/webBrowser/Makefile.in
+++ b/embedding/browser/webBrowser/Makefile.in
@@ -10,20 +10,16 @@ VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= nsWebBrowser_s
 LIBXUL_LIBRARY	= 1
 
 
 
-EXPORTS         = \
-                nsCTooltipTextProvider.h \
-                $(NULL)
-
 LOCAL_INCLUDES	= \
 		-I$(srcdir)/../../../content/base/src \
 		-I$(srcdir)/../../../content/svg/content/src \
 		$(NULL)
 		
 CPPSRCS		= \
 		nsDocShellTreeOwner.cpp		\
 		nsWebBrowser.cpp		\
--- a/embedding/browser/webBrowser/moz.build
+++ b/embedding/browser/webBrowser/moz.build
@@ -28,8 +28,12 @@ if CONFIG['NS_PRINTING']:
         'nsIPrintingPromptService.idl',
         'nsIWebBrowserPrint.idl',
     ]
 
 XPIDL_MODULE = 'webBrowser_core'
 
 MODULE = 'webbrwsr'
 
+EXPORTS += [
+    'nsCTooltipTextProvider.h',
+]
+
--- a/embedding/components/appstartup/src/Makefile.in
+++ b/embedding/components/appstartup/src/Makefile.in
@@ -12,18 +12,14 @@ include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= appstartupnotifier_s
 LIBXUL_LIBRARY	= 1
 
 
 CPPSRCS		= nsAppStartupNotifier.cpp \
                   $(NULL)
 
-EXPORTS =	\
-		nsIAppStartupNotifier.h		\
-		$(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/embedding/components/appstartup/src/moz.build
+++ b/embedding/components/appstartup/src/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'embedcomponents'
 
+EXPORTS += [
+    'nsIAppStartupNotifier.h',
+]
+
--- a/embedding/components/windowwatcher/public/Makefile.in
+++ b/embedding/components/windowwatcher/public/Makefile.in
@@ -7,13 +7,10 @@
 DEPTH		= @DEPTH@
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 
-EXPORTS		= nsPromptUtils.h \
-                  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
--- a/embedding/components/windowwatcher/public/moz.build
+++ b/embedding/components/windowwatcher/public/moz.build
@@ -11,8 +11,12 @@ XPIDL_SOURCES += [
     'nsIPromptService2.idl',
     'nsIWindowWatcher.idl',
     'nsPIPromptService.idl',
     'nsPIWindowWatcher.idl',
 ]
 
 MODULE = 'windowwatcher'
 
+EXPORTS += [
+    'nsPromptUtils.h',
+]
+
--- a/gfx/2d/Makefile.in
+++ b/gfx/2d/Makefile.in
@@ -9,36 +9,16 @@ srcdir		= @srcdir@
 VPATH		=  $(srcdir) $(srcdir)/unittest
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= gfx2d
 LIBXUL_LIBRARY	= 1
 EXPORT_LIBRARY	= 1
 
-EXPORTS_NAMESPACES = mozilla/gfx
-EXPORTS_mozilla/gfx	= \
-        2D.h \
-        BasePoint.h \
-        BasePoint3D.h \
-        BasePoint4D.h \
-        BaseMargin.h \
-        BaseRect.h \
-        BaseSize.h \
-        Blur.h \
-        PathHelpers.h \
-        Point.h \
-        Matrix.h \
-        Rect.h \
-        Scale.h \
-        Types.h \
-        Tools.h \
-        UserData.h \
-	$(NULL)
-
 CPPSRCS	= \
         Factory.cpp \
         Rect.cpp \
         Matrix.cpp \
         DrawTargetCairo.cpp \
         SourceSurfaceCairo.cpp \
         PathCairo.cpp \
         DrawTargetRecording.cpp \
@@ -66,21 +46,16 @@ CPPSRCS	+= \
 	   SourceSurfaceCG.cpp \
 	   DrawTargetCG.cpp \
 	   PathCG.cpp \
 	   $(NULL)
 
 CMMSRCS = \
 	   QuartzSupport.mm \
 	   $(NULL)
-
-EXPORTS_mozilla/gfx	+= \
-	   QuartzSupport.h \
-	   MacIOSurface.h \
-	   $(NULL)
 endif
 
 DEFINES += -DMOZ_GFX -DUSE_CAIRO -DGFX2D_INTERNAL
 
 ifdef MOZ_ENABLE_SKIA
 CPPSRCS	+= \
         SourceSurfaceSkia.cpp \
         DrawTargetSkia.cpp \
--- a/gfx/2d/moz.build
+++ b/gfx/2d/moz.build
@@ -1,8 +1,32 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'gfx2d'
 
+EXPORTS.mozilla.gfx += [
+    '2D.h',
+    'BaseMargin.h',
+    'BasePoint.h',
+    'BasePoint3D.h',
+    'BasePoint4D.h',
+    'BaseRect.h',
+    'BaseSize.h',
+    'Blur.h',
+    'Matrix.h',
+    'PathHelpers.h',
+    'Point.h',
+    'Rect.h',
+    'Scale.h',
+    'Tools.h',
+    'Types.h',
+    'UserData.h',
+]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    EXPORTS.mozilla.gfx += [
+        'QuartzSupport.h',
+        'MacIOSurface.h',
+    ]
--- a/gfx/angle/Makefile.in
+++ b/gfx/angle/Makefile.in
@@ -10,23 +10,16 @@ VPATH     = @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME   = angle
 LIBXUL_LIBRARY = 1
 ifeq (WINNT,$(OS_TARGET))
 VISIBILITY_FLAGS =
 endif
 
-EXPORTS_NAMESPACES = angle
-
-EXPORTS_angle = \
-  include/GLSLANG/ShaderLang.h \
-  include/KHR/khrplatform.h \
-  $(NULL)
-
 # The below is a rough translation of build_angle.gypi:
 DEFINES += -DANGLE_DISABLE_TRACE
 DEFINES += -DANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL0
 
 # Target: 'preprocessor'
 # src/compiler/preprocessor:
 VPATH += $(srcdir)/src/compiler/preprocessor
 CPPSRCS += \
--- a/gfx/angle/moz.build
+++ b/gfx/angle/moz.build
@@ -5,8 +5,13 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # libEGL depends on (links against!) libGLESv2!
 if CONFIG['MOZ_ANGLE_RENDERER']:
     DIRS += ['src/libGLESv2', 'src/libEGL']
 
 MODULE = 'angle'
 
+EXPORTS.angle += [
+    'include/GLSLANG/ShaderLang.h',
+    'include/KHR/khrplatform.h',
+]
+
--- a/gfx/cairo/cairo/src/Makefile.in
+++ b/gfx/cairo/cairo/src/Makefile.in
@@ -91,20 +91,16 @@ CSRCS   = \
 	cairo-version.c \
         cairo-wideint.c \
         $(NULL)
 
 ifneq ($(MOZ_WIDGET_TOOLKIT),cocoa)
 CSRCS += cairo-deflate-stream.c
 endif
 
-EXPORTS_NAMESPACES = cairo
-
-EXPORTS_cairo = cairo.h cairo-version.h cairo-features.h cairo-platform.h cairo-deprecated.h cairo-rename.h cairo-tee.h
-
 # cairo-type1-subset.c should be here, but it's only supported on freetype platforms
 
 PSPDF_BASE_CSRCS = \
 	cairo-base85-stream.c \
 	cairo-type1-fallback.c \
 	cairo-type3-glyph-surface.c \
 	cairo-truetype-subset.c \
 	cairo-cff-subset.c \
@@ -112,19 +108,16 @@ PSPDF_BASE_CSRCS = \
 
 PDF_CSRCS = \
 	cairo-pdf-surface.c \
 	cairo-pdf-operators.c \
 	$(NULL)
 
 PS_CSRCS = cairo-ps-surface.c
 
-PDF_EXPORTS = cairo-pdf.h
-PS_EXPORTS = cairo-ps.h
-
 ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
 DEFINES += -DDISABLE_SOME_FLOATING_POINT
 CSRCS	+=	cairo-win32-surface.c
 
 ifdef MOZ_ENABLE_DWRITE_FONT
 CPPSRCS +=	cairo-dwrite-font.cpp
 endif
 ifdef MOZ_ENABLE_D2D_SURFACE
@@ -133,77 +126,64 @@ endif
 CSRCS	+=	cairo-win32-font.c
 
 ifdef NS_PRINTING
 CSRCS   += cairo-win32-printing-surface.c
 else
 DEFINES += -DCAIRO_OMIT_WIN32_PRINTING
 endif
 
-EXPORTS_cairo += cairo-win32.h
 CSRCS   += $(PSPDF_BASE_CSRCS) $(PDF_CSRCS)
-EXPORTS_cairo += $(PDF_EXPORTS)
 endif
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
 DEFINES += -DOS2_USE_PLATFORM_ALLOC
 ifdef MOZ_OS2_HIGH_MEMORY
 DEFINES += -DOS2_HIGH_MEMORY
 endif
 CSRCS   += cairo-os2-surface.c
-EXPORTS_cairo += cairo-os2.h cairo-os2-private.h
 CSRCS   += $(PSPDF_BASE_CSRCS) $(PDF_CSRCS)
-EXPORTS_cairo += $(PDF_EXPORTS)
 endif
 
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 CSRCS   += cairo-quartz-surface.c cairo-quartz-image-surface.c cairo-quartz-font.c
-EXPORTS_cairo += cairo-quartz.h cairo-quartz-image.h
 endif
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),beos)
 CPPSRCS += cairo-beos-surface.cpp
-EXPORTS_cairo += cairo-beos.h
 endif
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
 CSRCS   += $(PSPDF_BASE_CSRCS) $(PDF_CSRCS) $(PS_CSRCS)
-EXPORTS_cairo += $(PDF_EXPORTS) $(PS_EXPORTS)
 endif
 
 ifneq (,$(filter android gonk,$(MOZ_WIDGET_TOOLKIT)))
 CSRCS   += $(PSPDF_BASE_CSRCS) $(PDF_CSRCS)
-EXPORTS_cairo += $(PDF_EXPORTS)
 endif
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),qt)
 CPPSRCS += cairo-qt-surface.cpp
 CSRCS   += $(PSPDF_BASE_CSRCS) $(PDF_CSRCS) 
-EXPORTS_cairo += cairo-qt.h
-EXPORTS_cairo += $(PDF_EXPORTS)
 OS_INCLUDES += $(MOZ_QT_CFLAGS)
 endif
 
 ifdef BUILD_CAIRO_SVG
 CSRCS	+= cairo-svg-surface.c
-EXPORTS_cairo += cairo-svg.h
 endif
 
 ifdef MOZ_X11
 CSRCS   += cairo-xlib-surface.c \
 	   cairo-xlib-screen.c \
 	   cairo-xlib-visual.c \
 	   cairo-xlib-display.c
-EXPORTS_cairo += cairo-xlib.h cairo-xlib-xrender.h
 OS_INCLUDES += $(XCFLAGS)
 endif
 
 ifdef MOZ_ENABLE_CAIRO_FT
 CSRCS   += cairo-ft-font.c cairo-type1-subset.c
-EXPORTS_cairo += cairo-ft.h
 OS_INCLUDES += $(CAIRO_FT_CFLAGS)
 endif
 
 LOCAL_INCLUDES  += -I$(srcdir)
 
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
--- a/gfx/cairo/cairo/src/moz.build
+++ b/gfx/cairo/cairo/src/moz.build
@@ -3,8 +3,68 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 CONFIGURE_SUBST_FILES += ['cairo-features.h']
 
 MODULE = 'cairo'
 
+EXPORTS.cairo += [
+    'cairo-deprecated.h',
+    'cairo-features.h',
+    'cairo-platform.h',
+    'cairo-rename.h',
+    'cairo-tee.h',
+    'cairo-version.h',
+    'cairo.h',
+]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+    EXPORTS.cairo += [
+        'cairo-win32.h',
+        'cairo-pdf.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'os2':
+    EXPORTS.cairo += [
+        'cairo-os2.h',
+        'cairo-os2-private.h',
+        'cairo-pdf.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    EXPORTS.cairo += [
+        'cairo-quartz.h',
+        'cairo-quartz-image.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'beos':
+    EXPORTS.cairo += [
+        'cairo-beos.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2':
+    EXPORTS.cairo += [
+        'cairo-pdf.h',
+        'cairo-ps.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gonk'):
+    EXPORTS.cairo += [
+        'cairo-pdf.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt':
+    EXPORTS.cairo += [
+        'cairo-qt.h',
+        'cairo-pdf.h',
+    ]
+
+if CONFIG['BUILD_CAIRO_SVG']:
+    EXPORTS.cairo += [
+        'cairo-svg.h'
+    ]
+
+if CONFIG['MOZ_X11']:
+    EXPORTS.cairo += [
+        'cairo-xlib.h',
+        'cairo-xlib-xrender.h',
+    ]
+
+if CONFIG['MOZ_ENABLE_CAIRO_FT']:
+    EXPORTS.cairo += [
+        'cairo-ft.h',
+    ]
--- a/gfx/cairo/libpixman/src/Makefile.in
+++ b/gfx/cairo/libpixman/src/Makefile.in
@@ -136,18 +136,16 @@ endif
 ifdef USE_ARM_NEON_GCC
 CSRCS += pixman-arm-neon.c
 SSRCS += pixman-arm-neon-asm.S
 SSRCS += pixman-arm-neon-asm-bilinear.S
 DEFINES += -DUSE_ARM_NEON
 ARM_NEON_CFLAGS = -mfpu=neon
 endif
 
-EXPORTS		= pixman.h pixman-version.h
-
 LOCAL_INCLUDES	+= -I$(srcdir) -I$(srcdir)/../../cairo/src
 
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/config.mk
 
 include $(topsrcdir)/config/rules.mk
 
--- a/gfx/cairo/libpixman/src/moz.build
+++ b/gfx/cairo/libpixman/src/moz.build
@@ -1,8 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'libpixman'
 
+EXPORTS += [
+    'pixman-version.h',
+    'pixman.h',
+]
+
--- a/gfx/gl/Makefile.in
+++ b/gfx/gl/Makefile.in
@@ -9,47 +9,18 @@ VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME     = gl
 LIBXUL_LIBRARY   = 1
 EXPORT_LIBRARY   = 1
 FAIL_ON_WARNINGS = 1
 
-EXPORTS	= \
-  ForceDiscreteGPUHelperCGL.h \
-  GLContext.h \
-  GLContextProvider.h \
-  GLContextProviderImpl.h \
-  GLContextSymbols.h \
-  GLContextTypes.h \
-  GLDefs.h \
-  GLLibraryLoader.h \
-  GLLibraryEGL.h \
-  GLScreenBuffer.h \
-  GLTextureImage.h \
-  SharedSurface.h \
-  SharedSurfaceEGL.h \
-  SharedSurfaceGL.h \
-  SurfaceFactory.h \
-  SurfaceStream.h \
-  SurfaceTypes.h \
-  $(NULL)
-
-ifdef MOZ_X11
-EXPORTS += \
-  GLXLibrary.h \
-  $(NULL)
-endif
-
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-EXPORTS	+= \
-  WGLLibrary.h \
-  $(NULL)
 ifdef MOZ_WEBGL
 DEFINES += -DMOZ_WEBGL
 DEFINES += -DMOZ_D3DCOMPILER_DLL=$(MOZ_D3DCOMPILER_DLL)
 endif
 endif
 
 CPPSRCS	= \
   GLContext.cpp \
@@ -116,34 +87,29 @@ CPPSRCS += GLContextProvider$(GL_PROVIDE
 endif
 
 ifeq ($(GL_PROVIDER),EGL)
 CPPSRCS += GLLibraryEGL.cpp
 endif
 
 # Win32 is a special snowflake, for ANGLE
 ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-EXPORTS += \
-  SharedSurfaceANGLE.h \
-  $(NULL)
-
 CPPSRCS += \
   GLContextProviderEGL.cpp \
   GLLibraryEGL.cpp \
   SharedSurfaceANGLE.cpp \
   $(NULL)
 endif
 
 ifdef MOZ_ANDROID_OMTC
 DEFINES += -DMOZ_ANDROID_OMTC
 endif
 
 ifdef MOZ_ENABLE_SKIA_GPU
 CPPSRCS += GLContextSkia.cpp
-EXPORTS += GLContextSkia.h
 endif
 
 include $(topsrcdir)/config/rules.mk
 
 DEFINES := $(filter-out -DUNICODE,$(DEFINES))
 
 CXXFLAGS += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
 CFLAGS   += $(MOZ_CAIRO_CFLAGS) $(MOZ_PIXMAN_CFLAGS) $(TK_CFLAGS)
--- a/gfx/gl/moz.build
+++ b/gfx/gl/moz.build
@@ -1,8 +1,37 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'gl'
 
+EXPORTS += [
+    'ForceDiscreteGPUHelperCGL.h',
+    'GLContext.h',
+    'GLContextProvider.h',
+    'GLContextProviderImpl.h',
+    'GLContextSymbols.h',
+    'GLContextTypes.h',
+    'GLDefs.h',
+    'GLLibraryEGL.h',
+    'GLLibraryLoader.h',
+    'GLScreenBuffer.h',
+    'GLTextureImage.h',
+    'SharedSurface.h',
+    'SharedSurfaceEGL.h',
+    'SharedSurfaceGL.h',
+    'SurfaceFactory.h',
+    'SurfaceStream.h',
+    'SurfaceTypes.h',
+]
+
+if CONFIG['MOZ_X11']:
+    EXPORTS += ['GLXLibrary.h']
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+    EXPORTS += [
+        'WGLLibrary.h',
+        'SharedSurfaceANGLE.h',
+    ]
+if CONFIG['MOZ_ENABLE_SKIA_GPU']:
+    EXPORTS += ['GLContextSkia.h']
--- a/gfx/graphite2/moz-gr-update.sh
+++ b/gfx/graphite2/moz-gr-update.sh
@@ -26,10 +26,15 @@ find gfx/graphite2/ -name "*.h" -exec pe
 # summarize what's been touched
 echo Updated to $CHANGESET.
 echo Here is what changed in the gfx/graphite2 directory:
 echo
 
 hg stat gfx/graphite2
 
 echo
+echo If gfx/graphite2/src/files.mk has changed, please make corresponding
+echo changes to gfx/graphite2/src/moz.build
+echo
+
+echo
 echo Now use hg commands to create a patch for the mozilla tree.
 echo
--- a/gfx/graphite2/src/Makefile.in
+++ b/gfx/graphite2/src/Makefile.in
@@ -29,19 +29,16 @@ VISIBILITY_FLAGS =
 else
 LIBXUL_LIBRARY = 1
 endif
 
 # MSVC doesn't like the paths in _SOURCES, so strip off the prefix
 # and leave bare filenames
 CPPSRCS = $(subst $($(_NS)_BASE)/src/,,$(_SOURCES))
 
-EXPORTS_NAMESPACES = graphite2
-EXPORTS_graphite2 = $(_PUBLIC_HEADERS)
-
 FORCE_STATIC_LIB = 1
 FORCE_USE_PIC = 1
 
 ifeq (WINNT,$(OS_TARGET))
 DEFINES += -DGRAPHITE2_EXPORTING
 else
 # tell graphite2 not to export symbols, we'll be linking it directly with thebes
 DEFINES += -DGRAPHITE2_STATIC
--- a/gfx/graphite2/src/moz.build
+++ b/gfx/graphite2/src/moz.build
@@ -1,8 +1,16 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'graphite2'
 
+# This should contain all of the _PUBLIC_HEADERS from files.mk
+EXPORTS.graphite2 += [
+    '../include/graphite2/Font.h',
+    '../include/graphite2/Log.h',
+    '../include/graphite2/Segment.h',
+    '../include/graphite2/Types.h',
+]
+
--- a/gfx/harfbuzz/src/Makefile.in
+++ b/gfx/harfbuzz/src/Makefile.in
@@ -59,34 +59,16 @@ CPPSRCS	=                        \
   hb-set.cc                      \
   hb-shape.cc                    \
   hb-shape-plan.cc               \
   hb-shaper.cc                   \
   hb-unicode.cc                  \
   hb-warning.cc                  \
   $(NULL)
 
-EXPORTS_NAMESPACES = harfbuzz
-
-EXPORTS_harfbuzz = \
-  hb.h             \
-  hb-blob.h        \
-  hb-buffer.h      \
-  hb-common.h      \
-  hb-font.h        \
-  hb-ot.h          \
-  hb-ot-layout.h   \
-  hb-ot-tag.h      \
-  hb-set.h         \
-  hb-shape.h       \
-  hb-shape-plan.h  \
-  hb-unicode.h     \
-  hb-version.h     \
-  $(NULL)
-
 LOCAL_INCLUDES  += -I$(srcdir) 
 
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
 
 DEFINES += -DPACKAGE_VERSION="\"moz\""
 DEFINES += -DPACKAGE_BUGREPORT="\"http://bugzilla.mozilla.org/\""
--- a/gfx/harfbuzz/src/moz.build
+++ b/gfx/harfbuzz/src/moz.build
@@ -1,8 +1,24 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'harfbuzz'
 
+EXPORTS.harfbuzz += [
+    'hb-blob.h',
+    'hb-buffer.h',
+    'hb-common.h',
+    'hb-font.h',
+    'hb-ot-layout.h',
+    'hb-ot-tag.h',
+    'hb-ot.h',
+    'hb-set.h',
+    'hb-shape-plan.h',
+    'hb-shape.h',
+    'hb-unicode.h',
+    'hb-version.h',
+    'hb.h',
+]
+
--- a/gfx/ipc/Makefile.in
+++ b/gfx/ipc/Makefile.in
@@ -10,30 +10,19 @@ VPATH       = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME       = gfxipc_s
 FORCE_STATIC_LIB   = 1
 LIBXUL_LIBRARY     = 1
 EXPORT_LIBRARY     = 1
 
-EXPORTS_NAMESPACES = mozilla/gfx
-
-EXPORTS_mozilla/gfx = \
-        SharedDIB.h   \
-        $(NULL)
-
 CPPSRCS = SharedDIB.cpp
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-EXPORTS_mozilla/gfx += \
-  SharedDIBWin.h \
-  SharedDIBSurface.h \
-  $(NULL)
-
 CPPSRCS += \
   SharedDIBWin.cpp \
   SharedDIBSurface.cpp \
   $(NULL)
 endif
 
 include $(topsrcdir)/config/config.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
--- a/gfx/ipc/moz.build
+++ b/gfx/ipc/moz.build
@@ -1,8 +1,18 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'gfxipc'
 
+EXPORTS.mozilla.gfx += [
+    'SharedDIB.h',
+]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+    EXPORTS.mozilla.gfx += [
+        'SharedDIBWin.h',
+        'SharedDIBSurface.h',
+    ]
+
--- a/gfx/layers/Makefile.in
+++ b/gfx/layers/Makefile.in
@@ -23,49 +23,16 @@ LIBRARY_NAME   = layers
 LIBXUL_LIBRARY = 1
 FORCE_STATIC_LIB = 1
 
 DEFINES += -DIMPL_THEBES
 ifdef MOZ_DEBUG
 DEFINES += -DD3D_DEBUG_INFO
 endif
 
-EXPORTS = \
-        BasicCanvasLayer.h \
-        BasicImplData.h \
-        BasicLayers.h \
-        BasicLayersImpl.h \
-        BasicTiledThebesLayer.h \
-        BasicThebesLayer.h \
-        CompositableHost.h \
-        LayerManagerComposite.h \
-        Composer2D.h \
-        GonkIOSurfaceImage.h \
-        FrameMetrics.h \
-        CompositorChild.h \
-        CompositorParent.h \
-        ImageContainer.h \
-        ImageLayers.h \
-        ImageLayerOGL.h \
-        ImageHost.h \
-        ImageTypes.h \
-        Layers.h \
-        LayersLogging.h \
-        LayerManagerOGLShaders.h \
-        LayerManagerOGL.h \
-        LayerManagerOGLProgram.h \
-        LayerSorter.h \
-        LayerTreeInvalidation.h \
-        ReadbackLayer.h \
-        ShadowLayersManager.h \
-        SharedTextureImage.h \
-        TexturePoolOGL.h \
-        ShmemYCbCrImage.h \
-        $(NULL)
-
 CPPSRCS = \
         BasicImages.cpp \
         BasicLayerManager.cpp \
         BasicCanvasLayer.cpp \
         BasicColorLayer.cpp \
         BasicContainerLayer.cpp \
         BasicImageLayer.cpp \
         BasicLayersImpl.cpp \
@@ -99,94 +66,41 @@ CPPSRCS = \
         $(NULL)
 
 GTEST_CPPSRCS = \
         TestTiledLayerBuffer.cpp \
         $(NULL)
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
 ifdef MOZ_ENABLE_D3D9_LAYER
-EXPORTS += \
-        LayerManagerD3D9.h \
-        DeviceManagerD3D9.h \
-        $(NULL)
-
 CPPSRCS += \
         LayerManagerD3D9.cpp \
         ThebesLayerD3D9.cpp \
         ContainerLayerD3D9.cpp \
         ImageLayerD3D9.cpp \
         ColorLayerD3D9.cpp \
         CanvasLayerD3D9.cpp \
         DeviceManagerD3D9.cpp \
         Nv3DVUtils.cpp \
         $(NULL)
 endif
 ifdef MOZ_ENABLE_D3D10_LAYER
-EXPORTS += \
-        LayerManagerD3D10.h \
-        ReadbackManagerD3D10.h \
-        $(NULL)
-
 CPPSRCS += \
         CanvasLayerD3D10.cpp \
         ColorLayerD3D10.cpp \
         ContainerLayerD3D10.cpp \
         ImageLayerD3D10.cpp \
         LayerManagerD3D10.cpp \
         ReadbackManagerD3D10.cpp \
         ShadowLayerUtilsD3D10.cpp \
         ThebesLayerD3D10.cpp \
         $(NULL)
 endif
 endif
 
-EXPORTS_NAMESPACES = gfxipc mozilla/layers
-EXPORTS_gfxipc = ShadowLayerUtils.h
-EXPORTS_mozilla/layers =\
-        AsyncPanZoomController.h \
-        Axis.h \
-        CanvasClient.h \
-        CompositableClient.h \
-        CompositableTransactionParent.h \
-        Compositor.h \
-        CompositorOGL.h \
-        CompositorTypes.h \
-        ContentHost.h \
-        CompositingRenderTargetOGL.h \
-        CompositorCocoaWidgetHelper.h \
-        CompositorChild.h \
-        CompositorParent.h \
-        CompositableForwarder.h \
-        ContentClient.h \
-        Effects.h \
-        GeckoContentController.h \
-        GestureEventListener.h \
-        ImageBridgeChild.h \
-        ImageBridgeParent.h \
-        ImageClient.h \
-        ImageHost.h \
-        ISurfaceAllocator.h \
-        LayersTypes.h \
-        ShadowLayers.h \
-        ShadowLayersChild.h \
-        ShadowLayersParent.h \
-        ShadowLayersManager.h \
-        RenderTrace.h \
-        SharedRGBImage.h \
-        SharedPlanarYCbCrImage.h \
-        ShmemYCbCrImage.h \
-        TaskThrottler.h \
-        TextureClient.h \
-        TextureHost.h \
-        TextureClientOGL.h \
-        TextureHostOGL.h \
-        TiledContentClient.h \
-        $(NULL)
-
 CPPSRCS += \
         AsyncPanZoomController.cpp \
         Axis.cpp \
         CanvasClient.cpp \
         CompositableClient.cpp \
         Compositor.cpp \
         CompositorOGL.cpp \
         CompositorCocoaWidgetHelper.cpp \
@@ -214,36 +128,31 @@ CPPSRCS += \
         TextureClientOGL.cpp \
         TextureHost.cpp \
         TextureHostOGL.cpp \
         TiledContentClient.cpp \
         TiledContentHost.cpp \
         $(NULL)
 
 ifdef MOZ_X11 #{
-EXPORTS_mozilla/layers += ShadowLayerUtilsX11.h
 CPPSRCS += ShadowLayerUtilsX11.cpp
 endif #}
 
 ifdef MOZ_ENABLE_D3D10_LAYER
-EXPORTS_mozilla/layers += \
-        ShadowLayerUtilsD3D10.h \
-        $(NULL)
 DEFINES	+= -DMOZ_ENABLE_D3D10_LAYER
 endif
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
 CPPSRCS += ShadowLayerUtilsMac.cpp
 endif
 
 # NB: Gralloc is available on other platforms that use the android GL
 # libraries, but only Gonk is able to use it reliably because Gecko
 # has full system permissions there.
 ifeq ($(MOZ_WIDGET_TOOLKIT),gonk)
-EXPORTS_mozilla/layers += ShadowLayerUtilsGralloc.h
 CPPSRCS += \
         ShadowLayerUtilsGralloc.cpp \
         GrallocImages.cpp \
         GonkIOSurfaceImage.cpp \
         $(NULL)
 endif
 
 include $(topsrcdir)/config/rules.mk
--- a/gfx/layers/moz.build
+++ b/gfx/layers/moz.build
@@ -1,8 +1,110 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'thebes'
 
+EXPORTS += [
+    'BasicCanvasLayer.h',
+    'BasicImplData.h',
+    'BasicLayers.h',
+    'BasicLayersImpl.h',
+    'BasicTiledThebesLayer.h',
+    'BasicThebesLayer.h',
+    'CompositableHost.h',
+    'LayerManagerComposite.h',
+    'Composer2D.h',
+    'GonkIOSurfaceImage.h',
+    'FrameMetrics.h',
+    'CompositorChild.h',
+    'CompositorParent.h',
+    'ImageContainer.h',
+    'ImageLayers.h',
+    'ImageLayerOGL.h',
+    'ImageHost.h',
+    'ImageTypes.h',
+    'Layers.h',
+    'LayersLogging.h',
+    'LayerManagerOGLShaders.h',
+    'LayerManagerOGL.h',
+    'LayerManagerOGLProgram.h',
+    'LayerSorter.h',
+    'LayerTreeInvalidation.h',
+    'ReadbackLayer.h',
+    'ShadowLayersManager.h',
+    'SharedTextureImage.h',
+    'TexturePoolOGL.h',
+    'ShmemYCbCrImage.h',
+]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+    if CONFIG['MOZ_ENABLE_D3D9_LAYER']:
+        EXPORTS += [
+            'LayerManagerD3D9.h',
+            'DeviceManagerD3D9.h',
+        ]
+    if CONFIG['MOZ_ENABLE_D3D10_LAYER']:
+        EXPORTS += [
+            'LayerManagerD3D10.h',
+            'ReadbackManagerD3D10.h',
+        ]
+        EXPORTS.mozilla.layers += [
+            'ShadowLayerUtilsD3D10.h',
+        ]
+
+EXPORTS.gfxipc += [
+    'ShadowLayerUtils.h',
+]
+
+EXPORTS.mozilla.layers += [
+    'AsyncPanZoomController.h',
+    'Axis.h',
+    'CanvasClient.h',
+    'CompositableClient.h',
+    'CompositableTransactionParent.h',
+    'Compositor.h',
+    'CompositorOGL.h',
+    'CompositorTypes.h',
+    'ContentHost.h',
+    'CompositingRenderTargetOGL.h',
+    'CompositorCocoaWidgetHelper.h',
+    'CompositorChild.h',
+    'CompositorParent.h',
+    'CompositableForwarder.h',
+    'ContentClient.h',
+    'Effects.h',
+    'GeckoContentController.h',
+    'GestureEventListener.h',
+    'ImageBridgeChild.h',
+    'ImageBridgeParent.h',
+    'ImageClient.h',
+    'ImageHost.h',
+    'ISurfaceAllocator.h',
+    'LayersTypes.h',
+    'ShadowLayers.h',
+    'ShadowLayersChild.h',
+    'ShadowLayersParent.h',
+    'ShadowLayersManager.h',
+    'RenderTrace.h',
+    'SharedRGBImage.h',
+    'SharedPlanarYCbCrImage.h',
+    'ShmemYCbCrImage.h',
+    'TaskThrottler.h',
+    'TextureClient.h',
+    'TextureHost.h',
+    'TextureClientOGL.h',
+    'TextureHostOGL.h',
+    'TiledContentClient.h',
+]
+
+if CONFIG['MOZ_X11']:
+    EXPORTS.mozilla.layers += [
+        'ShadowLayerUtilsX11.h'
+    ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+    EXPORTS.mozilla.layers += [
+        'ShadowLayerUtilsGralloc.h'
+    ]
--- a/gfx/ots/src/Makefile.in
+++ b/gfx/ots/src/Makefile.in
@@ -73,21 +73,16 @@ CPPSRCS	= \
   vorg.cc \
   gdef.cc \
   gpos.cc \
   gsub.cc \
   graphite.cc \
   svg.cc \
   $(NULL)
 
-EXPORTS = \
-  ../include/opentype-sanitiser.h \
-  ../include/ots-memory-stream.h  \
-  $(NULL)
-
 include $(topsrcdir)/config/rules.mk
 
 DEFINES += -DPACKAGE_VERSION="\"moz\""
 DEFINES += -DPACKAGE_BUGREPORT="\"http://bugzilla.mozilla.org/\""
 DEFINES += -DNOMINMAX
 DEFINES += -DMOZ_OTS_REPORT_ERRORS
 
 ifeq (WINNT,$(OS_TARGET))
--- a/gfx/ots/src/moz.build
+++ b/gfx/ots/src/moz.build
@@ -1,8 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'ots'
 
+EXPORTS += [
+    '../include/opentype-sanitiser.h',
+    '../include/ots-memory-stream.h',
+]
+
--- a/gfx/qcms/Makefile.in
+++ b/gfx/qcms/Makefile.in
@@ -7,18 +7,16 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = mozqcms
 LIBXUL_LIBRARY = 1
 
-EXPORTS      = qcms.h qcmstypes.h
-
 CSRCS = \
   chain.c \
   iccread.c \
   matrix.c \
   transform.c \
   transform_util.c \
   $(NULL)
 
--- a/gfx/qcms/moz.build
+++ b/gfx/qcms/moz.build
@@ -1,8 +1,13 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'qcms'
 
+EXPORTS += [
+    'qcms.h',
+    'qcmstypes.h',
+]
+
--- a/gfx/skia/Makefile.in
+++ b/gfx/skia/Makefile.in
@@ -9,18 +9,16 @@ srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME	= skia
 LIBXUL_LIBRARY  = 1
 EXPORT_LIBRARY  = 1
 
-EXPORTS_NAMESPACES = skia
-
 DEFINES += -DSK_A32_SHIFT=24 -DSK_R32_SHIFT=16 -DSK_G32_SHIFT=8 -DSK_B32_SHIFT=0
 
 LOCAL_INCLUDES += \
 	-I$(srcdir)/include/core \
 	-I$(srcdir)/include/config \
 	-I$(srcdir)/include/gpu \
 	-I$(srcdir)/include/pipe \
 	-I$(srcdir)/include/ports \
@@ -51,157 +49,16 @@ VPATH += \
 	$(srcdir)/src/opts \
 	$(srcdir)/src/effects \
 	$(srcdir)/src/effects/gradients \
 	$(srcdir)/src/utils \
 	$(srcdir)/src/utils/mac \
 	$(srcdir)/src/sfnt \
 	$(NULL)
 
-EXPORTS_skia = \
-	include/core/Sk64.h \
-	include/core/SkAdvancedTypefaceMetrics.h \
-	include/core/SkBitmap.h \
-	include/core/SkBlitRow.h \
-	include/core/SkBounder.h \
-	include/core/SkCanvas.h \
-	include/core/SkChunkAlloc.h \
-	include/core/SkClipStack.h \
-	include/core/SkColor.h \
-	include/core/SkColorFilter.h \
-	include/core/SkColorPriv.h \
-	include/core/SkColorShader.h \
-	include/core/SkColorTable.h \
-	include/core/SkComposeShader.h \
-	include/core/SkData.h \
-	include/core/SkDeque.h \
-	include/core/SkDevice.h \
-	include/core/SkDither.h \
-	include/core/SkDraw.h \
-	include/core/SkDrawFilter.h \
-	include/core/SkDrawLooper.h \
-	include/core/SkEmptyShader.h \
-	include/core/SkEndian.h \
-	include/core/SkFixed.h \
-	include/core/SkFlattenable.h \
-	include/core/SkFloatBits.h \
-	include/core/SkFloatingPoint.h \
-	include/core/SkFontHost.h \
-	include/core/SkGeometry.h \
-	include/core/SkGraphics.h \
-	include/core/SkInstCnt.h \
-	include/core/SkLineClipper.h \
-	include/core/SkMMapStream.h \
-	include/core/SkMallocPixelRef.h \
-	include/core/SkMask.h \
-	include/core/SkMaskFilter.h \
-	include/core/SkMath.h \
-	include/core/SkMatrix.h \
-	include/core/SkMetaData.h \
-	include/core/SkOSFile.h \
-	include/core/SkPackBits.h \
-	include/core/SkPaint.h \
-	include/core/SkPath.h \
-	include/core/SkPathEffect.h \
-	include/core/SkPathMeasure.h \
-	include/core/SkPicture.h \
-	include/core/SkPixelRef.h \
-	include/core/SkPoint.h \
-	include/core/SkPostConfig.h \
-	include/core/SkPreConfig.h \
-	include/core/SkRandom.h \
-	include/core/SkRasterizer.h \
-	include/core/SkReader32.h \
-	include/core/SkRect.h \
-	include/core/SkRefCnt.h \
-	include/core/SkRegion.h \
-	include/core/SkScalar.h \
-	include/core/SkScalarCompare.h \
-	include/core/SkShader.h \
-	include/core/SkSize.h \
-	include/core/SkStream.h \
-	include/core/SkString.h \
-	include/core/SkTArray.h \
-	include/core/SkTDArray.h \
-	include/core/SkTDLinkedList.h \
-	include/core/SkTDStack.h \
-	include/core/SkTDict.h \
-	include/core/SkTLazy.h \
-	include/core/SkTRegistry.h \
-	include/core/SkTScopedPtr.h \
-	include/core/SkTSearch.h \
-	include/core/SkTemplates.h \
-	include/core/SkThread.h \
-	include/core/SkThread_platform.h \
-	include/core/SkTime.h \
-	include/core/SkTrace.h \
-	include/core/SkTypeface.h \
-	include/core/SkTypes.h \
-	include/core/SkUnPreMultiply.h \
-	include/core/SkUnitMapper.h \
-	include/core/SkUtils.h \
-	include/core/SkWeakRefCnt.h \
-	include/core/SkWriter32.h \
-	include/core/SkXfermode.h \
-	include/config/SkUserConfig.h \
-	include/effects/SkDashPathEffect.h \
-	include/effects/SkGradientShader.h \
-	include/effects/SkBlurDrawLooper.h \
-	include/effects/SkBlurMaskFilter.h \
-	include/effects/SkLayerDrawLooper.h \
-	include/effects/SkLayerRasterizer.h \
-	include/effects/SkMorphologyImageFilter.h \
-	include/gpu/GrAARectRenderer.h \
-	include/gpu/GrCacheID.h \
-	include/gpu/GrClipData.h \
-	include/gpu/GrColor.h \
-	include/gpu/GrConfig.h \
-	include/gpu/GrContextFactory.h \
-	include/gpu/GrContext.h \
-	include/gpu/GrCustomStage.h \
-	include/gpu/GrCustomStageUnitTest.h \
-	include/gpu/GrFontScaler.h \
-	include/gpu/GrGlyph.h \
-	include/gpu/GrInstanceCounter.h \
-	include/gpu/GrKey.h \
-	include/gpu/GrMatrix.h \
-	include/gpu/GrNoncopyable.h \
-	include/gpu/GrPaint.h \
-	include/gpu/GrPoint.h \
-	include/gpu/GrProgramStageFactory.h \
-	include/gpu/GrRect.h \
-	include/gpu/GrRefCnt.h \
-	include/gpu/GrRenderTarget.h \
-	include/gpu/GrResource.h \
-	include/gpu/GrSamplerState.h \
-	include/gpu/GrScalar.h \
-	include/gpu/GrSurface.h \
-	include/gpu/GrTextContext.h \
-	include/gpu/GrTextureAccess.h \
-	include/gpu/GrTexture.h \
-	include/gpu/GrTypes.h \
-	include/gpu/GrUserConfig.h \
-	include/gpu/SkGpuCanvas.h \
-	include/gpu/SkGpuDevice.h \
-	include/gpu/SkGr.h \
-	include/gpu/SkGrPixelRef.h \
-	include/gpu/SkGrTexturePixelRef.h \
-	include/gpu/gl/GrGLConfig.h \
-	include/gpu/gl/GrGLFunctions.h \
-	include/gpu/gl/GrGLInterface.h \
-	include/gpu/gl/SkANGLEGLContext.h \
-	include/gpu/gl/SkDebugGLContext.h \
-	include/gpu/gl/SkGLContext.h \
-	include/gpu/gl/SkMesaGLContext.h \
-	include/gpu/gl/SkNativeGLContext.h \
-	include/gpu/gl/SkNullGLContext.h \
-	include/utils/SkDeferredCanvas.h \
-	include/views/SkTextBox.h \
-	$(NULL)
-
 GPU_CPPSRCS = \
 	GrAAConvexPathRenderer.cpp \
 	GrAAHairLinePathRenderer.cpp \
 	GrAARectRenderer.cpp \
 	GrAddPathRenderers_default.cpp \
 	GrAllocPool.cpp \
 	GrAtlas.cpp \
 	GrBufferAllocPool.cpp \
@@ -433,19 +290,16 @@ CPPSRCS = \
 ifdef MOZ_ENABLE_SKIA_GPU
 CPPSRCS += \
 	$(GPU_CPPSRCS) \
 	$(GPU_GL_CPPSRCS) \
 	$(NULL)
 endif
 
 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-EXPORTS_skia += \
-	include/ports/SkTypeface_mac.h \
-	$(NULL)
 CPPSRCS += \
 	SkFontHost_mac_coretext.cpp \
 	SkStream_mac.cpp \
 	SkTime_Unix.cpp \
 	$(NULL)
 endif
 
 ifeq (android,$(MOZ_WIDGET_TOOLKIT))
@@ -501,20 +355,16 @@ endif
 OS_CXXFLAGS += $(MOZ_PANGO_CFLAGS)
 endif
 
 ifeq (Linux,$(OS_TARGET))
 DEFINES += -DSK_USE_POSIX_THREADS=1
 endif
 
 ifeq (windows,$(MOZ_WIDGET_TOOLKIT))
-EXPORTS_skia += \
-	include/config/sk_stdint.h \
-	include/ports/SkTypeface_win.h \
-	$(NULL)
 CPPSRCS += \
 	SkFontHost_win.cpp \
 	SkFontHost_tables.cpp \
 	SkFontHost_sandbox_none.cpp \
 	SkTime_win.cpp \
 	$(NULL)
 DEFINES += -DSKIA_IMPLEMENTATION=1 -DGR_IMPLEMENTATION=1
 endif
--- a/gfx/skia/moz.build
+++ b/gfx/skia/moz.build
@@ -1,8 +1,158 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'skia'
 
+EXPORTS.skia += [
+    'include/config/SkUserConfig.h',
+    'include/core/Sk64.h',
+    'include/core/SkAdvancedTypefaceMetrics.h',
+    'include/core/SkBitmap.h',
+    'include/core/SkBlitRow.h',
+    'include/core/SkBounder.h',
+    'include/core/SkCanvas.h',
+    'include/core/SkChunkAlloc.h',
+    'include/core/SkClipStack.h',
+    'include/core/SkColor.h',
+    'include/core/SkColorFilter.h',
+    'include/core/SkColorPriv.h',
+    'include/core/SkColorShader.h',
+    'include/core/SkColorTable.h',
+    'include/core/SkComposeShader.h',
+    'include/core/SkData.h',
+    'include/core/SkDeque.h',
+    'include/core/SkDevice.h',
+    'include/core/SkDither.h',
+    'include/core/SkDraw.h',
+    'include/core/SkDrawFilter.h',
+    'include/core/SkDrawLooper.h',
+    'include/core/SkEmptyShader.h',
+    'include/core/SkEndian.h',
+    'include/core/SkFixed.h',
+    'include/core/SkFlattenable.h',
+    'include/core/SkFloatBits.h',
+    'include/core/SkFloatingPoint.h',
+    'include/core/SkFontHost.h',
+    'include/core/SkGeometry.h',
+    'include/core/SkGraphics.h',
+    'include/core/SkInstCnt.h',
+    'include/core/SkLineClipper.h',
+    'include/core/SkMMapStream.h',
+    'include/core/SkMallocPixelRef.h',
+    'include/core/SkMask.h',
+    'include/core/SkMaskFilter.h',
+    'include/core/SkMath.h',
+    'include/core/SkMatrix.h',
+    'include/core/SkMetaData.h',
+    'include/core/SkOSFile.h',
+    'include/core/SkPackBits.h',
+    'include/core/SkPaint.h',
+    'include/core/SkPath.h',
+    'include/core/SkPathEffect.h',
+    'include/core/SkPathMeasure.h',
+    'include/core/SkPicture.h',
+    'include/core/SkPixelRef.h',
+    'include/core/SkPoint.h',
+    'include/core/SkPostConfig.h',
+    'include/core/SkPreConfig.h',
+    'include/core/SkRandom.h',
+    'include/core/SkRasterizer.h',
+    'include/core/SkReader32.h',
+    'include/core/SkRect.h',
+    'include/core/SkRefCnt.h',
+    'include/core/SkRegion.h',
+    'include/core/SkScalar.h',
+    'include/core/SkScalarCompare.h',
+    'include/core/SkShader.h',
+    'include/core/SkSize.h',
+    'include/core/SkStream.h',
+    'include/core/SkString.h',
+    'include/core/SkTArray.h',
+    'include/core/SkTDArray.h',
+    'include/core/SkTDLinkedList.h',
+    'include/core/SkTDStack.h',
+    'include/core/SkTDict.h',
+    'include/core/SkTLazy.h',
+    'include/core/SkTRegistry.h',
+    'include/core/SkTScopedPtr.h',
+    'include/core/SkTSearch.h',
+    'include/core/SkTemplates.h',
+    'include/core/SkThread.h',
+    'include/core/SkThread_platform.h',
+    'include/core/SkTime.h',
+    'include/core/SkTrace.h',
+    'include/core/SkTypeface.h',
+    'include/core/SkTypes.h',
+    'include/core/SkUnPreMultiply.h',
+    'include/core/SkUnitMapper.h',
+    'include/core/SkUtils.h',
+    'include/core/SkWeakRefCnt.h',
+    'include/core/SkWriter32.h',
+    'include/core/SkXfermode.h',
+    'include/effects/SkBlurDrawLooper.h',
+    'include/effects/SkBlurMaskFilter.h',
+    'include/effects/SkDashPathEffect.h',
+    'include/effects/SkGradientShader.h',
+    'include/effects/SkLayerDrawLooper.h',
+    'include/effects/SkLayerRasterizer.h',
+    'include/effects/SkMorphologyImageFilter.h',
+    'include/gpu/GrAARectRenderer.h',
+    'include/gpu/GrCacheID.h',
+    'include/gpu/GrClipData.h',
+    'include/gpu/GrColor.h',
+    'include/gpu/GrConfig.h',
+    'include/gpu/GrContext.h',
+    'include/gpu/GrContextFactory.h',
+    'include/gpu/GrCustomStage.h',
+    'include/gpu/GrCustomStageUnitTest.h',
+    'include/gpu/GrFontScaler.h',
+    'include/gpu/GrGlyph.h',
+    'include/gpu/GrInstanceCounter.h',
+    'include/gpu/GrKey.h',
+    'include/gpu/GrMatrix.h',
+    'include/gpu/GrNoncopyable.h',
+    'include/gpu/GrPaint.h',
+    'include/gpu/GrPoint.h',
+    'include/gpu/GrProgramStageFactory.h',
+    'include/gpu/GrRect.h',
+    'include/gpu/GrRefCnt.h',
+    'include/gpu/GrRenderTarget.h',
+    'include/gpu/GrResource.h',
+    'include/gpu/GrSamplerState.h',
+    'include/gpu/GrScalar.h',
+    'include/gpu/GrSurface.h',
+    'include/gpu/GrTextContext.h',
+    'include/gpu/GrTexture.h',
+    'include/gpu/GrTextureAccess.h',
+    'include/gpu/GrTypes.h',
+    'include/gpu/GrUserConfig.h',
+    'include/gpu/SkGpuCanvas.h',
+    'include/gpu/SkGpuDevice.h',
+    'include/gpu/SkGr.h',
+    'include/gpu/SkGrPixelRef.h',
+    'include/gpu/SkGrTexturePixelRef.h',
+    'include/gpu/gl/GrGLConfig.h',
+    'include/gpu/gl/GrGLFunctions.h',
+    'include/gpu/gl/GrGLInterface.h',
+    'include/gpu/gl/SkANGLEGLContext.h',
+    'include/gpu/gl/SkDebugGLContext.h',
+    'include/gpu/gl/SkGLContext.h',
+    'include/gpu/gl/SkMesaGLContext.h',
+    'include/gpu/gl/SkNativeGLContext.h',
+    'include/gpu/gl/SkNullGLContext.h',
+    'include/utils/SkDeferredCanvas.h',
+    'include/views/SkTextBox.h',
+]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    EXPORTS.skia += [
+        'include/ports/SkTypeface_mac.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+    EXPORTS.skia += [
+        'include/config/sk_stdint.h',
+        'include/ports/SkTypeface_win.h',
+    ]
--- a/gfx/src/Makefile.in
+++ b/gfx/src/Makefile.in
@@ -12,45 +12,16 @@ include $(DEPTH)/config/autoconf.mk
 
 MODULE_NAME    = nsGfxModule
 LIBRARY_NAME   = gkgfx
 EXPORT_LIBRARY = 1
 LIBXUL_LIBRARY = 1
 IS_COMPONENT   = 1
 FAIL_ON_WARNINGS = 1
 
-EXPORTS	= \
-	gfxCore.h \
-	gfxCrashReporterUtils.h \
-	nsColor.h \
-	nsColorNames.h \
-	nsColorNameList.h \
-	nsCoord.h \
-	nsFont.h \
-	nsRect.h \
-	nsRegion.h \
-	nsPoint.h \
-	nsSize.h \
-	nsMargin.h \
-	nsTransform2D.h \
-	nsRenderingContext.h \
-	nsFontMetrics.h \
-	nsDeviceContext.h \
-	nsGfxCIID.h \
-	nsITheme.h \
-	nsThemeConstants.h \
-	nsBoundingMetrics.h \
-	$(NULL)
-
-ifdef MOZ_X11
-EXPORTS_NAMESPACES = mozilla
-
-EXPORTS_mozilla	+= X11Util.h
-endif
-
 CPPSRCS = \
         nsColor.cpp \
         nsFont.cpp \
         nsRect.cpp \
         nsRegion.cpp \
         nsTransform2D.cpp \
         nsScriptableRegion.cpp \
         gfxCrashReporterUtils.cpp \
--- a/gfx/src/moz.build
+++ b/gfx/src/moz.build
@@ -6,8 +6,33 @@
 
 XPIDL_SOURCES += [
     'nsIFontEnumerator.idl',
     'nsIScriptableRegion.idl',
 ]
 
 MODULE = 'gfx'
 
+EXPORTS += [
+    'gfxCore.h',
+    'gfxCrashReporterUtils.h',
+    'nsBoundingMetrics.h',
+    'nsColor.h',
+    'nsColorNameList.h',
+    'nsColorNames.h',
+    'nsCoord.h',
+    'nsDeviceContext.h',
+    'nsFont.h',
+    'nsFontMetrics.h',
+    'nsGfxCIID.h',
+    'nsITheme.h',
+    'nsMargin.h',
+    'nsPoint.h',
+    'nsRect.h',
+    'nsRegion.h',
+    'nsRenderingContext.h',
+    'nsSize.h',
+    'nsThemeConstants.h',
+    'nsTransform2D.h',
+]
+
+if CONFIG['MOZ_X11']:
+    EXPORTS.mozilla += ['X11Util.h']
--- a/gfx/thebes/Makefile.in
+++ b/gfx/thebes/Makefile.in
@@ -12,158 +12,22 @@ include $(DEPTH)/config/autoconf.mk
 LIBRARY_NAME	= thebes
 LIBXUL_LIBRARY	= 1
 EXPORT_LIBRARY	= 1
 
 ifndef _MSC_VER
 FAIL_ON_WARNINGS = 1
 endif # !_MSC_VER
 
-EXPORTS	= \
-	gfx2DGlue.h \
-	gfx3DMatrix.h \
-	gfxASurface.h \
-	gfxAlphaRecovery.h \
-	gfxBlur.h \
-	gfxCachedTempSurface.h \
-	gfxColor.h \
-	gfxContext.h \
-	gfxDrawable.h \
-	gfxFailure.h \
-	gfxFont.h \
-	gfxFontConstants.h \
-	gfxFontFeatures.h \
-	gfxFontUtils.h \
-	gfxFontTest.h \
-	gfxImageSurface.h \
-	gfxLineSegment.h \
-	gfxMatrix.h \
-	gfxPath.h \
-	gfxPattern.h \
-	gfxPlatform.h \
-	gfxPoint.h \
-	gfxPoint3D.h \
-	gfxPointH3D.h \
-	gfxQuad.h \
-	gfxQuaternion.h \
-	gfxRect.h \
-	gfxSkipChars.h \
-	gfxTeeSurface.h \
-	gfxTypes.h \
-	gfxUtils.h \
-	gfxUserFontSet.h \
-	nsSurfaceTexture.h \
-	gfxBaseSharedMemorySurface.h \
-	gfxSharedImageSurface.h \
-	gfxSharedQuartzSurface.h \
-	gfxReusableSurfaceWrapper.h \
-	gfxSVGGlyphs.h \
-	RoundedRect.h \
-	$(NULL)
-
 # gfxSVGGlyphs needs nsDOMParser.h
 LOCAL_INCLUDES += \
 	-I$(topsrcdir)/content/base/public \
 	-I$(topsrcdir)/content/xml/document/src \
 	$(NULL)
 
-ifeq ($(MOZ_WIDGET_TOOLKIT),android)
-EXPORTS += \
-	gfxAndroidPlatform.h \
-	gfxFT2Fonts.h \
-	gfxFT2FontBase.h \
-	$(NULL)
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),gonk)
-EXPORTS += \
-	gfxAndroidPlatform.h \
-	gfxFT2Fonts.h \
-	gfxFT2FontBase.h \
-	$(NULL)
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
-EXPORTS += \
-	gfxPlatformMac.h \
-	gfxQuartzSurface.h \
-	gfxQuartzImageSurface.h \
-	gfxQuartzNativeDrawing.h \
-	$(NULL)
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
-EXPORTS += \
-	gfxFT2FontBase.h \
-	gfxGdkNativeRenderer.h \
-	gfxPDFSurface.h \
-	gfxPSSurface.h \
-	gfxPlatformGtk.h \
-	$(NULL)
-
-ifdef MOZ_X11
-EXPORTS += \
-	gfxXlibSurface.h \
-        gfxXlibNativeRenderer.h \
-	$(NULL)
-endif
-
-ifdef MOZ_PANGO
-EXPORTS += gfxPangoFonts.h
-else
-EXPORTS += gfxFT2Fonts.h
-endif
-
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
-EXPORTS	+= \
-	gfxOS2Fonts.h \
-	gfxOS2Platform.h \
-	gfxOS2Surface.h \
-	gfxPDFSurface.h \
-	$(NULL)
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),qt)
-EXPORTS += \
-	gfxFT2FontBase.h \
-	gfxQPainterSurface.h \
-	gfxQtNativeRenderer.h \
-	gfxQtPlatform.h \
-	gfxPDFSurface.h \
-	$(NULL)
-
-ifdef MOZ_X11
-EXPORTS += \
-	gfxXlibSurface.h \
-	$(NULL)
-endif
-
-ifdef MOZ_PANGO
-EXPORTS += gfxPangoFonts.h
-else
-EXPORTS += gfxFT2Fonts.h
-endif
-endif
-
-ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-EXPORTS	+= \
-	gfxPDFSurface.h \
-	gfxWindowsPlatform.h \
-	gfxWindowsSurface.h \
-	gfxWindowsNativeDrawing.h \
-	gfxDWriteFonts.h \
-	gfxD2DSurface.h \
-	gfxGDIFont.h \
-	gfxGDIFontList.h \
-	gfxPlatformFontList.h \
-	$(NULL)
-endif
-
 CPPSRCS	= \
 	gfx3DMatrix.cpp \
 	gfxASurface.cpp \
 	gfxAlphaRecovery.cpp \
 	gfxBlur.cpp \
 	gfxCachedTempSurface.cpp \
 	gfxContext.cpp \
 	gfxDrawable.cpp \
@@ -238,37 +102,31 @@ endif
 ifdef MOZ_ENABLE_D3D10_LAYER
 DEFINES +=	-DMOZ_ENABLE_D3D10_LAYER
 endif
 
 ACDEFINES +=	-UWIN32_LEAN_AND_MEAN
 endif
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),android)
-EXPORTS	+= \
-	gfxPDFSurface.h \
-	$(NULL)
 CPPSRCS += \
 	gfxAndroidPlatform.cpp \
 	gfxFT2Fonts.cpp \
 	gfxFT2FontBase.cpp \
 	gfxFT2Utils.cpp \
 	gfxFT2FontList.cpp \
 	gfxPDFSurface.cpp \
 	nsUnicodeRange.cpp \
 	$(NULL)
 # This is set for "normal Android", that is, when Gecko is running on
 # top of the android java runtime.
 DEFINES +=	-DMOZ_USING_ANDROID_JAVA_WIDGETS
 endif
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),gonk)
-EXPORTS	+= \
-	gfxPDFSurface.h \
-	$(NULL)
 CPPSRCS += \
 	gfxAndroidPlatform.cpp \
 	gfxFT2Fonts.cpp \
 	gfxFT2FontBase.cpp \
 	gfxFT2Utils.cpp \
 	gfxFT2FontList.cpp \
 	gfxPDFSurface.cpp \
 	nsUnicodeRange.cpp \
--- a/gfx/thebes/moz.build
+++ b/gfx/thebes/moz.build
@@ -1,8 +1,127 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'thebes'
 
+EXPORTS += [
+    'RoundedRect.h',
+    'gfx2DGlue.h',
+    'gfx3DMatrix.h',
+    'gfxASurface.h',
+    'gfxAlphaRecovery.h',
+    'gfxBaseSharedMemorySurface.h',
+    'gfxBlur.h',
+    'gfxCachedTempSurface.h',
+    'gfxColor.h',
+    'gfxContext.h',
+    'gfxDrawable.h',
+    'gfxFailure.h',
+    'gfxFont.h',
+    'gfxFontConstants.h',
+    'gfxFontFeatures.h',
+    'gfxFontTest.h',
+    'gfxFontUtils.h',
+    'gfxImageSurface.h',
+    'gfxLineSegment.h',
+    'gfxMatrix.h',
+    'gfxPath.h',
+    'gfxPattern.h',
+    'gfxPlatform.h',
+    'gfxPoint.h',
+    'gfxPoint3D.h',
+    'gfxPointH3D.h',
+    'gfxQuad.h',
+    'gfxQuaternion.h',
+    'gfxRect.h',
+    'gfxReusableSurfaceWrapper.h',
+    'gfxSVGGlyphs.h',
+    'gfxSharedImageSurface.h',
+    'gfxSharedQuartzSurface.h',
+    'gfxSkipChars.h',
+    'gfxTeeSurface.h',
+    'gfxTypes.h',
+    'gfxUserFontSet.h',
+    'gfxUtils.h',
+    'nsSurfaceTexture.h',
+]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
+    EXPORTS += [
+        'gfxAndroidPlatform.h',
+        'gfxFT2Fonts.h',
+        'gfxFT2FontBase.h',
+        'gfxPDFSurface.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+    EXPORTS += [
+        'gfxAndroidPlatform.h',
+        'gfxFT2Fonts.h',
+        'gfxFT2FontBase.h',
+        'gfxPDFSurface.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+    EXPORTS += [
+        'gfxPlatformMac.h',
+        'gfxQuartzSurface.h',
+        'gfxQuartzImageSurface.h',
+        'gfxQuartzNativeDrawing.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2':
+    EXPORTS += [
+        'gfxFT2FontBase.h',
+        'gfxGdkNativeRenderer.h',
+        'gfxPDFSurface.h',
+        'gfxPSSurface.h',
+        'gfxPlatformGtk.h',
+    ]
+
+    if CONFIG['MOZ_X11']:
+        EXPORTS += [
+            'gfxXlibSurface.h',
+            'gfxXlibNativeRenderer.h',
+        ]
+
+    if CONFIG['MOZ_PANGO']:
+        EXPORTS += ['gfxPangoFonts.h']
+    else:
+        EXPORTS += ['gfxFT2Fonts.h']
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'os2':
+    EXPORTS += [
+        'gfxOS2Fonts.h',
+        'gfxOS2Platform.h',
+        'gfxOS2Surface.h',
+        'gfxPDFSurface.h',
+    ]
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt':
+    EXPORTS += [
+        'gfxFT2FontBase.h',
+        'gfxQPainterSurface.h',
+        'gfxQtNativeRenderer.h',
+        'gfxQtPlatform.h',
+        'gfxPDFSurface.h',
+    ]
+
+    if CONFIG['MOZ_X11']:
+        EXPORTS += [
+            'gfxXlibSurface.h',
+        ]
+
+    if CONFIG['MOZ_PANGO']:
+        EXPORTS += ['gfxPangoFonts.h']
+    else:
+        EXPORTS += ['gfxFT2Fonts.h']
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+    EXPORTS += [
+        'gfxPDFSurface.h',
+        'gfxWindowsPlatform.h',
+        'gfxWindowsSurface.h',
+        'gfxWindowsNativeDrawing.h',
+        'gfxDWriteFonts.h',
+        'gfxD2DSurface.h',
+        'gfxGDIFont.h',
+        'gfxGDIFontList.h',
+        'gfxPlatformFontList.h',
+    ]
--- a/gfx/ycbcr/Makefile.in
+++ b/gfx/ycbcr/Makefile.in
@@ -6,22 +6,16 @@ VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME = ycbcr
 LIBXUL_LIBRARY = 1
 EXPORT_LIBRARY = 1
 
 DEFINES += -D_IMPL_NS_GFX
 
-EXPORTS      = chromium_types.h \
-               yuv_convert.h \
-               yuv_row.h \
-               ycbcr_to_rgb565.h \
-               $(NULL)
-
 CPPSRCS = yuv_convert.cpp \
           yuv_row_c.cpp \
           yuv_row_table.cpp \
           ycbcr_to_rgb565.cpp \
           $(NULL)
 
 # Are we targeting x86 or x64?  If so, build yuv_convert_mmx.cpp and
 # yuv_convert_sse2.cpp.
--- a/gfx/ycbcr/moz.build
+++ b/gfx/ycbcr/moz.build
@@ -1,8 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MODULE = 'ycbcr'
 
+EXPORTS += [
+    'chromium_types.h',
+    'ycbcr_to_rgb565.h',
+    'yuv_convert.h',
+    'yuv_row.h',
+]
+
--- a/hal/Makefile.in
+++ b/hal/Makefile.in
@@ -20,26 +20,16 @@ VPATH       = \
 include $(DEPTH)/config/autoconf.mk
 
 LIBRARY_NAME   = hal_s
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 EXPORT_LIBRARY = 1
 FAIL_ON_WARNINGS = 1
 
-EXPORTS_NAMESPACES = mozilla
-EXPORTS_mozilla = \
-  Hal.h \
-  HalImpl.h \
-  HalSandbox.h \
-  HalSensor.h \
-  HalTypes.h \
-  HalWakeLock.h \
-  $(NULL)
-
 CPPSRCS = \
   Hal.cpp \
   SandboxHal.cpp \