Don't ship help2man, but cope with it missing
authorReuben Thomas <rrt@sc3d.org>
Sun, 14 Jan 2018 22:43:25 +0000 (22:43 +0000)
committerReuben Thomas <rrt@sc3d.org>
Mon, 15 Jan 2018 14:46:45 +0000 (14:46 +0000)
.gitignore
configure.ac
doc/Makefile.am
doc/help2man [deleted file]
m4/.gitignore [new file with mode: 0644]
m4/ax_with_prog.m4 [new file with mode: 0644]
src/Makefile.am

index b352d0a498a99bc898858bdd28188c70682e0582..7b9f1e5d0da999605298c5a889008749c5925a62 100644 (file)
@@ -25,7 +25,6 @@ html/
 /lib/.deps/
 /libtool
 /ltmain.sh
-/m4
 /missing
 /po/*.gmo
 /po/.reference/
index ff2b51f841f4d3c1b58e7a2878a2ef51c789bf1d..e3969d5a905e2a5833ee761904438ee8fe05d20b 100644 (file)
@@ -16,6 +16,10 @@ LT_INIT
 AC_PROG_LEX
 gl_INIT
 
+dnl help2man
+dnl Set a value even if not found, so that an invocation via build-aux/missing works
+AX_WITH_PROG([HELP2MAN], [help2man], [help2man])
+
 AC_SUBST([objdir])
 LT_SYS_MODULE_EXT
 AC_SUBST([shlibext], [$libltdl_cv_shlibext])
index 32e1b4c179b8b249299a38b3f6bd023b1fc2e1c2..19dc62bf79e105108213cbc96248b1838fbf7e2c 100644 (file)
@@ -20,7 +20,7 @@ AUTOMAKE_OPTIONS = gnits
 info_TEXINFOS = recode.texi
 MAKEINFO = LANG= LANGUAGE= @MAKEINFO@
 
-EXTRA_DIST = rfc1345.texi File-Latin1 help2man
+EXTRA_DIST = rfc1345.texi File-Latin1
 MOSTLYCLEANFILES = recode.ops
 
 # Relative to $(srcdir).
diff --git a/doc/help2man b/doc/help2man
deleted file mode 100755 (executable)
index 192576c..0000000
+++ /dev/null
@@ -1,636 +0,0 @@
-#!/usr/bin/perl -w
-
-# Generate a short man page from --help and --version output.
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-# Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Written by Brendan O'Dea <bod@debian.org>
-# Available from ftp://ftp.gnu.org/gnu/help2man/
-
-use 5.005;
-use strict;
-use Getopt::Long;
-use Text::Tabs qw(expand);
-use POSIX qw(strftime setlocale LC_ALL);
-use locale;
-
-my $this_program = 'help2man';
-my $this_version = '1.35';
-
-my $have_gettext;
-BEGIN {
-    eval {
-       require Locale::gettext;
-       Locale::gettext->import;
-       $have_gettext = 1;
-    };
-
-    unless ($have_gettext)
-    {
-       *gettext = sub { $_[0] };
-       *textdomain = sub {};
-    }
-}
-
-sub _ { gettext @_ }
-sub N_ { $_[0] }
-
-textdomain $this_program;
-{
-    my ($user_locale) = grep defined && length,
-       (map $ENV{$_}, qw(LANGUAGE LC_ALL LC_MESSAGES LANG)), 'C';
-
-    sub kark # die with message formatted in the invoking user's locale
-    {
-       setlocale LC_ALL, $user_locale;
-       my $fmt = gettext shift;
-       die +(sprintf $fmt, @_), "\n";
-    }
-}
-
-my $version_info = sprintf _(<<'EOT'), $this_program, $this_version;
-GNU %s %s
-
-Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
-Foundation, Inc.
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-Written by Brendan O'Dea <bod@debian.org>
-EOT
-
-my $help_info = sprintf _(<<'EOT'), $this_program, $this_program;
-`%s' generates a man page out of `--help' and `--version' output.
-
-Usage: %s [OPTION]... EXECUTABLE
-
- -n, --name=STRING       description for the NAME paragraph
- -s, --section=SECTION   section number for manual page (1, 6, 8)
- -m, --manual=TEXT       name of manual (User Commands, ...)
- -S, --source=TEXT       source of program (FSF, Debian, ...)
- -L, --locale=STRING     select locale (default "C")
- -i, --include=FILE      include material from `FILE'
- -I, --opt-include=FILE  include material from `FILE' if it exists
- -o, --output=FILE       send output to `FILE'
- -p, --info-page=TEXT    name of Texinfo manual
- -N, --no-info           suppress pointer to Texinfo manual
-     --help              print this help, then exit
-     --version           print version number, then exit
-
-EXECUTABLE should accept `--help' and `--version' options although
-alternatives may be specified using:
-
- -h, --help-option=STRING     help option string
- -v, --version-option=STRING  version option string
-
-Report bugs to <bug-help2man@gnu.org>.
-EOT
-
-my $section = 1;
-my $manual = '';
-my $source = '';
-my $locale = 'C';
-my $help_option = '--help';
-my $version_option = '--version';
-my ($opt_name, @opt_include, $opt_output, $opt_info, $opt_no_info);
-
-my %opt_def = (
-    'n|name=s'          => \$opt_name,
-    's|section=s'       => \$section,
-    'm|manual=s'        => \$manual,
-    'S|source=s'        => \$source,
-    'L|locale=s'        => \$locale,
-    'i|include=s'       => sub { push @opt_include, [ pop, 1 ] },
-    'I|opt-include=s'   => sub { push @opt_include, [ pop, 0 ] },
-    'o|output=s'        => \$opt_output,
-    'p|info-page=s'     => \$opt_info,
-    'N|no-info'                 => \$opt_no_info,
-    'h|help-option=s'   => \$help_option,
-    'v|version-option=s' => \$version_option,
-);
-
-# Parse options.
-Getopt::Long::config('bundling');
-GetOptions (%opt_def,
-    help    => sub { print $help_info; exit },
-    version => sub { print $version_info; exit },
-) or die $help_info;
-
-die $help_info unless @ARGV == 1;
-
-die "$this_program: no locale support (Locale::gettext required)\n"
-    unless $locale eq 'C' or $have_gettext;
-
-# Set localisation of date and executable's ouput.
-delete @ENV{qw(LANGUAGE LC_MESSAGES LANG)};
-setlocale LC_ALL, $ENV{LC_ALL} = $locale;
-
-my %include = ();
-my %append = ();
-my @include = (); # retain order given in include file
-
-# Process include file (if given).  Format is:
-#
-#   [section name]
-#   verbatim text
-#
-# or
-#
-#   /pattern/
-#   verbatim text
-#
-
-while (@opt_include)
-{
-    my ($inc, $required) = @{shift @opt_include};
-
-    next unless -f $inc or $required;
-    kark N_("%s: can't open `%s' (%s)"), $this_program, $inc, $!
-       unless open INC, $inc;
-
-    my $key;
-    my $hash = \%include;
-
-    while (<INC>)
-    {
-       # [section]
-       if (/^\[([^]]+)\]/)
-       {
-           $key = uc $1;
-           $key =~ s/^\s+//;
-           $key =~ s/\s+$//;
-           $hash = \%include;
-           push @include, $key unless $include{$key};
-           next;
-       }
-
-       # /pattern/
-       if (m!^/(.*)/([ims]*)!)
-       {
-           my $pat = $2 ? "(?$2)$1" : $1;
-
-           # Check pattern.
-           eval { $key = qr($pat) };
-           if ($@)
-           {
-               $@ =~ s/ at .*? line \d.*//;
-               die "$inc:$.:$@";
-           }
-
-           $hash = \%append;
-           next;
-       }
-
-       # Check for options before the first section--anything else is
-       # silently ignored, allowing the first for comments and
-       # revision info.
-       unless ($key)
-       {
-           # handle options
-           if (/^-/)
-           {
-               local @ARGV = split;
-               GetOptions %opt_def;
-           }
-
-           next;
-       }
-
-       $hash->{$key} ||= '';
-       $hash->{$key} .= $_;
-    }
-
-    close INC;
-
-    kark N_("%s: no valid information found in `%s'"), $this_program, $inc
-       unless $key;
-}
-
-# Compress trailing blank lines.
-for my $hash (\(%include, %append))
-{
-    for (keys %$hash) { $hash->{$_} =~ s/\n+$/\n/ }
-}
-
-# Grab help and version info from executable.
-my ($help_text, $version_text) = map {
-    join '', map { s/ +$//; expand $_ } `$ARGV[0] $_ 2>/dev/null`
-       or kark N_("%s: can't get `%s' info from %s"), $this_program,
-           $_, $ARGV[0]
-} $help_option, $version_option;
-
-my $date = strftime "%B %Y", localtime;
-(my $program = $ARGV[0]) =~ s!.*/!!;
-my $package = $program;
-my $version;
-
-if ($opt_output)
-{
-    unlink $opt_output or kark N_("%s: can't unlink %s (%s)"),
-       $this_program, $opt_output, $! if -e $opt_output;
-
-    open STDOUT, ">$opt_output"
-       or kark N_("%s: can't create %s (%s)"), $this_program, $opt_output, $!;
-}
-
-# The first line of the --version information is assumed to be in one
-# of the following formats:
-#
-#   <version>
-#   <program> <version>
-#   {GNU,Free} <program> <version>
-#   <program> ({GNU,Free} <package>) <version>
-#   <program> - {GNU,Free} <package> <version>
-#
-# and seperated from any copyright/author details by a blank line.
-
-($_, $version_text) = split /\n+/, $version_text, 2;
-
-if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or
-    /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/)
-{
-    $program = $1;
-    $package = $2;
-    $version = $3;
-}
-elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/)
-{
-    $program = $2;
-    $package = $1 ? "$1$2" : $2;
-    $version = $3;
-}
-else
-{
-    $version = $_;
-}
-
-$program =~ s!.*/!!;
-
-# No info for `info' itself.
-$opt_no_info = 1 if $program eq 'info';
-
-for ($include{_('NAME')})
-{
-    if ($opt_name) # --name overrides --include contents.
-    {
-       $_ = "$program \\- $opt_name\n";
-    }
-    elsif ($_) # Use first name given as $program
-    {
-       $program = $1 if /^([^\s,]+)(?:,?\s*[^\s,\\-]+)*\s+\\?-/;
-    }
-    else # Set a default (useless) NAME paragraph.
-    {
-       $_ = sprintf _("%s \\- manual page for %s %s") . "\n", $program,
-           $program, $version;
-    }
-}
-
-# Man pages traditionally have the page title in caps.
-my $PROGRAM = uc $program;
-
-# Set default page head/footers
-$source ||= "$program $version";
-unless ($manual)
-{
-    for ($section)
-    {
-       if (/^(1[Mm]|8)/) { $manual = _('System Administration Utilities') }
-       elsif (/^6/)      { $manual = _('Games') }
-       else              { $manual = _('User Commands') }
-    }
-}
-
-# Extract usage clause(s) [if any] for SYNOPSIS.
-my $PAT_USAGE = _('Usage');
-my $PAT_USAGE_CONT = _('or');
-if ($help_text =~ s/^($PAT_USAGE):( +(\S+))(.*)((?:\n(?: {6}\1| *($PAT_USAGE_CONT): +\S).*)*)//om)
-{
-    my @syn = $3 . $4;
-
-    if ($_ = $5)
-    {
-       s/^\n//;
-       for (split /\n/) { s/^ *(($PAT_USAGE_CONT): +)?//o; push @syn, $_ }
-    }
-
-    my $synopsis = '';
-    for (@syn)
-    {
-       $synopsis .= ".br\n" if $synopsis;
-       s!^\S*/!!;
-       s/^(\S+) *//;
-       $synopsis .= ".B $1\n";
-       s/\s+$//;
-       s/(([][]|\.\.+)+)/\\fR$1\\fI/g;
-       s/^/\\fI/ unless s/^\\fR//;
-       $_ .= '\fR';
-       s/(\\fI)( *)/$2$1/g;
-       s/\\fI\\fR//g;
-       s/^\\fR//;
-       s/\\fI$//;
-       s/^\./\\&./;
-
-       $synopsis .= "$_\n";
-    }
-
-    $include{_('SYNOPSIS')} ||= $synopsis;
-}
-
-# Process text, initial section is DESCRIPTION.
-my $sect = _('DESCRIPTION');
-$_ = "$help_text\n\n$version_text";
-
-# Normalise paragraph breaks.
-s/^\n+//;
-s/\n*$/\n/;
-s/\n\n+/\n\n/g;
-
-# Join hyphenated lines.
-s/([A-Za-z])-\n *([A-Za-z])/$1$2/g;
-
-# Temporarily exchange leading dots, apostrophes and backslashes for
-# tokens.
-s/^\./\x80/mg;
-s/^'/\x81/mg;
-s/\\/\x82/g;
-
-my $PAT_BUGS           = _('Report +bugs|Email +bug +reports +to');
-my $PAT_AUTHOR         = _('Written +by');
-my $PAT_OPTIONS                = _('Options');
-my $PAT_EXAMPLES       = _('Examples');
-my $PAT_FREE_SOFTWARE  = _('This +is +free +software');
-
-# Start a new paragraph (if required) for these.
-s/([^\n])\n($PAT_BUGS|$PAT_AUTHOR)/$1\n\n$2/og;
-
-sub convert_option;
-
-while (length)
-{
-    # Convert some standard paragraph names.
-    if (s/^($PAT_OPTIONS): *\n//o)
-    {
-       $sect = _('OPTIONS');
-       next;
-    }
-    elsif (s/^($PAT_EXAMPLES): *\n//o)
-    {
-       $sect = _('EXAMPLES');
-       next;
-    }
-
-    # Copyright section
-    if (/^Copyright +[(\xa9]/)
-    {
-       $sect = _('COPYRIGHT');
-       $include{$sect} ||= '';
-       $include{$sect} .= ".PP\n" if $include{$sect};
-
-       my $copy;
-       ($copy, $_) = split /\n\n/, $_, 2;
-
-       for ($copy)
-       {
-           # Add back newline
-           s/\n*$/\n/;
-
-           # Convert iso9959-1 copyright symbol or (c) to nroff
-           # character.
-           s/^Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/mg;
-
-           # Insert line breaks before additional copyright messages
-           # and the disclaimer.
-           s/(.)\n(Copyright |$PAT_FREE_SOFTWARE)/$1\n.br\n$2/og;
-       }
-
-       $include{$sect} .= $copy;
-       $_ ||= '';
-       next;
-    }
-
-    # Catch bug report text.
-    if (/^($PAT_BUGS) /o)
-    {
-       $sect = _('REPORTING BUGS');
-    }
-
-    # Author section.
-    elsif (/^($PAT_AUTHOR)/o)
-    {
-       $sect = _('AUTHOR');
-    }
-
-    # Examples, indicated by an indented leading $, % or > are
-    # rendered in a constant width font.
-    if (/^( +)([\$\%>] )\S/)
-    {
-       my $indent = $1;
-       my $prefix = $2;
-       my $break = '.IP';
-       $include{$sect} ||= '';
-       while (s/^$indent\Q$prefix\E(\S.*)\n*//)
-       {
-           $include{$sect} .= "$break\n\\f(CW$prefix$1\\fR\n";
-           $break = '.br';
-       }
-
-       next;
-    }
-
-    my $matched = '';
-    $include{$sect} ||= '';
-
-    # Sub-sections have a trailing colon and the second line indented.
-    if (s/^(\S.*:) *\n / /)
-    {
-       $matched .= $& if %append;
-       $include{$sect} .= qq(.SS "$1"\n);
-    }
-
-    my $indent = 0;
-    my $content = '';
-
-    # Option with description.
-    if (s/^( {1,10}([+-]\S.*?))(?:(  +(?!-))|\n( {20,}))(\S.*)\n//)
-    {
-       $matched .= $& if %append;
-       $indent = length ($4 || "$1$3");
-       $content = ".TP\n\x84$2\n\x84$5\n";
-       unless ($4)
-       {
-           # Indent may be different on second line.
-           $indent = length $& if /^ {20,}/;
-       }
-    }
-
-    # Option without description.
-    elsif (s/^ {1,10}([+-]\S.*)\n//)
-    {
-       $matched .= $& if %append;
-       $content = ".HP\n\x84$1\n";
-       $indent = 80; # not continued
-    }
-
-    # Indented paragraph with tag.
-    elsif (s/^( +(\S.*?)  +)(\S.*)\n//)
-    {
-       $matched .= $& if %append;
-       $indent = length $1;
-       $content = ".TP\n\x84$2\n\x84$3\n";
-    }
-
-    # Indented paragraph.
-    elsif (s/^( +)(\S.*)\n//)
-    {
-       $matched .= $& if %append;
-       $indent = length $1;
-       $content = ".IP\n\x84$2\n";
-    }
-
-    # Left justified paragraph.
-    else
-    {
-       s/(.*)\n//;
-       $matched .= $& if %append;
-       $content = ".PP\n" if $include{$sect};
-       $content .= "$1\n";
-    }
-
-    # Append continuations.
-    while ($indent ? s/^ {$indent}(\S.*)\n// : s/^(\S.*)\n//)
-    {
-       $matched .= $& if %append;
-       $content .= "\x84$1\n"
-    }
-
-    # Move to next paragraph.
-    s/^\n+//;
-
-    for ($content)
-    {
-       # Leading dot and apostrophe protection.
-       s/\x84\./\x80/g;
-       s/\x84'/\x81/g;
-       s/\x84//g;
-
-       # Convert options.
-       s/(^| |\()(-[][\w=-]+)/$1 . convert_option $2/mge;
-
-       # Escape remaining hyphens
-       s/-/\x83/g;
-    }
-
-    # Check if matched paragraph contains /pat/.
-    if (%append)
-    {
-       for my $pat (keys %append)
-       {
-           if ($matched =~ $pat)
-           {
-               $content .= ".PP\n" unless $append{$pat} =~ /^\./;
-               $content .= $append{$pat};
-           }
-       }
-    }
-
-    $include{$sect} .= $content;
-}
-
-# Refer to the real documentation.
-unless ($opt_no_info)
-{
-    my $info_page = $opt_info || $program;
-
-    $sect = _('SEE ALSO');
-    $include{$sect} ||= '';
-    $include{$sect} .= ".PP\n" if $include{$sect};
-    $include{$sect} .= sprintf _(<<'EOT'), $program, $program, $info_page;
-The full documentation for
-.B %s
-is maintained as a Texinfo manual.  If the
-.B info
-and
-.B %s
-programs are properly installed at your site, the command
-.IP
-.B info %s
-.PP
-should give you access to the complete manual.
-EOT
-}
-
-# Output header.
-print <<EOT;
-.\\" DO NOT MODIFY THIS FILE!  It was generated by $this_program $this_version.
-.TH $PROGRAM "$section" "$date" "$source" "$manual"
-EOT
-
-# Section ordering.
-my @pre = (_('NAME'), _('SYNOPSIS'), _('DESCRIPTION'), _('OPTIONS'),
-    _('EXAMPLES'));
-
-my @post = (_('AUTHOR'), _('REPORTING BUGS'), _('COPYRIGHT'), _('SEE ALSO'));
-my $filter = join '|', @pre, @post;
-
-# Output content.
-for my $sect (@pre, (grep ! /^($filter)$/o, @include), @post)
-{
-    if ($include{$sect})
-    {
-       my $lsect = gettext $sect;
-       my $quote = $lsect =~ /\W/ ? '"' : '';
-       print ".SH $quote$lsect$quote\n";
-
-       for ($include{$sect})
-       {
-           # Replace leading dot, apostrophe, backslash and hyphen
-           # tokens.
-           s/\x80/\\&./g;
-           s/\x81/\\&'/g;
-           s/\x82/\\e/g;
-           s/\x83/\\-/g;
-
-           # Convert some latin1 chars to troff equivalents
-           s/\xa0/\\ /g; # non-breaking space
-
-           print;
-       }
-    }
-}
-
-close STDOUT or kark N_("%s: error writing to %s (%s)"), $this_program,
-    $opt_output || 'stdout', $!;
-
-exit;
-
-# Convert option dashes to \- to stop nroff from hyphenating 'em, and
-# embolden.  Option arguments get italicised.
-sub convert_option
-{
-    local $_ = '\fB' . shift;
-
-    s/-/\x83/g;
-    unless (s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/)
-    {
-       s/=(.)/\\fR=\\fI$1/;
-       s/ (.)/ \\fI$1/;
-       $_ .= '\fR';
-    }
-
-    $_;
-}
diff --git a/m4/.gitignore b/m4/.gitignore
new file mode 100644 (file)
index 0000000..bef40ae
--- /dev/null
@@ -0,0 +1,124 @@
+# files created by gnulib, but that gnulib doesn't track
+*~
+gnulib-comp.m4
+/00gnulib.m4
+/absolute-header.m4
+/alloca.m4
+/configmake.m4
+/dirname.m4
+/double-slash-root.m4
+/eealloc.m4
+/errno_h.m4
+/error.m4
+/exponentd.m4
+/exponentf.m4
+/exponentl.m4
+/extensions.m4
+/float_h.m4
+/fpieee.m4
+/frexp.m4
+/frexpl.m4
+/fseterr.m4
+/getopt.m4
+/getprogname.m4
+/gnulib-common.m4
+/gnulib-tool.m4
+/hard-locale.m4
+/include_next.m4
+/intmax_t.m4
+/isnand.m4
+/isnanf.m4
+/isnanl.m4
+/ldexpl.m4
+/limits-h.m4
+/localcharset.m4
+/locale-fr.m4
+/locale-ja.m4
+/locale-zh.m4
+/malloc.m4
+/malloca.m4
+/manywarnings-c++.m4
+/manywarnings.m4
+/math_h.m4
+/mbrtowc.m4
+/mbsinit.m4
+/mbstate_t.m4
+/memchr.m4
+/minmax.m4
+/mmap-anon.m4
+/msvc-inval.m4
+/msvc-nothrow.m4
+/multiarch.m4
+/nocrash.m4
+/off_t.m4
+/pathmax.m4
+/pipe.m4
+/printf-frexp.m4
+/printf-frexpl.m4
+/printf.m4
+/quote.m4
+/quotearg.m4
+/signbit.m4
+/ssize_t.m4
+/stdbool.m4
+/stddef_h.m4
+/stdint.m4
+/stdio_h.m4
+/stdlib_h.m4
+/strerror.m4
+/string_h.m4
+/strndup.m4
+/strnlen.m4
+/sys_socket_h.m4
+/sys_types_h.m4
+/sys_wait_h.m4
+/time_h.m4
+/unistd_h.m4
+/utime.m4
+/utime_h.m4
+/vasnprintf.m4
+/vfprintf-posix.m4
+/vprintf-posix.m4
+/warn-on-use.m4
+/warnings.m4
+/wchar_h.m4
+/wctype_h.m4
+/xalloc.m4
+/codeset.m4
+/extern-inline.m4
+/fcntl-o.m4
+/gettext.m4
+/glibc2.m4
+/glibc21.m4
+/gnulib-cache.m4
+/iconv.m4
+/intdiv0.m4
+/intl.m4
+/intldir.m4
+/intlmacosx.m4
+/intmax.m4
+/inttypes-pri.m4
+/inttypes_h.m4
+/lcmessage.m4
+/lib-ld.m4
+/lib-link.m4
+/lib-prefix.m4
+/libtool.m4
+/lock.m4
+/longlong.m4
+/ltoptions.m4
+/ltsugar.m4
+/ltversion.m4
+/lt~obsolete.m4
+/nls.m4
+/po.m4
+/printf-posix.m4
+/progtest.m4
+/size_max.m4
+/stdint_h.m4
+/threadlib.m4
+/uintmax_t.m4
+/visibility.m4
+/wchar_t.m4
+/wint_t.m4
+/xsize.m4
diff --git a/m4/ax_with_prog.m4 b/m4/ax_with_prog.m4
new file mode 100644 (file)
index 0000000..b3a881c
--- /dev/null
@@ -0,0 +1,70 @@
+# ===========================================================================
+#       https://www.gnu.org/software/autoconf-archive/ax_with_prog.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_WITH_PROG([VARIABLE],[program],[VALUE-IF-NOT-FOUND],[PATH])
+#
+# DESCRIPTION
+#
+#   Locates an installed program binary, placing the result in the precious
+#   variable VARIABLE. Accepts a present VARIABLE, then --with-program, and
+#   failing that searches for program in the given path (which defaults to
+#   the system path). If program is found, VARIABLE is set to the full path
+#   of the binary; if it is not found VARIABLE is set to VALUE-IF-NOT-FOUND
+#   if provided, unchanged otherwise.
+#
+#   A typical example could be the following one:
+#
+#     AX_WITH_PROG(PERL,perl)
+#
+#   NOTE: This macro is based upon the original AX_WITH_PYTHON macro from
+#   Dustin J. Mitchell <dustin@cs.uchicago.edu>.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Francesco Salvestrini <salvestrini@users.sourceforge.net>
+#   Copyright (c) 2008 Dustin J. Mitchell <dustin@cs.uchicago.edu>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 17
+
+AC_DEFUN([AX_WITH_PROG],[
+    AC_PREREQ([2.61])
+
+    pushdef([VARIABLE],$1)
+    pushdef([EXECUTABLE],$2)
+    pushdef([VALUE_IF_NOT_FOUND],$3)
+    pushdef([PATH_PROG],$4)
+
+    AC_ARG_VAR(VARIABLE,Absolute path to EXECUTABLE executable)
+
+    AS_IF(test -z "$VARIABLE",[
+        AC_MSG_CHECKING(whether EXECUTABLE executable path has been provided)
+        AC_ARG_WITH(EXECUTABLE,AS_HELP_STRING([--with-EXECUTABLE=[[[PATH]]]],absolute path to EXECUTABLE executable), [
+            AS_IF([test "$withval" != yes && test "$withval" != no],[
+                VARIABLE="$withval"
+                AC_MSG_RESULT($VARIABLE)
+            ],[
+                VARIABLE=""
+                AC_MSG_RESULT([no])
+                AS_IF([test "$withval" != no], [
+                  AC_PATH_PROG([]VARIABLE[],[]EXECUTABLE[],[]VALUE_IF_NOT_FOUND[],[]PATH_PROG[])
+                ])
+            ])
+        ],[
+            AC_MSG_RESULT([no])
+            AC_PATH_PROG([]VARIABLE[],[]EXECUTABLE[],[]VALUE_IF_NOT_FOUND[],[]PATH_PROG[])
+        ])
+    ])
+
+    popdef([PATH_PROG])
+    popdef([VALUE_IF_NOT_FOUND])
+    popdef([EXECUTABLE])
+    popdef([VARIABLE])
+])
index ccc80d7a2bf056aa8ea373b5092ccc1bc55df465..ed75841ca70bf367a0f4303aade24f6da7b14bf3 100644 (file)
@@ -83,7 +83,6 @@ TAGS_DEPENDENCIES = $(L_STEPS)
 # -DHASH_STATS         For printing a one-liner hash statistics.
 
 LEX = @LEX@
-PERL = perl
 PYTHON = python
 TABLES_PY = $(PYTHON) $(top_srcdir)/tables.py
 
@@ -94,17 +93,12 @@ $(srcdir)/merged.c: mergelex.py $(L_STEPS)
        grep -v '^# *line [0-9]' merged.tm2 > $(srcdir)/merged.c
        rm merged.tm1 merged.tm2
 
-$(srcdir)/recode.1: recode
-       @if test -r $@ && test ! -w $@; then \
-         echo "WARNING: Page \`$@' read only, not updated"; \
-       elif $(PERL) $(top_srcdir)/doc/help2man \
-           --name="converts files between character sets" \
-           --output=$@ ./recode; then \
-         echo "Page \`$@' has been updated"; \
-       else \
-         echo "WARNING: Page \`$@' has *not* been updated."; \
-         echo "         It might be that \`Perl' is missing on your system,"; \
-         echo "         but you may safely and merely ignore this error."; \
+recode.1: main.c $(top_srcdir)/configure.ac
+## Exit gracefully if recode.1 is not writeable, such as during distcheck!
+       $(AM_V_GEN)if ( touch $@.w && rm -f $@.w; ) >/dev/null 2>&1; then \
+         $(top_srcdir)/build-aux/missing --run $(HELP2MAN) \
+               --name="converts files between character sets" \
+               --output=$@ ./recode; \
        fi
 
 main.o: main.c ../config.status