Bug 770426 - Replace double colon rules with dependency chains for preprocessing rules. r=khuey

This commit is contained in:
Mike Hommey 2012-07-23 07:42:22 +02:00
parent a080cb1b6a
commit e145e18ece
3 changed files with 93 additions and 105 deletions

View File

@ -1225,17 +1225,9 @@ PREF_PPFLAGS = --line-endings=crlf
endif endif
ifndef NO_DIST_INSTALL ifndef NO_DIST_INSTALL
$(FINAL_TARGET)/$(PREF_DIR): PREF_JS_EXPORTS_PATH := $(FINAL_TARGET)/$(PREF_DIR)
$(NSINSTALL) -D $@ PREF_JS_EXPORTS_FLAGS := $(PREF_PPFLAGS)
PP_TARGETS += PREF_JS_EXPORTS
libs:: $(FINAL_TARGET)/$(PREF_DIR)
libs:: $(PREF_JS_EXPORTS)
$(EXIT_ON_ERROR) \
for i in $^; do \
dest=$(FINAL_TARGET)/$(PREF_DIR)/`basename $$i`; \
$(RM) -f $$dest; \
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
done
endif endif
endif endif
@ -1315,6 +1307,7 @@ libs:: $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt
ifndef NO_DIST_INSTALL ifndef NO_DIST_INSTALL
$(call install_cmd,$(IFLAGS1) $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt $(FINAL_TARGET)/components) $(call install_cmd,$(IFLAGS1) $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt $(FINAL_TARGET)/components)
ifndef NO_INTERFACES_MANIFEST ifndef NO_INTERFACES_MANIFEST
libs:: $(call mkdir_deps,$(FINAL_TARGET)/components)
@$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/components/interfaces.manifest "interfaces $(XPIDL_MODULE).xpt" @$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/components/interfaces.manifest "interfaces $(XPIDL_MODULE).xpt"
@$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "manifest components/interfaces.manifest" @$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "manifest components/interfaces.manifest"
endif endif
@ -1365,22 +1358,15 @@ endif
endif endif
ifdef EXTRA_PP_COMPONENTS ifdef EXTRA_PP_COMPONENTS
libs:: $(EXTRA_PP_COMPONENTS)
ifndef NO_DIST_INSTALL ifndef NO_DIST_INSTALL
$(EXIT_ON_ERROR) \ EXTRA_PP_COMPONENTS_PATH := $(FINAL_TARGET)/components
$(NSINSTALL) -D $(FINAL_TARGET)/components; \ PP_TARGETS += EXTRA_PP_COMPONENTS
for i in $^; do \
fname=`basename $$i`; \
dest=$(FINAL_TARGET)/components/$${fname}; \
$(RM) -f $$dest; \
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
done
endif endif
endif endif
EXTRA_MANIFESTS = $(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS)) EXTRA_MANIFESTS = $(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS))
ifneq (,$(EXTRA_MANIFESTS)) ifneq (,$(EXTRA_MANIFESTS))
libs:: libs:: $(call mkdir_deps,$(FINAL_TARGET))
$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest $(patsubst %,"manifest components/%",$(notdir $(EXTRA_MANIFESTS))) $(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest $(patsubst %,"manifest components/%",$(notdir $(EXTRA_MANIFESTS)))
endif endif
@ -1395,17 +1381,10 @@ endif
endif endif
ifdef EXTRA_PP_JS_MODULES ifdef EXTRA_PP_JS_MODULES
libs:: $(EXTRA_PP_JS_MODULES)
ifndef NO_DIST_INSTALL ifndef NO_DIST_INSTALL
$(EXIT_ON_ERROR) \ EXTRA_PP_JS_MODULES_PATH := $(FINAL_TARGET)/modules
$(NSINSTALL) -D $(FINAL_TARGET)/modules; \ PP_TARGETS += EXTRA_PP_JS_MODULES
for i in $^; do \
dest=$(FINAL_TARGET)/modules/`basename $$i`; \
$(RM) -f $$dest; \
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
done
endif endif
endif endif
################################################################################ ################################################################################
@ -1476,31 +1455,15 @@ endif
endif endif
ifneq ($(DIST_FILES),) ifneq ($(DIST_FILES),)
$(DIST)/bin: DIST_FILES_PATH := $(FINAL_TARGET)
$(NSINSTALL) -D $@ DIST_FILES_FLAGS := $(XULAPP_DEFINES) $(XULPPFLAGS)
PP_TARGETS += DIST_FILES
libs:: $(DIST)/bin
libs:: $(DIST_FILES)
@$(EXIT_ON_ERROR) \
for f in $^; do \
dest=$(FINAL_TARGET)/`basename $$f`; \
$(RM) -f $$dest; \
$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
$(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
$$f > $$dest; \
done
endif endif
ifneq ($(DIST_CHROME_FILES),) ifneq ($(DIST_CHROME_FILES),)
libs:: $(DIST_CHROME_FILES) DIST_CHROME_FILES_PATH := $(FINAL_TARGET)/chrome
@$(EXIT_ON_ERROR) \ DIST_CHROME_FILES_FLAGS := $(XULAPP_DEFINES) $(XULPPFLAGS)
for f in $^; do \ PP_TARGETS += DIST_CHROME_FILES
dest=$(FINAL_TARGET)/chrome/`basename $$f`; \
$(RM) -f $$dest; \
$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
$(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
$$f > $$dest; \
done
endif endif
ifneq ($(XPI_PKGNAME),) ifneq ($(XPI_PKGNAME),)
@ -1675,6 +1638,37 @@ TAGS:: $(CSRCS) $(CPPSRCS) $(HEADERS)
endif endif
endif endif
################################################################################
# Preprocessing rules
#
# The PP_TARGETS variable contains a list of all preprocessing target
# categories. Each category defines a target path, and optional extra flags
# like the following:
#
# FOO_PATH := target_path
# FOO_FLAGS := -Dsome_flag
# PP_TARGETS += FOO
# PP_DEP defines preprocessing rules dependencies.
# $(call PP_DEP, source_file, target_path, extra_flags)
define PP_DEP
$(2)/$(notdir $(1)): $(1) $(call mkdir_deps,$(2)) $(GLOBAL_DEPS)
$(2)/$(notdir $(1)): EXTRA_PP_FLAGS := $(3)
PP_FILES += $(2)/$(notdir $(1))
endef
$(foreach target,$(PP_TARGETS),\
$(foreach file,$($(target)),\
$(eval $(call PP_DEP,$(file),$($(target)_PATH),$($(target)_FLAGS)))\
)\
)
$(PP_FILES):
$(RM) $@
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(EXTRA_PP_FLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $< > $@
libs:: $(PP_FILES)
################################################################################ ################################################################################
# Special gmake rules. # Special gmake rules.
################################################################################ ################################################################################

View File

@ -1225,17 +1225,9 @@ PREF_PPFLAGS = --line-endings=crlf
endif endif
ifndef NO_DIST_INSTALL ifndef NO_DIST_INSTALL
$(FINAL_TARGET)/$(PREF_DIR): PREF_JS_EXPORTS_PATH := $(FINAL_TARGET)/$(PREF_DIR)
$(NSINSTALL) -D $@ PREF_JS_EXPORTS_FLAGS := $(PREF_PPFLAGS)
PP_TARGETS += PREF_JS_EXPORTS
libs:: $(FINAL_TARGET)/$(PREF_DIR)
libs:: $(PREF_JS_EXPORTS)
$(EXIT_ON_ERROR) \
for i in $^; do \
dest=$(FINAL_TARGET)/$(PREF_DIR)/`basename $$i`; \
$(RM) -f $$dest; \
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
done
endif endif
endif endif
@ -1315,6 +1307,7 @@ libs:: $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt
ifndef NO_DIST_INSTALL ifndef NO_DIST_INSTALL
$(call install_cmd,$(IFLAGS1) $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt $(FINAL_TARGET)/components) $(call install_cmd,$(IFLAGS1) $(XPIDL_GEN_DIR)/$(XPIDL_MODULE).xpt $(FINAL_TARGET)/components)
ifndef NO_INTERFACES_MANIFEST ifndef NO_INTERFACES_MANIFEST
libs:: $(call mkdir_deps,$(FINAL_TARGET)/components)
@$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/components/interfaces.manifest "interfaces $(XPIDL_MODULE).xpt" @$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/components/interfaces.manifest "interfaces $(XPIDL_MODULE).xpt"
@$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "manifest components/interfaces.manifest" @$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "manifest components/interfaces.manifest"
endif endif
@ -1365,22 +1358,15 @@ endif
endif endif
ifdef EXTRA_PP_COMPONENTS ifdef EXTRA_PP_COMPONENTS
libs:: $(EXTRA_PP_COMPONENTS)
ifndef NO_DIST_INSTALL ifndef NO_DIST_INSTALL
$(EXIT_ON_ERROR) \ EXTRA_PP_COMPONENTS_PATH := $(FINAL_TARGET)/components
$(NSINSTALL) -D $(FINAL_TARGET)/components; \ PP_TARGETS += EXTRA_PP_COMPONENTS
for i in $^; do \
fname=`basename $$i`; \
dest=$(FINAL_TARGET)/components/$${fname}; \
$(RM) -f $$dest; \
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
done
endif endif
endif endif
EXTRA_MANIFESTS = $(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS)) EXTRA_MANIFESTS = $(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS))
ifneq (,$(EXTRA_MANIFESTS)) ifneq (,$(EXTRA_MANIFESTS))
libs:: libs:: $(call mkdir_deps,$(FINAL_TARGET))
$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest $(patsubst %,"manifest components/%",$(notdir $(EXTRA_MANIFESTS))) $(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest $(patsubst %,"manifest components/%",$(notdir $(EXTRA_MANIFESTS)))
endif endif
@ -1395,17 +1381,10 @@ endif
endif endif
ifdef EXTRA_PP_JS_MODULES ifdef EXTRA_PP_JS_MODULES
libs:: $(EXTRA_PP_JS_MODULES)
ifndef NO_DIST_INSTALL ifndef NO_DIST_INSTALL
$(EXIT_ON_ERROR) \ EXTRA_PP_JS_MODULES_PATH := $(FINAL_TARGET)/modules
$(NSINSTALL) -D $(FINAL_TARGET)/modules; \ PP_TARGETS += EXTRA_PP_JS_MODULES
for i in $^; do \
dest=$(FINAL_TARGET)/modules/`basename $$i`; \
$(RM) -f $$dest; \
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
done
endif endif
endif endif
################################################################################ ################################################################################
@ -1476,31 +1455,15 @@ endif
endif endif
ifneq ($(DIST_FILES),) ifneq ($(DIST_FILES),)
$(DIST)/bin: DIST_FILES_PATH := $(FINAL_TARGET)
$(NSINSTALL) -D $@ DIST_FILES_FLAGS := $(XULAPP_DEFINES) $(XULPPFLAGS)
PP_TARGETS += DIST_FILES
libs:: $(DIST)/bin
libs:: $(DIST_FILES)
@$(EXIT_ON_ERROR) \
for f in $^; do \
dest=$(FINAL_TARGET)/`basename $$f`; \
$(RM) -f $$dest; \
$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
$(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
$$f > $$dest; \
done
endif endif
ifneq ($(DIST_CHROME_FILES),) ifneq ($(DIST_CHROME_FILES),)
libs:: $(DIST_CHROME_FILES) DIST_CHROME_FILES_PATH := $(FINAL_TARGET)/chrome
@$(EXIT_ON_ERROR) \ DIST_CHROME_FILES_FLAGS := $(XULAPP_DEFINES) $(XULPPFLAGS)
for f in $^; do \ PP_TARGETS += DIST_CHROME_FILES
dest=$(FINAL_TARGET)/chrome/`basename $$f`; \
$(RM) -f $$dest; \
$(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py \
$(XULAPP_DEFINES) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) \
$$f > $$dest; \
done
endif endif
ifneq ($(XPI_PKGNAME),) ifneq ($(XPI_PKGNAME),)
@ -1675,6 +1638,37 @@ TAGS:: $(CSRCS) $(CPPSRCS) $(HEADERS)
endif endif
endif endif
################################################################################
# Preprocessing rules
#
# The PP_TARGETS variable contains a list of all preprocessing target
# categories. Each category defines a target path, and optional extra flags
# like the following:
#
# FOO_PATH := target_path
# FOO_FLAGS := -Dsome_flag
# PP_TARGETS += FOO
# PP_DEP defines preprocessing rules dependencies.
# $(call PP_DEP, source_file, target_path, extra_flags)
define PP_DEP
$(2)/$(notdir $(1)): $(1) $(call mkdir_deps,$(2)) $(GLOBAL_DEPS)
$(2)/$(notdir $(1)): EXTRA_PP_FLAGS := $(3)
PP_FILES += $(2)/$(notdir $(1))
endef
$(foreach target,$(PP_TARGETS),\
$(foreach file,$($(target)),\
$(eval $(call PP_DEP,$(file),$($(target)_PATH),$($(target)_FLAGS)))\
)\
)
$(PP_FILES):
$(RM) $@
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(EXTRA_PP_FLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $< > $@
libs:: $(PP_FILES)
################################################################################ ################################################################################
# Special gmake rules. # Special gmake rules.
################################################################################ ################################################################################

View File

@ -60,7 +60,7 @@ ifdef MOZILLA_OFFICIAL
DEFINES += -DMOZILLA_OFFICIAL DEFINES += -DMOZILLA_OFFICIAL
endif endif
libs:: libs:: $(call mkdir_deps,$(FINAL_TARGET))
$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "resource webapprt ./" $(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest "resource webapprt ./"
GRE_MILESTONE := $(shell tail -n 1 $(topsrcdir)/config/milestone.txt 2>/dev/null || tail -1 $(topsrcdir)/config/milestone.txt) GRE_MILESTONE := $(shell tail -n 1 $(topsrcdir)/config/milestone.txt 2>/dev/null || tail -1 $(topsrcdir)/config/milestone.txt)