[BACK]Return to autogen.sh CVS log [TXT][DIR] Up to [local] / ircnowd

Annotation of ircnowd/autogen.sh, Revision 1.1

1.1     ! tomglok     1: #!/bin/sh
        !             2: #
        !             3: # ngIRCd -- The Next Generation IRC Daemon
        !             4: # Copyright (c)2001-2015 Alexander Barton (alex@barton.de) and Contributors
        !             5: #
        !             6: # This program is free software; you can redistribute it and/or modify
        !             7: # it under the terms of the GNU General Public License as published by
        !             8: # the Free Software Foundation; either version 2 of the License, or
        !             9: # (at your option) any later version.
        !            10: # Please read the file COPYING, README and AUTHORS for more information.
        !            11: #
        !            12: # Usage:
        !            13: #   [VAR=<value>] ./autogen.sh [<configure-args>]
        !            14: #
        !            15: # This script generates the ./configure script using GNU automake and
        !            16: # GNU autoconf. It tries to be smart in finding the correct/usable/available
        !            17: # installed versions of these tools on your system.
        !            18: #
        !            19: # In addition, it enables or disables the "de-ANSI-fication" support of GNU
        !            20: # automake, which is supported up to autoconf 1.11.x an has been removed
        !            21: # in automake 1.12 -- make sure to use a version of automake supporting it
        !            22: # when generating distribution archives!
        !            23: #
        !            24: # The following strategy is used for each of aclocal, autoheader, automake,
        !            25: # and autoconf: first, "tool" (the regular name of the tool, e. g. "autoconf"
        !            26: # or "automake") is checked. If this fails, "tool<major><minor>" (for example
        !            27: # "automake16") and "tool-<major>.<minor>" (e. g. "autoconf-2.54") are tried
        !            28: # with <major> being 2 for tool of GNU autoconf and 1 for tools of automake;
        !            29: # <minor> is tried from 99 to 0. The first occurrence will be used.
        !            30: #
        !            31: # When you pass <configure-args> to autogen.sh it will call the generated
        !            32: # ./configure script on success and pass these parameters to it.
        !            33: #
        !            34: # You can tweak the behaviour using these environment variables:
        !            35: #
        !            36: # - ACLOCAL=<cmd>, AUTOHEADER=<cmd>, AUTOMAKE=<cmd>, AUTOCONF=<cmd>
        !            37: #   Name and optionally path to the particular tool.
        !            38: # - PREFIX=<path>
        !            39: #   Search the GNU autoconf and GNU automake tools in <path> first. If the
        !            40: #   generated ./configure script will be called, pass "--prefix=<path>" to it.
        !            41: # - EXIST=<tool>
        !            42: #   Use <tool> to test for aclocal, autoheader etc. pp. ...
        !            43: #   When not specified, either "type" or "which" is used.
        !            44: # - VERBOSE=1
        !            45: #   Output the detected names of the GNU automake and GNU autoconf tools.
        !            46: # - GO=1
        !            47: #   Call ./configure even if no arguments have been passed to autogen.sh.
        !            48: #
        !            49: # Examples:
        !            50: #
        !            51: # - ./autogen.sh
        !            52: #   Generates the ./configure script.
        !            53: # - GO=1 ./autogen.sh
        !            54: #   Generates the ./configure script and runs it as "./configure".
        !            55: # - VERBOSE=1 ./autogen.sh --with-ident
        !            56: #   Show tool names, generates the ./configure script, and runs it with
        !            57: #   these arguments: "./configure --with-ident".
        !            58: # - ACLOCAL=aclocal-1.6 GO=1 PREFIX=$HOME ./autogen.sh
        !            59: #   Uses "aclocal-1.6" as aclocal tool, generates the ./configure script,
        !            60: #   and runs it with these arguments: "./configure --prefix=$HOME".
        !            61: #
        !            62:
        !            63: Search()
        !            64: {
        !            65:        [ $# -eq 2 ] || exit 1
        !            66:
        !            67:        searchlist="$1"
        !            68:        major="$2"
        !            69:        minor=99
        !            70:
        !            71:        [ -n "$PREFIX" ] && searchlist="${PREFIX}/$1 ${PREFIX}/bin/$1 $searchlist"
        !            72:
        !            73:        for name in $searchlist; do
        !            74:                $EXIST "${name}" >/dev/null 2>&1
        !            75:                if [ $? -eq 0 ]; then
        !            76:                        "${name}" --version 2>&1 \
        !            77:                         | grep -v "environment variable" >/dev/null 2>&1
        !            78:                        if [ $? -eq 0 ]; then
        !            79:                                echo "${name}"
        !            80:                                return 0
        !            81:                        fi
        !            82:                fi
        !            83:        done
        !            84:
        !            85:        while [ $minor -ge 0 ]; do
        !            86:                for name in $searchlist; do
        !            87:                        $EXIST "${name}${major}${minor}" >/dev/null 2>&1
        !            88:                        if [ $? -eq 0 ]; then
        !            89:                                echo "${name}${major}${minor}"
        !            90:                                return 0
        !            91:                        fi
        !            92:                        $EXIST "${name}-${major}.${minor}" >/dev/null 2>&1
        !            93:                        if [ $? -eq 0 ]; then
        !            94:                                echo "${name}-${major}.${minor}"
        !            95:                                return 0
        !            96:                        fi
        !            97:                done
        !            98:                minor=$(expr $minor - 1)
        !            99:        done
        !           100:        return 1
        !           101: }
        !           102:
        !           103: Notfound()
        !           104: {
        !           105:        echo "Error: $* not found!"
        !           106:        echo 'Please install supported versions of GNU autoconf, GNU automake'
        !           107:        echo 'and pkg-config: see the INSTALL file for details.'
        !           108:        exit 1
        !           109: }
        !           110:
        !           111: Run()
        !           112: {
        !           113:        [ "$VERBOSE" = "1" ] && echo " - running \"$*\" ..."
        !           114:        "$@"
        !           115: }
        !           116:
        !           117: # Reset locale settings to suppress warning messages of Perl
        !           118: unset LC_ALL
        !           119: unset LANG
        !           120:
        !           121: # Which command should be used to detect the automake/autoconf tools?
        !           122: [ -z "$EXIST" ] && existlist="type which" || existlist="$EXIST"
        !           123: EXIST=""
        !           124: for t in $existlist; do
        !           125:        $t /bin/ls >/dev/null 2>&1
        !           126:        if [ $? -eq 0 ]; then
        !           127:                rm -f /tmp/test.$$
        !           128:                $t /tmp/test.$$ >/dev/null 2>&1
        !           129:                [ $? -ne 0 ] && EXIST="$t"
        !           130:        fi
        !           131:        [ -n "$EXIST" ] && break
        !           132: done
        !           133: if [ -z "$EXIST" ]; then
        !           134:        echo "Didn't detect a working command to test for the autoconf/automake tools!"
        !           135:        echo "Searchlist: $existlist"
        !           136:        exit 1
        !           137: fi
        !           138: [ "$VERBOSE" = "1" ] && echo "Using \"$EXIST\" to test for tools."
        !           139:
        !           140: # Try to detect the needed tools when no environment variable already
        !           141: # specifies one:
        !           142: echo "Searching for required tools ..."
        !           143: [ -z "$ACLOCAL" ] && ACLOCAL=$(Search aclocal 1)
        !           144: [ "$VERBOSE" = "1" ] && echo " - ACLOCAL=$ACLOCAL"
        !           145: [ -z "$AUTOHEADER" ] && AUTOHEADER=$(Search autoheader 2)
        !           146: [ "$VERBOSE" = "1" ] && echo " - AUTOHEADER=$AUTOHEADER"
        !           147: [ -z "$AUTOMAKE" ] && AUTOMAKE=$(Search automake 1)
        !           148: [ "$VERBOSE" = "1" ] && echo " - AUTOMAKE=$AUTOMAKE"
        !           149: [ -z "$AUTOCONF" ] && AUTOCONF=$(Search autoconf 2)
        !           150: [ "$VERBOSE" = "1" ] && echo " - AUTOCONF=$AUTOCONF"
        !           151:
        !           152: AUTOCONF_VERSION=$(echo "$AUTOCONF" | cut -d'-' -f2-)
        !           153: [ -n "$AUTOCONF_VERSION" ] && [ "$AUTOCONF_VERSION" != "autoconf" ] \
        !           154:        && export AUTOCONF_VERSION || unset AUTOCONF_VERSION
        !           155: [ "$VERBOSE" = "1" ] && echo " - AUTOCONF_VERSION=$AUTOCONF_VERSION"
        !           156: AUTOMAKE_VERSION=$(echo $AUTOMAKE | cut -d'-' -f2-)
        !           157: [ -n "$AUTOMAKE_VERSION" ] && [ "$AUTOMAKE_VERSION" != "automake" ] \
        !           158:        && export AUTOMAKE_VERSION || unset AUTOMAKE_VERSION
        !           159: [ "$VERBOSE" = "1" ] && echo " - AUTOMAKE_VERSION=$AUTOMAKE_VERSION"
        !           160:
        !           161: [ $# -gt 0 ] && CONFIGURE_ARGS=" $*" || CONFIGURE_ARGS=""
        !           162: [ -z "$GO" ] && [ -n "$CONFIGURE_ARGS" ] && GO=1
        !           163:
        !           164: # Verify that all tools have been found
        !           165: command -v pkg-config >/dev/null || Notfound pkg-config
        !           166: [ -z "$ACLOCAL" ] && Notfound aclocal
        !           167: [ -z "$AUTOHEADER" ] && Notfound autoheader
        !           168: [ -z "$AUTOMAKE" ] && Notfound automake
        !           169: [ -z "$AUTOCONF" ] && Notfound autoconf
        !           170:
        !           171: AM_VERSION=$($AUTOMAKE --version | head -n 1 | sed -e 's/.* //g')
        !           172: ifs=$IFS; IFS="."; set $AM_VERSION; IFS=$ifs
        !           173: AM_MAJOR="$1"; AM_MINOR="$2"
        !           174: echo "Detected automake $AM_VERSION ..."
        !           175:
        !           176: AM_MAKEFILES="src/ipaddr/Makefile.ng src/ngircd/Makefile.ng src/testsuite/Makefile.ng src/tool/Makefile.ng"
        !           177:
        !           178: # De-ANSI-fication?
        !           179: if [ "$AM_MAJOR" -eq "1" ] && [ "$AM_MINOR" -lt "12" ]; then
        !           180:        # automake < 1.12 => automatic de-ANSI-fication support available
        !           181:        echo " - Enabling de-ANSI-fication support."
        !           182:        sed -e "s|^__ng_PROTOTYPES__|AM_C_PROTOTYPES|g" configure.ng >configure.ac
        !           183:        DEANSI_START=""
        !           184:        DEANSI_END=""
        !           185: else
        !           186:        # automake >= 1.12 => no de-ANSI-fication support available
        !           187:        echo " - Disabling de-ANSI-fication support."
        !           188:        sed -e "s|^__ng_PROTOTYPES__|AC_C_PROTOTYPES|g" configure.ng >configure.ac
        !           189:        DEANSI_START="#"
        !           190:        DEANSI_END=" (disabled by ./autogen.sh script)"
        !           191: fi
        !           192: # Serial test harness?
        !           193: if [ "$AM_MAJOR" -eq "1" ] && [ "$AM_MINOR" -ge "13" ]; then
        !           194:        # automake >= 1.13 => enforce "serial test harness"
        !           195:        echo " - Enforcing serial test harness."
        !           196:        SERIAL_TESTS="serial-tests"
        !           197: else
        !           198:        # automake < 1.13 => no new test harness, nothing to do
        !           199:        # shellcheck disable=SC2034
        !           200:        SERIAL_TEST=""
        !           201: fi
        !           202:
        !           203: sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}ansi2knr${DEANSI_END}|g" \
        !           204:        src/portab/Makefile.ng >src/portab/Makefile.am
        !           205: for makefile_ng in $AM_MAKEFILES; do
        !           206:        makefile_am=$(echo "$makefile_ng" | sed -e "s|\.ng\$|\.am|g")
        !           207:        sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}../portab/ansi2knr${DEANSI_END}|g" \
        !           208:                $makefile_ng >$makefile_am
        !           209: done
        !           210:
        !           211: export ACLOCAL AUTOHEADER AUTOMAKE AUTOCONF
        !           212:
        !           213: # Generate files
        !           214: echo "Generating files using \"$AUTOCONF\" and \"$AUTOMAKE\" ..."
        !           215: Run $ACLOCAL && \
        !           216:        Run $AUTOCONF && \
        !           217:        Run $AUTOHEADER && \
        !           218:        Run $AUTOMAKE --add-missing --no-force
        !           219:
        !           220: if [ $? -eq 0 ] && [ -x ./configure ]; then
        !           221:        # Success: if we got some parameters we call ./configure and pass
        !           222:        # all of them to it.
        !           223:        NAME=$(grep PACKAGE_STRING= configure | cut -d"'" -f2)
        !           224:        if [ "$GO" = "1" ]; then
        !           225:                [ -n "$PREFIX" ] && p=" --prefix=$PREFIX" || p=""
        !           226:                c="./configure${p}${CONFIGURE_ARGS}"
        !           227:                echo "Okay, autogen.sh for $NAME done."
        !           228:                echo "Calling \"$c\" ..."
        !           229:                $c
        !           230:                exit $?
        !           231:        else
        !           232:                echo "Okay, autogen.sh for $NAME done."
        !           233:                echo "Now run the \"./configure\" script."
        !           234:                exit 0
        !           235:        fi
        !           236: else
        !           237:        # Failure!?
        !           238:        echo "Error! Check your installation of GNU automake and autoconf!"
        !           239:        exit 1
        !           240: fi
        !           241:
        !           242: # -eof-

CVSweb