Back out ce03cc2994aa:ae9f95fc1136 (bug 896797) for SpiderMonkey shell build bustage
authorPhil Ringnalda <philringnalda@gmail.com>
Tue, 03 Sep 2013 23:21:30 -0700
changeset 159247 28c308fbc854689e8d9a650de78bc10714875839
parent 159246 b23aae5cb0c2a110006db5fbed53e0099464ec4d
child 159248 44b0383e1063e764e090865a1b2b188b47742aee
child 159250 3cf5058f6296272089460ffd710173a8d05abae4
push id407
push userlsblakk@mozilla.com
push dateTue, 03 Dec 2013 03:32:50 +0000
treeherdermozilla-release@babf8c9ebc52 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs896797
milestone26.0a1
backs outce03cc2994aa65f52659354c2816c14cb1ec6ac4
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
Back out ce03cc2994aa:ae9f95fc1136 (bug 896797) for SpiderMonkey shell build bustage CLOSED TREE
Makefile.in
accessible/public/ia2/Makefile.in
accessible/public/ia2/moz.build
accessible/public/msaa/Makefile.in
accessible/public/msaa/moz.build
accessible/src/xpcom/Makefile.in
accessible/src/xpcom/moz.build
dom/bindings/Makefile.in
dom/bindings/moz.build
gfx/cairo/cairo/src/Makefile.in
gfx/cairo/cairo/src/moz.build
gfx/layers/moz.build
js/src/Makefile.in
js/src/moz.build
js/xpconnect/src/Makefile.in
js/xpconnect/src/moz.build
layout/style/Makefile.in
layout/style/moz.build
netwerk/Makefile.in
netwerk/moz.build
python/mozbuild/mozbuild/action/process_install_manifest.py
python/mozbuild/mozbuild/backend/recursivemake.py
python/mozbuild/mozbuild/frontend/data.py
python/mozbuild/mozbuild/frontend/emitter.py
python/mozbuild/mozbuild/test/backend/data/exports/dom1.h
python/mozbuild/mozbuild/test/backend/data/exports/dom2.h
python/mozbuild/mozbuild/test/backend/data/exports/foo.h
python/mozbuild/mozbuild/test/backend/data/exports/gfx.h
python/mozbuild/mozbuild/test/backend/data/exports/mozilla1.h
python/mozbuild/mozbuild/test/backend/data/exports/mozilla2.h
python/mozbuild/mozbuild/test/backend/data/exports/pprio.h
python/mozbuild/mozbuild/test/backend/test_recursivemake.py
toolkit/components/telemetry/Makefile.in
toolkit/components/telemetry/moz.build
uriloader/exthandler/moz.build
xpcom/Makefile.in
xpcom/base/Makefile.in
xpcom/base/moz.build
xpcom/moz.build
--- a/Makefile.in
+++ b/Makefile.in
@@ -57,17 +57,16 @@ ifndef MOZ_PROFILE_USE
 # necessary. To manage new directories or add files to the manifests,
 # modify the backend generator.
 #
 # We need to explicitly put backend.RecursiveMakeBackend.built here
 # otherwise the rule in rules.mk doesn't run early enough.
 default alldep all:: CLOBBER $(topsrcdir)/configure config.status backend.RecursiveMakeBackend.built
 	$(call SUBMAKE,backend.RecursiveMakeBackend.built,js/src,1)
 	$(call py_action,purge_manifests,-d _build_manifests/purge .)
-	$(call py_action,process_install_manifest,$(DIST)/include _build_manifests/install/dist_include js/src/_build_manifests/install/dist_include)
 endif
 
 CLOBBER: $(topsrcdir)/CLOBBER
 	@echo "STOP!  The CLOBBER file has changed."
 	@echo "Please run the build through a sanctioned build wrapper, such as"
 	@echo "'mach build' or client.mk."
 	@exit 1
 
--- a/accessible/public/ia2/Makefile.in
+++ b/accessible/public/ia2/Makefile.in
@@ -62,21 +62,16 @@ MIDL_GENERATED_FILES = \
   $(MIDL_INTERFACES:%.idl=%_p.c) \
   $(MIDL_INTERFACES:%.idl=%_i.c) \
   $(MIDL_INTERFACES:%.idl=%.h) \
   $(MIDL_ENUMS:%.idl=%.h) \
   $(NULL)
 
 EMBED_MANIFEST_AT = 2
 
-INSTALL_TARGETS += midl
-midl_FILES := $(filter %.h %_i.c,$(MIDL_GENERATED_FILES))
-midl_DEST = $(DIST)/include
-midl_TARGET := export
-
 include $(topsrcdir)/config/rules.mk
 
 OS_LIBS = $(call EXPAND_LIBNAME,uuid kernel32 rpcns4 rpcrt4 ole32 oleaut32)
 
 # generate list of to-be-generated files that are missing
 # but ignore special file dlldata.c
 missing:=$(strip $(foreach onefile,$(strip $(subst dlldata.c,,$(MIDL_GENERATED_FILES))),$(if $(wildcard $(onefile)),,$(onefile))))
 
