X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=autogen.sh;h=c87085ac5cf030356cdba9b1846bf984b78795fd;hp=8a0a56f4de323d46da36d285115b9f350bc72da1;hb=33fae67579eeab31d7f96f9e53f0529f584b0b1f;hpb=070976e443aae3056fc39e593d3a11eaa371cea6 diff --git a/autogen.sh b/autogen.sh index 8a0a56f4..c87085ac 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,12 +1,178 @@ #!/bin/sh # -# $Id: autogen.sh,v 1.4 2003/01/11 15:35:47 alex Exp $ +# ngIRCd -- The Next Generation IRC Daemon +# Copyright (c)2001-2008 Alexander Barton # +# 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 of the License, or +# (at your option) any later version. +# Please read the file COPYING, README and AUTHORS for more information. +# +# Usage: +# [VAR=] ./autogen.sh [] +# +# This script generates the ./configure script using GNU automake and +# GNU autoconf. It tries to be smart in finding the correct/usable/available +# installed versions of these tools on your system. +# +# The following strategy is used for each of aclocal, autoheader, automake, +# and autoconf: first, "tool" (the regular name of the tool, e. g. "autoconf" +# or "automake") is checked. If this fails, "tool" (for example +# "automake16") and "tool-." (e. g. "autoconf-2.54") are tried +# with being 2 for tool of GNU autoconf and 1 for tools of automake; +# is tried from 99 to 0. The first occurrence will be used. +# +# When you pass to autogen.sh it will call the generated +# ./configure script on success and pass these parameters to it. +# +# You can tweak the behaviour using these environment variables: +# +# - ACLOCAL=, AUTOHEADER=, AUTOMAKE=, AUTOCONF= +# Name and optionally path to the particular tool. +# - PREFIX= +# Search the GNU autoconf and GNU automake tools in first. If the +# generated ./configure script will be called, pass "--prefix=" to it. +# - EXIST= +# Use to test for aclocal, autoheader etc. pp. ... +# When not specified, either "type" or "which" is used. +# - VERBOSE=1 +# Output the detected names of the GNU automake and GNU autoconf tools. +# - GO=1 +# Call ./configure even if no arguments have been passed to autogen.sh. +# +# Examples: +# +# - ./autogen.sh +# Generates the ./configure script. +# - GO=1 ./autogen.sh +# Generates the ./configure script and runs it as "./configure". +# - VERBOSE=1 ./autogen.sh --with-ident +# Show tool names, generates the ./configure script, and runs it with +# these arguments: "./configure --with-ident". +# - ACLOCAL=aclocal-1.6 GO=1 PREFIX=$HOME ./autogen.sh +# Uses "aclocal-1.6" as aclocal tool, generates the ./configure script, +# and runs it with these arguments: "./configure --prefix=$HOME". +# + +Search() +{ + [ $# -eq 2 ] || exit 1 + + searchlist="$1" + major="$2" + minor=99 + + [ -n "$PREFIX" ] && searchlist="${PREFIX}/$1 ${PREFIX}/bin/$1 $searchlist" + + for name in $searchlist; do + $EXIST "${name}" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "${name}" + return 0 + fi + done + + while [ $minor -ge 0 ]; do + for name in $searchlist; do + $EXIST "${name}${major}${minor}" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "${name}${major}${minor}" + return 0 + fi + $EXIST "${name}-${major}.${minor}" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "${name}-${major}.${minor}" + return 0 + fi + done + minor=`expr $minor - 1` + done + return 1 +} + +Notfound() +{ + echo "Error: $* not found!" + echo "Please install recent versions of GNU autoconf and GNU automake." + exit 1 +} + +# Reset locale settings to suppress warning messages of Perl +unset LC_ALL +unset LANG + +# Which command should be used to detect the automake/autoconf tools? +[ -z "$EXIST" ] && existlist="type which" || existlist="$EXIST" +EXIST="" +for t in $existlist; do + $t /bin/ls >/dev/null 2>&1 + if [ $? -eq 0 ]; then + rm -f /tmp/test.$$ + $t /tmp/test.$$ >/dev/null 2>&1 + [ $? -ne 0 ] && EXIST="$t" + fi + [ -n "$EXIST" ] && break +done +if [ -z "$EXIST" ]; then + echo "Didn't detect a working command to test for the autoconf/automake tools!" + echo "Searchlist: $existlist" + exit 1 +fi +[ "$VERBOSE" = "1" ] && echo "Using \"$EXIST\" to test for tools." + +# Try to detect the needed tools when no environment variable already +# specifies one: +echo "Searching tools ..." +[ -z "$ACLOCAL" ] && ACLOCAL=`Search aclocal 1` +[ "$VERBOSE" = "1" ] && echo "ACLOCAL=$ACLOCAL" +[ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2` +[ "$VERBOSE" = "1" ] && echo "AUTOHEADER=$AUTOHEADER" +[ -z "$AUTOMAKE" ] && AUTOMAKE=`Search automake 1` +[ "$VERBOSE" = "1" ] && echo "AUTOMAKE=$AUTOMAKE" +[ -z "$AUTOCONF" ] && AUTOCONF=`Search autoconf 2` +[ "$VERBOSE" = "1" ] && echo "AUTOCONF=$AUTOCONF" + +# Call ./configure when parameters have been passed to this script and +# GO isn't already defined. +[ -z "$GO" -a $# -gt 0 ] && GO=1 + +# Verify that all tools have been found +[ -z "$ACLOCAL" ] && Notfound aclocal +[ -z "$AUTOHEADER" ] && Notfound autoheader +[ -z "$AUTOMAKE" ] && Notfound automake +[ -z "$AUTOCONF" ] && Notfound autoconf + +export ACLOCAL AUTOHEADER AUTOMAKE AUTOCONF + +# Generate files +echo "Generating files ..." +$ACLOCAL && \ + $AUTOHEADER && \ + $AUTOMAKE --add-missing && \ + $AUTOCONF --force -aclocal && \ - autoheader && \ - automake --add-missing && \ - autoconf && \ - echo "Okay, autogen.sh war erfolgreich." +if [ $? -eq 0 -a -x ./configure ]; then + # Success: if we got some parameters we call ./configure and pass + # all of them to it. + NAME=`grep PACKAGE_STRING= configure | cut -d"'" -f2` + if [ "$GO" = "1" ]; then + [ -n "$PREFIX" ] && p=" --prefix=$PREFIX" || p="" + [ -n "$*" ] && a=" $*" || a="" + c="./configure${p}${a}" + echo "Okay, autogen.sh for $NAME done." + echo "Calling \"$c\" ..." + $c + exit $? + else + echo "Okay, autogen.sh for $NAME done." + echo "Now run the \"./configure\" script." + exit 0 + fi +else + # Failure!? + echo "Error! Check your installation of GNU automake and autoconf!" + exit 1 +fi # -eof-