13b97a967SRobert Watson#! /bin/sh 2*5e386598SRobert Watson# Common wrapper for a few potentially missing GNU programs. 33b97a967SRobert Watson 4*5e386598SRobert Watsonscriptversion=2013-10-28.13; # UTC 53b97a967SRobert Watson 6*5e386598SRobert Watson# Copyright (C) 1996-2014 Free Software Foundation, Inc. 7*5e386598SRobert Watson# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. 83b97a967SRobert Watson 93b97a967SRobert Watson# This program is free software; you can redistribute it and/or modify 103b97a967SRobert Watson# it under the terms of the GNU General Public License as published by 113b97a967SRobert Watson# the Free Software Foundation; either version 2, or (at your option) 123b97a967SRobert Watson# any later version. 133b97a967SRobert Watson 143b97a967SRobert Watson# This program is distributed in the hope that it will be useful, 153b97a967SRobert Watson# but WITHOUT ANY WARRANTY; without even the implied warranty of 163b97a967SRobert Watson# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 173b97a967SRobert Watson# GNU General Public License for more details. 183b97a967SRobert Watson 193b97a967SRobert Watson# You should have received a copy of the GNU General Public License 20*5e386598SRobert Watson# along with this program. If not, see <http://www.gnu.org/licenses/>. 213b97a967SRobert Watson 223b97a967SRobert Watson# As a special exception to the GNU General Public License, if you 233b97a967SRobert Watson# distribute this file as part of a program that contains a 243b97a967SRobert Watson# configuration script generated by Autoconf, you may include it under 253b97a967SRobert Watson# the same distribution terms that you use for the rest of that program. 263b97a967SRobert Watson 273b97a967SRobert Watsonif test $# -eq 0; then 28*5e386598SRobert Watson echo 1>&2 "Try '$0 --help' for more information" 293b97a967SRobert Watson exit 1 303b97a967SRobert Watsonfi 313b97a967SRobert Watson 32*5e386598SRobert Watsoncase $1 in 333b97a967SRobert Watson 34*5e386598SRobert Watson --is-lightweight) 35*5e386598SRobert Watson # Used by our autoconf macros to check whether the available missing 36*5e386598SRobert Watson # script is modern enough. 37*5e386598SRobert Watson exit 0 38*5e386598SRobert Watson ;; 393b97a967SRobert Watson 403b97a967SRobert Watson --run) 41*5e386598SRobert Watson # Back-compat with the calling convention used by older automake. 423b97a967SRobert Watson shift 433b97a967SRobert Watson ;; 443b97a967SRobert Watson 453b97a967SRobert Watson -h|--h|--he|--hel|--help) 463b97a967SRobert Watson echo "\ 473b97a967SRobert Watson$0 [OPTION]... PROGRAM [ARGUMENT]... 483b97a967SRobert Watson 49*5e386598SRobert WatsonRun 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due 50*5e386598SRobert Watsonto PROGRAM being missing or too old. 513b97a967SRobert Watson 523b97a967SRobert WatsonOptions: 533b97a967SRobert Watson -h, --help display this help and exit 543b97a967SRobert Watson -v, --version output version information and exit 553b97a967SRobert Watson 563b97a967SRobert WatsonSupported PROGRAM values: 57*5e386598SRobert Watson aclocal autoconf autoheader autom4te automake makeinfo 58*5e386598SRobert Watson bison yacc flex lex help2man 59*5e386598SRobert Watson 60*5e386598SRobert WatsonVersion suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 61*5e386598SRobert Watson'g' are ignored when checking the name. 623b97a967SRobert Watson 633b97a967SRobert WatsonSend bug reports to <bug-automake@gnu.org>." 643b97a967SRobert Watson exit $? 653b97a967SRobert Watson ;; 663b97a967SRobert Watson 673b97a967SRobert Watson -v|--v|--ve|--ver|--vers|--versi|--versio|--version) 683b97a967SRobert Watson echo "missing $scriptversion (GNU Automake)" 693b97a967SRobert Watson exit $? 703b97a967SRobert Watson ;; 713b97a967SRobert Watson 723b97a967SRobert Watson -*) 73*5e386598SRobert Watson echo 1>&2 "$0: unknown '$1' option" 74*5e386598SRobert Watson echo 1>&2 "Try '$0 --help' for more information" 753b97a967SRobert Watson exit 1 763b97a967SRobert Watson ;; 773b97a967SRobert Watson 783b97a967SRobert Watsonesac 793b97a967SRobert Watson 80*5e386598SRobert Watson# Run the given program, remember its exit status. 81*5e386598SRobert Watson"$@"; st=$? 823b97a967SRobert Watson 83*5e386598SRobert Watson# If it succeeded, we are done. 84*5e386598SRobert Watsontest $st -eq 0 && exit 0 85*5e386598SRobert Watson 86*5e386598SRobert Watson# Also exit now if we it failed (or wasn't found), and '--version' was 87*5e386598SRobert Watson# passed; such an option is passed most likely to detect whether the 88*5e386598SRobert Watson# program is present and works. 89*5e386598SRobert Watsoncase $2 in --version|--help) exit $st;; esac 90*5e386598SRobert Watson 91*5e386598SRobert Watson# Exit code 63 means version mismatch. This often happens when the user 92*5e386598SRobert Watson# tries to use an ancient version of a tool on a file that requires a 93*5e386598SRobert Watson# minimum version. 94*5e386598SRobert Watsonif test $st -eq 63; then 95*5e386598SRobert Watson msg="probably too old" 96*5e386598SRobert Watsonelif test $st -eq 127; then 97*5e386598SRobert Watson # Program was missing. 98*5e386598SRobert Watson msg="missing on your system" 99*5e386598SRobert Watsonelse 100*5e386598SRobert Watson # Program was found and executed, but failed. Give up. 101*5e386598SRobert Watson exit $st 1023b97a967SRobert Watsonfi 1033b97a967SRobert Watson 104*5e386598SRobert Watsonperl_URL=http://www.perl.org/ 105*5e386598SRobert Watsonflex_URL=http://flex.sourceforge.net/ 106*5e386598SRobert Watsongnu_software_URL=http://www.gnu.org/software 107*5e386598SRobert Watson 108*5e386598SRobert Watsonprogram_details () 109*5e386598SRobert Watson{ 110*5e386598SRobert Watson case $1 in 111*5e386598SRobert Watson aclocal|automake) 112*5e386598SRobert Watson echo "The '$1' program is part of the GNU Automake package:" 113*5e386598SRobert Watson echo "<$gnu_software_URL/automake>" 114*5e386598SRobert Watson echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" 115*5e386598SRobert Watson echo "<$gnu_software_URL/autoconf>" 116*5e386598SRobert Watson echo "<$gnu_software_URL/m4/>" 117*5e386598SRobert Watson echo "<$perl_URL>" 118*5e386598SRobert Watson ;; 119*5e386598SRobert Watson autoconf|autom4te|autoheader) 120*5e386598SRobert Watson echo "The '$1' program is part of the GNU Autoconf package:" 121*5e386598SRobert Watson echo "<$gnu_software_URL/autoconf/>" 122*5e386598SRobert Watson echo "It also requires GNU m4 and Perl in order to run:" 123*5e386598SRobert Watson echo "<$gnu_software_URL/m4/>" 124*5e386598SRobert Watson echo "<$perl_URL>" 1253b97a967SRobert Watson ;; 1263b97a967SRobert Watson esac 127*5e386598SRobert Watson} 1283b97a967SRobert Watson 129*5e386598SRobert Watsongive_advice () 130*5e386598SRobert Watson{ 131*5e386598SRobert Watson # Normalize program name to check for. 132*5e386598SRobert Watson normalized_program=`echo "$1" | sed ' 133*5e386598SRobert Watson s/^gnu-//; t 134*5e386598SRobert Watson s/^gnu//; t 135*5e386598SRobert Watson s/^g//; t'` 136*5e386598SRobert Watson 137*5e386598SRobert Watson printf '%s\n' "'$1' is $msg." 138*5e386598SRobert Watson 139*5e386598SRobert Watson configure_deps="'configure.ac' or m4 files included by 'configure.ac'" 140*5e386598SRobert Watson case $normalized_program in 141*5e386598SRobert Watson autoconf*) 142*5e386598SRobert Watson echo "You should only need it if you modified 'configure.ac'," 143*5e386598SRobert Watson echo "or m4 files included by it." 144*5e386598SRobert Watson program_details 'autoconf' 1453b97a967SRobert Watson ;; 146*5e386598SRobert Watson autoheader*) 147*5e386598SRobert Watson echo "You should only need it if you modified 'acconfig.h' or" 148*5e386598SRobert Watson echo "$configure_deps." 149*5e386598SRobert Watson program_details 'autoheader' 1503b97a967SRobert Watson ;; 1513b97a967SRobert Watson automake*) 152*5e386598SRobert Watson echo "You should only need it if you modified 'Makefile.am' or" 153*5e386598SRobert Watson echo "$configure_deps." 154*5e386598SRobert Watson program_details 'automake' 1553b97a967SRobert Watson ;; 156*5e386598SRobert Watson aclocal*) 157*5e386598SRobert Watson echo "You should only need it if you modified 'acinclude.m4' or" 158*5e386598SRobert Watson echo "$configure_deps." 159*5e386598SRobert Watson program_details 'aclocal' 1603b97a967SRobert Watson ;; 161*5e386598SRobert Watson autom4te*) 162*5e386598SRobert Watson echo "You might have modified some maintainer files that require" 163*5e386598SRobert Watson echo "the 'autom4te' program to be rebuilt." 164*5e386598SRobert Watson program_details 'autom4te' 1653b97a967SRobert Watson ;; 166*5e386598SRobert Watson bison*|yacc*) 167*5e386598SRobert Watson echo "You should only need it if you modified a '.y' file." 168*5e386598SRobert Watson echo "You may want to install the GNU Bison package:" 169*5e386598SRobert Watson echo "<$gnu_software_URL/bison/>" 1703b97a967SRobert Watson ;; 171*5e386598SRobert Watson lex*|flex*) 172*5e386598SRobert Watson echo "You should only need it if you modified a '.l' file." 173*5e386598SRobert Watson echo "You may want to install the Fast Lexical Analyzer package:" 174*5e386598SRobert Watson echo "<$flex_URL>" 1753b97a967SRobert Watson ;; 176*5e386598SRobert Watson help2man*) 177*5e386598SRobert Watson echo "You should only need it if you modified a dependency" \ 178*5e386598SRobert Watson "of a man page." 179*5e386598SRobert Watson echo "You may want to install the GNU Help2man package:" 180*5e386598SRobert Watson echo "<$gnu_software_URL/help2man/>" 1813b97a967SRobert Watson ;; 182*5e386598SRobert Watson makeinfo*) 183*5e386598SRobert Watson echo "You should only need it if you modified a '.texi' file, or" 184*5e386598SRobert Watson echo "any other file indirectly affecting the aspect of the manual." 185*5e386598SRobert Watson echo "You might want to install the Texinfo package:" 186*5e386598SRobert Watson echo "<$gnu_software_URL/texinfo/>" 187*5e386598SRobert Watson echo "The spurious makeinfo call might also be the consequence of" 188*5e386598SRobert Watson echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" 189*5e386598SRobert Watson echo "want to install GNU make:" 190*5e386598SRobert Watson echo "<$gnu_software_URL/make/>" 1913b97a967SRobert Watson ;; 1923b97a967SRobert Watson *) 193*5e386598SRobert Watson echo "You might have modified some files without having the proper" 194*5e386598SRobert Watson echo "tools for further handling them. Check the 'README' file, it" 195*5e386598SRobert Watson echo "often tells you about the needed prerequisites for installing" 196*5e386598SRobert Watson echo "this package. You may also peek at any GNU archive site, in" 197*5e386598SRobert Watson echo "case some other package contains this missing '$1' program." 1983b97a967SRobert Watson ;; 1993b97a967SRobert Watson esac 200*5e386598SRobert Watson} 2013b97a967SRobert Watson 202*5e386598SRobert Watsongive_advice "$1" | sed -e '1s/^/WARNING: /' \ 203*5e386598SRobert Watson -e '2,$s/^/ /' >&2 204*5e386598SRobert Watson 205*5e386598SRobert Watson# Propagate the correct exit status (expected to be 127 for a program 206*5e386598SRobert Watson# not found, 63 for a program that failed due to version mismatch). 207*5e386598SRobert Watsonexit $st 2083b97a967SRobert Watson 2093b97a967SRobert Watson# Local variables: 2103b97a967SRobert Watson# eval: (add-hook 'write-file-hooks 'time-stamp) 2113b97a967SRobert Watson# time-stamp-start: "scriptversion=" 2123b97a967SRobert Watson# time-stamp-format: "%:y-%02m-%02d.%02H" 213*5e386598SRobert Watson# time-stamp-time-zone: "UTC" 214*5e386598SRobert Watson# time-stamp-end: "; # UTC" 2153b97a967SRobert Watson# End: 216