--- a/accessible/public/ia2/moz.build
+++ b/accessible/public/ia2/moz.build
@@ -1,9 +1,53 @@
 # -*- 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',
+    'Accessible2_2',
+    'AccessibleAction',
+    'AccessibleApplication',
+    'AccessibleComponent',
+    'AccessibleDocument',
+    'AccessibleEditableText',
+    'AccessibleHyperlink',
+    'AccessibleHypertext',
+    'AccessibleHypertext2',
+    'AccessibleImage',
+    'AccessibleRelation',
+    'AccessibleTable',
+    'AccessibleTable2',
+    'AccessibleTableCell',
+    'AccessibleText',
+    'AccessibleText2',
+    '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',
+]
+
+headers = ['%s.h' % x for x in midl_enums]
+interfaces_h = ['%s.h' % x for x in midl_interfaces]
+interfaces_c = ['%s_i.c' % x for x in midl_interfaces]
+
+# The underscore throws off sorting and EXPORTS expects sorted lists.
+interfaces_c.sort()
+
+EXPORTS += headers
+EXPORTS += interfaces_h
+EXPORTS += interfaces_c
+
 LIBRARY_NAME = 'IA2Marshal'
 
--- a/accessible/public/msaa/Makefile.in
+++ b/accessible/public/msaa/Makefile.in
@@ -55,24 +55,10 @@ done_gen: ISimpleDOMNode.idl \
 export:: done_gen
 
 # This marshall dll is also registered in the installer
 register::
 	regsvr32 -s $(DIST)/bin/$(SHARED_LIBRARY)
 
 EMBED_MANIFEST_AT = 2
 
-midl_exports := \
-    ISimpleDOMDocument.h \
-    ISimpleDOMDocument_i.c \
-    ISimpleDOMNode.h \
-    ISimpleDOMNode_i.c \
-    ISimpleDOMText.h \
-    ISimpleDOMText_i.c \
-    $(NULL)
-
-INSTALL_TARGETS += midl_exports
-midl_exports_FILES := $(midl_exports)
-midl_exports_DEST = $(DIST)/include
-midl_exports_TARGET := export
-
 include $(topsrcdir)/config/rules.mk
 
--- a/accessible/public/msaa/moz.build
+++ b/accessible/public/msaa/moz.build
@@ -1,10 +1,19 @@
 # -*- 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',
+]
+
 LIBRARY_NAME = 'AccessibleMarshal'
 
--- a/accessible/src/xpcom/Makefile.in
+++ b/accessible/src/xpcom/Makefile.in
@@ -6,21 +6,16 @@ DEPTH = @DEPTH@
 topsrcdir = @top_srcdir@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 EXTRA_MDDEPEND_FILES = xpcAccEvents.pp
 
-INSTALL_TARGETS += xpcaccevents
-xpcaccevents_FILES := xpcAccEvents.h
-xpcaccevents_DEST = $(DIST)/include
-xpcaccevents_TARGET := export
-
 include $(topsrcdir)/config/rules.mk
 
 LOCAL_INCLUDES = \
   -I$(srcdir)/../base \
   -I$(srcdir)/../generic \
   $(NULL)
 
 ifdef MOZ_ENABLE_GTK
--- a/accessible/src/xpcom/moz.build
+++ b/accessible/src/xpcom/moz.build
@@ -1,16 +1,20 @@
 # -*- 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',
+]
+
 CPP_SOURCES += [
     'nsAccessibleRelation.cpp',
     'xpcAccEvents.cpp',
     'xpcAccessibleTable.cpp',
     'xpcAccessibleTableCell.cpp',
 ]
 
 LIBRARY_NAME = 'accessibility_xpcom_s'
