diff options
author | Akim Demaille <akim@lrde.epita.fr> | 2012-10-01 17:42:39 +0200 |
---|---|---|
committer | Akim Demaille <akim@lrde.epita.fr> | 2012-10-01 17:42:39 +0200 |
commit | 9ec79612e822b39d0ab2ef5c4b9d584884ef61cd (patch) | |
tree | 62ecff791616c5fedaff9b5d637d5f4b6349c486 /etc | |
parent | c4e3a1622d668c02caab0bebae60f95f4b1225c6 (diff) | |
download | bison-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.
Diffstat (limited to 'etc')
-rwxr-xr-x | etc/prefix-gnulib-mk | 220 |
1 files changed, 0 insertions, 220 deletions
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: |