On Fri, Sep 05, 2014 at 11:17:00AM -0400, Ehsan Akhgari wrote:
> Thanks!
> 
> So, I can only see three places in rules.mk where we seem to do things in
> libs::, and I cannot find anything else in recursivemake.py or Makefile.in.
> Am I missing something?  Or are those three rules the only work to do in a
> new tier?
> 
> Also, I'm not really sure where to start from here.  I think given the above
> one can create a new tier, but I don't know what things would be safe to
> move into it, etc...

The attached patch will get you started with a new tier. Feel free to
find a better name than "newlibs".

Mike
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
@@ -169,17 +169,17 @@ export:: install-dist/sdk
 ifndef JS_STANDALONE
 ifdef ENABLE_TESTS
 # Additional makefile targets to call automated test suites
 include $(topsrcdir)/testing/testsuite-targets.mk
 endif
 endif
 
 default all::
-       $(call BUILDSTATUS,TIERS export $(if $(COMPILE_ENVIRONMENT),compile 
)libs tools $(if $(MOZ_AUTOMATION),$(MOZ_AUTOMATION_TIERS)))
+       $(call BUILDSTATUS,TIERS export $(if $(COMPILE_ENVIRONMENT),compile 
)newlibs libs tools $(if $(MOZ_AUTOMATION),$(MOZ_AUTOMATION_TIERS)))
 
 include $(topsrcdir)/config/rules.mk
 
 distclean::
        $(RM) $(DIST_GARBAGE)
 
 ifeq ($(OS_ARCH),WINNT)
 # we want to copy PDB files on Windows
diff --git a/config/recurse.mk b/config/recurse.mk
--- a/config/recurse.mk
+++ b/config/recurse.mk
@@ -27,29 +27,29 @@ endif
 #   make -C qux
 
 ifeq (.,$(DEPTH))
 
 include root.mk
 
 # Main rules (export, compile, libs and tools) call recurse_* rules.
 # This wrapping is only really useful for build status.
-compile libs export tools::
+compile newlibs libs export tools::
        $(call BUILDSTATUS,TIER_START $@)
        +$(MAKE) recurse_$@
        $(call BUILDSTATUS,TIER_FINISH $@)
 
 # Special rule that does install-manifests (cf. Makefile.in) + compile
 binaries::
        +$(MAKE) recurse_compile
 
 # Carefully avoid $(eval) type of rule generation, which makes pymake slower
 # than necessary.
 # Get current tier and corresponding subtiers from the data in root.mk.
-CURRENT_TIER := $(filter $(foreach tier,compile libs export 
tools,recurse_$(tier) $(tier)-deps),$(MAKECMDGOALS))
+CURRENT_TIER := $(filter $(foreach tier,compile newlibs libs export 
tools,recurse_$(tier) $(tier)-deps),$(MAKECMDGOALS))
 ifneq (,$(filter-out 0 1,$(words $(CURRENT_TIER))))
 $(error $(CURRENT_TIER) not supported on the same make command line)
 endif
 CURRENT_TIER := $(subst recurse_,,$(CURRENT_TIER:-deps=))
 
 # The rules here are doing directory traversal, so we don't want further
 # recursion to happen when running make -C subdir $tier. But some make files
 # further call make -C something else, and sometimes expect recursion to
@@ -103,32 +103,32 @@ endif
 
 endif # ifeq ($(CURRENT_TIER),compile)
 
 else
 
 # Don't recurse if MAKELEVEL is NO_RECURSE_MAKELEVEL as defined above
 ifeq ($(NO_RECURSE_MAKELEVEL),$(MAKELEVEL))
 
-compile libs export tools::
+compile newlibs libs export tools::
 
 else
 #########################
 # Tier traversal handling
 #########################
 
 define CREATE_SUBTIER_TRAVERSAL_RULE
 .PHONY: $(1)
 
 $(1):: $$(SUBMAKEFILES)
        $$(LOOP_OVER_DIRS)
 
 endef
 
-$(foreach subtier,export libs tools,$(eval $(call 
CREATE_SUBTIER_TRAVERSAL_RULE,$(subtier))))
+$(foreach subtier,export newlibs libs tools,$(eval $(call 
CREATE_SUBTIER_TRAVERSAL_RULE,$(subtier))))
 
 ifndef TOPLEVEL_BUILD
 libs:: target host
 endif
 
 endif # ifeq ($(NO_RECURSE_MAKELEVEL),$(MAKELEVEL))
 
 endif # ifeq (.,$(DEPTH))
diff --git a/config/rules.mk b/config/rules.mk
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -543,16 +543,17 @@ endif
 # of the tiers and because of libxul. Suppress the default rules in favor
 # of something else. Makefiles which use this var *must* provide a sensible
 # default rule before including rules.mk
 default all::
        $(MAKE) export
 ifdef COMPILE_ENVIRONMENT
        $(MAKE) compile
 endif
+       $(MAKE) newlibs
        $(MAKE) libs
        $(MAKE) tools
 
 ifeq ($(findstring s,$(filter-out --%, $(MAKEFLAGS))),)
 ECHO := echo
 QUIET :=
 else
 ECHO := true
diff --git a/python/mozbuild/mozbuild/backend/recursivemake.py 
b/python/mozbuild/mozbuild/backend/recursivemake.py
--- a/python/mozbuild/mozbuild/backend/recursivemake.py
+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
@@ -310,16 +310,17 @@ class RecursiveMakeBackend(CommonBackend
                 'xpidl',
             ]}
 
         self._traversal = RecursiveMakeTraversal()
         self._compile_graph = defaultdict(set)
 
         self._may_skip = {
             'export': set(),
+            'newlibs': set(),
             'libs': set(),
         }
         self._no_skip = {
             'tools': set(),
         }
 
     def consume_object(self, obj):
         """Write out build files necessary to build with recursive make."""
@@ -522,16 +523,17 @@ class RecursiveMakeBackend(CommonBackend
             if current not in self._no_skip['tools'] \
                     or current.startswith('subtiers/'):
                 current = None
             return current, [], subdirs.dirs + subdirs.tests
 
         filters = [
             ('export', parallel_filter),
             ('libs', libs_filter),
+            ('newlibs', parallel_filter),
             ('tools', tools_filter),
         ]
 
         root_deps_mk = Makefile()
 
         # Fill the dependencies for traversal of each tier.
         for tier, filter in filters:
             main, all_deps = \
_______________________________________________
dev-builds mailing list
dev-builds@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-builds

Reply via email to