Bug 921070 - Remove precompile tier; r=glandium
authorGregory Szorc <gps@mozilla.com>
Thu, 26 Sep 2013 16:05:10 -0700
changeset 157541 fa87a909fb143cf70bb305e31aa4918d2b6c69e4
parent 157540 5b35eb07b456230d507df38326032ae6bbffb043
child 157542 3b609dd4b5055621c8136df3daeb86e3ab97ef2b
push id4537
push userlsblakk@mozilla.com
push dateMon, 28 Oct 2013 22:18:47 +0000
treeherdermozilla-aurora@60c6fd67470e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs921070
milestone27.0a1
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/.