diff options
| author | Xavier Roche <xroche@users.noreply.github.com> | 2012-03-19 12:36:11 +0000 |
|---|---|---|
| committer | Xavier Roche <xroche@users.noreply.github.com> | 2012-03-19 12:36:11 +0000 |
| commit | ad5b7acc19290ff91e0f42a0de448a26760fcf99 (patch) | |
| tree | 2d1867758835fd0c4e443ff3cc7e5c774af85874 /src/configure | |
Imported httrack 3.20.2
Diffstat (limited to 'src/configure')
| -rwxr-xr-x | src/configure | 603 |
1 files changed, 603 insertions, 0 deletions
diff --git a/src/configure b/src/configure new file mode 100755 index 0000000..7c2d472 --- /dev/null +++ b/src/configure @@ -0,0 +1,603 @@ +#!/bin/sh +# No, this isn't generated by autoconf +# Some parts are inspired by autoconf (Free Software Foundation), however +# And the idea is slightly the same + +# Usage: +# './configure' and then 'make' and 'make install', or +# './configure --make --install' + +SHELL=/bin/sh + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + case "$ac_option" in + + --pthread | --thread) THREADS=1 ;; + --nopthread | --nothread) THREADS=0 ;; + + --zlib | --gzip) ZLIB=1 ;; + --nozlib | --nogzip) ZLIB=0 ;; + + --static | --noso) DYNAMIC=0 + ;; + --dynamic | --so) DYNAMIC=1 + ;; + + --longlong) LONGLONG=1 ;; + --nolonglong) LONGLONG=0 ;; + + --inaddrt) NODECLINADDRT=0 ;; + --noinaddrt) NODECLINADDRT=1 ;; + + --ipv6) IPV6=1 ;; + --noipv6) IPV6=0 ;; + + --ssl) SSL=1 ;; + --https) SSL=1 ;; + --nossl) SSL=0 ;; + --nohttps) SSL=0 ;; + + --useuid) NOUID=0 ;; + --nouseuid) NOUID=1 ;; + + --useftime) NOFTIME=0 ;; + --nouseftime) NOFTIME=1 ;; + + --system=*) SYSTEMTYPE="$ac_optarg" ;; + --system) ac_prev=SYSTEMTYPE ;; + + --debug) OTYPE="-O0 -g3" + MKTYPE="firstinfo htssystem htssystem_auto build_auto strip clean lastinfo" ;; + + --make) DOMAKE=1 ;; + --install) DOINSTALL=1 ;; + --bininstall) DOINSTALL=1 + NODOCINSTALL=1 + ;; + --docinstall) DOINSTALL=1 + DOCINSTALL=1 + ;; + --cls) + cd .. + chmod 'u=rw,go=r' `find ./ -type f` + chmod 'u=rwx,go=rx' `find ./ -type d` + chmod 'u=rwx,go=rx' ./src/configure + chmod 'u=rwx,go=rx' ./src/strip_cr.in + chmod 'u=rwx,go=rx' ./src/postinst-config.in + cd src + strip_cr *.c *.h + rm -f ./httrack 2>/dev/null + exit + ;; + -prefix | --prefix | --prefi | --pref | --pre | --pr) + ac_prev=PREFIX ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=*) + PREFIX="$ac_optarg" ;; + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=BINPATH ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + BINPATH="$ac_optarg" ;; + -etcdir | --etcdir | --etcdi | --etcd | --etc | --et) + ac_prev=ETCPATH ;; + -etcdir=* | --etcdir=* | --etcdi=* | --etcd=* | --etc=* | --et=*) + ETCPATH="$ac_optarg" ;; + -libdir | --libdir | --libdi | --libd | --lib | --li) + ac_prev=LIBPATH ;; + -libdir=* | --libdir=* | --libdi=* | --libd=* | --lib=* | --li=*) + LIBPATH="$ac_optarg" ;; + + --help) + cat <<EOF +--prefix=.. : prefix (/usr) +--bindir=.. : binary dir (/usr/bin) +--etcdir=.. : config dir (/usr/etc or /etc) +--libdir=.. : library dir (/usr/lib) +--dynamic : do use dynamic (.so) mode +--static : do use static mode +--nopthread : do not use threads (pthread.h) +--pthread : do use threads (pthread.h) +--noipv6 : do not use ipv6 extensions +--ipv6 : do use ipv6 extensions +--nohttps : do not use SSL extensions +--https : do use SSL extensions +--nozlib : do not use compression (zlib) +--zlib : do use compression (zlib) +--nolonglong : do not use 64-bit int +--longlong : do use 64-bit int +--noinaddrt : do not redeclare in_addr_t +--inaddrt : do redeclare in_addr_t +--nouseuid : do not use setuid()/setgid() +--useuid : do use setuid()/setgid() +--nouseftime : do not use ftime() +--useftime : do use ftime() +--system=<type> : override system type (uname) - NOT RECOMMENDED! (types: 'Default','Linux','SunOS','AIX') +--make : 'make' after configure +--install : 'make install' after configure +--bininstall : 'make bininstall' after configure +--docinstall : 'make docinstall' after configure +--debug : add debug information (for gdb) +EOF + exit + ;; + + *) echo "Unrecognized option: $ac_option" + exit + ;; + + esac + +done + +echo "Welcome to HTTrack Website Copier!" +echo "Type in ./configure --help for more details" +echo "If this script fails, you can enter supplemental options through '--option=value'" +echo "or enter in manual make, through 'make help'" +echo "" + +if cp -f Makefile.in Makefile; then + +SEDEXEC= + +# System (OS) type? +printf "Checking for OS type.. " +if test -z "$SYSTEMTYPE"; then + SYSTEMTYPE="`uname`" +fi +case "$SYSTEMTYPE" in + SunOS) printf "SunOS/Solaris\n"; + PLATFORM=0 + SOLSOCK=1 + ;; + AIX) printf "AIX\n"; PLATFORM=2 ;; + *) printf "Linux type\n"; PLATFORM=3 ;; +esac + +WTYPE="-Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wnested-externs" + +if test -z "$OTYPE"; then + OTYPE="-O3" +fi +if test -z "$MKTYPE"; then + MKTYPE="firstinfo htssystem htssystem_auto build_auto strip clean lastinfo" +fi + +# Root group +if test -z "$ROOTGROUP"; then + printf "Checking for 'root' group.." + if egrep "^root:" /etc/group >/dev/null; then + ROOTGROUP="root" + elif egrep "^wheel:" /etc/group >/dev/null; then + ROOTGROUP="wheel" + fi + printf "$ROOTGROUP\n" +else + echo "Overriding ROOTGROUP=$ROOTGROUP" +fi + + +# Binaries location +if test -z "$BINPATH"; then +printf "Checking for bin directory.. " +if test -n "$PREFIX"; then + BINPATH="$PREFIX/bin" +elif test -d "/usr/bin"; then + BINPATH="/usr/bin" +else + BINPATH="/bin" +fi +printf "$BINPATH\n" +else + echo "Overriding BINPATH=$BINPATH" +fi + +# shlib? +if test -d "/usr/shlib"; then +SYSLIB=/usr/shlib +else +SYSLIB=/usr/lib +fi + +# /etc location +if test -z "$ETCPATH"; then +printf "Checking for etc directory.. " +if test -n "$PREFIX"; then + ETCPATH="$PREFIX/etc" +elif test -d "/usr/etc"; then + ETCPATH="/usr/etc" +else + ETCPATH="/etc" +fi +printf "$ETCPATH\n" +else + echo "Overriding ETCPATH=$ETCPATH" +fi + +# /usr/lib location +if test -z "$LIBPATH"; then +printf "Checking for lib directory.. " +if test -n "$PREFIX"; then + LIBPATH="$PREFIX/lib" +elif test -d "/usr/lib"; then + LIBPATH="/usr/lib" +elif test -d "/usr/local/lib"; then + LIBPATH="/usr/local/lib" +else + LIBPATH="/lib" +fi +printf "$LIBPATH\n" +else + echo "Overriding LIBPATH=$LIBPATH" +fi + +# Prefix location +if test -z "$PREFIX"; then + printf "Checking for prefix directory.. " + PREFIX="/usr" + printf "$PREFIX\n" +else + echo "Overriding PREFIX=$PREFIX" +fi + + +# 64-bit (long long) cause some troubles to some processors +# because some alignements aren't properly defined +# we only accept 64-bit on tested processors here +if test -z "$LONGLONG"; then +printf "Checking for long long.. " +LONGLONG= +if grep "long long" /usr/include/sys/types.h >/dev/null; then +if uname -a|egrep ' i[3-9]86 ' >/dev/null; then + LONGLONG=1 +fi +fi +if test -n "$LONGLONG"; then + printf "supported\n" +else + printf "not tested/supported. Use --LONGLONG=1 to override\n" +fi +else + echo "Overriding LONGLONG=$LONGLONG" +fi + +# IPV6? +# NOT TESTED FOR OTHER PLATFORMS.. FIXME! +if test -z "$IPV6"; then +printf "Checking for ipv6 support.. " +if test -f "/usr/include/linux/in6.h" -o -f "/usr/local/include/linux/in6.h"; then +IPV6=1 +else +IPV6=0 +fi +if test "$IPV6" -eq 1; then +printf "supported\n" +else +printf "not supported\n" +fi +else + echo "Overriding IPV6=$IPV6" +fi +if test "$IPV6" -eq 1; then +IPTYPE="-DINET6" +LIPTYPE="" +else +IPTYPE= +LIPTYPE= +fi + +# HTTPS? +# NOT TESTED FOR OTHER PLATFORMS.. FIXME! +if test -z "$SSL"; then +printf "Checking for SSL support.. " +if test -f "/usr/include/openssl/ssl.h" -o -f "/usr/local/include/openssl/ssl.h"; then +SSL=1 +else +SSL=0 +fi +if test "$SSL" -eq 1; then +printf "supported\n" +else +printf "not supported\n" +fi +else + echo "Overriding SSL=$SSL" +fi +if test "$SSL" -eq 1; then +SSTYPE="-lssl -lcrypto" +else +SSTYPE= +fi + +# Alignement +if test -z "$PTRALIGN"; then +printf "Checking for pointer alignements.. " +PTRALIGN= +if test `uname -p` = "alpha" -o `uname -p` = "sparc"; then +PTRALIGN=8 +else +PTRALIGN=4 +fi +fi +printf "$PTRALIGN\n" + + +# Dynamic (.so) module? +if test -z "$DYNAMIC"; then + DYNAMIC=1 +fi +printf "Checking for compilation mode: " +if test "$DYNAMIC" -eq "1"; then + echo "dynamic" + SOTYPE=-fPIC +else + echo "static" + SOTYPE= +fi + +# Do we not have to redeclare in_addr_t ? +# Sometimes this type is defined, or not.. +if test -z "$NODECLINADDRT"; then +printf "Checking for in_addr_t declaration in in.h.. " +if grep -E "typedef .* in_addr_t" /usr/include/netinet/in.h >/dev/null || grep -E "typedef .* in_addr_t" /usr/include/sys/types.h; then + printf "found, do not redeclare\n" + NODECLINADDRT=1 +else + printf "not found, declaring\n" + NODECLINADDRT= +fi +else + echo "Overriding NODECLINADDRT=$NODECLINADDRT" +fi + +# Test if we can use zlib (/usr/lib/libz.so) +# This allow to speed up transfers using HTTP compression +if test -z "$ZLIB"; then +printf "Checking for ${SYSLIB}/libz.so.. " +if test -f "${SYSLIB}/libz.so"; then + printf "found\n" + ZLIB=1 +else + printf "library not found (too bad), no http compression will be available\n" + ZLIB=0 +fi +else + echo "Overriding ZLIB=$ZLIB" +fi + +# Sometimes, pthread.h doesn't exists on some systems +# This is sad, because it speeds up some useful things, like DNS or ftp +if test -z "$THREADS"; then +printf "Checking for /usr/include/pthread.h.. " +if test -f "/usr/include/pthread.h" -o -f "/usr/local/include/pthread.h"; then +if test -f "${SYSLIB}/libpthread.so"; then + printf "found\n" + THREADS=1 +else + printf "library not found (too bad), no threads will be available\n" + THREADS= +fi +else + printf "not found, no threads will be available\n" + THREADS= +fi +else + echo "Overriding THREADS=$THREADS" +fi + +# Sometimes, setuid and setgid can't be used (missing pwd.h and unistd.h ?!) +if test -z "$NOUID"; then +NOUID=1 +printf "Checking for /usr/include/pwd.h and /usr/include/unistd.h.. " +if test -f "/usr/include/pwd.h" -o "/usr/local/include/pwd.h"; then +if test -f "/usr/include/unistd.h" -o -f "/usr/local/include/unistd.h" ; then + NOUID= +fi +fi +if test -z "$NOUID"; then + printf "found\n" +else + printf "not found, not using setuid() and setgid()\n" +fi +else + echo "Overriding NOUID=$NOUID" +fi + +# Sometimes, ftime can't be used (missing declaration...) +if test -z "$NOFTIME"; then +NOFTIME=1 +printf "Checking for ftime in /usr/include/sys/timeb.h.. " +if grep "int ftime" /usr/include/sys/timeb.h >/dev/null; then + NOFTIME= +fi +if test -z "$NOFTIME"; then + printf "found\n" +else + printf "not found (too bad), not using ftime()\n" +fi +else + echo "Overriding NOFTIME=$NOFTIME" +fi + +# Test variables +if test "$NOUID" = 1; then + SEDEXEC="$SEDEXEC | sed -e 's/__DEFINEUID__/HTS_DO_NOT_USE_UID/'" +fi +if test "$NOFTIME" = 1; then + SEDEXEC="$SEDEXEC | sed -e 's/__DEFINEFTI__/HTS_DO_NOT_USE_FTIME/'" +fi +if test "$NODECLINADDRT" = 1; then + SEDEXEC="$SEDEXEC | sed -e 's/__DEFINEINA__/HTS_DO_NOT_REDEFINE_in_addr_t/'" +fi +if test "$THREADS" = 1; then +THTYPE="-D_REENTRANT" +LPTHTYPE="-lpthread" +else +THTYPE= +LPTHTYPE= +fi +SEDEXEC="$SEDEXEC | sed -e \"s/__CFLAGS__/$SOTYPE $OTYPE $WTYPE $IPTYPE $THTYPE/g\"" +SEDEXEC="$SEDEXEC | sed -e \"s/__LFLAGS__/$LPTHTYPE $SSTYPE $LIPTYPE/g\"" +if test ! "$THREADS" = 1; then + SEDEXEC="$SEDEXEC | sed -e 's/__DEFINEPTH__/HTS_DO_NOT_USE_PTHREAD/'" +fi +if test "$ZLIB" = 1; then + SEDEXEC="$SEDEXEC | sed -e 's/__LFLAGS3__/-lz/g'" +else + SEDEXEC="$SEDEXEC | sed -e 's/__LFLAGS3__//g'" +fi +SEDEXEC="$SEDEXEC | sed -e \"s/__ZLIB__/$ZLIB/\"" +if test "$SOLSOCK" = 1; then + SEDEXEC="$SEDEXEC | sed -e 's/__LFLAGS2__/-lnsl -lsocket/g'" +else + SEDEXEC="$SEDEXEC | sed -e 's/__LFLAGS2__//g'" +fi +if test ! "$LONGLONG" = 1; then + SEDEXEC="$SEDEXEC | sed -e 's/__DEFINE64B__/HTS_NO_64_BIT/'" +fi +if test -n "$PTRALIGN"; then + SEDEXEC="$SEDEXEC | sed -e \"s/__PTRALIGN__/$PTRALIGN/g\"" +fi +if test -n "$IPV6"; then + SEDEXEC="$SEDEXEC | sed -e \"s/__INET6__/$IPV6/g\"" +fi +if test -n "$SSL"; then + SEDEXEC="$SEDEXEC | sed -e \"s/__SSL__/$SSL/g\"" +fi +if test "$DYNAMIC" = 1; then + SEDEXEC="$SEDEXEC | sed -e 's/__DYNAMIC__/so/'" + SEDEXEC="$SEDEXEC | sed -e 's/__INSTALL__/bininstall libinstall docinstall/'" + SEDEXEC="$SEDEXEC | sed -e 's/__UNINSTALL__/binremove libremove docremove/'" + SEDEXEC="$SEDEXEC | sed -e 's/__STRIPLIB__/strip --strip-unneeded \\\$(BOUTPUTSO)/'" +else + SEDEXEC="$SEDEXEC | sed -e 's/__DYNAMIC__//'" + SEDEXEC="$SEDEXEC | sed -e 's/__INSTALL__/bininstall docinstall/'" + SEDEXEC="$SEDEXEC | sed -e 's/__UNINSTALL__/binremove docremove/'" + SEDEXEC="$SEDEXEC | sed -e 's/__STRIPLIB__//'" +fi + +SEDEXEC="$SEDEXEC | sed -e \"s/__PLATFORM__/$PLATFORM/g\"" +SEDEXEC="$SEDEXEC | sed -e 's/#__AUTONAME__/AUTONAME = auto/'" +SEDEXEC="$SEDEXEC | sed -e 's/#define __DEFINE.*__//g'" + +# Paths +TMP=`echo $BINPATH | sed -e 's/\\//\\\\\\//g'` +SEDEXEC="$SEDEXEC | sed -e \"s/__BINPATH__/$TMP/g\"" +TMP=`echo $ETCPATH | sed -e 's/\\//\\\\\\//g'` +SEDEXEC="$SEDEXEC | sed -e \"s/__ETCPATH__/$TMP/g\"" +TMP=`echo $LIBPATH | sed -e 's/\\//\\\\\\//g'` +SEDEXEC="$SEDEXEC | sed -e \"s/__LIBPATH__/$TMP/g\"" +TMP=`echo $PREFIX | sed -e 's/\\//\\\\\\//g'` +SEDEXEC="$SEDEXEC | sed -e \"s/__PREFIX__/$TMP/g\"" +TMP=`echo $ROOTGROUP | sed -e 's/\\//\\\\\\//g'` +SEDEXEC="$SEDEXEC | sed -e \"s/__ROOTGROUP__/$TMP/g\"" + +TMP=`echo $PREFIX | sed -e 's/\\//\\\\\\//g'` +SEDEXEC="$SEDEXEC | sed -e \"s/__DEFINEPRE__/$TMP/g\"" +SEDEXEC="$SEDEXEC | sed -e 's/__MAKEAUTO__/$MKTYPE/'" + +# Search for gmake +printf "Checking for make.. " +MAKEPATH= +if test -f "/usr/bin/gmake"; then +MAKEPATH=/usr/bin/gmake +else +if test -f "/bin/gmake"; then +MAKEPATH=/bin/gmake +else +if test -f "/usr/local/bin/gmake"; then +MAKEPATH=/usr/local/bin/gmake +fi +fi +fi +if test -n "$MAKEPATH"; then +printf "found $MAKEPATH\n" +else +MAKEPATH=make +printf "not found, assume make will work\n" +fi + +# Sed strip_cr +EXCL='#!' +printf "Checking for perl.. " +PERLPATH= +cp -f strip_cr.in strip_cr +if test -f "/usr/bin/perl"; then +PERLPATH=/usr/bin/perl +else +if test -f "/bin/perl"; then +PERLPATH=/bin/perl +else +if test -f "/usr/local/bin/perl"; then +PERLPATH=/usr/local/bin/perl +fi +fi +fi +if test -n "$PERLPATH"; then +printf "found $PERLPATH\nEnsuring that *.c/*.h source files don't contains CR (^M).. " +TMP=`echo $PERLPATH | sed -e 's/\\//\\\\\\//g'` +cat strip_cr | sed -e "s/__PERL__/${EXCL}${TMP}/" > __tmp; mv __tmp strip_cr +chmod 755 strip_cr +./strip_cr *.c *.h +printf "done\n" +fi + +# Sed postinst-config +cp -f postinst-config.in postinst-config +CMD="cat postinst-config $SEDEXEC > __tmp; mv __tmp postinst-config" +if eval $CMD; then +chmod 755 postinst-config +else +echo "Error while seding postinst-config" +exit 1 +fi + +# Sed all __VARS__ +CMD="cat Makefile $SEDEXEC > __tmp; mv __tmp Makefile" +echo "Command: $CMD" +if eval $CMD; then + +echo "" +echo "Makefile created!" +echo "Type in '$MAKEPATH' to build and '$MAKEPATH install' to install" + +if test -n "$DOMAKE"; then + echo "Making.." + eval $MAKEPATH clean + eval $MAKEPATH +fi +if test -n "$DOINSTALL"; then + if test -n "$NODOCINSTALL"; then + echo "Installing binary.." + eval $MAKEPATH bininstall + elif test -n "$DOCINSTALL"; then + echo "Installing docs.." + eval $MAKEPATH docinstall + else + echo "Installing.." + eval $MAKEPATH install + fi +fi + +else + echo "Error while seding Makefile.." + exit 1 +fi + +else + echo "Error copying Makefile.in -> Makefile.. giving up" + exit 1 +fi + |
