From 7a976c106030f37d6ab72b1abaef10e575bb8809 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 6 Dec 2022 16:47:42 +0900 Subject: [Bug #19181] Separate the rule for unicode_normalize/tables.rb timestamp It should depends on only existing data files (except for the tools), unless `ALWAYS_UPDATE_UNICODE=yes`. --- common.mk | 36 ++++++++++++++++++++++++------------ defs/gmake.mk | 11 ----------- template/GNUmakefile.in | 11 +++++++++++ 3 files changed, 35 insertions(+), 23 deletions(-) diff --git a/common.mk b/common.mk index 9ac486411c..a9b155e0fd 100644 --- a/common.mk +++ b/common.mk @@ -1580,31 +1580,31 @@ UNICODE_EMOJI_DOWNLOAD = \ -d $(UNICODE_SRC_EMOJI_DATA_DIR) \ -p emoji/$(UNICODE_EMOJI_VERSION) -$(UNICODE_FILES) $(UNICODE_PROPERTY_FILES): update-unicode-files -update-unicode-files: +update-unicode-files: $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES) +$(UNICODE_FILES) $(UNICODE_PROPERTY_FILES): $(ECHO) Downloading Unicode $(UNICODE_VERSION) data and property files... $(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)" $(Q) $(UNICODE_DOWNLOAD) $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES) -$(UNICODE_AUXILIARY_FILES): update-unicode-auxiliary-files -update-unicode-auxiliary-files: +update-unicode-auxiliary-files: $(UNICODE_AUXILIARY_FILES) +$(UNICODE_AUXILIARY_FILES): $(ECHO) Downloading Unicode $(UNICODE_VERSION) auxiliary files... $(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)/auxiliary" $(Q) $(UNICODE_AUXILIARY_DOWNLOAD) $(UNICODE_AUXILIARY_FILES) -$(UNICODE_UCD_EMOJI_FILES): update-unicode-ucd-emoji-files -update-unicode-ucd-emoji-files: +update-unicode-ucd-emoji-files: $(UNICODE_UCD_EMOJI_FILES) +$(UNICODE_UCD_EMOJI_FILES): $(ECHO) Downloading Unicode UCD emoji $(UNICODE_EMOJI_VERSION) files... $(Q) $(MAKEDIRS) "$(UNICODE_SRC_DATA_DIR)/emoji" $(Q) $(UNICODE_UCD_EMOJI_DOWNLOAD) $(UNICODE_UCD_EMOJI_FILES) -$(UNICODE_EMOJI_FILES): update-unicode-emoji-files -update-unicode-emoji-files: +update-unicode-emoji-files: $(UNICODE_EMOJI_FILES) +$(UNICODE_EMOJI_FILES): $(ECHO) Downloading Unicode emoji $(UNICODE_EMOJI_VERSION) files... $(Q) $(MAKEDIRS) "$(UNICODE_SRC_EMOJI_DATA_DIR)" $(Q) $(UNICODE_EMOJI_DOWNLOAD) $(UNICODE_EMOJI_FILES) -$(srcdir)/lib/unicode_normalize/$(ALWAYS_UPDATE_UNICODE:yes=tables.rb): \ +$(srcdir)/lib/unicode_normalize/tables.rb: \ $(UNICODE_SRC_DATA_DIR)/$(HAVE_BASERUBY:yes=.unicode-tables.time) $(UNICODE_SRC_DATA_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=.unicode-tables.time): \ @@ -1615,11 +1615,23 @@ touch-unicode-files: $(MAKEDIRS) $(UNICODE_SRC_DATA_DIR) touch $(UNICODE_SRC_DATA_DIR)/.unicode-tables.time $(UNICODE_DATA_HEADERS) +UNICODE_TABLES_DATA_FILES = \ + $(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \ + $(UNICODE_SRC_DATA_DIR)/CompositionExclusions.txt \ + $(empty) + +UNICODE_TABLES_DEPENDENTS_1 = none$(ALWAYS_UPDATE_UNICODE) +UNICODE_TABLES_DEPENDENTS = $(UNICODE_TABLES_DEPENDENTS_1:noneyes=force) UNICODE_TABLES_TIMESTAMP = yes -$(UNICODE_SRC_DATA_DIR)/.unicode-tables.time: $(tooldir)/generic_erb.rb \ +$(UNICODE_SRC_DATA_DIR)/.unicode-tables.$(UNICODE_TABLES_DEPENDENTS:none=time): + $(Q) $(MAKEDIRS) $(@D) + touch $(@) || $(NULLCMD) +$(UNICODE_SRC_DATA_DIR)/.unicode-tables.$(UNICODE_TABLES_DEPENDENTS:force=time): \ + $(tooldir)/generic_erb.rb \ $(srcdir)/template/unicode_norm_gen.tmpl \ - $(ALWAYS_UPDATE_UNICODE:yes=update-unicode) - $(Q) $(MAKE) $(@D) + $(UNICODE_TABLES_DATA_FILES) \ + $(order_only) \ + $(UNICODE_SRC_DATA_DIR) $(Q) $(BASERUBY) $(tooldir)/generic_erb.rb \ -c $(UNICODE_TABLES_TIMESTAMP:yes=-t$@) \ -o $(srcdir)/lib/unicode_normalize/tables.rb \ diff --git a/defs/gmake.mk b/defs/gmake.mk index 0d79aba07d..2b5b1369ae 100644 --- a/defs/gmake.mk +++ b/defs/gmake.mk @@ -383,17 +383,6 @@ $(MJIT_MIN_HEADER): $(mjit_min_headers) $(PREP) endif -ifeq ($(if $(wildcard $(filter-out .,$(UNICODE_FILES) $(UNICODE_PROPERTY_FILES))),,\ - $(wildcard $(srcdir)/lib/unicode_normalize/tables.rb)),) -# Needs the dependency when any Unicode data file exists, or -# normalization tables script doesn't. Otherwise, when the target -# only exists, use it as-is. -.PHONY: $(UNICODE_SRC_DATA_DIR)/.unicode-tables.time -UNICODE_TABLES_TIMESTAMP = -$(UNICODE_SRC_DATA_DIR)/.unicode-tables.time: \ - $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES) -endif - ifeq ($(HAVE_GIT),yes) REVISION_LATEST := $(shell $(CHDIR) $(srcdir) && $(GIT) log -1 --format=%H 2>/dev/null) else diff --git a/template/GNUmakefile.in b/template/GNUmakefile.in index 0c8ac5f0e4..4db4467905 100644 --- a/template/GNUmakefile.in +++ b/template/GNUmakefile.in @@ -12,10 +12,21 @@ ifeq ($(HAVE_BASERUBY),yes) override REVISION_FORCE := PHONY endif +override order_only := | + ifneq ($(filter notintermediate,$(.FEATURES)),) DOT_WAIT = .WAIT endif +# Needs the dependency when any Unicode tables data files exist. +override UNICODE_TABLES_DEPENDENTS = \ + $(if $(or \ + $(filter yes,$(ALWAYS_UPDATE_UNICODE)), \ + $(wildcard \ + $(if $(filter .,$(UNICODE_FILES) $(UNICODE_PROPERTY_FILES)),,\ + $(UNICODE_TABLES_DATA_FILES)))),\ + force,none) + include $(srcdir)/defs/universal.mk -include uncommon.mk include $(srcdir)/defs/gmake.mk -- cgit v1.2.1