mirror of https://github.com/PurpleI2P/i2pd.git
tharvik
10 years ago
29 changed files with 5111 additions and 847 deletions
@ -0,0 +1,27 @@ |
|||||||
|
CC = g++ |
||||||
|
CFLAGS = -std=c++11 -O2 |
||||||
|
include filelist.mk |
||||||
|
INCFLAGS = -I/usr/include/ -I/usr/local/include/ |
||||||
|
LDFLAGS = -Wl,-rpath,/usr/local/lib -L/usr/local/lib -lcryptopp -lboost_system -lboost_date_time -lboost_filesystem -lboost_regex -lboost_program_options -lpthread |
||||||
|
LIBS = |
||||||
|
|
||||||
|
all: obj i2p |
||||||
|
|
||||||
|
i2p: $(OBJECTS:obj/%=obj/%) |
||||||
|
$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) |
||||||
|
|
||||||
|
.SUFFIXES: |
||||||
|
.SUFFIXES: .c .cc .C .cpp .o |
||||||
|
|
||||||
|
obj/%.o : %.cpp |
||||||
|
$(CC) -o $@ $< -c $(CFLAGS) $(INCFLAGS) $(CPU_FLAGS) |
||||||
|
|
||||||
|
obj: |
||||||
|
mkdir -p obj |
||||||
|
|
||||||
|
clean: |
||||||
|
rm -fr obj i2p |
||||||
|
|
||||||
|
.PHONY: all |
||||||
|
.PHONY: clean |
||||||
|
|
@ -0,0 +1,33 @@ |
|||||||
|
|
||||||
|
CC = g++ |
||||||
|
CFLAGS = -g -Wall -std=c++0x |
||||||
|
include filelist.mk |
||||||
|
INCFLAGS = |
||||||
|
LDFLAGS = -Wl,-rpath,/usr/local/lib -lcryptopp -lboost_system -lboost_date_time -lboost_filesystem -lboost_regex -lboost_program_options -lpthread |
||||||
|
LIBS = |
||||||
|
|
||||||
|
#check if AES-NI is supported by CPU
|
||||||
|
ifneq ($(shell grep -c aes /proc/cpuinfo),0) |
||||||
|
CPU_FLAGS = -DAESNI |
||||||
|
endif |
||||||
|
|
||||||
|
all: obj i2p |
||||||
|
|
||||||
|
i2p: $(OBJECTS:obj/%=obj/%) |
||||||
|
$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) |
||||||
|
|
||||||
|
.SUFFIXES: |
||||||
|
.SUFFIXES: .c .cc .C .cpp .o |
||||||
|
|
||||||
|
obj/%.o : %.cpp |
||||||
|
$(CC) -o $@ $< -c $(CFLAGS) $(INCFLAGS) $(CPU_FLAGS) |
||||||
|
|
||||||
|
obj: |
||||||
|
mkdir -p obj |
||||||
|
|
||||||
|
clean: |
||||||
|
rm -fr obj i2p |
||||||
|
|
||||||
|
.PHONY: all |
||||||
|
.PHONY: clean |
||||||
|
|
@ -0,0 +1,38 @@ |
|||||||
|
CC = clang++ |
||||||
|
CFLAGS = -g -Wall -std=c++11 -lstdc++ -I/usr/local/include |
||||||
|
include filelist.mk |
||||||
|
INCFLAGS = -DCRYPTOPP_DISABLE_ASM |
||||||
|
LDFLAGS = -Wl,-rpath,/usr/local/lib -L/usr/local/lib -lcryptopp -lboost_system -lboost_date_time -lboost_filesystem -lboost_regex -lboost_program_options -lpthread |
||||||
|
LIBS = |
||||||
|
|
||||||
|
# OSX Notes
|
||||||
|
# http://www.hutsby.net/2011/08/macs-with-aes-ni.html
|
||||||
|
# Seems like all recent Mac's have AES-NI, after firmware upgrade 2.2
|
||||||
|
# Found no good way to detect it from command line. TODO: Might be some osx sysinfo magic
|
||||||
|
CPU_FLAGS = -DAESNI |
||||||
|
|
||||||
|
# Apple Mac OSX
|
||||||
|
UNAME_S := $(shell uname -s) |
||||||
|
ifeq ($(UNAME_S),Darwin) |
||||||
|
endif |
||||||
|
|
||||||
|
all: obj i2p |
||||||
|
|
||||||
|
i2p: $(OBJECTS:obj/%=obj/%) |
||||||
|
$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) |
||||||
|
|
||||||
|
.SUFFIXES: |
||||||
|
.SUFFIXES: .c .cc .C .cpp .o |
||||||
|
|
||||||
|
obj/%.o : %.cpp |
||||||
|
$(CC) -o $@ $< -c $(CFLAGS) $(INCFLAGS) $(CPU_FLAGS) |
||||||
|
|
||||||
|
obj: |
||||||
|
mkdir -p obj |
||||||
|
|
||||||
|
clean: |
||||||
|
rm -fr obj i2p |
||||||
|
|
||||||
|
.PHONY: all |
||||||
|
.PHONY: clean |
||||||
|
|
@ -0,0 +1,230 @@ |
|||||||
|
# i2pd |
||||||
|
obj/*.o |
||||||
|
router.info |
||||||
|
router.keys |
||||||
|
i2p |
||||||
|
netDb |
||||||
|
|
||||||
|
# Autotools |
||||||
|
autom4te.cache |
||||||
|
.deps |
||||||
|
stamp-h1 |
||||||
|
Makefile |
||||||
|
config.h |
||||||
|
config.h.in~ |
||||||
|
config.log |
||||||
|
config.status |
||||||
|
|
||||||
|
################# |
||||||
|
## Eclipse |
||||||
|
################# |
||||||
|
|
||||||
|
*.pydevproject |
||||||
|
.project |
||||||
|
.metadata |
||||||
|
bin/ |
||||||
|
tmp/ |
||||||
|
*.tmp |
||||||
|
*.bak |
||||||
|
*.swp |
||||||
|
*~.nib |
||||||
|
local.properties |
||||||
|
.classpath |
||||||
|
.settings/ |
||||||
|
.loadpath |
||||||
|
|
||||||
|
# External tool builders |
||||||
|
.externalToolBuilders/ |
||||||
|
|
||||||
|
# Locally stored "Eclipse launch configurations" |
||||||
|
*.launch |
||||||
|
|
||||||
|
# CDT-specific |
||||||
|
.cproject |
||||||
|
|
||||||
|
# PDT-specific |
||||||
|
.buildpath |
||||||
|
|
||||||
|
|
||||||
|
################# |
||||||
|
## Visual Studio |
||||||
|
################# |
||||||
|
|
||||||
|
## Ignore Visual Studio temporary files, build results, and |
||||||
|
## files generated by popular Visual Studio add-ons. |
||||||
|
|
||||||
|
# User-specific files |
||||||
|
*.suo |
||||||
|
*.user |
||||||
|
*.sln.docstates |
||||||
|
|
||||||
|
# Build results |
||||||
|
|
||||||
|
[Dd]ebug/ |
||||||
|
[Rr]elease/ |
||||||
|
x64/ |
||||||
|
[Bb]in/ |
||||||
|
[Oo]bj/ |
||||||
|
|
||||||
|
# MSTest test Results |
||||||
|
[Tt]est[Rr]esult*/ |
||||||
|
[Bb]uild[Ll]og.* |
||||||
|
|
||||||
|
*_i.c |
||||||
|
*_p.c |
||||||
|
*.ilk |
||||||
|
*.meta |
||||||
|
*.obj |
||||||
|
*.pch |
||||||
|
*.pdb |
||||||
|
*.pgc |
||||||
|
*.pgd |
||||||
|
*.rsp |
||||||
|
*.sbr |
||||||
|
*.tlb |
||||||
|
*.tli |
||||||
|
*.tlh |
||||||
|
*.tmp |
||||||
|
*.tmp_proj |
||||||
|
*.log |
||||||
|
*.vspscc |
||||||
|
*.vssscc |
||||||
|
.builds |
||||||
|
*.pidb |
||||||
|
*.log |
||||||
|
*.scc |
||||||
|
|
||||||
|
# Visual C++ cache files |
||||||
|
ipch/ |
||||||
|
*.aps |
||||||
|
*.ncb |
||||||
|
*.opensdf |
||||||
|
*.sdf |
||||||
|
*.cachefile |
||||||
|
|
||||||
|
# Visual Studio profiler |
||||||
|
*.psess |
||||||
|
*.vsp |
||||||
|
*.vspx |
||||||
|
|
||||||
|
# Guidance Automation Toolkit |
||||||
|
*.gpState |
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in |
||||||
|
_ReSharper*/ |
||||||
|
*.[Rr]e[Ss]harper |
||||||
|
|
||||||
|
# TeamCity is a build add-in |
||||||
|
_TeamCity* |
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool |
||||||
|
*.dotCover |
||||||
|
|
||||||
|
# NCrunch |
||||||
|
*.ncrunch* |
||||||
|
.*crunch*.local.xml |
||||||
|
|
||||||
|
# Installshield output folder |
||||||
|
[Ee]xpress/ |
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in |
||||||
|
DocProject/buildhelp/ |
||||||
|
DocProject/Help/*.HxT |
||||||
|
DocProject/Help/*.HxC |
||||||
|
DocProject/Help/*.hhc |
||||||
|
DocProject/Help/*.hhk |
||||||
|
DocProject/Help/*.hhp |
||||||
|
DocProject/Help/Html2 |
||||||
|
DocProject/Help/html |
||||||
|
|
||||||
|
# Click-Once directory |
||||||
|
publish/ |
||||||
|
|
||||||
|
# Publish Web Output |
||||||
|
*.Publish.xml |
||||||
|
*.pubxml |
||||||
|
|
||||||
|
# NuGet Packages Directory |
||||||
|
## TODO: If you have NuGet Package Restore enabled, uncomment the next line |
||||||
|
#packages/ |
||||||
|
|
||||||
|
# Windows Azure Build Output |
||||||
|
csx |
||||||
|
*.build.csdef |
||||||
|
|
||||||
|
# Windows Store app package directory |
||||||
|
AppPackages/ |
||||||
|
|
||||||
|
# Others |
||||||
|
sql/ |
||||||
|
*.Cache |
||||||
|
ClientBin/ |
||||||
|
[Ss]tyle[Cc]op.* |
||||||
|
~$* |
||||||
|
*~ |
||||||
|
*.dbmdl |
||||||
|
*.[Pp]ublish.xml |
||||||
|
*.pfx |
||||||
|
*.publishsettings |
||||||
|
|
||||||
|
# RIA/Silverlight projects |
||||||
|
Generated_Code/ |
||||||
|
|
||||||
|
# Backup & report files from converting an old project file to a newer |
||||||
|
# Visual Studio version. Backup files are not needed, because we have git ;-) |
||||||
|
_UpgradeReport_Files/ |
||||||
|
Backup*/ |
||||||
|
UpgradeLog*.XML |
||||||
|
UpgradeLog*.htm |
||||||
|
|
||||||
|
# SQL Server files |
||||||
|
App_Data/*.mdf |
||||||
|
App_Data/*.ldf |
||||||
|
|
||||||
|
############# |
||||||
|
## Windows detritus |
||||||
|
############# |
||||||
|
|
||||||
|
# Windows image file caches |
||||||
|
Thumbs.db |
||||||
|
ehthumbs.db |
||||||
|
|
||||||
|
# Folder config file |
||||||
|
Desktop.ini |
||||||
|
|
||||||
|
# Recycle Bin used on file shares |
||||||
|
$RECYCLE.BIN/ |
||||||
|
|
||||||
|
# Mac crap |
||||||
|
.DS_Store |
||||||
|
|
||||||
|
|
||||||
|
############# |
||||||
|
## Python |
||||||
|
############# |
||||||
|
|
||||||
|
*.py[co] |
||||||
|
|
||||||
|
# Packages |
||||||
|
*.egg |
||||||
|
*.egg-info |
||||||
|
dist/ |
||||||
|
eggs/ |
||||||
|
parts/ |
||||||
|
var/ |
||||||
|
sdist/ |
||||||
|
develop-eggs/ |
||||||
|
.installed.cfg |
||||||
|
|
||||||
|
# Installer logs |
||||||
|
pip-log.txt |
||||||
|
|
||||||
|
# Unit test / coverage reports |
||||||
|
.coverage |
||||||
|
.tox |
||||||
|
|
||||||
|
#Translations |
||||||
|
*.mo |
||||||
|
|
||||||
|
#Mr Developer |
||||||
|
.mr.developer.cfg |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,791 @@ |
|||||||
|
#! /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: |
@ -0,0 +1,527 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# install - install a program, script, or datafile |
||||||
|
|
||||||
|
scriptversion=2011-11-20.07; # UTC |
||||||
|
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was |
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the |
||||||
|
# following copyright and license. |
||||||
|
# |
||||||
|
# Copyright (C) 1994 X Consortium |
||||||
|
# |
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
# of this software and associated documentation files (the "Software"), to |
||||||
|
# deal in the Software without restriction, including without limitation the |
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is |
||||||
|
# furnished to do so, subject to the following conditions: |
||||||
|
# |
||||||
|
# The above copyright notice and this permission notice shall be included in |
||||||
|
# all copies or substantial portions of the Software. |
||||||
|
# |
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- |
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||||
|
# |
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not |
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal- |
||||||
|
# ings in this Software without prior written authorization from the X Consor- |
||||||
|
# tium. |
||||||
|
# |
||||||
|
# |
||||||
|
# FSF changes to this file are in the public domain. |
||||||
|
# |
||||||
|
# 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. |
||||||
|
|
||||||
|
nl=' |
||||||
|
' |
||||||
|
IFS=" "" $nl" |
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script |
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it. |
||||||
|
doit=${DOITPROG-} |
||||||
|
if test -z "$doit"; then |
||||||
|
doit_exec=exec |
||||||
|
else |
||||||
|
doit_exec=$doit |
||||||
|
fi |
||||||
|
|
||||||
|
# Put in absolute file names if you don't have them in your path; |
||||||
|
# or use environment vars. |
||||||
|
|
||||||
|
chgrpprog=${CHGRPPROG-chgrp} |
||||||
|
chmodprog=${CHMODPROG-chmod} |
||||||
|
chownprog=${CHOWNPROG-chown} |
||||||
|
cmpprog=${CMPPROG-cmp} |
||||||
|
cpprog=${CPPROG-cp} |
||||||
|
mkdirprog=${MKDIRPROG-mkdir} |
||||||
|
mvprog=${MVPROG-mv} |
||||||
|
rmprog=${RMPROG-rm} |
||||||
|
stripprog=${STRIPPROG-strip} |
||||||
|
|
||||||
|
posix_glob='?' |
||||||
|
initialize_posix_glob=' |
||||||
|
test "$posix_glob" != "?" || { |
||||||
|
if (set -f) 2>/dev/null; then |
||||||
|
posix_glob= |
||||||
|
else |
||||||
|
posix_glob=: |
||||||
|
fi |
||||||
|
} |
||||||
|
' |
||||||
|
|
||||||
|
posix_mkdir= |
||||||
|
|
||||||
|
# Desired mode of installed file. |
||||||
|
mode=0755 |
||||||
|
|
||||||
|
chgrpcmd= |
||||||
|
chmodcmd=$chmodprog |
||||||
|
chowncmd= |
||||||
|
mvcmd=$mvprog |
||||||
|
rmcmd="$rmprog -f" |
||||||
|
stripcmd= |
||||||
|
|
||||||
|
src= |
||||||
|
dst= |
||||||
|
dir_arg= |
||||||
|
dst_arg= |
||||||
|
|
||||||
|
copy_on_change=false |
||||||
|
no_target_directory= |
||||||
|
|
||||||
|
usage="\ |
||||||
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE |
||||||
|
or: $0 [OPTION]... SRCFILES... DIRECTORY |
||||||
|
or: $0 [OPTION]... -t DIRECTORY SRCFILES... |
||||||
|
or: $0 [OPTION]... -d DIRECTORIES... |
||||||
|
|
||||||
|
In the 1st form, copy SRCFILE to DSTFILE. |
||||||
|
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. |
||||||
|
In the 4th, create DIRECTORIES. |
||||||
|
|
||||||
|
Options: |
||||||
|
--help display this help and exit. |
||||||
|
--version display version info and exit. |
||||||
|
|
||||||
|
-c (ignored) |
||||||
|
-C install only if different (preserve the last data modification time) |
||||||
|
-d create directories instead of installing files. |
||||||
|
-g GROUP $chgrpprog installed files to GROUP. |
||||||
|
-m MODE $chmodprog installed files to MODE. |
||||||
|
-o USER $chownprog installed files to USER. |
||||||
|
-s $stripprog installed files. |
||||||
|
-t DIRECTORY install into DIRECTORY. |
||||||
|
-T report an error if DSTFILE is a directory. |
||||||
|
|
||||||
|
Environment variables override the default commands: |
||||||
|
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG |
||||||
|
RMPROG STRIPPROG |
||||||
|
" |
||||||
|
|
||||||
|
while test $# -ne 0; do |
||||||
|
case $1 in |
||||||
|
-c) ;; |
||||||
|
|
||||||
|
-C) copy_on_change=true;; |
||||||
|
|
||||||
|
-d) dir_arg=true;; |
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2" |
||||||
|
shift;; |
||||||
|
|
||||||
|
--help) echo "$usage"; exit $?;; |
||||||
|
|
||||||
|
-m) mode=$2 |
||||||
|
case $mode in |
||||||
|
*' '* | *' '* | *' |
||||||
|
'* | *'*'* | *'?'* | *'['*) |
||||||
|
echo "$0: invalid mode: $mode" >&2 |
||||||
|
exit 1;; |
||||||
|
esac |
||||||
|
shift;; |
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2" |
||||||
|
shift;; |
||||||
|
|
||||||
|
-s) stripcmd=$stripprog;; |
||||||
|
|
||||||
|
-t) dst_arg=$2 |
||||||
|
# Protect names problematic for 'test' and other utilities. |
||||||
|
case $dst_arg in |
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;; |
||||||
|
esac |
||||||
|
shift;; |
||||||
|
|
||||||
|
-T) no_target_directory=true;; |
||||||
|
|
||||||
|
--version) echo "$0 $scriptversion"; exit $?;; |
||||||
|
|
||||||
|
--) shift |
||||||
|
break;; |
||||||
|
|
||||||
|
-*) echo "$0: invalid option: $1" >&2 |
||||||
|
exit 1;; |
||||||
|
|
||||||
|
*) break;; |
||||||
|
esac |
||||||
|
shift |
||||||
|
done |
||||||
|
|
||||||
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then |
||||||
|
# When -d is used, all remaining arguments are directories to create. |
||||||
|
# When -t is used, the destination is already specified. |
||||||
|
# Otherwise, the last argument is the destination. Remove it from $@. |
||||||
|
for arg |
||||||
|
do |
||||||
|
if test -n "$dst_arg"; then |
||||||
|
# $@ is not empty: it contains at least $arg. |
||||||
|
set fnord "$@" "$dst_arg" |
||||||
|
shift # fnord |
||||||
|
fi |
||||||
|
shift # arg |
||||||
|
dst_arg=$arg |
||||||
|
# Protect names problematic for 'test' and other utilities. |
||||||
|
case $dst_arg in |
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;; |
||||||
|
esac |
||||||
|
done |
||||||
|
fi |
||||||
|
|
||||||
|
if test $# -eq 0; then |
||||||
|
if test -z "$dir_arg"; then |
||||||
|
echo "$0: no input file specified." >&2 |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
# It's OK to call 'install-sh -d' without argument. |
||||||
|
# This can happen when creating conditional directories. |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
if test -z "$dir_arg"; then |
||||||
|
do_exit='(exit $ret); exit $ret' |
||||||
|
trap "ret=129; $do_exit" 1 |
||||||
|
trap "ret=130; $do_exit" 2 |
||||||
|
trap "ret=141; $do_exit" 13 |
||||||
|
trap "ret=143; $do_exit" 15 |
||||||
|
|
||||||
|
# Set umask so as not to create temps with too-generous modes. |
||||||
|
# However, 'strip' requires both read and write access to temps. |
||||||
|
case $mode in |
||||||
|
# Optimize common cases. |
||||||
|
*644) cp_umask=133;; |
||||||
|
*755) cp_umask=22;; |
||||||
|
|
||||||
|
*[0-7]) |
||||||
|
if test -z "$stripcmd"; then |
||||||
|
u_plus_rw= |
||||||
|
else |
||||||
|
u_plus_rw='% 200' |
||||||
|
fi |
||||||
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; |
||||||
|
*) |
||||||
|
if test -z "$stripcmd"; then |
||||||
|
u_plus_rw= |
||||||
|
else |
||||||
|
u_plus_rw=,u+rw |
||||||
|
fi |
||||||
|
cp_umask=$mode$u_plus_rw;; |
||||||
|
esac |
||||||
|
fi |
||||||
|
|
||||||
|
for src |
||||||
|
do |
||||||
|
# Protect names problematic for 'test' and other utilities. |
||||||
|
case $src in |
||||||
|
-* | [=\(\)!]) src=./$src;; |
||||||
|
esac |
||||||
|
|
||||||
|
if test -n "$dir_arg"; then |
||||||
|
dst=$src |
||||||
|
dstdir=$dst |
||||||
|
test -d "$dstdir" |
||||||
|
dstdir_status=$? |
||||||
|
else |
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command |
||||||
|
# might cause directories to be created, which would be especially bad |
||||||
|
# if $src (and thus $dsttmp) contains '*'. |
||||||
|
if test ! -f "$src" && test ! -d "$src"; then |
||||||
|
echo "$0: $src does not exist." >&2 |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
if test -z "$dst_arg"; then |
||||||
|
echo "$0: no destination specified." >&2 |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
dst=$dst_arg |
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; won't work |
||||||
|
# if double slashes aren't ignored. |
||||||
|
if test -d "$dst"; then |
||||||
|
if test -n "$no_target_directory"; then |
||||||
|
echo "$0: $dst_arg: Is a directory" >&2 |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
dstdir=$dst |
||||||
|
dst=$dstdir/`basename "$src"` |
||||||
|
dstdir_status=0 |
||||||
|
else |
||||||
|
# Prefer dirname, but fall back on a substitute if dirname fails. |
||||||
|
dstdir=` |
||||||
|
(dirname "$dst") 2>/dev/null || |
||||||
|
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ |
||||||
|
X"$dst" : 'X\(//\)[^/]' \| \ |
||||||
|
X"$dst" : 'X\(//\)$' \| \ |
||||||
|
X"$dst" : 'X\(/\)' \| . 2>/dev/null || |
||||||
|
echo X"$dst" | |
||||||
|
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ |
||||||
|
s//\1/ |
||||||
|
q |
||||||
|
} |
||||||
|
/^X\(\/\/\)[^/].*/{ |
||||||
|
s//\1/ |
||||||
|
q |
||||||
|
} |
||||||
|
/^X\(\/\/\)$/{ |
||||||
|
s//\1/ |
||||||
|
q |
||||||
|
} |
||||||
|
/^X\(\/\).*/{ |
||||||
|
s//\1/ |
||||||
|
q |
||||||
|
} |
||||||
|
s/.*/./; q' |
||||||
|
` |
||||||
|
|
||||||
|
test -d "$dstdir" |
||||||
|
dstdir_status=$? |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
obsolete_mkdir_used=false |
||||||
|
|
||||||
|
if test $dstdir_status != 0; then |
||||||
|
case $posix_mkdir in |
||||||
|
'') |
||||||
|
# Create intermediate dirs using mode 755 as modified by the umask. |
||||||
|
# This is like FreeBSD 'install' as of 1997-10-28. |
||||||
|
umask=`umask` |
||||||
|
case $stripcmd.$umask in |
||||||
|
# Optimize common cases. |
||||||
|
*[2367][2367]) mkdir_umask=$umask;; |
||||||
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; |
||||||
|
|
||||||
|
*[0-7]) |
||||||
|
mkdir_umask=`expr $umask + 22 \ |
||||||
|
- $umask % 100 % 40 + $umask % 20 \ |
||||||
|
- $umask % 10 % 4 + $umask % 2 |
||||||
|
`;; |
||||||
|
*) mkdir_umask=$umask,go-w;; |
||||||
|
esac |
||||||
|
|
||||||
|
# With -d, create the new directory with the user-specified mode. |
||||||
|
# Otherwise, rely on $mkdir_umask. |
||||||
|
if test -n "$dir_arg"; then |
||||||
|
mkdir_mode=-m$mode |
||||||
|
else |
||||||
|
mkdir_mode= |
||||||
|
fi |
||||||
|
|
||||||
|
posix_mkdir=false |
||||||
|
case $umask in |
||||||
|
*[123567][0-7][0-7]) |
||||||
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which |
||||||
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0. |
||||||
|
;; |
||||||
|
*) |
||||||
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ |
||||||
|
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 |
||||||
|
|
||||||
|
if (umask $mkdir_umask && |
||||||
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 |
||||||
|
then |
||||||
|
if test -z "$dir_arg" || { |
||||||
|
# Check for POSIX incompatibilities with -m. |
||||||
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or |
||||||
|
# other-writable bit of parent directory when it shouldn't. |
||||||
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory. |
||||||
|
ls_ld_tmpdir=`ls -ld "$tmpdir"` |
||||||
|
case $ls_ld_tmpdir in |
||||||
|
d????-?r-*) different_mode=700;; |
||||||
|
d????-?--*) different_mode=755;; |
||||||
|
*) false;; |
||||||
|
esac && |
||||||
|
$mkdirprog -m$different_mode -p -- "$tmpdir" && { |
||||||
|
ls_ld_tmpdir_1=`ls -ld "$tmpdir"` |
||||||
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" |
||||||
|
} |
||||||
|
} |
||||||
|
then posix_mkdir=: |
||||||
|
fi |
||||||
|
rmdir "$tmpdir/d" "$tmpdir" |
||||||
|
else |
||||||
|
# Remove any dirs left behind by ancient mkdir implementations. |
||||||
|
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null |
||||||
|
fi |
||||||
|
trap '' 0;; |
||||||
|
esac;; |
||||||
|
esac |
||||||
|
|
||||||
|
if |
||||||
|
$posix_mkdir && ( |
||||||
|
umask $mkdir_umask && |
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" |
||||||
|
) |
||||||
|
then : |
||||||
|
else |
||||||
|
|
||||||
|
# The umask is ridiculous, or mkdir does not conform to POSIX, |
||||||
|
# or it failed possibly due to a race condition. Create the |
||||||
|
# directory the slow way, step by step, checking for races as we go. |
||||||
|
|
||||||
|
case $dstdir in |
||||||
|
/*) prefix='/';; |
||||||
|
[-=\(\)!]*) prefix='./';; |
||||||
|
*) prefix='';; |
||||||
|
esac |
||||||
|
|
||||||
|
eval "$initialize_posix_glob" |
||||||
|
|
||||||
|
oIFS=$IFS |
||||||
|
IFS=/ |
||||||
|
$posix_glob set -f |
||||||
|
set fnord $dstdir |
||||||
|
shift |
||||||
|
$posix_glob set +f |
||||||
|
IFS=$oIFS |
||||||
|
|
||||||
|
prefixes= |
||||||
|
|
||||||
|
for d |
||||||
|
do |
||||||
|
test X"$d" = X && continue |
||||||
|
|
||||||
|
prefix=$prefix$d |
||||||
|
if test -d "$prefix"; then |
||||||
|
prefixes= |
||||||
|
else |
||||||
|
if $posix_mkdir; then |
||||||
|
(umask=$mkdir_umask && |
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break |
||||||
|
# Don't fail if two instances are running concurrently. |
||||||
|
test -d "$prefix" || exit 1 |
||||||
|
else |
||||||
|
case $prefix in |
||||||
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; |
||||||
|
*) qprefix=$prefix;; |
||||||
|
esac |
||||||
|
prefixes="$prefixes '$qprefix'" |
||||||
|
fi |
||||||
|
fi |
||||||
|
prefix=$prefix/ |
||||||
|
done |
||||||
|
|
||||||
|
if test -n "$prefixes"; then |
||||||
|
# Don't fail if two instances are running concurrently. |
||||||
|
(umask $mkdir_umask && |
||||||
|
eval "\$doit_exec \$mkdirprog $prefixes") || |
||||||
|
test -d "$dstdir" || exit 1 |
||||||
|
obsolete_mkdir_used=true |
||||||
|
fi |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
if test -n "$dir_arg"; then |
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } && |
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && |
||||||
|
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || |
||||||
|
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 |
||||||
|
else |
||||||
|
|
||||||
|
# Make a couple of temp file names in the proper directory. |
||||||
|
dsttmp=$dstdir/_inst.$$_ |
||||||
|
rmtmp=$dstdir/_rm.$$_ |
||||||
|
|
||||||
|
# Trap to clean up those temp files at exit. |
||||||
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 |
||||||
|
|
||||||
|
# Copy the file name to the temp name. |
||||||
|
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && |
||||||
|
|
||||||
|
# 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 $cpprog $src $dsttmp" command. |
||||||
|
# |
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && |
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && |
||||||
|
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && |
||||||
|
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && |
||||||
|
|
||||||
|
# If -C, don't bother to copy if it wouldn't change the file. |
||||||
|
if $copy_on_change && |
||||||
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && |
||||||
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && |
||||||
|
|
||||||
|
eval "$initialize_posix_glob" && |
||||||
|
$posix_glob set -f && |
||||||
|
set X $old && old=:$2:$4:$5:$6 && |
||||||
|
set X $new && new=:$2:$4:$5:$6 && |
||||||
|
$posix_glob set +f && |
||||||
|
|
||||||
|
test "$old" = "$new" && |
||||||
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 |
||||||
|
then |
||||||
|
rm -f "$dsttmp" |
||||||
|
else |
||||||
|
# Rename the file to the real destination. |
||||||
|
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || |
||||||
|
|
||||||
|
# The rename failed, perhaps because mv can't rename something else |
||||||
|
# to itself, or perhaps because mv is so ancient that it does not |
||||||
|
# support -f. |
||||||
|
{ |
||||||
|
# Now remove or move aside any old file at destination location. |
||||||
|
# We try this two ways since rm can't unlink itself on some |
||||||
|
# systems and the destination file might be busy for other |
||||||
|
# reasons. In this case, the final cleanup might fail but the new |
||||||
|
# file should still install successfully. |
||||||
|
{ |
||||||
|
test ! -f "$dst" || |
||||||
|
$doit $rmcmd -f "$dst" 2>/dev/null || |
||||||
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && |
||||||
|
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } |
||||||
|
} || |
||||||
|
{ echo "$0: cannot unlink or rename $dst" >&2 |
||||||
|
(exit 1); exit 1 |
||||||
|
} |
||||||
|
} && |
||||||
|
|
||||||
|
# Now rename the file to the real destination. |
||||||
|
$doit $mvcmd "$dsttmp" "$dst" |
||||||
|
} |
||||||
|
fi || exit 1 |
||||||
|
|
||||||
|
trap '' 0 |
||||||
|
fi |
||||||
|
done |
||||||
|
|
||||||
|
# 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: |
@ -0,0 +1,215 @@ |
|||||||
|
#! /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: |
Loading…
Reference in new issue