1ca236e63SDag-Erling Smørgrav#! /bin/sh 2ce77a8d6SDag-Erling Smørgrav# Common wrapper for a few potentially missing GNU programs. 3b33ab329SDag-Erling Smørgrav 423d17223SDag-Erling Smørgravscriptversion=2018-03-07.03; # UTC 5b33ab329SDag-Erling Smørgrav 6*3ba4c8c8SDag-Erling Smørgrav# Copyright (C) 1996-2021 Free Software Foundation, Inc. 7ce77a8d6SDag-Erling Smørgrav# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. 8ca236e63SDag-Erling Smørgrav 9ca236e63SDag-Erling Smørgrav# This program is free software; you can redistribute it and/or modify 10ca236e63SDag-Erling Smørgrav# it under the terms of the GNU General Public License as published by 11ca236e63SDag-Erling Smørgrav# the Free Software Foundation; either version 2, or (at your option) 12ca236e63SDag-Erling Smørgrav# any later version. 13ca236e63SDag-Erling Smørgrav 14ca236e63SDag-Erling Smørgrav# This program is distributed in the hope that it will be useful, 15ca236e63SDag-Erling Smørgrav# but WITHOUT ANY WARRANTY; without even the implied warranty of 16ca236e63SDag-Erling Smørgrav# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17ca236e63SDag-Erling Smørgrav# GNU General Public License for more details. 18ca236e63SDag-Erling Smørgrav 19ca236e63SDag-Erling Smørgrav# You should have received a copy of the GNU General Public License 2023d17223SDag-Erling Smørgrav# along with this program. If not, see <https://www.gnu.org/licenses/>. 21ca236e63SDag-Erling Smørgrav 22ca236e63SDag-Erling Smørgrav# As a special exception to the GNU General Public License, if you 23ca236e63SDag-Erling Smørgrav# distribute this file as part of a program that contains a 24ca236e63SDag-Erling Smørgrav# configuration script generated by Autoconf, you may include it under 25ca236e63SDag-Erling Smørgrav# the same distribution terms that you use for the rest of that program. 26ca236e63SDag-Erling Smørgrav 27ca236e63SDag-Erling Smørgravif test $# -eq 0; then 28ce77a8d6SDag-Erling Smørgrav echo 1>&2 "Try '$0 --help' for more information" 29ca236e63SDag-Erling Smørgrav exit 1 30ca236e63SDag-Erling Smørgravfi 31ca236e63SDag-Erling Smørgrav 327f106882SDag-Erling Smørgravcase $1 in 33ce77a8d6SDag-Erling Smørgrav 34ce77a8d6SDag-Erling Smørgrav --is-lightweight) 35ce77a8d6SDag-Erling Smørgrav # Used by our autoconf macros to check whether the available missing 36ce77a8d6SDag-Erling Smørgrav # script is modern enough. 37ce77a8d6SDag-Erling Smørgrav exit 0 38ce77a8d6SDag-Erling Smørgrav ;; 39ce77a8d6SDag-Erling Smørgrav 40ca236e63SDag-Erling Smørgrav --run) 41ce77a8d6SDag-Erling Smørgrav # Back-compat with the calling convention used by older automake. 42ca236e63SDag-Erling Smørgrav shift 43ca236e63SDag-Erling Smørgrav ;; 44ca236e63SDag-Erling Smørgrav 45ca236e63SDag-Erling Smørgrav -h|--h|--he|--hel|--help) 46ca236e63SDag-Erling Smørgrav echo "\ 47ca236e63SDag-Erling Smørgrav$0 [OPTION]... PROGRAM [ARGUMENT]... 48ca236e63SDag-Erling Smørgrav 49ce77a8d6SDag-Erling SmørgravRun 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due 50ce77a8d6SDag-Erling Smørgravto PROGRAM being missing or too old. 51ca236e63SDag-Erling Smørgrav 52ca236e63SDag-Erling SmørgravOptions: 53ca236e63SDag-Erling Smørgrav -h, --help display this help and exit 54ca236e63SDag-Erling Smørgrav -v, --version output version information and exit 55ca236e63SDag-Erling Smørgrav 56ca236e63SDag-Erling SmørgravSupported PROGRAM values: 57ce77a8d6SDag-Erling Smørgrav aclocal autoconf autoheader autom4te automake makeinfo 58ce77a8d6SDag-Erling Smørgrav bison yacc flex lex help2man 59b33ab329SDag-Erling Smørgrav 60ce77a8d6SDag-Erling SmørgravVersion suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 61ce77a8d6SDag-Erling Smørgrav'g' are ignored when checking the name. 627f106882SDag-Erling Smørgrav 63b33ab329SDag-Erling SmørgravSend bug reports to <bug-automake@gnu.org>." 64fe980754SDag-Erling Smørgrav exit $? 65ca236e63SDag-Erling Smørgrav ;; 66ca236e63SDag-Erling Smørgrav 67ca236e63SDag-Erling Smørgrav -v|--v|--ve|--ver|--vers|--versi|--versio|--version) 68b33ab329SDag-Erling Smørgrav echo "missing $scriptversion (GNU Automake)" 69fe980754SDag-Erling Smørgrav exit $? 70ca236e63SDag-Erling Smørgrav ;; 71ca236e63SDag-Erling Smørgrav 72ca236e63SDag-Erling Smørgrav -*) 73ce77a8d6SDag-Erling Smørgrav echo 1>&2 "$0: unknown '$1' option" 74ce77a8d6SDag-Erling Smørgrav echo 1>&2 "Try '$0 --help' for more information" 75ca236e63SDag-Erling Smørgrav exit 1 76ca236e63SDag-Erling Smørgrav ;; 77ca236e63SDag-Erling Smørgrav 78fe980754SDag-Erling Smørgravesac 79fe980754SDag-Erling Smørgrav 80ce77a8d6SDag-Erling Smørgrav# Run the given program, remember its exit status. 81ce77a8d6SDag-Erling Smørgrav"$@"; st=$? 82ce77a8d6SDag-Erling Smørgrav 83ce77a8d6SDag-Erling Smørgrav# If it succeeded, we are done. 84ce77a8d6SDag-Erling Smørgravtest $st -eq 0 && exit 0 85ce77a8d6SDag-Erling Smørgrav 86ce77a8d6SDag-Erling Smørgrav# Also exit now if we it failed (or wasn't found), and '--version' was 87ce77a8d6SDag-Erling Smørgrav# passed; such an option is passed most likely to detect whether the 88ce77a8d6SDag-Erling Smørgrav# program is present and works. 89ce77a8d6SDag-Erling Smørgravcase $2 in --version|--help) exit $st;; esac 90ce77a8d6SDag-Erling Smørgrav 91ce77a8d6SDag-Erling Smørgrav# Exit code 63 means version mismatch. This often happens when the user 92ce77a8d6SDag-Erling Smørgrav# tries to use an ancient version of a tool on a file that requires a 93ce77a8d6SDag-Erling Smørgrav# minimum version. 94ce77a8d6SDag-Erling Smørgravif test $st -eq 63; then 95ce77a8d6SDag-Erling Smørgrav msg="probably too old" 96ce77a8d6SDag-Erling Smørgravelif test $st -eq 127; then 97ce77a8d6SDag-Erling Smørgrav # Program was missing. 98ce77a8d6SDag-Erling Smørgrav msg="missing on your system" 99ce77a8d6SDag-Erling Smørgravelse 100ce77a8d6SDag-Erling Smørgrav # Program was found and executed, but failed. Give up. 101ce77a8d6SDag-Erling Smørgrav exit $st 102ce77a8d6SDag-Erling Smørgravfi 103ce77a8d6SDag-Erling Smørgrav 10423d17223SDag-Erling Smørgravperl_URL=https://www.perl.org/ 10523d17223SDag-Erling Smørgravflex_URL=https://github.com/westes/flex 10623d17223SDag-Erling Smørgravgnu_software_URL=https://www.gnu.org/software 107ce77a8d6SDag-Erling Smørgrav 108ce77a8d6SDag-Erling Smørgravprogram_details () 109ce77a8d6SDag-Erling Smørgrav{ 110ce77a8d6SDag-Erling Smørgrav case $1 in 111ce77a8d6SDag-Erling Smørgrav aclocal|automake) 112ce77a8d6SDag-Erling Smørgrav echo "The '$1' program is part of the GNU Automake package:" 113ce77a8d6SDag-Erling Smørgrav echo "<$gnu_software_URL/automake>" 114ce77a8d6SDag-Erling Smørgrav echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" 115ce77a8d6SDag-Erling Smørgrav echo "<$gnu_software_URL/autoconf>" 116ce77a8d6SDag-Erling Smørgrav echo "<$gnu_software_URL/m4/>" 117ce77a8d6SDag-Erling Smørgrav echo "<$perl_URL>" 118ce77a8d6SDag-Erling Smørgrav ;; 119ce77a8d6SDag-Erling Smørgrav autoconf|autom4te|autoheader) 120ce77a8d6SDag-Erling Smørgrav echo "The '$1' program is part of the GNU Autoconf package:" 121ce77a8d6SDag-Erling Smørgrav echo "<$gnu_software_URL/autoconf/>" 122ce77a8d6SDag-Erling Smørgrav echo "It also requires GNU m4 and Perl in order to run:" 123ce77a8d6SDag-Erling Smørgrav echo "<$gnu_software_URL/m4/>" 124ce77a8d6SDag-Erling Smørgrav echo "<$perl_URL>" 125ce77a8d6SDag-Erling Smørgrav ;; 126ce77a8d6SDag-Erling Smørgrav esac 127ce77a8d6SDag-Erling Smørgrav} 128ce77a8d6SDag-Erling Smørgrav 129ce77a8d6SDag-Erling Smørgravgive_advice () 130ce77a8d6SDag-Erling Smørgrav{ 131ce77a8d6SDag-Erling Smørgrav # Normalize program name to check for. 132ce77a8d6SDag-Erling Smørgrav normalized_program=`echo "$1" | sed ' 1337f106882SDag-Erling Smørgrav s/^gnu-//; t 1347f106882SDag-Erling Smørgrav s/^gnu//; t 1357f106882SDag-Erling Smørgrav s/^g//; t'` 1367f106882SDag-Erling Smørgrav 137ce77a8d6SDag-Erling Smørgrav printf '%s\n' "'$1' is $msg." 138fe980754SDag-Erling Smørgrav 139ce77a8d6SDag-Erling Smørgrav configure_deps="'configure.ac' or m4 files included by 'configure.ac'" 140ce77a8d6SDag-Erling Smørgrav case $normalized_program in 1417f106882SDag-Erling Smørgrav autoconf*) 142ce77a8d6SDag-Erling Smørgrav echo "You should only need it if you modified 'configure.ac'," 143ce77a8d6SDag-Erling Smørgrav echo "or m4 files included by it." 144ce77a8d6SDag-Erling Smørgrav program_details 'autoconf' 145ca236e63SDag-Erling Smørgrav ;; 1467f106882SDag-Erling Smørgrav autoheader*) 147ce77a8d6SDag-Erling Smørgrav echo "You should only need it if you modified 'acconfig.h' or" 148ce77a8d6SDag-Erling Smørgrav echo "$configure_deps." 149ce77a8d6SDag-Erling Smørgrav program_details 'autoheader' 150ca236e63SDag-Erling Smørgrav ;; 151b33ab329SDag-Erling Smørgrav automake*) 152ce77a8d6SDag-Erling Smørgrav echo "You should only need it if you modified 'Makefile.am' or" 153ce77a8d6SDag-Erling Smørgrav echo "$configure_deps." 154ce77a8d6SDag-Erling Smørgrav program_details 'automake' 155ca236e63SDag-Erling Smørgrav ;; 156ce77a8d6SDag-Erling Smørgrav aclocal*) 157ce77a8d6SDag-Erling Smørgrav echo "You should only need it if you modified 'acinclude.m4' or" 158ce77a8d6SDag-Erling Smørgrav echo "$configure_deps." 159ce77a8d6SDag-Erling Smørgrav program_details 'aclocal' 160ce77a8d6SDag-Erling Smørgrav ;; 1617f106882SDag-Erling Smørgrav autom4te*) 162ce77a8d6SDag-Erling Smørgrav echo "You might have modified some maintainer files that require" 163f3b0ac34SDag-Erling Smørgrav echo "the 'autom4te' program to be rebuilt." 164ce77a8d6SDag-Erling Smørgrav program_details 'autom4te' 165b33ab329SDag-Erling Smørgrav ;; 1667f106882SDag-Erling Smørgrav bison*|yacc*) 167ce77a8d6SDag-Erling Smørgrav echo "You should only need it if you modified a '.y' file." 168ce77a8d6SDag-Erling Smørgrav echo "You may want to install the GNU Bison package:" 169ce77a8d6SDag-Erling Smørgrav echo "<$gnu_software_URL/bison/>" 170ca236e63SDag-Erling Smørgrav ;; 1717f106882SDag-Erling Smørgrav lex*|flex*) 172ce77a8d6SDag-Erling Smørgrav echo "You should only need it if you modified a '.l' file." 173ce77a8d6SDag-Erling Smørgrav echo "You may want to install the Fast Lexical Analyzer package:" 174ce77a8d6SDag-Erling Smørgrav echo "<$flex_URL>" 175ca236e63SDag-Erling Smørgrav ;; 1767f106882SDag-Erling Smørgrav help2man*) 177ce77a8d6SDag-Erling Smørgrav echo "You should only need it if you modified a dependency" \ 178ce77a8d6SDag-Erling Smørgrav "of a man page." 179ce77a8d6SDag-Erling Smørgrav echo "You may want to install the GNU Help2man package:" 180ce77a8d6SDag-Erling Smørgrav echo "<$gnu_software_URL/help2man/>" 181ca236e63SDag-Erling Smørgrav ;; 1827f106882SDag-Erling Smørgrav makeinfo*) 183ce77a8d6SDag-Erling Smørgrav echo "You should only need it if you modified a '.texi' file, or" 184ce77a8d6SDag-Erling Smørgrav echo "any other file indirectly affecting the aspect of the manual." 185ce77a8d6SDag-Erling Smørgrav echo "You might want to install the Texinfo package:" 186ce77a8d6SDag-Erling Smørgrav echo "<$gnu_software_URL/texinfo/>" 187ce77a8d6SDag-Erling Smørgrav echo "The spurious makeinfo call might also be the consequence of" 188ce77a8d6SDag-Erling Smørgrav echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" 189ce77a8d6SDag-Erling Smørgrav echo "want to install GNU make:" 190ce77a8d6SDag-Erling Smørgrav echo "<$gnu_software_URL/make/>" 191ca236e63SDag-Erling Smørgrav ;; 192ca236e63SDag-Erling Smørgrav *) 193ce77a8d6SDag-Erling Smørgrav echo "You might have modified some files without having the proper" 194ce77a8d6SDag-Erling Smørgrav echo "tools for further handling them. Check the 'README' file, it" 195ce77a8d6SDag-Erling Smørgrav echo "often tells you about the needed prerequisites for installing" 196ce77a8d6SDag-Erling Smørgrav echo "this package. You may also peek at any GNU archive site, in" 197ce77a8d6SDag-Erling Smørgrav echo "case some other package contains this missing '$1' program." 198ca236e63SDag-Erling Smørgrav ;; 199ca236e63SDag-Erling Smørgrav esac 200ce77a8d6SDag-Erling Smørgrav} 201ca236e63SDag-Erling Smørgrav 202ce77a8d6SDag-Erling Smørgravgive_advice "$1" | sed -e '1s/^/WARNING: /' \ 203ce77a8d6SDag-Erling Smørgrav -e '2,$s/^/ /' >&2 204ce77a8d6SDag-Erling Smørgrav 205ce77a8d6SDag-Erling Smørgrav# Propagate the correct exit status (expected to be 127 for a program 206ce77a8d6SDag-Erling Smørgrav# not found, 63 for a program that failed due to version mismatch). 207ce77a8d6SDag-Erling Smørgravexit $st 208b33ab329SDag-Erling Smørgrav 209b33ab329SDag-Erling Smørgrav# Local variables: 21023d17223SDag-Erling Smørgrav# eval: (add-hook 'before-save-hook 'time-stamp) 211b33ab329SDag-Erling Smørgrav# time-stamp-start: "scriptversion=" 212b33ab329SDag-Erling Smørgrav# time-stamp-format: "%:y-%02m-%02d.%02H" 21323d17223SDag-Erling Smørgrav# time-stamp-time-zone: "UTC0" 2147f106882SDag-Erling Smørgrav# time-stamp-end: "; # UTC" 215b33ab329SDag-Erling Smørgrav# End: 216