Bug 1198952 - Work around GNU make 3.82 bug when recursing the ICU build system. r=gps

This commit is contained in:
Mike Hommey 2015-11-10 10:57:47 +09:00
parent f337f01ac1
commit 61505e0aec
3 changed files with 44 additions and 1 deletions

View File

@ -0,0 +1,38 @@
diff --git a/intl/icu/source/Makefile.in b/intl/icu/source/Makefile.in
index 9db6c52..1b9a964 100644
--- a/intl/icu/source/Makefile.in
+++ b/intl/icu/source/Makefile.in
@@ -134,28 +134,32 @@ endif
LOCAL_SUBDIRS = $(SUBDIRS)
CLEAN_FIRST_SUBDIRS = $(TOOLS)
$(LIBDIR) $(BINDIR):
-$(MKINSTALLDIRS) $@
## Recursive targets
+## Strictly speaking, the $(MAKEOVERRIDES) is not necessary when recursing, but
+## there is a bug in GNU make 3.82 that throws away the original overrides in
+## favor of RECURSIVE=YES when the submake in the subdirectory restarts itself
+## after dependency files have been created.
all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive check-exhaustive-recursive: $(LIBDIR) $(BINDIR)
@dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(LOCAL_SUBDIRS)'; for subdir in $$list; do \
echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-local"; \
else \
local_target="$$target"; \
fi; \
- (cd $$subdir && $(MAKE) RECURSIVE=YES $$local_target) || exit; \
+ (cd $$subdir && $(MAKE) $(MAKEOVERRIDES) RECURSIVE=YES $$local_target) || exit; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) "$$target-local" || exit; \
fi
clean-recursive-with-twist:
$(MAKE) clean-recursive LOCAL_SUBDIRS='$(CLEAN_FIRST_SUBDIRS) $(filter-out $(CLEAN_FIRST_SUBDIRS),$(LOCAL_SUBDIRS))'

View File

@ -139,6 +139,10 @@ $(LIBDIR) $(BINDIR):
-$(MKINSTALLDIRS) $@
## Recursive targets
## Strictly speaking, the $(MAKEOVERRIDES) is not necessary when recursing, but
## there is a bug in GNU make 3.82 that throws away the original overrides in
## favor of RECURSIVE=YES when the submake in the subdirectory restarts itself
## after dependency files have been created.
all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive check-exhaustive-recursive: $(LIBDIR) $(BINDIR)
@dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
@ -150,7 +154,7 @@ all-recursive install-recursive clean-recursive distclean-recursive dist-recursi
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) RECURSIVE=YES $$local_target) || exit; \
(cd $$subdir && $(MAKE) $(MAKEOVERRIDES) RECURSIVE=YES $$local_target) || exit; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) "$$target-local" || exit; \

View File

@ -57,6 +57,7 @@ patch -d ${icu_dir}/../../ -p1 < ${icu_dir}/../icu-patches/suppress-warnings.dif
patch -d ${icu_dir}/../../ -p1 < ${icu_dir}/../icu-patches/pkgdata-large-buffer.diff
patch -d ${icu_dir}/../../ -p1 < ${icu_dir}/../icu-patches/bug-1172609-icu-fix.diff
patch -d ${icu_dir}/../../ -p1 < ${icu_dir}/../icu-patches/bug-1172609-timezone-recreateDefault.diff
patch -d ${icu_dir}/../../ -p1 < ${icu_dir}/../icu-patches/bug-1198952-workaround-make-3.82-bug.diff
# NOTE: If you're updating this script for a new ICU version, you have to rerun
# js/src/tests/ecma_6/String/make-normalize-generateddata-input.py for any