Bug 921070 - Remove precompile tier; r=glandium
authorGregory Szorc <gps@mozilla.com>
Thu, 26 Sep 2013 16:05:10 -0700
changeset 148861 fa87a909fb143cf70bb305e31aa4918d2b6c69e4
parent 148860 5b35eb07b456230d507df38326032ae6bbffb043
child 148862 3b609dd4b5055621c8136df3daeb86e3ab97ef2b
push id34374
push usergszorc@mozilla.com
push dateThu, 26 Sep 2013 23:05:34 +0000
treeherdermozilla-inbound@fa87a909fb14 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs921070
milestone27.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 921070 - Remove precompile tier; r=glandium It made sense at the time. We now have inverted tiers and will soon have derecursified building. This doesn't make sense any more.
Makefile.in
config/makefiles/precompile/Makefile.in
config/makefiles/precompile/moz.build
dom/bindings/Makefile.in
ipc/ipdl/Makefile.in
python/mozbuild/mozbuild/backend/recursivemake.py
toolkit/toolkit.mozbuild
xpcom/moz.build
xpcom/xpidl/Makefile.in
xpcom/xpidl/moz.build
--- a/Makefile.in
+++ b/Makefile.in
@@ -222,12 +222,12 @@ ifdef ENABLE_TESTS
 # Incorporate static tier directories into tests. This should be incorporated
 # into moz.build files someday.
 check::
 	$(call SUBMAKE,$@,js/src)
 endif
 
 ifdef MOZ_PSEUDO_DERECURSE
 # Interdependencies for parallel export.
-js/xpconnect/src/export: config/makefiles/precompile/export
-accessible/src/xpcom/export: config/makefiles/precompile/export
+js/xpconnect/src/export: dom/bindings/export
+accessible/src/xpcom/export: xpcom/xpidl/export
 js/src/export: mfbt/export
 endif
deleted file mode 100644
--- a/config/makefiles/precompile/Makefile.in
+++ /dev/null
@@ -1,24 +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/.
-
-# This make file defines the precompile tier. This tier effectively fans out
-# to other make files and specialized targets.
-
-SUPPRESS_DEFAULT_RULES := 1
-
-default::
-	+$(MAKE) export
-
-export:: ipdl webidl xpidl
-
-ipdl:
-	$(call SUBMAKE,ipdl,$(DEPTH)/ipc/ipdl)
-
-webidl:
-	$(call SUBMAKE,webidl,$(DEPTH)/dom/bindings)
-
-xpidl:
-	$(call SUBMAKE,xpidl-parser,$(DEPTH)/xpcom/idl-parser)
-	$(call py_action,process_install_manifest,$(DIST)/idl $(DEPTH)/_build_manifests/install/dist_idl)
-	$(call SUBMAKE,xpidl,$(DEPTH)/config/makefiles/xpidl)
deleted file mode 100644
--- a/config/makefiles/precompile/moz.build
+++ /dev/null
@@ -1,5 +0,0 @@
-# -*- 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/.
--- a/dom/bindings/Makefile.in
+++ b/dom/bindings/Makefile.in
@@ -114,17 +114,17 @@ INSTALL_TARGETS += EXPORTS_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
+globalgen_headers_TARGET := export
 INSTALL_TARGETS += globalgen_headers
 
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 ifdef GNU_CC
 CXXFLAGS += -Wno-uninitialized
 endif
@@ -266,26 +266,18 @@ GARBAGE += \
   $(binding_dependency_trackers) \
   $(NULL)
 
 # Make sure all binding header files are created during the export stage, so we
 # don't have issues with .cpp files being compiled before we've generated the
 # headers they depend on.  This is really only needed for the test files, since
 # the non-test headers are all exported above anyway.  Note that this means that
 # we do all of our codegen during export.
-webidl:: $(generated_header_files)
-
-.PHONY: webidl
+export:: $(generated_header_files)
 
 distclean::
 	-$(RM) \
         $(generated_header_files) \
         $(generated_cpp_files) \
         $(all_webidl_files) \
         $(globalgen_targets) \
         ParserResults.pkl \
         $(NULL)
-
-# This is only needed to support |make| from this leaf directory/Makefile.
-NONRECURSIVE_TARGETS := export
-NONRECURSIVE_TARGETS_export := webidl
-NONRECURSIVE_TARGETS_export_webidl_DIRECTORY := .
-NONRECURSIVE_TARGETS_export_webidl_TARGETS := webidl
--- a/ipc/ipdl/Makefile.in
+++ b/ipc/ipdl/Makefile.in
@@ -16,28 +16,20 @@ LOCAL_INCLUDES += -I$(DEPTH)/ipc/ipdl/_i
 
 
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/ipc/chromium/chromium-config.mk
 
 
 # NB: the IPDL compiler manages .ipdl-->.h/.cpp dependencies itself,
 # which is why we don't have explicit .h/.cpp targets here
