bug 461395 - add support for PARALLEL_DIRS to build system, parallelize content. r=bsmedberg

This commit is contained in:
Ted Mielczarek 2008-10-30 13:02:14 -04:00
Родитель 3e9cd82597
Коммит 2fc4b1dbc6
22 изменённых файлов: 123 добавлений и 29 удалений

Просмотреть файл

@ -365,6 +365,11 @@ LOOP_OVER_DIRS = \
@$(EXIT_ON_ERROR) \
$(foreach dir,$(DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) true
# we only use this for the makefiles target and other stuff that doesn't matter
LOOP_OVER_PARALLEL_DIRS = \
@$(EXIT_ON_ERROR) \
$(foreach dir,$(PARALLEL_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) true
LOOP_OVER_STATIC_DIRS = \
@$(EXIT_ON_ERROR) \
$(foreach dir,$(STATIC_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) true
@ -373,6 +378,13 @@ LOOP_OVER_TOOL_DIRS = \
@$(EXIT_ON_ERROR) \
$(foreach dir,$(TOOL_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) true
ifdef PARALLEL_DIRS
# create a bunch of fake targets for order-only processing
PARALLEL_DIRS_export = $(addsuffix _export,$(PARALLEL_DIRS))
PARALLEL_DIRS_libs = $(addsuffix _libs,$(PARALLEL_DIRS))
PARALLEL_DIRS_tools = $(addsuffix _tools,$(PARALLEL_DIRS))
endif
#
# Now we can differentiate between objects used to build a library, and
# objects used to build an executable in the same directory.
@ -582,6 +594,8 @@ endif
# SUBMAKEFILES: List of Makefiles for next level down.
# This is used to update or create the Makefiles before invoking them.
SUBMAKEFILES += $(addsuffix /Makefile, $(DIRS) $(TOOL_DIRS))
PARALLEL_SUBMAKEFILES += $(addsuffix /Makefile, $(PARALLEL_DIRS))
SUBMAKEFILES += $(PARALLEL_SUBMAKEFILES)
# The root makefile doesn't want to do a plain export/libs, because
# of the tiers and because of libxul. Suppress the default rules in favor
@ -677,15 +691,30 @@ endif
# Target to only regenerate makefiles
makefiles: $(SUBMAKEFILES)
ifneq (,$(DIRS)$(TOOL_DIRS))
ifneq (,$(DIRS)$(TOOL_DIRS)$(PARALLEL_DIRS))
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
endif
ifdef PARALLEL_DIRS
export:: $(PARALLEL_SUBMAKEFILES) | $(PARALLEL_DIRS_export)
$(PARALLEL_DIRS_export):: %_export:
+$(MAKE) -C $* export
endif
export:: $(SUBMAKEFILES) $(MAKE_DIRS) $(if $(EXPORTS)$(XPIDLSRCS)$(SDK_HEADERS)$(SDK_XPIDLSRCS),$(PUBLIC)) $(if $(SDK_HEADERS)$(SDK_XPIDLSRCS),$(SDK_PUBLIC)) $(if $(XPIDLSRCS),$(IDL_DIR)) $(if $(SDK_XPIDLSRCS),$(SDK_IDL_DIR))
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
ifdef PARALLEL_DIRS
tools:: $(PARALLEL_SUBMAKEFILES) | $(PARALLEL_DIRS_tools)
$(PARALLEL_DIRS_tools):: %_tools:
+$(MAKE) -C $* tools
endif
tools:: $(SUBMAKEFILES) $(MAKE_DIRS)
+$(LOOP_OVER_DIRS)
ifdef TOOL_DIRS
@ -718,6 +747,13 @@ HOST_LIBS_DEPS = $(filter %.$(LIB_SUFFIX), $(HOST_LIBS))
DSO_LDOPTS_DEPS = $(EXTRA_DSO_LIBS) $(filter %.$(LIB_SUFFIX), $(EXTRA_DSO_LDOPTS))
##############################################
ifdef PARALLEL_DIRS
libs:: $(PARALLEL_SUBMAKEFILES) | $(PARALLEL_DIRS_libs)
$(PARALLEL_DIRS_libs):: %_libs:
+$(MAKE) -C $* libs
endif
libs:: $(SUBMAKEFILES) $(MAKE_DIRS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(HOST_PROGRAM) $(PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(SIMPLE_PROGRAMS) $(JAVA_LIBRARY)
ifndef NO_DIST_INSTALL
ifdef LIBRARY
@ -825,11 +861,13 @@ run_viewer: $(FINAL_TARGET)/viewer
clean clobber realclean clobber_all:: $(SUBMAKEFILES)
-rm -f $(ALL_TRASH)
-rm -rf $(ALL_TRASH_DIRS)
+-$(LOOP_OVER_PARALLEL_DIRS)
+-$(LOOP_OVER_DIRS)
+-$(LOOP_OVER_STATIC_DIRS)
+-$(LOOP_OVER_TOOL_DIRS)
distclean:: $(SUBMAKEFILES)
+-$(LOOP_OVER_PARALLEL_DIRS)
+-$(LOOP_OVER_DIRS)
+-$(LOOP_OVER_STATIC_DIRS)
+-$(LOOP_OVER_TOOL_DIRS)
@ -1605,6 +1643,7 @@ export-idl:: $(XPIDLSRCS) $(SDK_XPIDLSRCS) $(IDL_DIR)
$(INSTALL) $(IFLAGS1) $^
endif
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
@ -1751,6 +1790,7 @@ JAR_MANIFEST := $(srcdir)/jar.mn
chrome::
$(MAKE) realchrome
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
@ -1977,11 +2017,13 @@ depend:: $(SUBMAKEFILES) $(MAKE_DIRS) $(MDDEPFILES)
else
depend:: $(SUBMAKEFILES)
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
dependclean:: $(SUBMAKEFILES)
rm -f $(MDDEPFILES)
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
@ -2083,6 +2125,7 @@ tags: TAGS
TAGS: $(SUBMAKEFILES) $(CSRCS) $(CPPSRCS) $(wildcard *.h)
-etags $(CSRCS) $(CPPSRCS) $(wildcard *.h)
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
echo-variable-%:
@ -2106,6 +2149,7 @@ ifdef _REPORT_ALL_DIRS
else
@$(if $(REQUIRES),echo $(subst $(topsrcdir)/,,$(srcdir)): $(MODULE): $(REQUIRES))
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
echo-depth-path:
@ -2135,6 +2179,7 @@ ifneq (,$(filter $(PROGRAM) $(HOST_PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $
@echo "DEPENDENT_LIBS = $(DEPENDENT_LIBS)"
@echo --------------------------------------------------------------------------------
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
showbuild:
@ -2196,6 +2241,7 @@ zipmakes:
ifneq (,$(filter $(PROGRAM) $(SIMPLE_PROGRAMS) $(LIBRARY) $(SHARED_LIBRARY),$(TARGETS)))
zip $(DEPTH)/makefiles $(subst $(topsrcdir),$(MOZ_SRC)/mozilla,$(srcdir)/Makefile.in)
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
documentation:
@ -2203,5 +2249,6 @@ documentation:
$(DOXYGEN) $(DEPTH)/config/doxygen.cfg
check:: $(SUBMAKEFILES) $(MAKE_DIRS)
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)

Просмотреть файл

@ -43,27 +43,27 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = content
DIRS = base canvas html xml xul xbl xslt
PARALLEL_DIRS = base canvas html xml xul xbl xslt
ifdef MOZ_MEDIA
DIRS += \
PARALLEL_DIRS += \
media \
$(NULL)
endif
ifdef MOZ_SVG
DIRS += svg
PARALLEL_DIRS += svg
endif
ifdef MOZ_XTF
DIRS += xtf
PARALLEL_DIRS += xtf
endif
ifdef MOZ_MATHML
DIRS += mathml
PARALLEL_DIRS += mathml
endif
DIRS += events
PARALLEL_DIRS += events
ifdef ENABLE_TESTS
TOOL_DIRS += test

Просмотреть файл

@ -42,7 +42,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public src
PARALLEL_DIRS = public src
ifdef ENABLE_TESTS
TOOL_DIRS += test

Просмотреть файл

@ -43,7 +43,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public src
PARALLEL_DIRS = public src
ifdef ENABLE_TESTS
DIRS += test

Просмотреть файл

@ -42,7 +42,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public src
PARALLEL_DIRS = public src
ifdef ENABLE_TESTS
DIRS += test

Просмотреть файл

@ -42,6 +42,6 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = content document
PARALLEL_DIRS = content document
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -42,7 +42,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public src
PARALLEL_DIRS = public src
ifdef ENABLE_TESTS
DIRS += test

Просмотреть файл

@ -42,7 +42,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public src
PARALLEL_DIRS = public src
ifdef ENABLE_TESTS
DIRS += test

Просмотреть файл

@ -41,7 +41,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = \
PARALLEL_DIRS = \
public \
src \
$(NULL)

Просмотреть файл

@ -42,6 +42,6 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = document content
PARALLEL_DIRS = document content
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -43,7 +43,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = src
PARALLEL_DIRS = src
ifdef ENABLE_TESTS
DIRS += test

Просмотреть файл

@ -42,7 +42,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public src builtin
PARALLEL_DIRS = public src builtin
ifdef ENABLE_TESTS
DIRS += test

Просмотреть файл

@ -42,7 +42,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = content document
PARALLEL_DIRS = content document
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -42,7 +42,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public resources src
PARALLEL_DIRS = public resources src
ifdef ENABLE_TESTS
DIRS += test

Просмотреть файл

@ -42,7 +42,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public src
PARALLEL_DIRS = public src
ifdef ENABLE_TESTS
DIRS += tests/buster \

Просмотреть файл

@ -42,10 +42,10 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = base xml xpath xslt
PARALLEL_DIRS = base xml xpath xslt
ifdef MOZ_XSLT_STANDALONE
DIRS += main
PARALLEL_DIRS += main
endif
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -42,7 +42,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = public src
PARALLEL_DIRS = public src
ifdef ENABLE_TESTS
DIRS += test

Просмотреть файл

@ -46,10 +46,10 @@ include $(DEPTH)/config/autoconf.mk
# interfaces and implementations.
# Likewise for content, because of nsXULAtoms.
DIRS = document content
PARALLEL_DIRS = document content
ifdef MOZ_XUL
DIRS += templates
PARALLEL_DIRS += templates
endif
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -43,7 +43,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = xul
DIRS = src test
PARALLEL_DIRS = src test
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -43,7 +43,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = xuldoc
DIRS = public src
PARALLEL_DIRS = public src
ifdef ENABLE_TESTS
DIRS += test

Просмотреть файл

@ -43,7 +43,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = xultmpl
DIRS = public src
PARALLEL_DIRS = public src
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -365,6 +365,11 @@ LOOP_OVER_DIRS = \
@$(EXIT_ON_ERROR) \
$(foreach dir,$(DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) true
# we only use this for the makefiles target and other stuff that doesn't matter
LOOP_OVER_PARALLEL_DIRS = \
@$(EXIT_ON_ERROR) \
$(foreach dir,$(PARALLEL_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) true
LOOP_OVER_STATIC_DIRS = \
@$(EXIT_ON_ERROR) \
$(foreach dir,$(STATIC_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) true
@ -373,6 +378,13 @@ LOOP_OVER_TOOL_DIRS = \
@$(EXIT_ON_ERROR) \
$(foreach dir,$(TOOL_DIRS),$(UPDATE_TITLE) $(MAKE) -C $(dir) $@; ) true
ifdef PARALLEL_DIRS
# create a bunch of fake targets for order-only processing
PARALLEL_DIRS_export = $(addsuffix _export,$(PARALLEL_DIRS))
PARALLEL_DIRS_libs = $(addsuffix _libs,$(PARALLEL_DIRS))
PARALLEL_DIRS_tools = $(addsuffix _tools,$(PARALLEL_DIRS))
endif
#
# Now we can differentiate between objects used to build a library, and
# objects used to build an executable in the same directory.
@ -582,6 +594,8 @@ endif
# SUBMAKEFILES: List of Makefiles for next level down.
# This is used to update or create the Makefiles before invoking them.
SUBMAKEFILES += $(addsuffix /Makefile, $(DIRS) $(TOOL_DIRS))
PARALLEL_SUBMAKEFILES += $(addsuffix /Makefile, $(PARALLEL_DIRS))
SUBMAKEFILES += $(PARALLEL_SUBMAKEFILES)
# The root makefile doesn't want to do a plain export/libs, because
# of the tiers and because of libxul. Suppress the default rules in favor
@ -677,15 +691,30 @@ endif
# Target to only regenerate makefiles
makefiles: $(SUBMAKEFILES)
ifneq (,$(DIRS)$(TOOL_DIRS))
ifneq (,$(DIRS)$(TOOL_DIRS)$(PARALLEL_DIRS))
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
endif
ifdef PARALLEL_DIRS
export:: $(PARALLEL_SUBMAKEFILES) | $(PARALLEL_DIRS_export)
$(PARALLEL_DIRS_export):: %_export:
+$(MAKE) -C $* export
endif
export:: $(SUBMAKEFILES) $(MAKE_DIRS) $(if $(EXPORTS)$(XPIDLSRCS)$(SDK_HEADERS)$(SDK_XPIDLSRCS),$(PUBLIC)) $(if $(SDK_HEADERS)$(SDK_XPIDLSRCS),$(SDK_PUBLIC)) $(if $(XPIDLSRCS),$(IDL_DIR)) $(if $(SDK_XPIDLSRCS),$(SDK_IDL_DIR))
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
ifdef PARALLEL_DIRS
tools:: $(PARALLEL_SUBMAKEFILES) | $(PARALLEL_DIRS_tools)
$(PARALLEL_DIRS_tools):: %_tools:
+$(MAKE) -C $* tools
endif
tools:: $(SUBMAKEFILES) $(MAKE_DIRS)
+$(LOOP_OVER_DIRS)
ifdef TOOL_DIRS
@ -718,6 +747,13 @@ HOST_LIBS_DEPS = $(filter %.$(LIB_SUFFIX), $(HOST_LIBS))
DSO_LDOPTS_DEPS = $(EXTRA_DSO_LIBS) $(filter %.$(LIB_SUFFIX), $(EXTRA_DSO_LDOPTS))
##############################################
ifdef PARALLEL_DIRS
libs:: $(PARALLEL_SUBMAKEFILES) | $(PARALLEL_DIRS_libs)
$(PARALLEL_DIRS_libs):: %_libs:
+$(MAKE) -C $* libs
endif
libs:: $(SUBMAKEFILES) $(MAKE_DIRS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(HOST_PROGRAM) $(PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(SIMPLE_PROGRAMS) $(JAVA_LIBRARY)
ifndef NO_DIST_INSTALL
ifdef LIBRARY
@ -825,11 +861,13 @@ run_viewer: $(FINAL_TARGET)/viewer
clean clobber realclean clobber_all:: $(SUBMAKEFILES)
-rm -f $(ALL_TRASH)
-rm -rf $(ALL_TRASH_DIRS)
+-$(LOOP_OVER_PARALLEL_DIRS)
+-$(LOOP_OVER_DIRS)
+-$(LOOP_OVER_STATIC_DIRS)
+-$(LOOP_OVER_TOOL_DIRS)
distclean:: $(SUBMAKEFILES)
+-$(LOOP_OVER_PARALLEL_DIRS)
+-$(LOOP_OVER_DIRS)
+-$(LOOP_OVER_STATIC_DIRS)
+-$(LOOP_OVER_TOOL_DIRS)
@ -1605,6 +1643,7 @@ export-idl:: $(XPIDLSRCS) $(SDK_XPIDLSRCS) $(IDL_DIR)
$(INSTALL) $(IFLAGS1) $^
endif
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
@ -1751,6 +1790,7 @@ JAR_MANIFEST := $(srcdir)/jar.mn
chrome::
$(MAKE) realchrome
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
@ -1977,11 +2017,13 @@ depend:: $(SUBMAKEFILES) $(MAKE_DIRS) $(MDDEPFILES)
else
depend:: $(SUBMAKEFILES)
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
dependclean:: $(SUBMAKEFILES)
rm -f $(MDDEPFILES)
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)
@ -2083,6 +2125,7 @@ tags: TAGS
TAGS: $(SUBMAKEFILES) $(CSRCS) $(CPPSRCS) $(wildcard *.h)
-etags $(CSRCS) $(CPPSRCS) $(wildcard *.h)
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
echo-variable-%:
@ -2106,6 +2149,7 @@ ifdef _REPORT_ALL_DIRS
else
@$(if $(REQUIRES),echo $(subst $(topsrcdir)/,,$(srcdir)): $(MODULE): $(REQUIRES))
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
echo-depth-path:
@ -2135,6 +2179,7 @@ ifneq (,$(filter $(PROGRAM) $(HOST_PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $
@echo "DEPENDENT_LIBS = $(DEPENDENT_LIBS)"
@echo --------------------------------------------------------------------------------
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
showbuild:
@ -2196,6 +2241,7 @@ zipmakes:
ifneq (,$(filter $(PROGRAM) $(SIMPLE_PROGRAMS) $(LIBRARY) $(SHARED_LIBRARY),$(TARGETS)))
zip $(DEPTH)/makefiles $(subst $(topsrcdir),$(MOZ_SRC)/mozilla,$(srcdir)/Makefile.in)
endif
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
documentation:
@ -2203,5 +2249,6 @@ documentation:
$(DOXYGEN) $(DEPTH)/config/doxygen.cfg
check:: $(SUBMAKEFILES) $(MAKE_DIRS)
+$(LOOP_OVER_PARALLEL_DIRS)
+$(LOOP_OVER_DIRS)
+$(LOOP_OVER_TOOL_DIRS)