summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkim Demaille <akim@lrde.epita.fr>2012-10-01 17:42:39 +0200
committerAkim Demaille <akim@lrde.epita.fr>2012-10-01 17:42:39 +0200
commit9ec79612e822b39d0ab2ef5c4b9d584884ef61cd (patch)
tree62ecff791616c5fedaff9b5d637d5f4b6349c486
parentc4e3a1622d668c02caab0bebae60f95f4b1225c6 (diff)
downloadbison-9ec79612e822b39d0ab2ef5c4b9d584884ef61cd.tar.gz
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.
-rw-r--r--bootstrap.conf3
-rw-r--r--build-aux/.gitignore1
-rw-r--r--configure.ac13
-rwxr-xr-xetc/prefix-gnulib-mk220
-rw-r--r--m4/.gitignore1
5 files changed, 4 insertions, 234 deletions
diff --git a/bootstrap.conf b/bootstrap.conf
index 190327d3..3e631a2a 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -25,6 +25,7 @@ gnulib_modules='
gpl-3.0 hash inttypes isnan javacomp-script
javaexec-script ldexpl malloc-gnu
mbswidth
+ non-recursive-gnulib-prefix-hack
obstack
obstack-printf
perror progname
@@ -78,7 +79,7 @@ gnulib_tool_option_extras='--symlink --makefile-name=gnulib.mk'
bootstrap_post_import_hook()
{
# 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.
test -f ChangeLog || touch ChangeLog
diff --git a/build-aux/.gitignore b/build-aux/.gitignore
index e2c69c38..2c8b6fe1 100644
--- a/build-aux/.gitignore
+++ b/build-aux/.gitignore
@@ -26,3 +26,4 @@
/vc-list-files
/warn-on-use.h
/ylwrap
+/prefix-gnulib-mk
diff --git a/configure.ac b/configure.ac
index 328d9294..d6a86a73 100644
--- a/configure.ac
+++ b/configure.ac
@@ -187,19 +187,6 @@ AC_SUBST([GCC])
gt_JAVACOMP([1.3], [1.4])
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
po/Makefile.in
doc/yacc.1])
diff --git a/etc/prefix-gnulib-mk b/etc/prefix-gnulib-mk
deleted file mode 100755
index 81c0924f..00000000
--- a/etc/prefix-gnulib-mk
+++ /dev/null
@@ -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:
diff --git a/m4/.gitignore b/m4/.gitignore
index d3178586..3dfdf6ad 100644
--- a/m4/.gitignore
+++ b/m4/.gitignore
@@ -183,3 +183,4 @@
/xstrndup.m4
/obstack-printf.m4
/extern-inline.m4
+/non-recursive-gnulib-prefix-hack.m4