-ipdl: $(ALL_IPDLSRCS)
+export:: $(ALL_IPDLSRCS)
 	$(PYTHON) $(topsrcdir)/config/pythonpath.py \
 	  $(PLY_INCLUDE) \
 	  $(srcdir)/ipdl.py \
 	  --outheaders-dir=_ipdlheaders \
 	  --outcpp-dir=. \
 	  $(IPDLDIRS:%=-I%) \
 	  $^
 
-.PHONY: ipdl
-
 # We #include some things in the dom/plugins/ directory that rely on
 # toolkit libraries.
 CXXFLAGS    += $(TK_CFLAGS)
-
-# This is only needed to support |make| from this leaf directory/Makefile.
-NONRECURSIVE_TARGETS := export
-NONRECURSIVE_TARGETS_export := ipdl
-NONRECURSIVE_TARGETS_export_ipdl_DIRECTORY := .
-NONRECURSIVE_TARGETS_export_ipdl_TARGETS := ipdl
--- a/python/mozbuild/mozbuild/backend/recursivemake.py
+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
@@ -106,19 +106,19 @@ class BackendMakeFile(object):
         if self.xpt_name:
             self.fh.write('XPT_NAME := %s\n' % self.xpt_name)
 
             # We just recompile all xpidls because it's easier and less error
             # prone.
             self.fh.write('NONRECURSIVE_TARGETS += export\n')
             self.fh.write('NONRECURSIVE_TARGETS_export += xpidl\n')
             self.fh.write('NONRECURSIVE_TARGETS_export_xpidl_DIRECTORY = '
-                '$(DEPTH)/config/makefiles/precompile\n')
+                '$(DEPTH)/xpcom/xpidl\n')
             self.fh.write('NONRECURSIVE_TARGETS_export_xpidl_TARGETS += '
-                'xpidl\n')
+                'export\n')
 
         return self.fh.close()
 
 
 class RecursiveMakeTraversal(object):
     """
     Helper class to keep track of how the "traditional" recursive make backend
     recurses subdirectories. This is useful until all adhoc rules are removed
@@ -422,35 +422,27 @@ class RecursiveMakeBackend(CommonBackend
         # Skip static dirs during export traversal, or build everything in
         # parallel when enabled.
         def export_filter(current, subdirs):
             if self._parallel_export:
                 return parallel_filter(current, subdirs)
             return current, subdirs.parallel, \
                 subdirs.dirs + subdirs.tests + subdirs.tools
 
-        # compile and tools build everything in parallel, but skip precompile.
-        def other_filter(current, subdirs):
-            if current == 'subtiers/precompile':
-                return None, [], []
-            return parallel_filter(current, subdirs)
-
         # Skip tools dirs during libs traversal
         def libs_filter(current, subdirs):
-            if current == 'subtiers/precompile':
-                return None, [], []
             return current, subdirs.parallel, \
                 subdirs.static + subdirs.dirs + subdirs.tests
 
         # compile and tools tiers use the same traversal as export
         filters = {
             'export': export_filter,
-            'compile': other_filter,
+            'compile': parallel_filter,
             'libs': libs_filter,
-            'tools': other_filter,
+            'tools': parallel_filter,
         }
 
         root_deps_mk = Makefile()
 
         # Fill the dependencies for traversal of each tier.
         for tier, filter in filters.items():
             main, all_deps = \
                 self._traversal.compute_dependencies(filter)
--- a/toolkit/toolkit.mozbuild
+++ b/toolkit/toolkit.mozbuild
@@ -4,17 +4,16 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 if CONFIG['LIBXUL_SDK']:
     error('toolkit.mozbuild is not compatible with --enable-libxul-sdk=')
 
 if not CONFIG['MOZ_NATIVE_NSPR']:
     add_tier_dir('nspr', 'config/nspr')
 
-add_tier_dir('precompile', 'config/makefiles/precompile')
 add_tier_dir('external', 'config/external')
 
 if not CONFIG['MOZ_NATIVE_NSS']:
     add_tier_dir('nss', 'security/build')
 
 include('/config/js/js.mozbuild')
 
 if CONFIG['MOZ_CONTENT_SANDBOX']:
--- a/xpcom/moz.build
+++ b/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/.
 
+PARALLEL_DIRS += [
+    'idl-parser',
+    'xpidl',
+]
+
 DIRS += [
-    'idl-parser',
     'typelib',
     'string',
     'glue',
     'base',
     'ds',
     'io',
     'components',
     'threads',
new file mode 100644
--- /dev/null
+++ b/xpcom/xpidl/Makefile.in
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+export::
+	$(call SUBMAKE,xpidl-parser,$(DEPTH)/xpcom/idl-parser)
+	$(call py_action,process_install_manifest,$(DIST)/idl $(DEPTH)/_build_manifests/install/dist_idl)
+	$(call SUBMAKE,xpidl,$(DEPTH)/config/makefiles/xpidl)
new file mode 100644
--- /dev/null
+++ b/xpcom/xpidl/moz.build
@@ -0,0 +1,5 @@
+# -*- 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/.