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