437eea66a4
As Iain reported, my change broke the case when one has bison >= 3, but make decides there is no reason to regenerate plural.c, unfortunately that seems to be a scenario I haven't tested. The problem is that the pregenerated plural.c has been generated with bison 1.35, but when config.h says HAVE_BISON3, the code assumes it is the bison3 variant. What used to work fine is when one has bison >= 3 and plural.c has been regenerated (e.g. do touch intl/plural.y and it will work), or when one doesn't have any bison (then nothing is regenerated, but HAVE_BISON3 isn't defined either), or when one has bison < 3 and doesn't need to regenerate, or when one has bison < 3 and it is regenerated. The following patch fixes this, by killing the HAVE_BISON3 macro from config.h, and instead remembering the fact whether plural.c has been created with bison < 3 or bison >= 3 in a separate new plural-config.h header. The way this works: - user doesn't have bison - user has bison >= 3, but intl/{plural-config.h,plural.c} aren't older than intl/plural.y - user has bison < 3, but intl/{plural-config.h,plural.c} aren't older than intl/plural.y pregenerated !USE_BISON3 plural.c and plural-config.h from source dir is used, nothing in the objdir - user has bison >= 3 and intl/plural.y is newer Makefile generates plural.c and USE_BISON3 plural-config.h in the objdir, which is then used in preference to srcdir copies - user has bison < 3 and intl/plural.y is newer Makefile generates plural.c and !USE_BISON3 plural-config.h in the objdir, which is then used in preference to srcdir copies I have tested all these cases and make all-yes worked in all the cases. If one uses the unsupported ./configure where srcdir == objdir, I guess (though haven't tested) that it should still work, just it would be nice if such people didn't try to check in the plural{.c,-config.h} they have regenerated. What doesn't work, but didn't work before either (just tested gcc-9 branch too) is when one doesn't have bison and plural.y is newer than plural.c. Don't do that ;) 2020-04-16 Jakub Jelinek <jakub@redhat.com> PR bootstrap/92008 intl/ * configure.ac: Remove HAVE_BISON3 AC_DEFINE. * Makefile.in (HEADERS): Add plural-config.h. (.y.c): Also create plural-config.h. (dcigettext.o loadmsgcat.o plural.o plural-exp.o): Also depend on plural-config.h. (plural-config.h): Depend on plural.c. * plural-exp.h: Include plural-config.h. Use USE_BISON3 instead of HAVE_BISON3. * plural.y: Use USE_BISON3 instead of HAVE_BISON3. * configure: Regenerated. * plural.c: Regenerated. * config.h.in: Regenerated. * plural-config.h: Generated. contrib/ * gcc_update: Add intl/plural.y dependency for intl/plural-config.h. |
||
---|---|---|
.. | ||
header-tools | ||
reghunt | ||
regression | ||
testsuite-management | ||
unicode | ||
vim-gcc-dev | ||
analyze_brprob_spec.py | ||
analyze_brprob.py | ||
bench-stringop | ||
ChangeLog | ||
ChangeLog.jit | ||
ChangeLog.tree-ssa | ||
check_GNU_style_lib.py | ||
check_GNU_style.py | ||
check_GNU_style.sh | ||
check_makefile_deps.sh | ||
check_warning_flags.sh | ||
check-internal-format-escaping.py | ||
check-params-in-docs.py | ||
clang-format | ||
compare_tests | ||
compare_two_ftime_report_sets | ||
compare-all-tests | ||
compare-debug | ||
compare-lto | ||
compareSumTests3 | ||
config-list.mk | ||
dg-cmp-results.sh | ||
dg-extract-results.py | ||
dg-extract-results.sh | ||
dglib.pm | ||
download_prerequisites | ||
filter_gcc_for_doxygen | ||
filter_knr2ansi.pl | ||
filter_params.py | ||
filter-clang-warnings.py | ||
gcc_build | ||
gcc_update | ||
gcc-git-customization.sh | ||
gcc.doxy | ||
gen_autofdo_event.py | ||
gennews | ||
git-add-user-branch.sh | ||
git-add-vendor-branch.sh | ||
git-fetch-vendor.sh | ||
gthr_supp_vxw_5x.c | ||
index-prop | ||
jit-coverage-report.py | ||
maintainers-verify.sh | ||
make_sunver.pl | ||
make-obstacks-texi.pl | ||
mark_spam.py | ||
mklog | ||
mklog.pl | ||
paranoia.cc | ||
patch_tester.sh | ||
prepare_patch.sh | ||
prerequisites.md5 | ||
prerequisites.sha512 | ||
repro_fail | ||
test_installed | ||
test_recheck | ||
test_summary | ||
texi2pod.pl | ||
uninclude | ||
unused_functions.py | ||
update-copyright.py | ||
vimrc | ||
warn_summary |