Browse Source

add automake scripts

Chris Cromer 2 years ago
parent
commit
837df844bf
3 changed files with 1063 additions and 0 deletions
  1. 347
    0
      compile
  2. 501
    0
      install-sh
  3. 215
    0
      missing

+ 347
- 0
compile View File

@@ -0,0 +1,347 @@
1
+#! /bin/sh
2
+# Wrapper for compilers which do not understand '-c -o'.
3
+
4
+scriptversion=2012-10-14.11; # UTC
5
+
6
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
7
+# Written by Tom Tromey <tromey@cygnus.com>.
8
+#
9
+# This program is free software; you can redistribute it and/or modify
10
+# it under the terms of the GNU General Public License as published by
11
+# the Free Software Foundation; either version 2, or (at your option)
12
+# any later version.
13
+#
14
+# This program is distributed in the hope that it will be useful,
15
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+# GNU General Public License for more details.
18
+#
19
+# You should have received a copy of the GNU General Public License
20
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+
22
+# As a special exception to the GNU General Public License, if you
23
+# distribute this file as part of a program that contains a
24
+# configuration script generated by Autoconf, you may include it under
25
+# the same distribution terms that you use for the rest of that program.
26
+
27
+# This file is maintained in Automake, please report
28
+# bugs to <bug-automake@gnu.org> or send patches to
29
+# <automake-patches@gnu.org>.
30
+
31
+nl='
32
+'
33
+
34
+# We need space, tab and new line, in precisely that order.  Quoting is
35
+# there to prevent tools from complaining about whitespace usage.
36
+IFS=" ""	$nl"
37
+
38
+file_conv=
39
+
40
+# func_file_conv build_file lazy
41
+# Convert a $build file to $host form and store it in $file
42
+# Currently only supports Windows hosts. If the determined conversion
43
+# type is listed in (the comma separated) LAZY, no conversion will
44
+# take place.
45
+func_file_conv ()
46
+{
47
+  file=$1
48
+  case $file in
49
+    / | /[!/]*) # absolute file, and not a UNC file
50
+      if test -z "$file_conv"; then
51
+	# lazily determine how to convert abs files
52
+	case `uname -s` in
53
+	  MINGW*)
54
+	    file_conv=mingw
55
+	    ;;
56
+	  CYGWIN*)
57
+	    file_conv=cygwin
58
+	    ;;
59
+	  *)
60
+	    file_conv=wine
61
+	    ;;
62
+	esac
63
+      fi
64
+      case $file_conv/,$2, in
65
+	*,$file_conv,*)
66
+	  ;;
67
+	mingw/*)
68
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
69
+	  ;;
70
+	cygwin/*)
71
+	  file=`cygpath -m "$file" || echo "$file"`
72
+	  ;;
73
+	wine/*)
74
+	  file=`winepath -w "$file" || echo "$file"`
75
+	  ;;
76
+      esac
77
+      ;;
78
+  esac
79
+}
80
+
81
+# func_cl_dashL linkdir
82
+# Make cl look for libraries in LINKDIR
83
+func_cl_dashL ()
84
+{
85
+  func_file_conv "$1"
86
+  if test -z "$lib_path"; then
87
+    lib_path=$file
88
+  else
89
+    lib_path="$lib_path;$file"
90
+  fi
91
+  linker_opts="$linker_opts -LIBPATH:$file"
92
+}
93
+
94
+# func_cl_dashl library
95
+# Do a library search-path lookup for cl
96
+func_cl_dashl ()
97
+{
98
+  lib=$1
99
+  found=no
100
+  save_IFS=$IFS
101
+  IFS=';'
102
+  for dir in $lib_path $LIB
103
+  do
104
+    IFS=$save_IFS
105
+    if $shared && test -f "$dir/$lib.dll.lib"; then
106
+      found=yes
107
+      lib=$dir/$lib.dll.lib
108
+      break
109
+    fi
110
+    if test -f "$dir/$lib.lib"; then
111
+      found=yes
112
+      lib=$dir/$lib.lib
113
+      break
114
+    fi
115
+    if test -f "$dir/lib$lib.a"; then
116
+      found=yes
117
+      lib=$dir/lib$lib.a
118
+      break
119
+    fi
120
+  done
121
+  IFS=$save_IFS
122
+
123
+  if test "$found" != yes; then
124
+    lib=$lib.lib
125
+  fi
126
+}
127
+
128
+# func_cl_wrapper cl arg...
129
+# Adjust compile command to suit cl
130
+func_cl_wrapper ()
131
+{
132
+  # Assume a capable shell
133
+  lib_path=
134
+  shared=:
135
+  linker_opts=
136
+  for arg
137
+  do
138
+    if test -n "$eat"; then
139
+      eat=
140
+    else
141
+      case $1 in
142
+	-o)
143
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
144
+	  eat=1
145
+	  case $2 in
146
+	    *.o | *.[oO][bB][jJ])
147
+	      func_file_conv "$2"
148
+	      set x "$@" -Fo"$file"
149
+	      shift
150
+	      ;;
151
+	    *)
152
+	      func_file_conv "$2"
153
+	      set x "$@" -Fe"$file"
154
+	      shift
155
+	      ;;
156
+	  esac
157
+	  ;;
158
+	-I)
159
+	  eat=1
160
+	  func_file_conv "$2" mingw
161
+	  set x "$@" -I"$file"
162
+	  shift
163
+	  ;;
164
+	-I*)
165
+	  func_file_conv "${1#-I}" mingw
166
+	  set x "$@" -I"$file"
167
+	  shift
168
+	  ;;
169
+	-l)
170
+	  eat=1
171
+	  func_cl_dashl "$2"
172
+	  set x "$@" "$lib"
173
+	  shift
174
+	  ;;
175
+	-l*)
176
+	  func_cl_dashl "${1#-l}"
177
+	  set x "$@" "$lib"
178
+	  shift
179
+	  ;;
180
+	-L)
181
+	  eat=1
182
+	  func_cl_dashL "$2"
183
+	  ;;
184
+	-L*)
185
+	  func_cl_dashL "${1#-L}"
186
+	  ;;
187
+	-static)
188
+	  shared=false
189
+	  ;;
190
+	-Wl,*)
191
+	  arg=${1#-Wl,}
192
+	  save_ifs="$IFS"; IFS=','
193
+	  for flag in $arg; do
194
+	    IFS="$save_ifs"
195
+	    linker_opts="$linker_opts $flag"
196
+	  done
197
+	  IFS="$save_ifs"
198
+	  ;;
199
+	-Xlinker)
200
+	  eat=1
201
+	  linker_opts="$linker_opts $2"
202
+	  ;;
203
+	-*)
204
+	  set x "$@" "$1"
205
+	  shift
206
+	  ;;
207
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
208
+	  func_file_conv "$1"
209
+	  set x "$@" -Tp"$file"
210
+	  shift
211
+	  ;;
212
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
213
+	  func_file_conv "$1" mingw
214
+	  set x "$@" "$file"
215
+	  shift
216
+	  ;;
217
+	*)
218
+	  set x "$@" "$1"
219
+	  shift
220
+	  ;;
221
+      esac
222
+    fi
223
+    shift
224
+  done
225
+  if test -n "$linker_opts"; then
226
+    linker_opts="-link$linker_opts"
227
+  fi
228
+  exec "$@" $linker_opts
229
+  exit 1
230
+}
231
+
232
+eat=
233
+
234
+case $1 in
235
+  '')
236
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
237
+     exit 1;
238
+     ;;
239
+  -h | --h*)
240
+    cat <<\EOF
241
+Usage: compile [--help] [--version] PROGRAM [ARGS]
242
+
243
+Wrapper for compilers which do not understand '-c -o'.
244
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
245
+arguments, and rename the output as expected.
246
+
247
+If you are trying to build a whole package this is not the
248
+right script to run: please start by reading the file 'INSTALL'.
249
+
250
+Report bugs to <bug-automake@gnu.org>.
251
+EOF
252
+    exit $?
253
+    ;;
254
+  -v | --v*)
255
+    echo "compile $scriptversion"
256
+    exit $?
257
+    ;;
258
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
259
+    func_cl_wrapper "$@"      # Doesn't return...
260
+    ;;
261
+esac
262
+
263
+ofile=
264
+cfile=
265
+
266
+for arg
267
+do
268
+  if test -n "$eat"; then
269
+    eat=
270
+  else
271
+    case $1 in
272
+      -o)
273
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
274
+	# So we strip '-o arg' only if arg is an object.
275
+	eat=1
276
+	case $2 in
277
+	  *.o | *.obj)
278
+	    ofile=$2
279
+	    ;;
280
+	  *)
281
+	    set x "$@" -o "$2"
282
+	    shift
283
+	    ;;
284
+	esac
285
+	;;
286
+      *.c)
287
+	cfile=$1
288
+	set x "$@" "$1"
289
+	shift
290
+	;;
291
+      *)
292
+	set x "$@" "$1"
293
+	shift
294
+	;;
295
+    esac
296
+  fi
297
+  shift
298
+done
299
+
300
+if test -z "$ofile" || test -z "$cfile"; then
301
+  # If no '-o' option was seen then we might have been invoked from a
302
+  # pattern rule where we don't need one.  That is ok -- this is a
303
+  # normal compilation that the losing compiler can handle.  If no
304
+  # '.c' file was seen then we are probably linking.  That is also
305
+  # ok.
306
+  exec "$@"
307
+fi
308
+
309
+# Name of file we expect compiler to create.
310
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
311
+
312
+# Create the lock directory.
313
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
314
+# that we are using for the .o file.  Also, base the name on the expected
315
+# object file name, since that is what matters with a parallel build.
316
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
317
+while true; do
318
+  if mkdir "$lockdir" >/dev/null 2>&1; then
319
+    break
320
+  fi
321
+  sleep 1
322
+done
323
+# FIXME: race condition here if user kills between mkdir and trap.
324
+trap "rmdir '$lockdir'; exit 1" 1 2 15
325
+
326
+# Run the compile.
327
+"$@"
328
+ret=$?
329
+
330
+if test -f "$cofile"; then
331
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
332
+elif test -f "${cofile}bj"; then
333
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
334
+fi
335
+
336
+rmdir "$lockdir"
337
+exit $ret
338
+
339
+# Local Variables:
340
+# mode: shell-script
341
+# sh-indentation: 2
342
+# eval: (add-hook 'write-file-hooks 'time-stamp)
343
+# time-stamp-start: "scriptversion="
344
+# time-stamp-format: "%:y-%02m-%02d.%02H"
345
+# time-stamp-time-zone: "UTC"
346
+# time-stamp-end: "; # UTC"
347
+# End:

+ 501
- 0
install-sh View File

@@ -0,0 +1,501 @@
1
+#!/bin/sh
2
+# install - install a program, script, or datafile
3
+
4
+scriptversion=2013-12-25.23; # UTC
5
+
6
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
7
+# later released in X11R6 (xc/config/util/install.sh) with the
8
+# following copyright and license.
9
+#
10
+# Copyright (C) 1994 X Consortium
11
+#
12
+# Permission is hereby granted, free of charge, to any person obtaining a copy
13
+# of this software and associated documentation files (the "Software"), to
14
+# deal in the Software without restriction, including without limitation the
15
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16
+# sell copies of the Software, and to permit persons to whom the Software is
17
+# furnished to do so, subject to the following conditions:
18
+#
19
+# The above copyright notice and this permission notice shall be included in
20
+# all copies or substantial portions of the Software.
21
+#
22
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
25
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
26
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
27
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
+#
29
+# Except as contained in this notice, the name of the X Consortium shall not
30
+# be used in advertising or otherwise to promote the sale, use or other deal-
31
+# ings in this Software without prior written authorization from the X Consor-
32
+# tium.
33
+#
34
+#
35
+# FSF changes to this file are in the public domain.
36
+#
37
+# Calling this script install-sh is preferred over install.sh, to prevent
38
+# 'make' implicit rules from creating a file called install from it
39
+# when there is no Makefile.
40
+#
41
+# This script is compatible with the BSD install script, but was written
42
+# from scratch.
43
+
44
+tab='	'
45
+nl='
46
+'
47
+IFS=" $tab$nl"
48
+
49
+# Set DOITPROG to "echo" to test this script.
50
+
51
+doit=${DOITPROG-}
52
+doit_exec=${doit:-exec}
53
+
54
+# Put in absolute file names if you don't have them in your path;
55
+# or use environment vars.
56
+
57
+chgrpprog=${CHGRPPROG-chgrp}
58
+chmodprog=${CHMODPROG-chmod}
59
+chownprog=${CHOWNPROG-chown}
60
+cmpprog=${CMPPROG-cmp}
61
+cpprog=${CPPROG-cp}
62
+mkdirprog=${MKDIRPROG-mkdir}
63
+mvprog=${MVPROG-mv}
64
+rmprog=${RMPROG-rm}
65
+stripprog=${STRIPPROG-strip}
66
+
67
+posix_mkdir=
68
+
69
+# Desired mode of installed file.
70
+mode=0755
71
+
72
+chgrpcmd=
73
+chmodcmd=$chmodprog
74
+chowncmd=
75
+mvcmd=$mvprog
76
+rmcmd="$rmprog -f"
77
+stripcmd=
78
+
79
+src=
80
+dst=
81
+dir_arg=
82
+dst_arg=
83
+
84
+copy_on_change=false
85
+is_target_a_directory=possibly
86
+
87
+usage="\
88
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
89
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
90
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
91
+   or: $0 [OPTION]... -d DIRECTORIES...
92
+
93
+In the 1st form, copy SRCFILE to DSTFILE.
94
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
95
+In the 4th, create DIRECTORIES.
96
+
97
+Options:
98
+     --help     display this help and exit.
99
+     --version  display version info and exit.
100
+
101
+  -c            (ignored)
102
+  -C            install only if different (preserve the last data modification time)
103
+  -d            create directories instead of installing files.
104
+  -g GROUP      $chgrpprog installed files to GROUP.
105
+  -m MODE       $chmodprog installed files to MODE.
106
+  -o USER       $chownprog installed files to USER.
107
+  -s            $stripprog installed files.
108
+  -t DIRECTORY  install into DIRECTORY.
109
+  -T            report an error if DSTFILE is a directory.
110
+
111
+Environment variables override the default commands:
112
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
113
+  RMPROG STRIPPROG
114
+"
115
+
116
+while test $# -ne 0; do
117
+  case $1 in
118
+    -c) ;;
119
+
120
+    -C) copy_on_change=true;;
121
+
122
+    -d) dir_arg=true;;
123
+
124
+    -g) chgrpcmd="$chgrpprog $2"
125
+        shift;;
126
+
127
+    --help) echo "$usage"; exit $?;;
128
+
129
+    -m) mode=$2
130
+        case $mode in
131
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
132
+            echo "$0: invalid mode: $mode" >&2
133
+            exit 1;;
134
+        esac
135
+        shift;;
136
+
137
+    -o) chowncmd="$chownprog $2"
138
+        shift;;
139
+
140
+    -s) stripcmd=$stripprog;;
141
+
142
+    -t)
143
+        is_target_a_directory=always
144
+        dst_arg=$2
145
+        # Protect names problematic for 'test' and other utilities.
146
+        case $dst_arg in
147
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
148
+        esac
149
+        shift;;
150
+
151
+    -T) is_target_a_directory=never;;
152
+
153
+    --version) echo "$0 $scriptversion"; exit $?;;
154
+
155
+    --) shift
156
+        break;;
157
+
158
+    -*) echo "$0: invalid option: $1" >&2
159
+        exit 1;;
160
+
161
+    *)  break;;
162
+  esac
163
+  shift
164
+done
165
+
166
+# We allow the use of options -d and -T together, by making -d
167
+# take the precedence; this is for compatibility with GNU install.
168
+
169
+if test -n "$dir_arg"; then
170
+  if test -n "$dst_arg"; then
171
+    echo "$0: target directory not allowed when installing a directory." >&2
172
+    exit 1
173
+  fi
174
+fi
175
+
176
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
177
+  # When -d is used, all remaining arguments are directories to create.
178
+  # When -t is used, the destination is already specified.
179
+  # Otherwise, the last argument is the destination.  Remove it from $@.
180
+  for arg
181
+  do
182
+    if test -n "$dst_arg"; then
183
+      # $@ is not empty: it contains at least $arg.
184
+      set fnord "$@" "$dst_arg"
185
+      shift # fnord
186
+    fi
187
+    shift # arg
188
+    dst_arg=$arg
189
+    # Protect names problematic for 'test' and other utilities.
190
+    case $dst_arg in
191
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
192
+    esac
193
+  done
194
+fi
195
+
196
+if test $# -eq 0; then
197
+  if test -z "$dir_arg"; then
198
+    echo "$0: no input file specified." >&2
199
+    exit 1
200
+  fi
201
+  # It's OK to call 'install-sh -d' without argument.
202
+  # This can happen when creating conditional directories.
203
+  exit 0
204
+fi
205
+
206
+if test -z "$dir_arg"; then
207
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
208
+    if test ! -d "$dst_arg"; then
209
+      echo "$0: $dst_arg: Is not a directory." >&2
210
+      exit 1
211
+    fi
212
+  fi
213
+fi
214
+
215
+if test -z "$dir_arg"; then
216
+  do_exit='(exit $ret); exit $ret'
217
+  trap "ret=129; $do_exit" 1
218
+  trap "ret=130; $do_exit" 2
219
+  trap "ret=141; $do_exit" 13
220
+  trap "ret=143; $do_exit" 15
221
+
222
+  # Set umask so as not to create temps with too-generous modes.
223
+  # However, 'strip' requires both read and write access to temps.
224
+  case $mode in
225
+    # Optimize common cases.
226
+    *644) cp_umask=133;;
227
+    *755) cp_umask=22;;
228
+
229
+    *[0-7])
230
+      if test -z "$stripcmd"; then
231
+        u_plus_rw=
232
+      else
233
+        u_plus_rw='% 200'
234
+      fi
235
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
236
+    *)
237
+      if test -z "$stripcmd"; then
238
+        u_plus_rw=
239
+      else
240
+        u_plus_rw=,u+rw
241
+      fi
242
+      cp_umask=$mode$u_plus_rw;;
243
+  esac
244
+fi
245
+
246
+for src
247
+do
248
+  # Protect names problematic for 'test' and other utilities.
249
+  case $src in
250
+    -* | [=\(\)!]) src=./$src;;
251
+  esac
252
+
253
+  if test -n "$dir_arg"; then
254
+    dst=$src
255
+    dstdir=$dst
256
+    test -d "$dstdir"
257
+    dstdir_status=$?
258
+  else
259
+
260
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
261
+    # might cause directories to be created, which would be especially bad
262
+    # if $src (and thus $dsttmp) contains '*'.
263
+    if test ! -f "$src" && test ! -d "$src"; then
264
+      echo "$0: $src does not exist." >&2
265
+      exit 1
266
+    fi
267
+
268
+    if test -z "$dst_arg"; then
269
+      echo "$0: no destination specified." >&2
270
+      exit 1
271
+    fi
272
+    dst=$dst_arg
273
+
274
+    # If destination is a directory, append the input filename; won't work
275
+    # if double slashes aren't ignored.
276
+    if test -d "$dst"; then
277
+      if test "$is_target_a_directory" = never; then
278
+        echo "$0: $dst_arg: Is a directory" >&2
279
+        exit 1
280
+      fi
281
+      dstdir=$dst
282
+      dst=$dstdir/`basename "$src"`
283
+      dstdir_status=0
284
+    else
285
+      dstdir=`dirname "$dst"`
286
+      test -d "$dstdir"
287
+      dstdir_status=$?
288
+    fi
289
+  fi
290
+
291
+  obsolete_mkdir_used=false
292
+
293
+  if test $dstdir_status != 0; then
294
+    case $posix_mkdir in
295
+      '')
296
+        # Create intermediate dirs using mode 755 as modified by the umask.
297
+        # This is like FreeBSD 'install' as of 1997-10-28.
298
+        umask=`umask`
299
+        case $stripcmd.$umask in
300
+          # Optimize common cases.
301
+          *[2367][2367]) mkdir_umask=$umask;;
302
+          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
303
+
304
+          *[0-7])
305
+            mkdir_umask=`expr $umask + 22 \
306
+              - $umask % 100 % 40 + $umask % 20 \
307
+              - $umask % 10 % 4 + $umask % 2
308
+            `;;
309
+          *) mkdir_umask=$umask,go-w;;
310
+        esac
311
+
312
+        # With -d, create the new directory with the user-specified mode.
313
+        # Otherwise, rely on $mkdir_umask.
314
+        if test -n "$dir_arg"; then
315
+          mkdir_mode=-m$mode
316
+        else
317
+          mkdir_mode=
318
+        fi
319
+
320
+        posix_mkdir=false
321
+        case $umask in
322
+          *[123567][0-7][0-7])
323
+            # POSIX mkdir -p sets u+wx bits regardless of umask, which
324
+            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
325
+            ;;
326
+          *)
327
+            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
328
+            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
329
+
330
+            if (umask $mkdir_umask &&
331
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
332
+            then
333
+              if test -z "$dir_arg" || {
334
+                   # Check for POSIX incompatibilities with -m.
335
+                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
336
+                   # other-writable bit of parent directory when it shouldn't.
337
+                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
338
+                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
339
+                   case $ls_ld_tmpdir in
340
+                     d????-?r-*) different_mode=700;;
341
+                     d????-?--*) different_mode=755;;
342
+                     *) false;;
343
+                   esac &&
344
+                   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
345
+                     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
346
+                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
347
+                   }
348
+                 }
349
+              then posix_mkdir=:
350
+              fi
351
+              rmdir "$tmpdir/d" "$tmpdir"
352
+            else
353
+              # Remove any dirs left behind by ancient mkdir implementations.
354
+              rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
355
+            fi
356
+            trap '' 0;;
357
+        esac;;
358
+    esac
359
+
360
+    if
361
+      $posix_mkdir && (
362
+        umask $mkdir_umask &&
363
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
364
+      )
365
+    then :
366
+    else
367
+
368
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
369
+      # or it failed possibly due to a race condition.  Create the
370
+      # directory the slow way, step by step, checking for races as we go.
371
+
372
+      case $dstdir in
373
+        /*) prefix='/';;
374
+        [-=\(\)!]*) prefix='./';;
375
+        *)  prefix='';;
376
+      esac
377
+
378
+      oIFS=$IFS
379
+      IFS=/
380
+      set -f
381
+      set fnord $dstdir
382
+      shift
383
+      set +f
384
+      IFS=$oIFS
385
+
386
+      prefixes=
387
+
388
+      for d
389
+      do
390
+        test X"$d" = X && continue
391
+
392
+        prefix=$prefix$d
393
+        if test -d "$prefix"; then
394
+          prefixes=
395
+        else
396
+          if $posix_mkdir; then
397
+            (umask=$mkdir_umask &&
398
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
399
+            # Don't fail if two instances are running concurrently.
400
+            test -d "$prefix" || exit 1
401
+          else
402
+            case $prefix in
403
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
404
+              *) qprefix=$prefix;;
405
+            esac
406
+            prefixes="$prefixes '$qprefix'"
407
+          fi
408
+        fi
409
+        prefix=$prefix/
410
+      done
411
+
412
+      if test -n "$prefixes"; then
413
+        # Don't fail if two instances are running concurrently.
414
+        (umask $mkdir_umask &&
415
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
416
+          test -d "$dstdir" || exit 1
417
+        obsolete_mkdir_used=true
418
+      fi
419
+    fi
420
+  fi
421
+
422
+  if test -n "$dir_arg"; then
423
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
424
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
425
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
426
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
427
+  else
428
+
429
+    # Make a couple of temp file names in the proper directory.
430
+    dsttmp=$dstdir/_inst.$$_
431
+    rmtmp=$dstdir/_rm.$$_
432
+
433
+    # Trap to clean up those temp files at exit.
434
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
435
+
436
+    # Copy the file name to the temp name.
437
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
438
+
439
+    # and set any options; do chmod last to preserve setuid bits.
440
+    #
441
+    # If any of these fail, we abort the whole thing.  If we want to
442
+    # ignore errors from any of these, just make sure not to ignore
443
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
444
+    #
445
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
446
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
447
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
448
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
449
+
450
+    # If -C, don't bother to copy if it wouldn't change the file.
451
+    if $copy_on_change &&
452
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
453
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
454
+       set -f &&
455
+       set X $old && old=:$2:$4:$5:$6 &&
456
+       set X $new && new=:$2:$4:$5:$6 &&
457
+       set +f &&
458
+       test "$old" = "$new" &&
459
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
460
+    then
461
+      rm -f "$dsttmp"
462
+    else
463
+      # Rename the file to the real destination.
464
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
465
+
466
+      # The rename failed, perhaps because mv can't rename something else
467
+      # to itself, or perhaps because mv is so ancient that it does not
468
+      # support -f.
469
+      {
470
+        # Now remove or move aside any old file at destination location.
471
+        # We try this two ways since rm can't unlink itself on some
472
+        # systems and the destination file might be busy for other
473
+        # reasons.  In this case, the final cleanup might fail but the new
474
+        # file should still install successfully.
475
+        {
476
+          test ! -f "$dst" ||
477
+          $doit $rmcmd -f "$dst" 2>/dev/null ||
478
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
479
+            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
480
+          } ||
481
+          { echo "$0: cannot unlink or rename $dst" >&2
482
+            (exit 1); exit 1
483
+          }
484
+        } &&
485
+
486
+        # Now rename the file to the real destination.
487
+        $doit $mvcmd "$dsttmp" "$dst"
488
+      }
489
+    fi || exit 1
490
+
491
+    trap '' 0
492
+  fi
493
+done
494
+
495
+# Local variables:
496
+# eval: (add-hook 'write-file-hooks 'time-stamp)
497
+# time-stamp-start: "scriptversion="
498
+# time-stamp-format: "%:y-%02m-%02d.%02H"
499
+# time-stamp-time-zone: "UTC"
500
+# time-stamp-end: "; # UTC"
501
+# End:

+ 215
- 0
missing View File

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

Loading…
Cancel
Save