@@ -1,370 +0,0 @@ | |||||
Installation Instructions | |||||
************************* | |||||
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, | |||||
Inc. | |||||
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 warranty of any kind. | |||||
Basic Installation | |||||
================== | |||||
Briefly, the shell commands `./configure; make; make install' should | |||||
configure, build, and install this package. The following | |||||
more-detailed instructions are generic; see the `README' file for | |||||
instructions specific to this package. Some packages provide this | |||||
`INSTALL' file but do not implement all of the features documented | |||||
below. The lack of an optional feature in a given package is not | |||||
necessarily a bug. More recommendations for GNU packages can be found | |||||
in *note Makefile Conventions: (standards)Makefile Conventions. | |||||
The `configure' shell script attempts to guess correct values for | |||||
various system-dependent variables used during compilation. It uses | |||||
those values to create a `Makefile' in each directory of the package. | |||||
It may also create one or more `.h' files containing system-dependent | |||||
definitions. Finally, it creates a shell script `config.status' that | |||||
you can run in the future to recreate the current configuration, and a | |||||
file `config.log' containing compiler output (useful mainly for | |||||
debugging `configure'). | |||||
It can also use an optional file (typically called `config.cache' | |||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves | |||||
the results of its tests to speed up reconfiguring. Caching is | |||||
disabled by default to prevent problems with accidental use of stale | |||||
cache files. | |||||
If you need to do unusual things to compile the package, please try | |||||
to figure out how `configure' could check whether to do them, and mail | |||||
diffs or instructions to the address given in the `README' so they can | |||||
be considered for the next release. If you are using the cache, and at | |||||
some point `config.cache' contains results you don't want to keep, you | |||||
may remove or edit it. | |||||
The file `configure.ac' (or `configure.in') is used to create | |||||
`configure' by a program called `autoconf'. You need `configure.ac' if | |||||
you want to change it or regenerate `configure' using a newer version | |||||
of `autoconf'. | |||||
The simplest way to compile this package is: | |||||
1. `cd' to the directory containing the package's source code and type | |||||
`./configure' to configure the package for your system. | |||||
Running `configure' might take a while. While running, it prints | |||||
some messages telling which features it is checking for. | |||||
2. Type `make' to compile the package. | |||||
3. Optionally, type `make check' to run any self-tests that come with | |||||
the package, generally using the just-built uninstalled binaries. | |||||
4. Type `make install' to install the programs and any data files and | |||||
documentation. When installing into a prefix owned by root, it is | |||||
recommended that the package be configured and built as a regular | |||||
user, and only the `make install' phase executed with root | |||||
privileges. | |||||
5. Optionally, type `make installcheck' to repeat any self-tests, but | |||||
this time using the binaries in their final installed location. | |||||
This target does not install anything. Running this target as a | |||||
regular user, particularly if the prior `make install' required | |||||
root privileges, verifies that the installation completed | |||||
correctly. | |||||
6. You can remove the program binaries and object files from the | |||||
source code directory by typing `make clean'. To also remove the | |||||
files that `configure' created (so you can compile the package for | |||||
a different kind of computer), type `make distclean'. There is | |||||
also a `make maintainer-clean' target, but that is intended mainly | |||||
for the package's developers. If you use it, you may have to get | |||||
all sorts of other programs in order to regenerate files that came | |||||
with the distribution. | |||||
7. Often, you can also type `make uninstall' to remove the installed | |||||
files again. In practice, not all packages have tested that | |||||
uninstallation works correctly, even though it is required by the | |||||
GNU Coding Standards. | |||||
8. Some packages, particularly those that use Automake, provide `make | |||||
distcheck', which can by used by developers to test that all other | |||||
targets like `make install' and `make uninstall' work correctly. | |||||
This target is generally not run by end users. | |||||
Compilers and Options | |||||
===================== | |||||
Some systems require unusual options for compilation or linking that | |||||
the `configure' script does not know about. Run `./configure --help' | |||||
for details on some of the pertinent environment variables. | |||||
You can give `configure' initial values for configuration parameters | |||||
by setting variables in the command line or in the environment. Here | |||||
is an example: | |||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix | |||||
*Note Defining Variables::, for more details. | |||||
Compiling For Multiple Architectures | |||||
==================================== | |||||
You can compile the package for more than one kind of computer at the | |||||
same time, by placing the object files for each architecture in their | |||||
own directory. To do this, you can use GNU `make'. `cd' to the | |||||
directory where you want the object files and executables to go and run | |||||
the `configure' script. `configure' automatically checks for the | |||||
source code in the directory that `configure' is in and in `..'. This | |||||
is known as a "VPATH" build. | |||||
With a non-GNU `make', it is safer to compile the package for one | |||||
architecture at a time in the source code directory. After you have | |||||
installed the package for one architecture, use `make distclean' before | |||||
reconfiguring for another architecture. | |||||
On MacOS X 10.5 and later systems, you can create libraries and | |||||
executables that work on multiple system types--known as "fat" or | |||||
"universal" binaries--by specifying multiple `-arch' options to the | |||||
compiler but only a single `-arch' option to the preprocessor. Like | |||||
this: | |||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ | |||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ | |||||
CPP="gcc -E" CXXCPP="g++ -E" | |||||
This is not guaranteed to produce working output in all cases, you | |||||
may have to build one architecture at a time and combine the results | |||||
using the `lipo' tool if you have problems. | |||||
Installation Names | |||||
================== | |||||
By default, `make install' installs the package's commands under | |||||
`/usr/local/bin', include files under `/usr/local/include', etc. You | |||||
can specify an installation prefix other than `/usr/local' by giving | |||||
`configure' the option `--prefix=PREFIX', where PREFIX must be an | |||||
absolute file name. | |||||
You can specify separate installation prefixes for | |||||
architecture-specific files and architecture-independent files. If you | |||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses | |||||
PREFIX as the prefix for installing programs and libraries. | |||||
Documentation and other data files still use the regular prefix. | |||||
In addition, if you use an unusual directory layout you can give | |||||
options like `--bindir=DIR' to specify different values for particular | |||||
kinds of files. Run `configure --help' for a list of the directories | |||||
you can set and what kinds of files go in them. In general, the | |||||
default for these options is expressed in terms of `${prefix}', so that | |||||
specifying just `--prefix' will affect all of the other directory | |||||
specifications that were not explicitly provided. | |||||
The most portable way to affect installation locations is to pass the | |||||
correct locations to `configure'; however, many packages provide one or | |||||
both of the following shortcuts of passing variable assignments to the | |||||
`make install' command line to change installation locations without | |||||
having to reconfigure or recompile. | |||||
The first method involves providing an override variable for each | |||||
affected directory. For example, `make install | |||||
prefix=/alternate/directory' will choose an alternate location for all | |||||
directory configuration variables that were expressed in terms of | |||||
`${prefix}'. Any directories that were specified during `configure', | |||||
but not in terms of `${prefix}', must each be overridden at install | |||||
time for the entire installation to be relocated. The approach of | |||||
makefile variable overrides for each directory variable is required by | |||||
the GNU Coding Standards, and ideally causes no recompilation. | |||||
However, some platforms have known limitations with the semantics of | |||||
shared libraries that end up requiring recompilation when using this | |||||
method, particularly noticeable in packages that use GNU Libtool. | |||||
The second method involves providing the `DESTDIR' variable. For | |||||
example, `make install DESTDIR=/alternate/directory' will prepend | |||||
`/alternate/directory' before all installation names. The approach of | |||||
`DESTDIR' overrides is not required by the GNU Coding Standards, and | |||||
does not work on platforms that have drive letters. On the other hand, | |||||
it does better at avoiding recompilation issues, and works well even | |||||
when some directory options were not specified in terms of `${prefix}' | |||||
at `configure' time. | |||||
Optional Features | |||||
================= | |||||
If the package supports it, you can cause programs to be installed | |||||
with an extra prefix or suffix on their names by giving `configure' the | |||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. | |||||
Some packages pay attention to `--enable-FEATURE' options to | |||||
`configure', where FEATURE indicates an optional part of the package. | |||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE | |||||
is something like `gnu-as' or `x' (for the X Window System). The | |||||
`README' should mention any `--enable-' and `--with-' options that the | |||||
package recognizes. | |||||
For packages that use the X Window System, `configure' can usually | |||||
find the X include and library files automatically, but if it doesn't, | |||||
you can use the `configure' options `--x-includes=DIR' and | |||||
`--x-libraries=DIR' to specify their locations. | |||||
Some packages offer the ability to configure how verbose the | |||||
execution of `make' will be. For these packages, running `./configure | |||||
--enable-silent-rules' sets the default to minimal output, which can be | |||||
overridden with `make V=1'; while running `./configure | |||||
--disable-silent-rules' sets the default to verbose, which can be | |||||
overridden with `make V=0'. | |||||
Particular systems | |||||
================== | |||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU | |||||
CC is not installed, it is recommended to use the following options in | |||||
order to use an ANSI C compiler: | |||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500" | |||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX. | |||||
HP-UX `make' updates targets which have the same time stamps as | |||||
their prerequisites, which makes it generally unusable when shipped | |||||
generated files such as `configure' are involved. Use GNU `make' | |||||
instead. | |||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot | |||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as | |||||
a workaround. If GNU CC is not installed, it is therefore recommended | |||||
to try | |||||
./configure CC="cc" | |||||
and if that doesn't work, try | |||||
./configure CC="cc -nodtk" | |||||
On Solaris, don't put `/usr/ucb' early in your `PATH'. This | |||||
directory contains several dysfunctional programs; working variants of | |||||
these programs are available in `/usr/bin'. So, if you need `/usr/ucb' | |||||
in your `PATH', put it _after_ `/usr/bin'. | |||||
On Haiku, software installed for all users goes in `/boot/common', | |||||
not `/usr/local'. It is recommended to use the following options: | |||||
./configure --prefix=/boot/common | |||||
Specifying the System Type | |||||
========================== | |||||
There may be some features `configure' cannot figure out | |||||
automatically, but needs to determine by the type of machine the package | |||||
will run on. Usually, assuming the package is built to be run on the | |||||
_same_ architectures, `configure' can figure that out, but if it prints | |||||
a message saying it cannot guess the machine type, give it the | |||||
`--build=TYPE' option. TYPE can either be a short name for the system | |||||
type, such as `sun4', or a canonical name which has the form: | |||||
CPU-COMPANY-SYSTEM | |||||
where SYSTEM can have one of these forms: | |||||
OS | |||||
KERNEL-OS | |||||
See the file `config.sub' for the possible values of each field. If | |||||
`config.sub' isn't included in this package, then this package doesn't | |||||
need to know the machine type. | |||||
If you are _building_ compiler tools for cross-compiling, you should | |||||
use the option `--target=TYPE' to select the type of system they will | |||||
produce code for. | |||||
If you want to _use_ a cross compiler, that generates code for a | |||||
platform different from the build platform, you should specify the | |||||
"host" platform (i.e., that on which the generated programs will | |||||
eventually be run) with `--host=TYPE'. | |||||
Sharing Defaults | |||||
================ | |||||
If you want to set default values for `configure' scripts to share, | |||||
you can create a site shell script called `config.site' that gives | |||||
default values for variables like `CC', `cache_file', and `prefix'. | |||||
`configure' looks for `PREFIX/share/config.site' if it exists, then | |||||
`PREFIX/etc/config.site' if it exists. Or, you can set the | |||||
`CONFIG_SITE' environment variable to the location of the site script. | |||||
A warning: not all `configure' scripts look for a site script. | |||||
Defining Variables | |||||
================== | |||||
Variables not defined in a site shell script can be set in the | |||||
environment passed to `configure'. However, some packages may run | |||||
configure again during the build, and the customized values of these | |||||
variables may be lost. In order to avoid this problem, you should set | |||||
them in the `configure' command line, using `VAR=value'. For example: | |||||
./configure CC=/usr/local2/bin/gcc | |||||
causes the specified `gcc' to be used as the C compiler (unless it is | |||||
overridden in the site shell script). | |||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to | |||||
an Autoconf limitation. Until the limitation is lifted, you can use | |||||
this workaround: | |||||
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash | |||||
`configure' Invocation | |||||
====================== | |||||
`configure' recognizes the following options to control how it | |||||
operates. | |||||
`--help' | |||||
`-h' | |||||
Print a summary of all of the options to `configure', and exit. | |||||
`--help=short' | |||||
`--help=recursive' | |||||
Print a summary of the options unique to this package's | |||||
`configure', and exit. The `short' variant lists options used | |||||
only in the top level, while the `recursive' variant lists options | |||||
also present in any nested packages. | |||||
`--version' | |||||
`-V' | |||||
Print the version of Autoconf used to generate the `configure' | |||||
script, and exit. | |||||
`--cache-file=FILE' | |||||
Enable the cache: use and save the results of the tests in FILE, | |||||
traditionally `config.cache'. FILE defaults to `/dev/null' to | |||||
disable caching. | |||||
`--config-cache' | |||||
`-C' | |||||
Alias for `--cache-file=config.cache'. | |||||
`--quiet' | |||||
`--silent' | |||||
`-q' | |||||
Do not print messages saying which checks are being made. To | |||||
suppress all normal output, redirect it to `/dev/null' (any error | |||||
messages will still be shown). | |||||
`--srcdir=DIR' | |||||
Look for the package's source code in directory DIR. Usually | |||||
`configure' can determine that directory automatically. | |||||
`--prefix=DIR' | |||||
Use DIR as the installation prefix. *note Installation Names:: | |||||
for more details, including other options available for fine-tuning | |||||
the installation locations. | |||||
`--no-create' | |||||
`-n' | |||||
Run the configure checks, but stop before creating any output | |||||
files. | |||||
`configure' also accepts some other, not widely useful, options. Run | |||||
`configure --help' for more details. |
@@ -0,0 +1,72 @@ | |||||
ANDROID_NDK_DIR=/opt/elear-solutions | |||||
LIBICONV_INSTALL_DIR=/opt/elear-solutions/android | |||||
declare -a COMPILE_ARCHITECTURES=("armv7" "arm64" "x86" "x86_64") | |||||
SAVED_PATH="${PATH}" | |||||
for ARCH in "${COMPILE_ARCHITECTURES[@]}" | |||||
do | |||||
make distclean | |||||
autoreconf -i | |||||
COMPILER_DIR="" | |||||
COMPILER_PREFIX="" | |||||
case ${ARCH} in | |||||
"armv7" ) | |||||
COMPILER_DIR=toolchain_armeabi_v7a_19 | |||||
;; | |||||
"arm64" ) | |||||
COMPILER_DIR=toolchain_aarch64_v8a_21 | |||||
;; | |||||
"x86" ) | |||||
COMPILER_DIR=toolchain_x86_19 | |||||
;; | |||||
"x86_64" ) | |||||
COMPILER_DIR=toolchain_x86_64_21 | |||||
;; | |||||
esac | |||||
export ANDROID_NDK_ROOT="${ANDROID_NDK_DIR}/${COMPILER_DIR}" | |||||
ANDROID_NDK_BIN="${ANDROID_NDK_ROOT}/bin" | |||||
ANDROID_SYSROOT_DIR="${ANDROID_NDK_ROOT}/sysroot" | |||||
export PATH="${ANDROID_NDK_BIN}:${SAVED_PATH}" | |||||
export CFLAGS="--sysroot=${ANDROID_SYSROOT_DIR}" | |||||
export CXXFLAGS="--sysroot=${ANDROID_SYSROOT_DIR}" | |||||
case ${ARCH} in | |||||
"armv7" ) | |||||
ABI_NAME=armv7 | |||||
COMPILER_PREFIX=arm-linux-androideabi | |||||
;; | |||||
"arm64" ) | |||||
ABI_NAME=arm64 | |||||
COMPILER_PREFIX=aarch64-linux-android | |||||
;; | |||||
"x86" ) | |||||
ABI_NAME=x86 | |||||
COMPILER_PREFIX=i686-linux-android | |||||
;; | |||||
"x86_64" ) | |||||
ABI_NAME=x86_64 | |||||
COMPILER_PREFIX=x86_64-linux-android | |||||
;; | |||||
esac | |||||
export CC=${ANDROID_NDK_BIN}/${COMPILER_PREFIX}-clang | |||||
export CPP=${ANDROID_NDK_BIN}/${COMPILER_PREFIX}-cpp | |||||
export CXX=${ANDROID_NDK_BIN}/${COMPILER_PREFIX}-clang++ | |||||
export LD=${ANDROID_NDK_BIN}/${COMPILER_PREFIX}-ld | |||||
export AR=${ANDROID_NDK_BIN}/${COMPILER_PREFIX}-ar | |||||
export RANLIB=${ANDROID_NDK_BIN}/${COMPILER_PREFIX}-ranlib | |||||
export STRIP=${ANDROID_NDK_BIN}/${COMPILER_PREFIX}-strip | |||||
echo "---- Compiling for ${ARCH}" | |||||
./configure --host="${COMPILER_PREFIX}" --prefix="${LIBICONV_INSTALL_DIR}/${ABI_NAME}" | |||||
make clean | |||||
make install | |||||
done | |||||
export PATH="${SAVED_PATH}" |
@@ -1,347 +0,0 @@ | |||||
#! /bin/sh | |||||
# Wrapper for compilers which do not understand '-c -o'. | |||||
scriptversion=2012-10-14.11; # UTC | |||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc. | |||||
# Written by Tom Tromey <tromey@cygnus.com>. | |||||
# | |||||
# 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, see <http://www.gnu.org/licenses/>. | |||||
# As a special exception to the GNU General Public License, if you | |||||
# distribute this file as part of a program that contains a | |||||
# configuration script generated by Autoconf, you may include it under | |||||
# the same distribution terms that you use for the rest of that program. | |||||
# This file is maintained in Automake, please report | |||||
# bugs to <bug-automake@gnu.org> or send patches to | |||||
# <automake-patches@gnu.org>. | |||||
nl=' | |||||
' | |||||
# We need space, tab and new line, in precisely that order. Quoting is | |||||
# there to prevent tools from complaining about whitespace usage. | |||||
IFS=" "" $nl" | |||||
file_conv= | |||||
# func_file_conv build_file lazy | |||||
# Convert a $build file to $host form and store it in $file | |||||
# Currently only supports Windows hosts. If the determined conversion | |||||
# type is listed in (the comma separated) LAZY, no conversion will | |||||
# take place. | |||||
func_file_conv () | |||||
{ | |||||
file=$1 | |||||
case $file in | |||||
/ | /[!/]*) # absolute file, and not a UNC file | |||||
if test -z "$file_conv"; then | |||||
# lazily determine how to convert abs files | |||||
case `uname -s` in | |||||
MINGW*) | |||||
file_conv=mingw | |||||
;; | |||||
CYGWIN*) | |||||
file_conv=cygwin | |||||
;; | |||||
*) | |||||
file_conv=wine | |||||
;; | |||||
esac | |||||
fi | |||||
case $file_conv/,$2, in | |||||
*,$file_conv,*) | |||||
;; | |||||
mingw/*) | |||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` | |||||
;; | |||||
cygwin/*) | |||||
file=`cygpath -m "$file" || echo "$file"` | |||||
;; | |||||
wine/*) | |||||
file=`winepath -w "$file" || echo "$file"` | |||||
;; | |||||
esac | |||||
;; | |||||
esac | |||||
} | |||||
# func_cl_dashL linkdir | |||||
# Make cl look for libraries in LINKDIR | |||||
func_cl_dashL () | |||||
{ | |||||
func_file_conv "$1" | |||||
if test -z "$lib_path"; then | |||||
lib_path=$file | |||||
else | |||||
lib_path="$lib_path;$file" | |||||
fi | |||||
linker_opts="$linker_opts -LIBPATH:$file" | |||||
} | |||||
# func_cl_dashl library | |||||
# Do a library search-path lookup for cl | |||||
func_cl_dashl () | |||||
{ | |||||
lib=$1 | |||||
found=no | |||||
save_IFS=$IFS | |||||
IFS=';' | |||||
for dir in $lib_path $LIB | |||||
do | |||||
IFS=$save_IFS | |||||
if $shared && test -f "$dir/$lib.dll.lib"; then | |||||
found=yes | |||||
lib=$dir/$lib.dll.lib | |||||
break | |||||
fi | |||||
if test -f "$dir/$lib.lib"; then | |||||
found=yes | |||||
lib=$dir/$lib.lib | |||||
break | |||||
fi | |||||
if test -f "$dir/lib$lib.a"; then | |||||
found=yes | |||||
lib=$dir/lib$lib.a | |||||
break | |||||
fi | |||||
done | |||||
IFS=$save_IFS | |||||
if test "$found" != yes; then | |||||
lib=$lib.lib | |||||
fi | |||||
} | |||||
# func_cl_wrapper cl arg... | |||||
# Adjust compile command to suit cl | |||||
func_cl_wrapper () | |||||
{ | |||||
# Assume a capable shell | |||||
lib_path= | |||||
shared=: | |||||
linker_opts= | |||||
for arg | |||||
do | |||||
if test -n "$eat"; then | |||||
eat= | |||||
else | |||||
case $1 in | |||||
-o) | |||||
# configure might choose to run compile as 'compile cc -o foo foo.c'. | |||||
eat=1 | |||||
case $2 in | |||||
*.o | *.[oO][bB][jJ]) | |||||
func_file_conv "$2" | |||||
set x "$@" -Fo"$file" | |||||
shift | |||||
;; | |||||
*) | |||||
func_file_conv "$2" | |||||
set x "$@" -Fe"$file" | |||||
shift | |||||
;; | |||||
esac | |||||
;; | |||||
-I) | |||||
eat=1 | |||||
func_file_conv "$2" mingw | |||||
set x "$@" -I"$file" | |||||
shift | |||||
;; | |||||
-I*) | |||||
func_file_conv "${1#-I}" mingw | |||||
set x "$@" -I"$file" | |||||
shift | |||||
;; | |||||
-l) | |||||
eat=1 | |||||
func_cl_dashl "$2" | |||||
set x "$@" "$lib" | |||||
shift | |||||
;; | |||||
-l*) | |||||
func_cl_dashl "${1#-l}" | |||||
set x "$@" "$lib" | |||||
shift | |||||
;; | |||||
-L) | |||||
eat=1 | |||||
func_cl_dashL "$2" | |||||
;; | |||||
-L*) | |||||
func_cl_dashL "${1#-L}" | |||||
;; | |||||
-static) | |||||
shared=false | |||||
;; | |||||
-Wl,*) | |||||
arg=${1#-Wl,} | |||||
save_ifs="$IFS"; IFS=',' | |||||
for flag in $arg; do | |||||
IFS="$save_ifs" | |||||
linker_opts="$linker_opts $flag" | |||||
done | |||||
IFS="$save_ifs" | |||||
;; | |||||
-Xlinker) | |||||
eat=1 | |||||
linker_opts="$linker_opts $2" | |||||
;; | |||||
-*) | |||||
set x "$@" "$1" | |||||
shift | |||||
;; | |||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++) | |||||
func_file_conv "$1" | |||||
set x "$@" -Tp"$file" | |||||
shift | |||||
;; | |||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) | |||||
func_file_conv "$1" mingw | |||||
set x "$@" "$file" | |||||
shift | |||||
;; | |||||
*) | |||||
set x "$@" "$1" | |||||
shift | |||||
;; | |||||
esac | |||||
fi | |||||
shift | |||||
done | |||||
if test -n "$linker_opts"; then | |||||
linker_opts="-link$linker_opts" | |||||
fi | |||||
exec "$@" $linker_opts | |||||
exit 1 | |||||
} | |||||
eat= | |||||
case $1 in | |||||
'') | |||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2 | |||||
exit 1; | |||||
;; | |||||
-h | --h*) | |||||
cat <<\EOF | |||||
Usage: compile [--help] [--version] PROGRAM [ARGS] | |||||
Wrapper for compilers which do not understand '-c -o'. | |||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining | |||||
arguments, and rename the output as expected. | |||||
If you are trying to build a whole package this is not the | |||||
right script to run: please start by reading the file 'INSTALL'. | |||||
Report bugs to <bug-automake@gnu.org>. | |||||
EOF | |||||
exit $? | |||||
;; | |||||
-v | --v*) | |||||
echo "compile $scriptversion" | |||||
exit $? | |||||
;; | |||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) | |||||
func_cl_wrapper "$@" # Doesn't return... | |||||
;; | |||||
esac | |||||
ofile= | |||||
cfile= | |||||
for arg | |||||
do | |||||
if test -n "$eat"; then | |||||
eat= | |||||
else | |||||
case $1 in | |||||
-o) | |||||
# configure might choose to run compile as 'compile cc -o foo foo.c'. | |||||
# So we strip '-o arg' only if arg is an object. | |||||
eat=1 | |||||
case $2 in | |||||
*.o | *.obj) | |||||
ofile=$2 | |||||
;; | |||||
*) | |||||
set x "$@" -o "$2" | |||||
shift | |||||
;; | |||||
esac | |||||
;; | |||||
*.c) | |||||
cfile=$1 | |||||
set x "$@" "$1" | |||||
shift | |||||
;; | |||||
*) | |||||
set x "$@" "$1" | |||||
shift | |||||
;; | |||||
esac | |||||
fi | |||||
shift | |||||
done | |||||
if test -z "$ofile" || test -z "$cfile"; then | |||||
# If no '-o' option was seen then we might have been invoked from a | |||||
# pattern rule where we don't need one. That is ok -- this is a | |||||
# normal compilation that the losing compiler can handle. If no | |||||
# '.c' file was seen then we are probably linking. That is also | |||||
# ok. | |||||
exec "$@" | |||||
fi | |||||
# Name of file we expect compiler to create. | |||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` | |||||
# Create the lock directory. | |||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name | |||||
# that we are using for the .o file. Also, base the name on the expected | |||||
# object file name, since that is what matters with a parallel build. | |||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d | |||||
while true; do | |||||
if mkdir "$lockdir" >/dev/null 2>&1; then | |||||
break | |||||
fi | |||||
sleep 1 | |||||
done | |||||
# FIXME: race condition here if user kills between mkdir and trap. | |||||
trap "rmdir '$lockdir'; exit 1" 1 2 15 | |||||
# Run the compile. | |||||
"$@" | |||||
ret=$? | |||||
if test -f "$cofile"; then | |||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile" | |||||
elif test -f "${cofile}bj"; then | |||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" | |||||
fi | |||||
rmdir "$lockdir" | |||||
exit $ret | |||||
# Local Variables: | |||||
# mode: shell-script | |||||
# sh-indentation: 2 | |||||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||||
# time-stamp-start: "scriptversion=" | |||||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||||
# time-stamp-time-zone: "UTC" | |||||
# time-stamp-end: "; # UTC" | |||||
# End: |
@@ -1,791 +0,0 @@ | |||||
#! /bin/sh | |||||
# depcomp - compile a program generating dependencies as side-effects | |||||
scriptversion=2013-05-30.07; # UTC | |||||
# Copyright (C) 1999-2013 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, see <http://www.gnu.org/licenses/>. | |||||
# As a special exception to the GNU General Public License, if you | |||||
# distribute this file as part of a program that contains a | |||||
# configuration script generated by Autoconf, you may include it under | |||||
# the same distribution terms that you use for the rest of that program. | |||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. | |||||
case $1 in | |||||
'') | |||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2 | |||||
exit 1; | |||||
;; | |||||
-h | --h*) | |||||
cat <<\EOF | |||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS] | |||||
Run PROGRAMS ARGS to compile a file, generating dependencies | |||||
as side-effects. | |||||
Environment variables: | |||||
depmode Dependency tracking mode. | |||||
source Source file read by 'PROGRAMS ARGS'. | |||||
object Object file output by 'PROGRAMS ARGS'. | |||||
DEPDIR directory where to store dependencies. | |||||
depfile Dependency file to output. | |||||
tmpdepfile Temporary file to use when outputting dependencies. | |||||
libtool Whether libtool is used (yes/no). | |||||
Report bugs to <bug-automake@gnu.org>. | |||||
EOF | |||||
exit $? | |||||
;; | |||||
-v | --v*) | |||||
echo "depcomp $scriptversion" | |||||
exit $? | |||||
;; | |||||
esac | |||||
# Get the directory component of the given path, and save it in the | |||||
# global variables '$dir'. Note that this directory component will | |||||
# be either empty or ending with a '/' character. This is deliberate. | |||||
set_dir_from () | |||||
{ | |||||
case $1 in | |||||
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; | |||||
*) dir=;; | |||||
esac | |||||
} | |||||
# Get the suffix-stripped basename of the given path, and save it the | |||||
# global variable '$base'. | |||||
set_base_from () | |||||
{ | |||||
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` | |||||
} | |||||
# If no dependency file was actually created by the compiler invocation, | |||||
# we still have to create a dummy depfile, to avoid errors with the | |||||
# Makefile "include basename.Plo" scheme. | |||||
make_dummy_depfile () | |||||
{ | |||||
echo "#dummy" > "$depfile" | |||||
} | |||||
# Factor out some common post-processing of the generated depfile. | |||||
# Requires the auxiliary global variable '$tmpdepfile' to be set. | |||||
aix_post_process_depfile () | |||||
{ | |||||
# If the compiler actually managed to produce a dependency file, | |||||
# post-process it. | |||||
if test -f "$tmpdepfile"; then | |||||
# Each line is of the form 'foo.o: dependency.h'. | |||||
# Do two passes, one to just change these to | |||||
# $object: dependency.h | |||||
# and one to simply output | |||||
# dependency.h: | |||||
# which is needed to avoid the deleted-header problem. | |||||
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" | |||||
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" | |||||
} > "$depfile" | |||||
rm -f "$tmpdepfile" | |||||
else | |||||
make_dummy_depfile | |||||
fi | |||||
} | |||||
# A tabulation character. | |||||
tab=' ' | |||||
# A newline character. | |||||
nl=' | |||||
' | |||||
# Character ranges might be problematic outside the C locale. | |||||
# These definitions help. | |||||
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ | |||||
lower=abcdefghijklmnopqrstuvwxyz | |||||
digits=0123456789 | |||||
alpha=${upper}${lower} | |||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then | |||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2 | |||||
exit 1 | |||||
fi | |||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. | |||||
depfile=${depfile-`echo "$object" | | |||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} | |||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} | |||||
rm -f "$tmpdepfile" | |||||
# Avoid interferences from the environment. | |||||
gccflag= dashmflag= | |||||
# Some modes work just like other modes, but use different flags. We | |||||
# parameterize here, but still list the modes in the big case below, | |||||
# to make depend.m4 easier to write. Note that we *cannot* use a case | |||||
# here, because this file can only contain one case statement. | |||||
if test "$depmode" = hp; then | |||||
# HP compiler uses -M and no extra arg. | |||||
gccflag=-M | |||||
depmode=gcc | |||||
fi | |||||
if test "$depmode" = dashXmstdout; then | |||||
# This is just like dashmstdout with a different argument. | |||||
dashmflag=-xM | |||||
depmode=dashmstdout | |||||
fi | |||||
cygpath_u="cygpath -u -f -" | |||||
if test "$depmode" = msvcmsys; then | |||||
# This is just like msvisualcpp but w/o cygpath translation. | |||||
# Just convert the backslash-escaped backslashes to single forward | |||||
# slashes to satisfy depend.m4 | |||||
cygpath_u='sed s,\\\\,/,g' | |||||
depmode=msvisualcpp | |||||
fi | |||||
if test "$depmode" = msvc7msys; then | |||||
# This is just like msvc7 but w/o cygpath translation. | |||||
# Just convert the backslash-escaped backslashes to single forward | |||||
# slashes to satisfy depend.m4 | |||||
cygpath_u='sed s,\\\\,/,g' | |||||
depmode=msvc7 | |||||
fi | |||||
if test "$depmode" = xlc; then | |||||
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. | |||||
gccflag=-qmakedep=gcc,-MF | |||||
depmode=gcc | |||||
fi | |||||
case "$depmode" in | |||||
gcc3) | |||||
## gcc 3 implements dependency tracking that does exactly what | |||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like | |||||
## it if -MD -MP comes after the -MF stuff. Hmm. | |||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon | |||||
## the command line argument order; so add the flags where they | |||||
## appear in depend2.am. Note that the slowdown incurred here | |||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this. | |||||
for arg | |||||
do | |||||
case $arg in | |||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; | |||||
*) set fnord "$@" "$arg" ;; | |||||
esac | |||||
shift # fnord | |||||
shift # $arg | |||||
done | |||||
"$@" | |||||
stat=$? | |||||
if test $stat -ne 0; then | |||||
rm -f "$tmpdepfile" | |||||
exit $stat | |||||
fi | |||||
mv "$tmpdepfile" "$depfile" | |||||
;; | |||||
gcc) | |||||
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. | |||||
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. | |||||
## (see the conditional assignment to $gccflag above). | |||||
## There are various ways to get dependency output from gcc. Here's | |||||
## why we pick this rather obscure method: | |||||
## - Don't want to use -MD because we'd like the dependencies to end | |||||
## up in a subdir. Having to rename by hand is ugly. | |||||
## (We might end up doing this anyway to support other compilers.) | |||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like | |||||
## -MM, not -M (despite what the docs say). Also, it might not be | |||||
## supported by the other compilers which use the 'gcc' depmode. | |||||
## - Using -M directly means running the compiler twice (even worse | |||||
## than renaming). | |||||
if test -z "$gccflag"; then | |||||
gccflag=-MD, | |||||
fi | |||||
"$@" -Wp,"$gccflag$tmpdepfile" | |||||
stat=$? | |||||
if test $stat -ne 0; then | |||||
rm -f "$tmpdepfile" | |||||
exit $stat | |||||
fi | |||||
rm -f "$depfile" | |||||
echo "$object : \\" > "$depfile" | |||||
# The second -e expression handles DOS-style file names with drive | |||||
# letters. | |||||
sed -e 's/^[^:]*: / /' \ | |||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" | |||||
## This next piece of magic avoids the "deleted header file" problem. | |||||
## The problem is that when a header file which appears in a .P file | |||||
## is deleted, the dependency causes make to die (because there is | |||||
## typically no way to rebuild the header). We avoid this by adding | |||||
## dummy dependencies for each header file. Too bad gcc doesn't do | |||||
## this for us directly. | |||||
## Some versions of gcc put a space before the ':'. On the theory | |||||
## that the space means something, we add a space to the output as | |||||
## well. hp depmode also adds that space, but also prefixes the VPATH | |||||
## to the object. Take care to not repeat it in the output. | |||||
## Some versions of the HPUX 10.20 sed can't process this invocation | |||||
## correctly. Breaking it into two sed invocations is a workaround. | |||||
tr ' ' "$nl" < "$tmpdepfile" \ | |||||
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | |||||
| sed -e 's/$/ :/' >> "$depfile" | |||||
rm -f "$tmpdepfile" | |||||
;; | |||||
hp) | |||||
# This case exists only to let depend.m4 do its work. It works by | |||||
# looking at the text of this script. This case will never be run, | |||||
# since it is checked for above. | |||||
exit 1 | |||||
;; | |||||
sgi) | |||||
if test "$libtool" = yes; then | |||||
"$@" "-Wp,-MDupdate,$tmpdepfile" | |||||
else | |||||
"$@" -MDupdate "$tmpdepfile" | |||||
fi | |||||
stat=$? | |||||
if test $stat -ne 0; then | |||||
rm -f "$tmpdepfile" | |||||
exit $stat | |||||
fi | |||||
rm -f "$depfile" | |||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files | |||||
echo "$object : \\" > "$depfile" | |||||
# Clip off the initial element (the dependent). Don't try to be | |||||
# clever and replace this with sed code, as IRIX sed won't handle | |||||
# lines with more than a fixed number of characters (4096 in | |||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; | |||||
# the IRIX cc adds comments like '#:fec' to the end of the | |||||
# dependency line. | |||||
tr ' ' "$nl" < "$tmpdepfile" \ | |||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | |||||
| tr "$nl" ' ' >> "$depfile" | |||||
echo >> "$depfile" | |||||
# The second pass generates a dummy entry for each header file. | |||||
tr ' ' "$nl" < "$tmpdepfile" \ | |||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ | |||||
>> "$depfile" | |||||
else | |||||
make_dummy_depfile | |||||
fi | |||||
rm -f "$tmpdepfile" | |||||
;; | |||||
xlc) | |||||
# This case exists only to let depend.m4 do its work. It works by | |||||
# looking at the text of this script. This case will never be run, | |||||
# since it is checked for above. | |||||
exit 1 | |||||
;; | |||||
aix) | |||||
# The C for AIX Compiler uses -M and outputs the dependencies | |||||
# in a .u file. In older versions, this file always lives in the | |||||
# current directory. Also, the AIX compiler puts '$object:' at the | |||||
# start of each line; $object doesn't have directory information. | |||||
# Version 6 uses the directory in both cases. | |||||
set_dir_from "$object" | |||||
set_base_from "$object" | |||||
if test "$libtool" = yes; then | |||||
tmpdepfile1=$dir$base.u | |||||
tmpdepfile2=$base.u | |||||
tmpdepfile3=$dir.libs/$base.u | |||||
"$@" -Wc,-M | |||||
else | |||||
tmpdepfile1=$dir$base.u | |||||
tmpdepfile2=$dir$base.u | |||||
tmpdepfile3=$dir$base.u | |||||
"$@" -M | |||||
fi | |||||
stat=$? | |||||
if test $stat -ne 0; then | |||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" | |||||
exit $stat | |||||
fi | |||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" | |||||
do | |||||
test -f "$tmpdepfile" && break | |||||
done | |||||
aix_post_process_depfile | |||||
;; | |||||
tcc) | |||||
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 | |||||
# FIXME: That version still under development at the moment of writing. | |||||
# Make that this statement remains true also for stable, released | |||||
# versions. | |||||
# It will wrap lines (doesn't matter whether long or short) with a | |||||
# trailing '\', as in: | |||||
# | |||||
# foo.o : \ | |||||
# foo.c \ | |||||
# foo.h \ | |||||
# | |||||
# It will put a trailing '\' even on the last line, and will use leading | |||||
# spaces rather than leading tabs (at least since its commit 0394caf7 | |||||
# "Emit spaces for -MD"). | |||||
"$@" -MD -MF "$tmpdepfile" | |||||
stat=$? | |||||
if test $stat -ne 0; then | |||||
rm -f "$tmpdepfile" | |||||
exit $stat | |||||
fi | |||||
rm -f "$depfile" | |||||
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. | |||||
# We have to change lines of the first kind to '$object: \'. | |||||
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" | |||||
# And for each line of the second kind, we have to emit a 'dep.h:' | |||||
# dummy dependency, to avoid the deleted-header problem. | |||||
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" | |||||
rm -f "$tmpdepfile" | |||||
;; | |||||
## The order of this option in the case statement is important, since the | |||||
## shell code in configure will try each of these formats in the order | |||||
## listed in this file. A plain '-MD' option would be understood by many | |||||
## compilers, so we must ensure this comes after the gcc and icc options. | |||||
pgcc) | |||||
# Portland's C compiler understands '-MD'. | |||||
# Will always output deps to 'file.d' where file is the root name of the | |||||
# source file under compilation, even if file resides in a subdirectory. | |||||
# The object file name does not affect the name of the '.d' file. | |||||
# pgcc 10.2 will output | |||||
# foo.o: sub/foo.c sub/foo.h | |||||
# and will wrap long lines using '\' : | |||||
# foo.o: sub/foo.c ... \ | |||||
# sub/foo.h ... \ | |||||
# ... | |||||
set_dir_from "$object" | |||||
# Use the source, not the object, to determine the base name, since | |||||
# that's sadly what pgcc will do too. | |||||
set_base_from "$source" | |||||
tmpdepfile=$base.d | |||||
# For projects that build the same source file twice into different object | |||||
# files, the pgcc approach of using the *source* file root name can cause | |||||
# problems in parallel builds. Use a locking strategy to avoid stomping on | |||||
# the same $tmpdepfile. | |||||
lockdir=$base.d-lock | |||||
trap " | |||||
echo '$0: caught signal, cleaning up...' >&2 | |||||
rmdir '$lockdir' | |||||
exit 1 | |||||
" 1 2 13 15 | |||||
numtries=100 | |||||
i=$numtries | |||||
while test $i -gt 0; do | |||||
# mkdir is a portable test-and-set. | |||||
if mkdir "$lockdir" 2>/dev/null; then | |||||
# This process acquired the lock. | |||||
"$@" -MD | |||||
stat=$? | |||||
# Release the lock. | |||||
rmdir "$lockdir" | |||||
break | |||||
else | |||||
# If the lock is being held by a different process, wait | |||||
# until the winning process is done or we timeout. | |||||
while test -d "$lockdir" && test $i -gt 0; do | |||||
sleep 1 | |||||
i=`expr $i - 1` | |||||
done | |||||
fi | |||||
i=`expr $i - 1` | |||||
done | |||||
trap - 1 2 13 15 | |||||
if test $i -le 0; then | |||||
echo "$0: failed to acquire lock after $numtries attempts" >&2 | |||||
echo "$0: check lockdir '$lockdir'" >&2 | |||||
exit 1 | |||||
fi | |||||
if test $stat -ne 0; then | |||||
rm -f "$tmpdepfile" | |||||
exit $stat | |||||
fi | |||||
rm -f "$depfile" | |||||
# Each line is of the form `foo.o: dependent.h', | |||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. | |||||
# Do two passes, one to just change these to | |||||
# `$object: dependent.h' and one to simply `dependent.h:'. | |||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" | |||||
# Some versions of the HPUX 10.20 sed can't process this invocation | |||||
# correctly. Breaking it into two sed invocations is a workaround. | |||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | |||||
| sed -e 's/$/ :/' >> "$depfile" | |||||
rm -f "$tmpdepfile" | |||||
;; | |||||
hp2) | |||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64 | |||||
# compilers, which have integrated preprocessors. The correct option | |||||
# to use with these is +Maked; it writes dependencies to a file named | |||||
# 'foo.d', which lands next to the object file, wherever that | |||||
# happens to be. | |||||
# Much of this is similar to the tru64 case; see comments there. | |||||
set_dir_from "$object" | |||||
set_base_from "$object" | |||||
if test "$libtool" = yes; then | |||||
tmpdepfile1=$dir$base.d | |||||
tmpdepfile2=$dir.libs/$base.d | |||||
"$@" -Wc,+Maked | |||||
else | |||||
tmpdepfile1=$dir$base.d | |||||
tmpdepfile2=$dir$base.d | |||||
"$@" +Maked | |||||
fi | |||||
stat=$? | |||||
if test $stat -ne 0; then | |||||
rm -f "$tmpdepfile1" "$tmpdepfile2" | |||||
exit $stat | |||||
fi | |||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" | |||||
do | |||||
test -f "$tmpdepfile" && break | |||||
done | |||||
if test -f "$tmpdepfile"; then | |||||
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" | |||||
# Add 'dependent.h:' lines. | |||||
sed -ne '2,${ | |||||
s/^ *// | |||||
s/ \\*$// | |||||
s/$/:/ | |||||
p | |||||
}' "$tmpdepfile" >> "$depfile" | |||||
else | |||||
make_dummy_depfile | |||||
fi | |||||
rm -f "$tmpdepfile" "$tmpdepfile2" | |||||
;; | |||||
tru64) | |||||
# The Tru64 compiler uses -MD to generate dependencies as a side | |||||
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. | |||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put | |||||
# dependencies in 'foo.d' instead, so we check for that too. | |||||
# Subdirectories are respected. | |||||
set_dir_from "$object" | |||||
set_base_from "$object" | |||||
if test "$libtool" = yes; then | |||||
# Libtool generates 2 separate objects for the 2 libraries. These | |||||
# two compilations output dependencies in $dir.libs/$base.o.d and | |||||
# in $dir$base.o.d. We have to check for both files, because | |||||
# one of the two compilations can be disabled. We should prefer | |||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is | |||||
# automatically cleaned when .libs/ is deleted, while ignoring | |||||
# the former would cause a distcleancheck panic. | |||||
tmpdepfile1=$dir$base.o.d # libtool 1.5 | |||||
tmpdepfile2=$dir.libs/$base.o.d # Likewise. | |||||
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 | |||||
"$@" -Wc,-MD | |||||
else | |||||
tmpdepfile1=$dir$base.d | |||||
tmpdepfile2=$dir$base.d | |||||
tmpdepfile3=$dir$base.d | |||||
"$@" -MD | |||||
fi | |||||
stat=$? | |||||
if test $stat -ne 0; then | |||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" | |||||
exit $stat | |||||
fi | |||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" | |||||
do | |||||
test -f "$tmpdepfile" && break | |||||
done | |||||
# Same post-processing that is required for AIX mode. | |||||
aix_post_process_depfile | |||||
;; | |||||
msvc7) | |||||
if test "$libtool" = yes; then | |||||
showIncludes=-Wc,-showIncludes | |||||
else | |||||
showIncludes=-showIncludes | |||||
fi | |||||
"$@" $showIncludes > "$tmpdepfile" | |||||
stat=$? | |||||
grep -v '^Note: including file: ' "$tmpdepfile" | |||||
if test $stat -ne 0; then | |||||
rm -f "$tmpdepfile" | |||||
exit $stat | |||||
fi | |||||
rm -f "$depfile" | |||||
echo "$object : \\" > "$depfile" | |||||
# The first sed program below extracts the file names and escapes | |||||
# backslashes for cygpath. The second sed program outputs the file | |||||
# name when reading, but also accumulates all include files in the | |||||
# hold buffer in order to output them again at the end. This only | |||||
# works with sed implementations that can handle large buffers. | |||||
sed < "$tmpdepfile" -n ' | |||||
/^Note: including file: *\(.*\)/ { | |||||
s//\1/ | |||||
s/\\/\\\\/g | |||||
p | |||||
}' | $cygpath_u | sort -u | sed -n ' | |||||
s/ /\\ /g | |||||
s/\(.*\)/'"$tab"'\1 \\/p | |||||
s/.\(.*\) \\/\1:/ | |||||
H | |||||
$ { | |||||
s/.*/'"$tab"'/ | |||||
G | |||||
p | |||||
}' >> "$depfile" | |||||
echo >> "$depfile" # make sure the fragment doesn't end with a backslash | |||||
rm -f "$tmpdepfile" | |||||
;; | |||||
msvc7msys) | |||||
# This case exists only to let depend.m4 do its work. It works by | |||||
# looking at the text of this script. This case will never be run, | |||||
# since it is checked for above. | |||||
exit 1 | |||||
;; | |||||
#nosideeffect) | |||||
# This comment above is used by automake to tell side-effect | |||||
# dependency tracking mechanisms from slower ones. | |||||
dashmstdout) | |||||
# Important note: in order to support this mode, a compiler *must* | |||||
# always write the preprocessed file to stdout, regardless of -o. | |||||
"$@" || exit $? | |||||
# Remove the call to Libtool. | |||||
if test "$libtool" = yes; then | |||||
while test "X$1" != 'X--mode=compile'; do | |||||
shift | |||||
done | |||||
shift | |||||
fi | |||||
# Remove '-o $object'. | |||||
IFS=" " | |||||
for arg | |||||
do | |||||
case $arg in | |||||
-o) | |||||
shift | |||||
;; | |||||
$object) | |||||
shift | |||||
;; | |||||
*) | |||||
set fnord "$@" "$arg" | |||||
shift # fnord | |||||
shift # $arg | |||||
;; | |||||
esac | |||||
done | |||||
test -z "$dashmflag" && dashmflag=-M | |||||
# Require at least two characters before searching for ':' | |||||
# in the target name. This is to cope with DOS-style filenames: | |||||
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. | |||||
"$@" $dashmflag | | |||||
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" | |||||
rm -f "$depfile" | |||||
cat < "$tmpdepfile" > "$depfile" | |||||
# Some versions of the HPUX 10.20 sed can't process this sed invocation | |||||
# correctly. Breaking it into two sed invocations is a workaround. | |||||
tr ' ' "$nl" < "$tmpdepfile" \ | |||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | |||||
| sed -e 's/$/ :/' >> "$depfile" | |||||
rm -f "$tmpdepfile" | |||||
;; | |||||
dashXmstdout) | |||||
# This case only exists to satisfy depend.m4. It is never actually | |||||
# run, as this mode is specially recognized in the preamble. | |||||
exit 1 | |||||
;; | |||||
makedepend) | |||||
"$@" || exit $? | |||||
# Remove any Libtool call | |||||
if test "$libtool" = yes; then | |||||
while test "X$1" != 'X--mode=compile'; do | |||||
shift | |||||
done | |||||
shift | |||||
fi | |||||
# X makedepend | |||||
shift | |||||
cleared=no eat=no | |||||
for arg | |||||
do | |||||
case $cleared in | |||||
no) | |||||
set ""; shift | |||||
cleared=yes ;; | |||||
esac | |||||
if test $eat = yes; then | |||||
eat=no | |||||
continue | |||||
fi | |||||
case "$arg" in | |||||
-D*|-I*) | |||||
set fnord "$@" "$arg"; shift ;; | |||||
# Strip any option that makedepend may not understand. Remove | |||||
# the object too, otherwise makedepend will parse it as a source file. | |||||
-arch) | |||||
eat=yes ;; | |||||
-*|$object) | |||||
;; | |||||
*) | |||||
set fnord "$@" "$arg"; shift ;; | |||||
esac | |||||
done | |||||
obj_suffix=`echo "$object" | sed 's/^.*\././'` | |||||
touch "$tmpdepfile" | |||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" | |||||
rm -f "$depfile" | |||||
# makedepend may prepend the VPATH from the source file name to the object. | |||||
# No need to regex-escape $object, excess matching of '.' is harmless. | |||||
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" | |||||
# Some versions of the HPUX 10.20 sed can't process the last invocation | |||||
# correctly. Breaking it into two sed invocations is a workaround. | |||||
sed '1,2d' "$tmpdepfile" \ | |||||
| tr ' ' "$nl" \ | |||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | |||||
| sed -e 's/$/ :/' >> "$depfile" | |||||
rm -f "$tmpdepfile" "$tmpdepfile".bak | |||||
;; | |||||
cpp) | |||||
# Important note: in order to support this mode, a compiler *must* | |||||
# always write the preprocessed file to stdout. | |||||
"$@" || exit $? | |||||
# Remove the call to Libtool. | |||||
if test "$libtool" = yes; then | |||||
while test "X$1" != 'X--mode=compile'; do | |||||
shift | |||||
done | |||||
shift | |||||
fi | |||||
# Remove '-o $object'. | |||||
IFS=" " | |||||
for arg | |||||
do | |||||
case $arg in | |||||
-o) | |||||
shift | |||||
;; | |||||
$object) | |||||
shift | |||||
;; | |||||
*) | |||||
set fnord "$@" "$arg" | |||||
shift # fnord | |||||
shift # $arg | |||||
;; | |||||
esac | |||||
done | |||||
"$@" -E \ | |||||
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | |||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | |||||
| sed '$ s: \\$::' > "$tmpdepfile" | |||||
rm -f "$depfile" | |||||
echo "$object : \\" > "$depfile" | |||||
cat < "$tmpdepfile" >> "$depfile" | |||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" | |||||
rm -f "$tmpdepfile" | |||||
;; | |||||
msvisualcpp) | |||||
# Important note: in order to support this mode, a compiler *must* | |||||
# always write the preprocessed file to stdout. | |||||
"$@" || exit $? | |||||
# Remove the call to Libtool. | |||||
if test "$libtool" = yes; then | |||||
while test "X$1" != 'X--mode=compile'; do | |||||
shift | |||||
done | |||||
shift | |||||
fi | |||||
IFS=" " | |||||
for arg | |||||
do | |||||
case "$arg" in | |||||
-o) | |||||
shift | |||||
;; | |||||
$object) | |||||
shift | |||||
;; | |||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") | |||||
set fnord "$@" | |||||
shift | |||||
shift | |||||
;; | |||||
*) | |||||
set fnord "$@" "$arg" | |||||
shift | |||||
shift | |||||
;; | |||||
esac | |||||
done | |||||
"$@" -E 2>/dev/null | | |||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" | |||||
rm -f "$depfile" | |||||
echo "$object : \\" > "$depfile" | |||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" | |||||
echo "$tab" >> "$depfile" | |||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" | |||||
rm -f "$tmpdepfile" | |||||
;; | |||||
msvcmsys) | |||||
# This case exists only to let depend.m4 do its work. It works by | |||||
# looking at the text of this script. This case will never be run, | |||||
# since it is checked for above. | |||||
exit 1 | |||||
;; | |||||
none) | |||||
exec "$@" | |||||
;; | |||||
*) | |||||
echo "Unknown depmode $depmode" 1>&2 | |||||
exit 1 | |||||
;; | |||||
esac | |||||
exit 0 | |||||
# Local Variables: | |||||
# mode: shell-script | |||||
# sh-indentation: 2 | |||||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||||
# time-stamp-start: "scriptversion=" | |||||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||||
# time-stamp-time-zone: "UTC" | |||||
# time-stamp-end: "; # UTC" | |||||
# End: |
@@ -1,301 +0,0 @@ | |||||
#!/bin/sh | |||||
# | |||||
# $NetBSD: install-sh.in,v 1.6 2012/01/11 13:07:31 hans Exp $ | |||||
# This script now also installs multiple files, but might choke on installing | |||||
# multiple files with spaces in the file names. | |||||
# | |||||
# install - install a program, script, or datafile | |||||
# This comes from X11R5 (mit/util/scripts/install.sh). | |||||
# | |||||
# Copyright 1991 by the Massachusetts Institute of Technology | |||||
# | |||||
# Permission to use, copy, modify, distribute, and sell this software and its | |||||
# documentation for any purpose is hereby granted without fee, provided that | |||||
# the above copyright notice appear in all copies and that both that | |||||
# copyright notice and this permission notice appear in supporting | |||||
# documentation, and that the name of M.I.T. not be used in advertising or | |||||
# publicity pertaining to distribution of the software without specific, | |||||
# written prior permission. M.I.T. makes no representations about the | |||||
# suitability of this software for any purpose. It is provided "as is" | |||||
# without express or implied warranty. | |||||
# | |||||
# Calling this script install-sh is preferred over install.sh, to prevent | |||||
# `make' implicit rules from creating a file called install from it | |||||
# when there is no Makefile. | |||||
# | |||||
# This script is compatible with the BSD install script, but was written | |||||
# from scratch. | |||||
# set DOITPROG to echo to test this script | |||||
# Don't use :- since 4.3BSD and earlier shells don't like it. | |||||
doit="${DOITPROG-}" | |||||
# put in absolute paths if you don't have them in your path; or use env. vars. | |||||
awkprog="${AWKPROG-awk}" | |||||
mvprog="${MVPROG-mv}" | |||||
cpprog="${CPPROG-cp}" | |||||
chmodprog="${CHMODPROG-chmod}" | |||||
chownprog="${CHOWNPROG-chown}" | |||||
chgrpprog="${CHGRPPROG-chgrp}" | |||||
stripprog="${STRIPPROG-strip}" | |||||
rmprog="${RMPROG-rm}" | |||||
mkdirprog="${MKDIRPROG-mkdir}" | |||||
instcmd="$cpprog" | |||||
instflags="" | |||||
pathcompchmodcmd="$chmodprog 755" | |||||
chmodcmd="$chmodprog 755" | |||||
chowncmd="" | |||||
chgrpcmd="" | |||||
stripcmd="" | |||||
stripflags="" | |||||
rmcmd="$rmprog -f" | |||||
mvcmd="$mvprog" | |||||
src="" | |||||
msrc="" | |||||
dst="" | |||||
dir_arg="" | |||||
suffix="" | |||||
suffixfmt="" | |||||
while [ x"$1" != x ]; do | |||||
case $1 in | |||||
-b) suffix=".old" | |||||
shift | |||||
continue;; | |||||
-B) suffixfmt="$2" | |||||
shift | |||||
shift | |||||
continue;; | |||||
-c) instcmd="$cpprog" | |||||
shift | |||||
continue;; | |||||
-d) dir_arg=true | |||||
shift | |||||
continue;; | |||||
-m) chmodcmd="$chmodprog $2" | |||||
shift | |||||
shift | |||||
continue;; | |||||
-m*) | |||||
chmodcmd="$chmodprog ${1#-m}" | |||||
shift | |||||
continue;; | |||||
-o) chowncmd="$chownprog $2" | |||||
shift | |||||
shift | |||||
continue;; | |||||
-g) chgrpcmd="$chgrpprog $2" | |||||
shift | |||||
shift | |||||
continue;; | |||||
-s) stripcmd="$stripprog" | |||||
shift | |||||
continue;; | |||||
-S) stripcmd="$stripprog" | |||||
stripflags="-S $2 $stripflags" | |||||
shift | |||||
shift | |||||
continue;; | |||||
-p) instflags="-p" | |||||
shift | |||||
continue;; | |||||
*) if [ x"$msrc" = x ] | |||||
then | |||||
msrc="$dst" | |||||
else | |||||
msrc="$msrc $dst" | |||||
fi | |||||
src="$dst" | |||||
dst="$1" | |||||
shift | |||||
continue;; | |||||
esac | |||||
done | |||||
if [ x"$dir_arg" = x ] | |||||
then | |||||
dstisfile="" | |||||
if [ ! -d "$dst" ] | |||||
then | |||||
if [ x"$msrc" = x"$src" ] | |||||
then | |||||
dstisfile=true | |||||
else | |||||
echo "install: destination is not a directory" | |||||
exit 1 | |||||
fi | |||||
fi | |||||
else | |||||
msrc="$msrc $dst" | |||||
fi | |||||
if [ x"$msrc" = x ] | |||||
then | |||||
echo "install: no destination specified" | |||||
exit 1 | |||||
fi | |||||
for srcarg in $msrc; do | |||||
if [ x"$dir_arg" != x ]; then | |||||
dstarg="$srcarg" | |||||
else | |||||
dstarg="$dst" | |||||
# Waiting for this to be detected by the "$instcmd $srcarg $dsttmp" command | |||||
# might cause directories to be created, which would be especially bad | |||||
# if $src (and thus $dsttmp) contains '*'. | |||||
if [ -f "$srcarg" ] | |||||
then | |||||
doinst="$instcmd $instflags" | |||||
elif [ -d "$srcarg" ] | |||||
then | |||||
echo "install: $srcarg: not a regular file" | |||||
exit 1 | |||||
elif [ "$srcarg" = "/dev/null" ] | |||||
then | |||||
doinst="$cpprog" | |||||
else | |||||
echo "install: $srcarg does not exist" | |||||
exit 1 | |||||
fi | |||||
# If destination is a directory, append the input filename; if your system | |||||
# does not like double slashes in filenames, you may need to add some logic | |||||
if [ -d "$dstarg" ] | |||||
then | |||||
dstarg="$dstarg"/`basename "$srcarg"` | |||||
fi | |||||
fi | |||||
## this sed command emulates the dirname command | |||||
dstdir=`echo "$dstarg" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` | |||||
# Make sure that the destination directory exists. | |||||
# this part is taken from Noah Friedman's mkinstalldirs script | |||||
# Skip lots of stat calls in the usual case. | |||||
if [ ! -d "$dstdir" ]; then | |||||
defaultIFS=' | |||||
' | |||||
IFS="${IFS-${defaultIFS}}" | |||||
oIFS="${IFS}" | |||||
# Some sh's can't handle IFS=/ for some reason. | |||||
IFS='%' | |||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` | |||||
IFS="${oIFS}" | |||||
pathcomp='' | |||||
while [ $# -ne 0 ] ; do | |||||
pathcomp="${pathcomp}${1}" | |||||
shift | |||||
if [ ! -d "${pathcomp}" ] ; | |||||
then | |||||
$doit $mkdirprog "${pathcomp}" | |||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "${pathcomp}"; else true ; fi && | |||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "${pathcomp}"; else true ; fi && | |||||
if [ x"$pathcompchmodcmd" != x ]; then $doit $pathcompchmodcmd "${pathcomp}"; else true ; fi | |||||
else | |||||
true | |||||
fi | |||||
pathcomp="${pathcomp}/" | |||||
done | |||||
fi | |||||
if [ x"$dir_arg" != x ] | |||||
then | |||||
if [ -d "$dstarg" ]; then | |||||
true | |||||
else | |||||
$doit $mkdirprog "$dstarg" && | |||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dstarg"; else true ; fi && | |||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dstarg"; else true ; fi && | |||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dstarg"; else true ; fi | |||||
fi | |||||
else | |||||
if [ x"$dstisfile" = x ] | |||||
then | |||||
file=$srcarg | |||||
else | |||||
file=$dst | |||||
fi | |||||
dstfile=`basename "$file"` | |||||
dstfinal="$dstdir/$dstfile" | |||||
# Make a temp file name in the proper directory. | |||||
dsttmp=$dstdir/#inst.$$# | |||||
# Make a backup file name in the proper directory. | |||||
case x$suffixfmt in | |||||
*%*) suffix=`echo x | | |||||
$awkprog -v bname="$dstfinal" -v fmt="$suffixfmt" ' | |||||
{ cnt = 0; | |||||
do { | |||||
sfx = sprintf(fmt, cnt++); | |||||
name = bname sfx; | |||||
} while (system("test -f " name) == 0); | |||||
print sfx; }' -`;; | |||||
x) ;; | |||||
*) suffix="$suffixfmt";; | |||||
esac | |||||
dstbackup="$dstfinal$suffix" | |||||
# Move or copy the file name to the temp name | |||||
$doit $doinst $srcarg "$dsttmp" && | |||||
trap "rm -f ${dsttmp}" 0 && | |||||
# and set any options; do chmod last to preserve setuid bits | |||||
# If any of these fail, we abort the whole thing. If we want to | |||||
# ignore errors from any of these, just make sure not to ignore | |||||
# errors from the above "$doit $instcmd $src $dsttmp" command. | |||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else true;fi && | |||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else true;fi && | |||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $stripflags "$dsttmp"; else true;fi && | |||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else true;fi && | |||||
# Now rename the file to the real destination. | |||||
if [ x"$suffix" != x ] && [ -f "$dstfinal" ] | |||||
then | |||||
$doit $mvcmd "$dstfinal" "$dstbackup" | |||||
else | |||||
$doit $rmcmd -f "$dstfinal" | |||||
fi && | |||||
$doit $mvcmd "$dsttmp" "$dstfinal" | |||||
fi | |||||
done && | |||||
exit 0 |
@@ -1,215 +0,0 @@ | |||||
#! /bin/sh | |||||
# Common wrapper for a few potentially missing GNU programs. | |||||
scriptversion=2012-06-26.16; # UTC | |||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc. | |||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. | |||||
# 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, see <http://www.gnu.org/licenses/>. | |||||
# As a special exception to the GNU General Public License, if you | |||||
# distribute this file as part of a program that contains a | |||||
# configuration script generated by Autoconf, you may include it under | |||||
# the same distribution terms that you use for the rest of that program. | |||||
if test $# -eq 0; then | |||||
echo 1>&2 "Try '$0 --help' for more information" | |||||
exit 1 | |||||
fi | |||||
case $1 in | |||||
--is-lightweight) | |||||
# Used by our autoconf macros to check whether the available missing | |||||
# script is modern enough. | |||||
exit 0 | |||||
;; | |||||
--run) | |||||
# Back-compat with the calling convention used by older automake. | |||||
shift | |||||
;; | |||||
-h|--h|--he|--hel|--help) | |||||
echo "\ | |||||
$0 [OPTION]... PROGRAM [ARGUMENT]... | |||||
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due | |||||
to PROGRAM being missing or too old. | |||||
Options: | |||||
-h, --help display this help and exit | |||||
-v, --version output version information and exit | |||||
Supported PROGRAM values: | |||||
aclocal autoconf autoheader autom4te automake makeinfo | |||||
bison yacc flex lex help2man | |||||
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and | |||||
'g' are ignored when checking the name. | |||||
Send bug reports to <bug-automake@gnu.org>." | |||||
exit $? | |||||
;; | |||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version) | |||||
echo "missing $scriptversion (GNU Automake)" | |||||
exit $? | |||||
;; | |||||
-*) | |||||
echo 1>&2 "$0: unknown '$1' option" | |||||
echo 1>&2 "Try '$0 --help' for more information" | |||||
exit 1 | |||||
;; | |||||
esac | |||||
# Run the given program, remember its exit status. | |||||
"$@"; st=$? | |||||
# If it succeeded, we are done. | |||||
test $st -eq 0 && exit 0 | |||||
# Also exit now if we it failed (or wasn't found), and '--version' was | |||||
# passed; such an option is passed most likely to detect whether the | |||||
# program is present and works. | |||||
case $2 in --version|--help) exit $st;; esac | |||||
# Exit code 63 means version mismatch. This often happens when the user | |||||
# tries to use an ancient version of a tool on a file that requires a | |||||
# minimum version. | |||||
if test $st -eq 63; then | |||||
msg="probably too old" | |||||
elif test $st -eq 127; then | |||||
# Program was missing. | |||||
msg="missing on your system" | |||||
else | |||||
# Program was found and executed, but failed. Give up. | |||||
exit $st | |||||
fi | |||||
perl_URL=http://www.perl.org/ | |||||
flex_URL=http://flex.sourceforge.net/ | |||||
gnu_software_URL=http://www.gnu.org/software | |||||
program_details () | |||||
{ | |||||
case $1 in | |||||
aclocal|automake) | |||||
echo "The '$1' program is part of the GNU Automake package:" | |||||
echo "<$gnu_software_URL/automake>" | |||||
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" | |||||
echo "<$gnu_software_URL/autoconf>" | |||||
echo "<$gnu_software_URL/m4/>" | |||||
echo "<$perl_URL>" | |||||
;; | |||||
autoconf|autom4te|autoheader) | |||||
echo "The '$1' program is part of the GNU Autoconf package:" | |||||
echo "<$gnu_software_URL/autoconf/>" | |||||
echo "It also requires GNU m4 and Perl in order to run:" | |||||
echo "<$gnu_software_URL/m4/>" | |||||
echo "<$perl_URL>" | |||||
;; | |||||
esac | |||||
} | |||||
give_advice () | |||||
{ | |||||
# Normalize program name to check for. | |||||
normalized_program=`echo "$1" | sed ' | |||||
s/^gnu-//; t | |||||
s/^gnu//; t | |||||
s/^g//; t'` | |||||
printf '%s\n' "'$1' is $msg." | |||||
configure_deps="'configure.ac' or m4 files included by 'configure.ac'" | |||||
case $normalized_program in | |||||
autoconf*) | |||||
echo "You should only need it if you modified 'configure.ac'," | |||||
echo "or m4 files included by it." | |||||
program_details 'autoconf' | |||||
;; | |||||
autoheader*) | |||||
echo "You should only need it if you modified 'acconfig.h' or" | |||||
echo "$configure_deps." | |||||
program_details 'autoheader' | |||||
;; | |||||
automake*) | |||||
echo "You should only need it if you modified 'Makefile.am' or" | |||||
echo "$configure_deps." | |||||
program_details 'automake' | |||||
;; | |||||
aclocal*) | |||||
echo "You should only need it if you modified 'acinclude.m4' or" | |||||
echo "$configure_deps." | |||||
program_details 'aclocal' | |||||
;; | |||||
autom4te*) | |||||
echo "You might have modified some maintainer files that require" | |||||
echo "the 'automa4te' program to be rebuilt." | |||||
program_details 'autom4te' | |||||
;; | |||||
bison*|yacc*) | |||||
echo "You should only need it if you modified a '.y' file." | |||||
echo "You may want to install the GNU Bison package:" | |||||
echo "<$gnu_software_URL/bison/>" | |||||
;; | |||||
lex*|flex*) | |||||
echo "You should only need it if you modified a '.l' file." | |||||
echo "You may want to install the Fast Lexical Analyzer package:" | |||||
echo "<$flex_URL>" | |||||
;; | |||||
help2man*) | |||||
echo "You should only need it if you modified a dependency" \ | |||||
"of a man page." | |||||
echo "You may want to install the GNU Help2man package:" | |||||
echo "<$gnu_software_URL/help2man/>" | |||||
;; | |||||
makeinfo*) | |||||
echo "You should only need it if you modified a '.texi' file, or" | |||||
echo "any other file indirectly affecting the aspect of the manual." | |||||
echo "You might want to install the Texinfo package:" | |||||
echo "<$gnu_software_URL/texinfo/>" | |||||
echo "The spurious makeinfo call might also be the consequence of" | |||||
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" | |||||
echo "want to install GNU make:" | |||||
echo "<$gnu_software_URL/make/>" | |||||
;; | |||||
*) | |||||
echo "You might have modified some files without having the proper" | |||||
echo "tools for further handling them. Check the 'README' file, it" | |||||
echo "often tells you about the needed prerequisites for installing" | |||||
echo "this package. You may also peek at any GNU archive site, in" | |||||
echo "case some other package contains this missing '$1' program." | |||||
;; | |||||
esac | |||||
} | |||||
give_advice "$1" | sed -e '1s/^/WARNING: /' \ | |||||
-e '2,$s/^/ /' >&2 | |||||
# Propagate the correct exit status (expected to be 127 for a program | |||||
# not found, 63 for a program that failed due to version mismatch). | |||||
exit $st | |||||
# Local variables: | |||||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||||
# time-stamp-start: "scriptversion=" | |||||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||||
# time-stamp-time-zone: "UTC" | |||||
# time-stamp-end: "; # UTC" | |||||
# End: |
@@ -1,127 +0,0 @@ | |||||
#! /bin/sh | |||||
# test-driver - basic testsuite driver script. | |||||
scriptversion=2012-06-27.10; # UTC | |||||
# Copyright (C) 2011-2013 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, see <http://www.gnu.org/licenses/>. | |||||
# As a special exception to the GNU General Public License, if you | |||||
# distribute this file as part of a program that contains a | |||||
# configuration script generated by Autoconf, you may include it under | |||||
# the same distribution terms that you use for the rest of that program. | |||||
# This file is maintained in Automake, please report | |||||
# bugs to <bug-automake@gnu.org> or send patches to | |||||
# <automake-patches@gnu.org>. | |||||
# Make unconditional expansion of undefined variables an error. This | |||||
# helps a lot in preventing typo-related bugs. | |||||
set -u | |||||
usage_error () | |||||
{ | |||||
echo "$0: $*" >&2 | |||||
print_usage >&2 | |||||
exit 2 | |||||
} | |||||
print_usage () | |||||
{ | |||||
cat <<END | |||||
Usage: | |||||
test-driver --test-name=NAME --log-file=PATH --trs-file=PATH | |||||
[--expect-failure={yes|no}] [--color-tests={yes|no}] | |||||
[--enable-hard-errors={yes|no}] [--] TEST-SCRIPT | |||||
The '--test-name', '--log-file' and '--trs-file' options are mandatory. | |||||
END | |||||
} | |||||
# TODO: better error handling in option parsing (in particular, ensure | |||||
# TODO: $log_file, $trs_file and $test_name are defined). | |||||
test_name= # Used for reporting. | |||||
log_file= # Where to save the output of the test script. | |||||
trs_file= # Where to save the metadata of the test run. | |||||
expect_failure=no | |||||
color_tests=no | |||||
enable_hard_errors=yes | |||||
while test $# -gt 0; do | |||||
case $1 in | |||||
--help) print_usage; exit $?;; | |||||
--version) echo "test-driver $scriptversion"; exit $?;; | |||||
--test-name) test_name=$2; shift;; | |||||
--log-file) log_file=$2; shift;; | |||||
--trs-file) trs_file=$2; shift;; | |||||
--color-tests) color_tests=$2; shift;; | |||||
--expect-failure) expect_failure=$2; shift;; | |||||
--enable-hard-errors) enable_hard_errors=$2; shift;; | |||||
--) shift; break;; | |||||
-*) usage_error "invalid option: '$1'";; | |||||
esac | |||||
shift | |||||
done | |||||
if test $color_tests = yes; then | |||||
# Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. | |||||
red='[0;31m' # Red. | |||||
grn='[0;32m' # Green. | |||||
lgn='[1;32m' # Light green. | |||||
blu='[1;34m' # Blue. | |||||
mgn='[0;35m' # Magenta. | |||||
std='[m' # No color. | |||||
else | |||||
red= grn= lgn= blu= mgn= std= | |||||
fi | |||||
do_exit='rm -f $log_file $trs_file; (exit $st); exit $st' | |||||
trap "st=129; $do_exit" 1 | |||||
trap "st=130; $do_exit" 2 | |||||
trap "st=141; $do_exit" 13 | |||||
trap "st=143; $do_exit" 15 | |||||
# Test script is run here. | |||||
"$@" >$log_file 2>&1 | |||||
estatus=$? | |||||
if test $enable_hard_errors = no && test $estatus -eq 99; then | |||||
estatus=1 | |||||
fi | |||||
case $estatus:$expect_failure in | |||||
0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; | |||||
0:*) col=$grn res=PASS recheck=no gcopy=no;; | |||||
77:*) col=$blu res=SKIP recheck=no gcopy=yes;; | |||||
99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; | |||||
*:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; | |||||
*:*) col=$red res=FAIL recheck=yes gcopy=yes;; | |||||
esac | |||||
# Report outcome to console. | |||||
echo "${col}${res}${std}: $test_name" | |||||
# Register the test result, and other relevant metadata. | |||||
echo ":test-result: $res" > $trs_file | |||||
echo ":global-test-result: $res" >> $trs_file | |||||
echo ":recheck: $recheck" >> $trs_file | |||||
echo ":copy-in-global-log: $gcopy" >> $trs_file | |||||
# Local Variables: | |||||
# mode: shell-script | |||||
# sh-indentation: 2 | |||||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||||
# time-stamp-start: "scriptversion=" | |||||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||||
# time-stamp-time-zone: "UTC" | |||||
# time-stamp-end: "; # UTC" | |||||
# End: |