mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
build: use gnulib's non-recursive-gnulib-prefix-hack
Suggested by Jim Meyering. * etc/prefix-gnulib-mk: Remove, as it is now provided by... * bootstrap.conf (modules): the non-recursive-gnulib-prefix-hack module. * build-aux/.gitignore, configure.ac, m4/.gitignore: Adjust.
This commit is contained in:
@@ -25,6 +25,7 @@ gnulib_modules='
|
|||||||
gpl-3.0 hash inttypes isnan javacomp-script
|
gpl-3.0 hash inttypes isnan javacomp-script
|
||||||
javaexec-script ldexpl malloc-gnu
|
javaexec-script ldexpl malloc-gnu
|
||||||
mbswidth
|
mbswidth
|
||||||
|
non-recursive-gnulib-prefix-hack
|
||||||
obstack
|
obstack
|
||||||
obstack-printf
|
obstack-printf
|
||||||
perror progname
|
perror progname
|
||||||
@@ -78,7 +79,7 @@ gnulib_tool_option_extras='--symlink --makefile-name=gnulib.mk'
|
|||||||
bootstrap_post_import_hook()
|
bootstrap_post_import_hook()
|
||||||
{
|
{
|
||||||
# Massage lib/gnulib.mk before using it later in the bootstrapping process.
|
# Massage lib/gnulib.mk before using it later in the bootstrapping process.
|
||||||
etc/prefix-gnulib-mk --lib-name=$gnulib_name lib/$gnulib_mk
|
build-aux/prefix-gnulib-mk --lib-name=$gnulib_name lib/$gnulib_mk
|
||||||
|
|
||||||
# Ensure that ChangeLog exists, for automake.
|
# Ensure that ChangeLog exists, for automake.
|
||||||
test -f ChangeLog || touch ChangeLog
|
test -f ChangeLog || touch ChangeLog
|
||||||
|
|||||||
1
build-aux/.gitignore
vendored
1
build-aux/.gitignore
vendored
@@ -26,3 +26,4 @@
|
|||||||
/vc-list-files
|
/vc-list-files
|
||||||
/warn-on-use.h
|
/warn-on-use.h
|
||||||
/ylwrap
|
/ylwrap
|
||||||
|
/prefix-gnulib-mk
|
||||||
|
|||||||
13
configure.ac
13
configure.ac
@@ -187,19 +187,6 @@ AC_SUBST([GCC])
|
|||||||
gt_JAVACOMP([1.3], [1.4])
|
gt_JAVACOMP([1.3], [1.4])
|
||||||
gt_JAVAEXEC
|
gt_JAVAEXEC
|
||||||
|
|
||||||
# We use gnulib, but from lib/local.mk instead of lib/Makefile.am.
|
|
||||||
# So prefix paths with lib/. See also etc/prefix-gnulib-mk.
|
|
||||||
gl_LIBOBJS=`echo "$gl_LIBOBJS" | sed -e 's, , lib/,g'`
|
|
||||||
# Listing the names of the variables to prefix is error-prone.
|
|
||||||
# Rather, adjust all the AC_SUBST variables whose name ends in '_H',
|
|
||||||
# and whose content ends in '.h'.
|
|
||||||
for ac_var in $ac_subst_vars
|
|
||||||
do
|
|
||||||
eval "ac_val=\$$ac_var"
|
|
||||||
case $ac_var=$ac_val in
|
|
||||||
(*_H=*.h) eval "$ac_var=lib/\$$ac_var";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
AC_CONFIG_FILES([Makefile
|
AC_CONFIG_FILES([Makefile
|
||||||
po/Makefile.in
|
po/Makefile.in
|
||||||
doc/yacc.1])
|
doc/yacc.1])
|
||||||
|
|||||||
@@ -1,220 +0,0 @@
|
|||||||
#! /usr/bin/perl -w
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use IO::File;
|
|
||||||
use Getopt::Long;
|
|
||||||
use File::Basename; # for dirname
|
|
||||||
|
|
||||||
my $VERSION = '2012-01-21 17:13'; # UTC
|
|
||||||
(my $ME = $0) =~ s|.*/||;
|
|
||||||
|
|
||||||
my $prefix;
|
|
||||||
my $lib_name;
|
|
||||||
|
|
||||||
sub usage ($)
|
|
||||||
{
|
|
||||||
my ($exit_code) = @_;
|
|
||||||
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
|
||||||
if ($exit_code != 0)
|
|
||||||
{
|
|
||||||
print $STREAM "Try '$ME --help' for more information.\n";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print $STREAM <<EOF;
|
|
||||||
Usage: $ME --lib-name=NAME FILE
|
|
||||||
or: $ME [--help|--version]
|
|
||||||
Rewrite a gnulib-tool-generated FILE like lib/gnulib.mk to work with
|
|
||||||
automake's subdir-objects.
|
|
||||||
|
|
||||||
OPTIONS:
|
|
||||||
|
|
||||||
This option must be specified:
|
|
||||||
|
|
||||||
--lib-name=NAME library name, often "lib\$project"
|
|
||||||
|
|
||||||
The following are optional:
|
|
||||||
|
|
||||||
--help display this help and exit
|
|
||||||
--version output version information and exit
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
exit $exit_code;
|
|
||||||
}
|
|
||||||
|
|
||||||
# contents ($FILE_NAME)
|
|
||||||
# ---------------------
|
|
||||||
sub contents ($)
|
|
||||||
{
|
|
||||||
my ($file) = @_;
|
|
||||||
local $/; # Turn on slurp-mode.
|
|
||||||
my $f = new IO::File "< $file" or die "$file";
|
|
||||||
my $contents = $f->getline or die "$file";
|
|
||||||
$f->close;
|
|
||||||
return $contents;
|
|
||||||
}
|
|
||||||
|
|
||||||
# prefix_word ($WORD)
|
|
||||||
# -------------------
|
|
||||||
# Do not prefix special words such as variable dereferences. Also,
|
|
||||||
# "Makefile" is really "Makefile", since precisely there is no
|
|
||||||
# lib/Makefile.
|
|
||||||
sub prefix_word ($)
|
|
||||||
{
|
|
||||||
local ($_) = @_;
|
|
||||||
$_ = $prefix . $_
|
|
||||||
unless /^-/ || m{^\$\(\w+\)} || $_ eq "Makefile" || $_ eq '\\';
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# prefix_words ($TEXT)
|
|
||||||
# --------------------
|
|
||||||
sub prefix_words ($)
|
|
||||||
{
|
|
||||||
local ($_) = @_;
|
|
||||||
s{(\S+)}{prefix_word($1)}gem;
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# prefix_assignment ($LHS-AND-ASSIGN-OP, $RHS)
|
|
||||||
# --------------------------------------------
|
|
||||||
sub prefix_assignment ($$)
|
|
||||||
{
|
|
||||||
my ($lhs_and_assign_op, $rhs) = @_;
|
|
||||||
my $res;
|
|
||||||
|
|
||||||
# Some variables are initialized by gnulib.mk, and we don't want
|
|
||||||
# that. Change '=' to '+='.
|
|
||||||
if ($lhs_and_assign_op =~ /^(SUBDIRS|EXTRA_DIST|BUILT_SOURCES|SUFFIXES|MOSTLYCLEANFILES|CLEANFILES|DISTCLEANFILES|MAINTAINERCLEANFILES|AM_CFLAGS|AM_CPPFLAGS|AM_GNU_GETTEXT) =/)
|
|
||||||
{
|
|
||||||
$lhs_and_assign_op =~ s/=/+=/;
|
|
||||||
}
|
|
||||||
# We don't want to inherit gnulib's AUTOMAKE_OPTIONS, comment them.
|
|
||||||
elsif ($lhs_and_assign_op =~ /^AUTOMAKE_OPTIONS =/)
|
|
||||||
{
|
|
||||||
$lhs_and_assign_op =~ s/^/# /;
|
|
||||||
}
|
|
||||||
# Don't touch suffixes.
|
|
||||||
elsif ($lhs_and_assign_op =~ /^SUFFIXES /)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
# The words are (probably) paths to files in lib/: prefix them.
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$rhs = prefix_words($rhs)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Variables which name depend on the location: libbison_a_SOURCES =>
|
|
||||||
# lib_libbison_a_SOURCES.
|
|
||||||
$lhs_and_assign_op =~ s/($lib_name)/lib_$1/g;
|
|
||||||
|
|
||||||
return $lhs_and_assign_op . $rhs;
|
|
||||||
}
|
|
||||||
|
|
||||||
# prefix $CONTENTS
|
|
||||||
# ----------------
|
|
||||||
# $CONTENTS is a Makefile content. Post-process it so that each file-name
|
|
||||||
# is prefixed with $prefix (e.g., "lib/").
|
|
||||||
#
|
|
||||||
# Relies heavily on the regularity of the file generated by gnulib-tool.
|
|
||||||
sub prefix ($)
|
|
||||||
{
|
|
||||||
# Work on $_.
|
|
||||||
local ($_) = @_;
|
|
||||||
|
|
||||||
# Prefix all the occurrence of files in rules. If there is nothing
|
|
||||||
# after in the :, it's probably a phony target, or a suffix rule.
|
|
||||||
# Don't touch it.
|
|
||||||
s{^([-\w+/]+\.[-\w.]+ *: *\S.*)$}
|
|
||||||
{prefix_words($1)}gem;
|
|
||||||
|
|
||||||
# Prefix files in variables.
|
|
||||||
s{^([\w.]+\s*\+?=)(.*)$}
|
|
||||||
{prefix_assignment($1, $2)}gem;
|
|
||||||
|
|
||||||
# These three guys escape all the other regular rules.
|
|
||||||
s{(charset\.alias|ref-add\.sed|ref-del\.sed)}{$prefix$1}g;
|
|
||||||
# Unfortunately, as a result we sometimes have lib/lib.
|
|
||||||
s{($prefix){2}}{$1}g;
|
|
||||||
|
|
||||||
# $(srcdir) is actually $(top_srcdir)/lib.
|
|
||||||
s{\$\(srcdir\)}{\$(top_srcdir)/lib}g;
|
|
||||||
|
|
||||||
# Sometimes, t-$@ is used instead of $@-t, which, of course, does
|
|
||||||
# not work when we have a $@ with a directory in it.
|
|
||||||
s{t-\$\@}{\$\@-t}g;
|
|
||||||
|
|
||||||
# Some AC_SUBST patterns remain and would better be Make macros.
|
|
||||||
s{\@(MKDIR_P)\@}{\$($1)}g;
|
|
||||||
|
|
||||||
# Adjust paths in mkdir.
|
|
||||||
s{(\$\(MKDIR_P\))\s*(\w+)}{$1 $prefix$2}g;
|
|
||||||
|
|
||||||
return $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
# process ($IN)
|
|
||||||
# -------------
|
|
||||||
sub process ($)
|
|
||||||
{
|
|
||||||
my ($file) = @_;
|
|
||||||
my ($bak) = "$file.bak";
|
|
||||||
rename ($file, $bak) or die;
|
|
||||||
my $contents = contents ($bak);
|
|
||||||
$contents = prefix ($contents);
|
|
||||||
my $out = new IO::File(">$file") or die;
|
|
||||||
print $out $contents;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
GetOptions
|
|
||||||
(
|
|
||||||
'lib-name=s' => \$lib_name,
|
|
||||||
help => sub { usage 0 },
|
|
||||||
version => sub { print "$ME version $VERSION\n"; exit },
|
|
||||||
) or usage 1;
|
|
||||||
|
|
||||||
my $fail = 0;
|
|
||||||
defined $lib_name
|
|
||||||
or (warn "$ME: no library name; use --lib-name=NAME\n"), $fail = 1;
|
|
||||||
|
|
||||||
# There must be exactly one argument.
|
|
||||||
@ARGV == 0
|
|
||||||
and (warn "$ME: missing FILE argument\n"), $fail = 1;
|
|
||||||
1 < @ARGV
|
|
||||||
and (warn "$ME: too many arguments:\n", join ("\n", @ARGV), "\n"),
|
|
||||||
$fail = 1;
|
|
||||||
$fail
|
|
||||||
and usage 1;
|
|
||||||
|
|
||||||
my $file = $ARGV[0];
|
|
||||||
$prefix = (dirname $file) . '/';
|
|
||||||
warn "prefix=$prefix\n";
|
|
||||||
|
|
||||||
process $file;
|
|
||||||
}
|
|
||||||
|
|
||||||
### Setup "GNU" style for perl-mode and cperl-mode.
|
|
||||||
## Local Variables:
|
|
||||||
## perl-indent-level: 2
|
|
||||||
## perl-continued-statement-offset: 2
|
|
||||||
## perl-continued-brace-offset: 0
|
|
||||||
## perl-brace-offset: 0
|
|
||||||
## perl-brace-imaginary-offset: 0
|
|
||||||
## perl-label-offset: -2
|
|
||||||
## cperl-indent-level: 2
|
|
||||||
## cperl-brace-offset: 0
|
|
||||||
## cperl-continued-brace-offset: 0
|
|
||||||
## cperl-label-offset: -2
|
|
||||||
## cperl-extra-newline-before-brace: t
|
|
||||||
## cperl-merge-trailing-else: nil
|
|
||||||
## cperl-continued-statement-offset: 2
|
|
||||||
## eval: (add-hook 'write-file-hooks 'time-stamp)
|
|
||||||
## time-stamp-start: "my $VERSION = '"
|
|
||||||
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
|
|
||||||
## time-stamp-time-zone: "UTC"
|
|
||||||
## time-stamp-end: "'; # UTC"
|
|
||||||
## End:
|
|
||||||
1
m4/.gitignore
vendored
1
m4/.gitignore
vendored
@@ -183,3 +183,4 @@
|
|||||||
/xstrndup.m4
|
/xstrndup.m4
|
||||||
/obstack-printf.m4
|
/obstack-printf.m4
|
||||||
/extern-inline.m4
|
/extern-inline.m4
|
||||||
|
/non-recursive-gnulib-prefix-hack.m4
|
||||||
|
|||||||
Reference in New Issue
Block a user