--- a/dom/bindings/Makefile.in
+++ b/dom/bindings/Makefile.in
@@ -105,17 +105,16 @@ EXPORTS_GENERATED_FILES := $(exported_bi
 EXPORTS_GENERATED_DEST := $(DIST)/include/$(binding_include_path)
 EXPORTS_GENERATED_TARGET := export
 INSTALL_TARGETS += EXPORTS_GENERATED
 
 # Install auto-generated GlobalGen files. The rules for the install must
 # be in the same target/subtier as GlobalGen.py, otherwise the files will not
 # get installed into the appropriate location as they are generated.
 globalgen_headers_FILES := \
-  GeneratedAtomList.h \
   PrototypeList.h \
   RegisterBindings.h \
   UnionConversions.h \
   UnionTypes.h \
   $(NULL)
 globalgen_headers_DEST = $(DIST)/include/mozilla/dom
 globalgen_headers_TARGET := webidl
 INSTALL_TARGETS += globalgen_headers
--- a/dom/bindings/moz.build
+++ b/dom/bindings/moz.build
@@ -16,16 +16,17 @@ EXPORTS.mozilla.dom += [
     'BindingUtils.h',
     'CallbackFunction.h',
     'CallbackInterface.h',
     'CallbackObject.h',
     'DOMJSClass.h',
     'DOMJSProxyHandler.h',
     'Date.h',
     'Errors.msg',
+    'GeneratedAtomList.h',
     'JSSlots.h',
     'NonRefcountedDOMObject.h',
     'Nullable.h',
     'PrimitiveConversions.h',
     'TypedArray.h',
 ]
 
 FAIL_ON_WARNINGS = True
--- a/gfx/cairo/cairo/src/Makefile.in
+++ b/gfx/cairo/cairo/src/Makefile.in
@@ -88,21 +88,16 @@ endif
 
 ifdef MOZ_ENABLE_CAIRO_FT
 CSRCS   += cairo-ft-font.c cairo-type1-subset.c
 OS_INCLUDES += $(CAIRO_FT_CFLAGS)
 endif
 
 LOCAL_INCLUDES  += -I$(srcdir)
 
-INSTALL_TARGETS += cairo_features
-cairo_features_FILES := cairo-features.h
-cairo_features_DEST = $(DIST)/include/cairo
-cairo_features_TARGET := export
-
 include $(topsrcdir)/config/rules.mk
 
 ifdef GNU_CC
 # Disable spammy "missing initializer" GCC warning
 CFLAGS += -Wno-missing-field-initializers
 
 # Disable spammy "implicit conversion from enumeration type 'cairo_" warnings.
 CFLAGS += -Wno-conversion
--- a/gfx/cairo/cairo/src/moz.build
+++ b/gfx/cairo/cairo/src/moz.build
@@ -5,16 +5,17 @@
 # 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':
--- a/gfx/layers/moz.build
+++ b/gfx/layers/moz.build
@@ -48,18 +48,18 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wind
         'D3D9SurfaceImage.cpp',
     ]
     if CONFIG['MOZ_ENABLE_D3D9_LAYER']:
         EXPORTS += [
             'd3d9/DeviceManagerD3D9.h',
             'd3d9/LayerManagerD3D9.h',
         ]
         EXPORTS.mozilla.layers += [
-            'd3d9/CompositorD3D9.h',
-            'd3d9/TextureD3D9.h',
+            'CompositorD3D9.h',
+            'TextureD3D9.h',
         ]
         CPP_SOURCES += [
             'CompositorD3D9.cpp',
             'TextureD3D9.cpp',
             'LayerManagerD3D9.cpp',
             'ThebesLayerD3D9.cpp',
             'ContainerLayerD3D9.cpp',
             'ImageLayerD3D9.cpp',
@@ -95,16 +95,18 @@ EXPORTS.gfxipc += [
     'ipc/ShadowLayerUtils.h',
 ]
 
 EXPORTS.mozilla.layers += [
     'Compositor.h',
     'CompositorTypes.h',
     'D3D9SurfaceImage.h',
     'Effects.h',
+    'GrallocTextureClient.h',
+    'GrallocTextureHost.h',
     'ImageDataSerializer.h',
     'LayersTypes.h',
     'RenderTrace.h',
     'YCbCrImageDataSerializer.h',
     'basic/BasicCompositor.h',
     'client/CanvasClient.h',
     'client/CompositableClient.h',
     'client/ContentClient.h',
@@ -138,18 +140,16 @@ EXPORTS.mozilla.layers += [
     'ipc/LayerTransactionParent.h',
     'ipc/ShadowLayers.h',
     'ipc/ShadowLayersManager.h',
     'ipc/SharedPlanarYCbCrImage.h',
     'ipc/SharedRGBImage.h',
     'ipc/TaskThrottler.h',
     'opengl/CompositingRenderTargetOGL.h',
     'opengl/CompositorOGL.h',
-    'opengl/GrallocTextureClient.h',
-    'opengl/GrallocTextureHost.h',
     'opengl/TextureClientOGL.h',
     'opengl/TextureHostOGL.h',
 ]
 
 if CONFIG['MOZ_X11']:
     EXPORTS.mozilla.layers += [
         'ipc/ShadowLayerUtilsX11.h',
     ]
--- a/js/src/Makefile.in
+++ b/js/src/Makefile.in
@@ -172,17 +172,16 @@ USE_HOST_CXX = 1
 ifdef HAVE_DTRACE
 ifneq ($(OS_ARCH),Darwin)
 DTRACE_PROBE_OBJ = $(LIBRARY_NAME)-dtrace.$(OBJ_SUFFIX)
 endif
 MOZILLA_DTRACE_SRC = $(srcdir)/devtools/javascript-trace.d
 endif
 
 default::
-	$(call py_action,process_install_manifest,$(if $(JS_STANDALONE),,--no-remove) $(DIST)/include _build_manifests/install/dist_include)
 
 ifneq (,$(CROSS_COMPILE)$(filter-out WINNT OS2,$(OS_ARCH)))
 # nsinstall doesn't get built until we enter config/ in the exports phase,
 # so we'll have to manually ensure it gets built here if we want to use
 # $(EXPORTS)
 export:: config/nsinstall$(HOST_BIN_SUFFIX)
 $(PUBLIC) $(SDK_PUBLIC): config/nsinstall$(HOST_BIN_SUFFIX)
 
@@ -197,26 +196,16 @@ EXTRA_DSO_LDOPTS += -Wl,-version-script,
 
 symverscript: symverscript.in
 	$(PYTHON) $(topsrcdir)/config/Preprocessor.py \
 		-DVERSION="$(subst -,_,$(LIBRARY_NAME))" $< > $@
 
 EXTRA_DEPS += symverscript
 endif
 
-export_files = js-config.h
-ifdef HAVE_DTRACE
-export_files += $(CURDIR)/javascript-trace.h
-endif
-
-INSTALL_TARGETS += jsconfig
-jsconfig_FILES = $(export_files)
-jsconfig_DEST = $(DIST)/include
-jsconfig_TARGETS := export
-
 include $(topsrcdir)/config/rules.mk
 
 ifdef JS_HAS_CTYPES
 ifndef MOZ_NATIVE_FFI
 # Build libffi proper as part of the 'exports' target, so things get built
 # in the right order.
 export::
 		$(call SUBMAKE,,ctypes/libffi)
--- a/js/src/moz.build
+++ b/js/src/moz.build
@@ -26,16 +26,17 @@ else:
     LIBRARY_NAME = 'mozjs'
 
 CONFIGURE_SUBST_FILES += ['devtools/rootAnalysis/Makefile']
 
 # Changes to internal header files, used externally, massively slow down
 # browser builds.  Don't add new files here unless you know what you're
 # doing!
 EXPORTS += [
+    'js-config.h',
     'js.msg',
     'jsalloc.h',
     'jsapi.h',
     'jsbytecode.h',
     'jsclist.h',
     'jscpucfg.h',
     'jsfriendapi.h',
     'jsprf.h',
@@ -43,16 +44,21 @@ EXPORTS += [
     'jsproxy.h',
     'jspubtd.h',
     'jstypes.h',
     'jsversion.h',
     'jswrapper.h',
     'perf/jsperf.h',
 ]
 
+if CONFIG['HAVE_DTRACE']:
+    EXPORTS += [
+        '$(CURDIR)/javascript-trace.h',
+    ]
+
 # If you add a header here, add it to js/src/jsapi-tests/testIntTypesABI.cpp so
 # that we ensure we don't over-expose our internal integer typedefs.  Note that
 # LegacyIntTypes.h below is deliberately exempted from this requirement.
 EXPORTS.js += [
     '../public/Anchor.h',
     '../public/CallArgs.h',
     '../public/CallNonGenericMethod.h',
     '../public/CharacterEncoding.h',
--- a/js/xpconnect/src/Makefile.in
+++ b/js/xpconnect/src/Makefile.in
@@ -35,25 +35,16 @@ endif
 
 SHARED_LIBRARY_LIBS = \
   ../loader/$(LIB_PREFIX)jsloader_s.$(LIB_SUFFIX) \
   ../wrappers/$(LIB_PREFIX)xpcwrappers_s.$(LIB_SUFFIX) \
   $(NULL)
 
 EXTRA_MDDEPEND_FILES = dom_qsgen.pp dictionary_helper_gen.pp event_impl_gen.pp
 
-INSTALL_TARGETS += extra_export_files
-extra_export_files_FILES := \
-  DictionaryHelpers.h \
-  GeneratedEventClasses.h \
-  GeneratedEvents.h \
-  $(NULL)
-extra_export_files_DEST = $(DIST)/include
-extra_export_files_TARGET := export
-
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 DEFINES += \
   -DJSFILE \
   -DJS_THREADSAFE \
   -DEXPORT_XPC_API \
   $(NULL)
@@ -151,16 +142,24 @@ GeneratedEvents-webidl: event_impl_gen.c
 	$(PYTHON) $(topsrcdir)/config/pythonpath.py \
 	  $(PLY_INCLUDE) \
 	  -I$(LIBXUL_DIST)/sdk/bin \
 	  $(srcdir)/event_impl_gen.py \
 	  -I $(DEPTH)/dist/idl \
 	  --webidltarget=$(top_srcdir)/dom/webidl \
 	  event_impl_gen.conf
 
+_EXTRA_EXPORT_FILES = \
+  DictionaryHelpers.h \
+  GeneratedEventClasses.h \
+  $(NULL)
+
+libs:: $(_EXTRA_EXPORT_FILES)
+	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/dist/include
+
 GARBAGE += \
 		dom_quickstubs.h \
 		dom_quickstubs.cpp \
 		DictionaryHelpers.h \
 		DictionaryHelpers.cpp \
 		GeneratedEvents.h \
 		GeneratedEvents.cpp \
 		GeneratedEventClasses.h \
--- a/js/xpconnect/src/moz.build
+++ b/js/xpconnect/src/moz.build
@@ -3,16 +3,17 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.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 = 'xpconnect'
 
 EXPORTS += [
     'BackstagePass.h',
+    'GeneratedEvents.h',
     'XPCJSMemoryReporter.h',
     'nsCxPusher.h',
     'qsObjectHelper.h',
     'xpcObjectHelper.h',
     'xpcpublic.h',
 ]
 
 CPP_SOURCES += [
--- a/layout/style/Makefile.in
+++ b/layout/style/Makefile.in
@@ -9,21 +9,16 @@ VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 ifdef GNU_CC
 OS_CFLAGS := $(OS_CFLAGS) -Wshadow
 OS_CXXFLAGS := $(OS_CXXFLAGS) -Wshadow
 endif
 
-INSTALL_TARGETS += structlist
-structlist_FILES := nsStyleStructList.h
-structlist_DEST = $(DIST)/include
-structlist_TARGET := export
-
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 LOCAL_INCLUDES	+= \
 		-I$(srcdir)/../base \
 		-I$(topsrcdir)/dom/base \
 		-I$(srcdir)/../generic \
 		-I$(srcdir)/../xul/base/src \
--- a/layout/style/moz.build
+++ b/layout/style/moz.build
@@ -49,16 +49,17 @@ EXPORTS += [
     'nsStyleAnimation.h',
     'nsStyleConsts.h',
     'nsStyleContext.h',
     'nsStyleCoord.h',
     'nsStyleSet.h',
     'nsStyleStruct.h',
     'nsStyleStructFwd.h',
     'nsStyleStructInlines.h',
+    'nsStyleStructList.h',
     'nsStyleTransformMatrix.h',
     'nsStyleUtil.h',
 ]
 
 EXPORTS.mozilla.dom += [
     'CSS.h',
     'CSSValue.h',
 ]
deleted file mode 100644
--- a/netwerk/Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH := @DEPTH@
-topsrcdir := @top_srcdir@
-srcdir := @srcdir@
-VPATH := @srcdir@
-
-INSTALL_TARGETS += neckoconfig
-neckoconfig_FILES := necko-config.h
-neckoconfig_DEST = $(DIST)/include
-neckoconfig_TARGET := export
-
-include $(topsrcdir)/config/rules.mk
--- a/netwerk/moz.build
+++ b/netwerk/moz.build
@@ -30,8 +30,13 @@ PARALLEL_DIRS += ['locales']
 
 if CONFIG['MOZ_DASH']:
     PARALLEL_DIRS += ['dash']
 
 DIRS += ['build']
 TEST_TOOL_DIRS += ['test']
 
 MODULE = 'necko'
+
+EXPORTS += [
+    'necko-config.h',
+]
+
--- a/python/mozbuild/mozbuild/action/process_install_manifest.py
+++ b/python/mozbuild/mozbuild/action/process_install_manifest.py
@@ -8,37 +8,34 @@ import argparse
 from mozpack.copier import FileCopier
 from mozpack.manifests import InstallManifest
 
 
 COMPLETE = 'From {dest}: Kept {existing} existing; Added/updated {updated}; ' \
     'Removed {rm_files} files and {rm_dirs} directories.'
 
 
-def process_manifest(destdir, paths, remove_unaccounted=True):
+def process_manifest(destdir, *paths):
     manifest = InstallManifest()
     for path in paths:
         manifest |= InstallManifest(path=path)
 
     copier = FileCopier()
     manifest.populate_registry(copier)
-    return copier.copy(destdir, remove_unaccounted=remove_unaccounted)
+    return copier.copy(destdir)
 
 
 if __name__ == '__main__':
     parser = argparse.ArgumentParser(
         description='Process install manifest files.')
 
     parser.add_argument('destdir', help='Destination directory.')
     parser.add_argument('manifests', nargs='+', help='Path to manifest file(s).')
-    parser.add_argument('--no-remove', action='store_true',
-        help='Do not remove unaccounted files from destination.')
 
     args = parser.parse_args()
 
-    result = process_manifest(args.destdir, args.manifests,
-        remove_unaccounted=not args.no_remove)
+    result = process_manifest(args.destdir, *args.manifests)
 
     print(COMPLETE.format(dest=args.destdir,
         existing=result.existing_files_count,
         updated=result.updated_files_count,
         rm_files=result.removed_files_count,
         rm_dirs=result.removed_directories_count))
--- a/python/mozbuild/mozbuild/backend/recursivemake.py
+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
@@ -144,28 +144,30 @@ class RecursiveMakeBackend(CommonBackend
         self.summary.backend_detailed_summary = types.MethodType(detailed,
             self.summary)
 
         self.xpcshell_manifests = []
 
         self.backend_input_files.add(os.path.join(self.environment.topobjdir,
             'config', 'autoconf.mk'))
 
+        self._install_manifests = dict()
+
         self._purge_manifests = dict(
             dist_bin=PurgeManifest(relpath='dist/bin'),
+            dist_include=PurgeManifest(relpath='dist/include'),
             dist_private=PurgeManifest(relpath='dist/private'),
             dist_public=PurgeManifest(relpath='dist/public'),
             dist_sdk=PurgeManifest(relpath='dist/sdk'),
             tests=PurgeManifest(relpath='_tests'),
             xpidl=PurgeManifest(relpath='config/makefiles/xpidl'),
         )
 
         self._install_manifests = dict(
             dist_idl=InstallManifest(),
-            dist_include=InstallManifest(),
         )
 
     def _update_from_avoid_write(self, result):
         existed, updated = result
 
         if not existed:
             self.summary.created_count += 1
         elif updated:
@@ -201,17 +203,17 @@ class RecursiveMakeBackend(CommonBackend
                     for item in v:
                         backend_file.write('%s += %s\n' % (k, item))
                 elif isinstance(v, bool):
                     if v:
                         backend_file.write('%s := 1\n' % k)
                 else:
                     backend_file.write('%s := %s\n' % (k, v))
         elif isinstance(obj, Exports):
-            self._process_exports(obj, obj.exports, backend_file)
+            self._process_exports(obj.exports, backend_file)
 
         elif isinstance(obj, IPDLFile):
             self._ipdl_sources.add(mozpath.join(obj.srcdir, obj.basename))
 
         elif isinstance(obj, Program):
             self._process_program(obj.program, backend_file)
 
         elif isinstance(obj, XpcshellManifests):
@@ -360,51 +362,51 @@ class RecursiveMakeBackend(CommonBackend
 
         if len(obj.external_make_dirs):
             fh.write('DIRS += %s\n' % ' '.join(obj.external_make_dirs))
 
         if len(obj.parallel_external_make_dirs):
             fh.write('PARALLEL_DIRS += %s\n' %
                 ' '.join(obj.parallel_external_make_dirs))
 
-    def _process_exports(self, obj, exports, backend_file, namespace=""):
-        # This may not be needed, but is present for backwards compatibility
-        # with the old make rules, just in case.
-        if not obj.dist_install:
-            return
-
+    def _process_exports(self, exports, backend_file, namespace=""):
         strings = exports.get_strings()
         if namespace:
+            if strings:
+                backend_file.write('EXPORTS_NAMESPACES += %s\n' % namespace)
+            export_name = 'EXPORTS_%s' % namespace
             namespace += '/'
+        else:
+            export_name = 'EXPORTS'
 
-        for s in strings:
-            source = os.path.normpath(os.path.join(obj.srcdir, s))
-            dest = '%s%s' % (namespace, os.path.basename(s))
-            self._install_manifests['dist_include'].add_symlink(source, dest)
+        # Iterate over the list of export filenames, printing out an EXPORTS
+        # declaration for each.
+        if strings:
+            backend_file.write('%s += %s\n' % (export_name, ' '.join(strings)))
 
-            if not os.path.exists(source):
-                raise Exception('File listed in EXPORTS does not exist: %s' % source)
+            for s in strings:
+                p = '%s%s' % (namespace, s)
+                self._purge_manifests['dist_include'].add(p)
 
         children = exports.get_children()
         for subdir in sorted(children):
-            self._process_exports(obj, children[subdir], backend_file,
-                namespace=namespace + subdir)
+            self._process_exports(children[subdir], backend_file,
+                                  namespace=namespace + subdir)
 
     def _handle_idl_manager(self, manager):
         build_files = self._purge_manifests['xpidl']
 
         for p in ('Makefile', 'backend.mk', '.deps/.mkdir.done',
             'headers/.mkdir.done', 'xpt/.mkdir.done'):
             build_files.add(p)
 
         for idl in manager.idls.values():
             self._install_manifests['dist_idl'].add_symlink(idl['source'],
                 idl['basename'])
-            self._install_manifests['dist_include'].add_optional_exists('%s.h'
-                % idl['root'])
+            self._purge_manifests['dist_include'].add('%s.h' % idl['root'])
             build_files.add(mozpath.join('headers', '%s.h' % idl['root']))
 
         for module in manager.modules:
             build_files.add(mozpath.join('xpt', '%s.xpt' % module))
             build_files.add(mozpath.join('.deps', '%s.pp' % module))
 
         headers = sorted('%s.h' % idl['root'] for idl in manager.idls.values())
         modules = manager.modules
--- a/python/mozbuild/mozbuild/frontend/data.py
+++ b/python/mozbuild/mozbuild/frontend/data.py
@@ -156,23 +156,21 @@ class XPIDLFile(SandboxDerived):
 
 class Exports(SandboxDerived):
     """Sandbox container object for EXPORTS, which is a HierarchicalStringList.
 
     We need an object derived from SandboxDerived for use in the backend, so
     this object fills that role. It just has a reference to the underlying
     HierarchicalStringList, which is created when parsing EXPORTS.
     """
-    __slots__ = ('exports', 'dist_install')
+    __slots__ = ('exports')
 
-    def __init__(self, sandbox, exports, dist_install=True):
+    def __init__(self, sandbox, exports):
         SandboxDerived.__init__(self, sandbox)
         self.exports = exports
-        self.dist_install = dist_install
-
 
 class IPDLFile(SandboxDerived):
     """Describes an individual .ipdl source file."""
 
     __slots__ = (
         'basename',
     )
 
--- a/python/mozbuild/mozbuild/frontend/emitter.py
+++ b/python/mozbuild/mozbuild/frontend/emitter.py
@@ -149,18 +149,17 @@ class TreeMetadataEmitter(LoggingMixin):
             if sandbox[moz]:
                 passthru.variables[mak] = sandbox[moz]
 
         if passthru.variables:
             yield passthru
 
         exports = sandbox.get('EXPORTS')
         if exports:
-            yield Exports(sandbox, exports,
-                dist_install=not sandbox.get('NO_DIST_INSTALL', False))
+            yield Exports(sandbox, exports)
 
         program = sandbox.get('PROGRAM')
         if program:
             yield Program(sandbox, program, sandbox['CONFIG']['BIN_SUFFIX'])
 
         for manifest in sandbox.get('XPCSHELL_TESTS_MANIFESTS', []):
             yield XpcshellManifests(sandbox, manifest)
 
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
--- a/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
+++ b/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
@@ -229,26 +229,43 @@ class TestRecursiveMakeBackend(BackendTe
         }
 
         for var, val in expected.items():
             # print("test_variable_passthru[%s]" % (var))
             found = [str for str in lines if str.startswith(var)]
             self.assertEqual(found, val)
 
     def test_exports(self):
-        """Ensure EXPORTS is handled properly."""
+        """Ensure EXPORTS is written out correctly."""
         env = self._consume('exports', RecursiveMakeBackend)
 
-        # EXPORTS files should appear in the dist_include install manifest.
-        m = InstallManifest(path=os.path.join(env.topobjdir,
-            '_build_manifests', 'install', 'dist_include'))
-        self.assertEqual(len(m), 7)
-        self.assertIn('foo.h', m)
-        self.assertIn('mozilla/mozilla1.h', m)
-        self.assertIn('mozilla/dom/dom2.h', m)
+        backend_path = os.path.join(env.topobjdir, 'backend.mk')
+        lines = [l.strip() for l in open(backend_path, 'rt').readlines()[2:]]
+
+        self.assertEqual(lines, [
+            'MOZBUILD_DERIVED := 1',
+            'NO_MAKEFILE_RULE := 1',
+            'NO_SUBMAKEFILES_RULE := 1',
+            'EXPORTS += foo.h',
+            'EXPORTS_NAMESPACES += mozilla',
+            'EXPORTS_mozilla += mozilla1.h mozilla2.h',
+            'EXPORTS_NAMESPACES += mozilla/dom',
+            'EXPORTS_mozilla/dom += dom1.h dom2.h',
+            'EXPORTS_NAMESPACES += mozilla/gfx',
+            'EXPORTS_mozilla/gfx += gfx.h',
+            'EXPORTS_NAMESPACES += nspr/private',
+            'EXPORTS_nspr/private += pprio.h',
+        ])
+
+        # EXPORTS files should appear in the dist_include purge manifest.
+        m = PurgeManifest(path=os.path.join(env.topobjdir,
+            '_build_manifests', 'purge', 'dist_include'))
+        self.assertIn('foo.h', m.entries)
+        self.assertIn('mozilla/mozilla1.h', m.entries)
+        self.assertIn('mozilla/dom/dom2.h', m.entries)
 
     def test_xpcshell_manifests(self):
         """Ensure XPCSHELL_TESTS_MANIFESTS is written out correctly."""
         env = self._consume('xpcshell_manifests', RecursiveMakeBackend)
 
         backend_path = os.path.join(env.topobjdir, 'backend.mk')
         lines = [l.strip() for l in open(backend_path, 'rt').readlines()[2:]]
 
@@ -275,18 +292,18 @@ class TestRecursiveMakeBackend(BackendTe
         self.assertIn('.deps/my_module.pp', m.entries)
         self.assertIn('xpt/my_module.xpt', m.entries)
 
         m = InstallManifest(path=os.path.join(install_dir, 'dist_idl'))
         self.assertEqual(len(m), 2)
         self.assertIn('bar.idl', m)
         self.assertIn('foo.idl', m)
 
-        m = InstallManifest(path=os.path.join(install_dir, 'dist_include'))
-        self.assertIn('foo.h', m)
+        m = PurgeManifest(path=os.path.join(purge_dir, 'dist_include'))
+        self.assertIn('foo.h', m.entries)
 
         p = os.path.join(env.topobjdir, 'config/makefiles/xpidl')
         self.assertTrue(os.path.isdir(p))
 
         self.assertTrue(os.path.isfile(os.path.join(p, 'Makefile')))
 
     def test_xpcshell_master_manifest(self):
         """Ensure that the master xpcshell manifest is written out correctly."""
@@ -303,16 +320,17 @@ class TestRecursiveMakeBackend(BackendTe
     def test_purge_manifests_written(self):
         env = self._consume('stub0', RecursiveMakeBackend)
 
         purge_dir = os.path.join(env.topobjdir, '_build_manifests', 'purge')
         self.assertTrue(os.path.exists(purge_dir))
 
         expected = [
             'dist_bin',
+            'dist_include',
             'dist_private',
             'dist_public',
             'dist_sdk',
             'tests',
         ]
 
         for e in expected:
             full = os.path.join(purge_dir, e)
--- a/toolkit/components/telemetry/Makefile.in
+++ b/toolkit/components/telemetry/Makefile.in
@@ -25,21 +25,16 @@ ifdef MOZILLA_OFFICIAL
 DEFINES += -DMOZILLA_OFFICIAL
 endif
 
 MOZ_HISTOGRAMS_VERSION ?= $(call getSourceRepo)/rev/$(firstword $(shell hg -R $(topsrcdir) parent --template="{node|short}\n" 2>/dev/null))
 ifdef MOZ_HISTOGRAMS_VERSION
 DEFINES += -DHISTOGRAMS_FILE_VERSION="$(MOZ_HISTOGRAMS_VERSION)"
 endif
 
-INSTALL_TARGETS += histoenums
-histoenums_FILES := TelemetryHistogramEnums.h
-histoenums_DEST = $(DIST)/include/mozilla
-histoenums_TARGET := export
-
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 histograms_file := $(srcdir)/Histograms.json
 histogram_enum_file := TelemetryHistogramEnums.h
 histogram_data_file := TelemetryHistogramData.inc
 
 enum_python_deps := \
--- a/toolkit/components/telemetry/moz.build
+++ b/toolkit/components/telemetry/moz.build
@@ -11,16 +11,17 @@ XPIDL_SOURCES += [
     'nsITelemetryPing.idl',
 ]
 
 MODULE = 'telemetry'
 
 EXPORTS.mozilla += [
     'ProcessedStack.h',
     'Telemetry.h',
+    'TelemetryHistogramEnums.h',
 ]
 
 CPP_SOURCES += [
     'Telemetry.cpp',
 ]
 
 EXTRA_COMPONENTS += [
     'TelemetryPing.manifest',
--- a/uriloader/exthandler/moz.build
+++ b/uriloader/exthandler/moz.build
@@ -37,24 +37,22 @@ EXPORTS += [
 ]
 
 EXPORTS += [
     'nsExternalHelperAppService.h',
 ]
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
     EXPORTS += [
-        osdir + '/nsExternalSharingAppService.h',
-        osdir + '/nsExternalURLHandlerService.h',
+        'nsExternalSharingAppService.h',
+        'nsExternalURLHandlerService.h',
     ]
 
 if CONFIG['MOZ_ENABLE_MEEGOTOUCHSHARE']:
-    EXPORTS += [
-        osdir + '/nsExternalSharingAppService.h',
-    ]
+    EXPORTS += ['nsExternalSharingAppService.h']
 
 EXPORTS.mozilla.dom += [
     'ExternalHelperAppChild.h',
     'ExternalHelperAppParent.h',
 ]
 
 CPP_SOURCES += [
     'ExternalHelperAppChild.cpp',
deleted file mode 100644
--- a/xpcom/Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH := @DEPTH@
-topsrcdir := @top_srcdir@
-srcdir := @srcdir@
-VPATH := @srcdir@
-
-INSTALL_TARGETS += xpcom
-xpcom_FILES := xpcom-config.h
-xpcom_DEST = $(DIST)/include
-xpcom_TARGET := export
-
-include $(topsrcdir)/config/rules.mk
--- a/xpcom/base/Makefile.in
+++ b/xpcom/base/Makefile.in
@@ -14,24 +14,16 @@ MOZILLA_INTERNAL_API =1
 ifeq ($(OS_ARCH),WINNT)
 
 ifdef MOZ_DEBUG
 CSRCS		+= pure_api.c
 endif
 
 endif #if OS_ARCH == WINNT
 
-INSTALL_TARGETS += errorlist
-errorlist_FILES := \
-  ErrorListCDefines.h \
-  ErrorListCxxDefines.h \
-  $(NULL)
-errorlist_DEST = $(DIST)/include
-errorlist_TARGET := export
-
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 ifdef MOZ_WIDGET_GTK
 CXXFLAGS        += $(TK_CFLAGS)
 endif
 
 LOCAL_INCLUDES += \
--- a/xpcom/base/moz.build
+++ b/xpcom/base/moz.build
@@ -38,16 +38,18 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
     ]
 
 XPIDL_MODULE = 'xpcom_base'
 
 MODULE = 'xpcom'
 
 EXPORTS += [
     'ErrorList.h',
+    'ErrorListCDefines.h',
+    'ErrorListCxxDefines.h',
     'nsAgg.h',
     'nsAutoPtr.h',
     'nsAutoRef.h',
     'nsCom.h',
     'nsCycleCollector.h',
     'nsDebugImpl.h',
     'nsError.h',
     'nsGZFileWriter.h',
--- a/xpcom/moz.build
+++ b/xpcom/moz.build
@@ -34,8 +34,13 @@ TEST_TOOL_DIRS += [
 #    'reflect/xptinfo/tests',
 #    'reflect/xptcall/tests,
 #]
 
 if CONFIG['DEHYDRA_PATH']:
     DIRS += ['analysis']
 
 MODULE = 'xpcom'
+
+# xpcom-config.h is generated by configure
+EXPORTS += [
+    'xpcom-config.h',
+]