X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=autogen.sh;h=cab3ca62c573e6da0ea81fe05a9c65371a999e58;hp=bd438cd517aa92015cc5fba7f967f6ad193a1e44;hb=d0977258ee14a5178e98c9a00c064d90f0eac9d6;hpb=da160d020ee2c2911a0d2ad2fd1074e8971db0ad diff --git a/autogen.sh b/autogen.sh index bd438cd5..cab3ca62 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,7 +1,7 @@ #!/bin/sh # # ngIRCd -- The Next Generation IRC Daemon -# Copyright (c)2001-2008 Alexander Barton +# Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors # # 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 @@ -16,6 +16,11 @@ # GNU autoconf. It tries to be smart in finding the correct/usable/available # installed versions of these tools on your system. # +# In addition, it enables or disables the "de-ANSI-fication" support of GNU +# automake, which is supported up to autoconf 1.11.x an has been removed +# in automake 1.12 -- make sure to use a version of automake supporting it +# when generating distribution archives! +# # 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 @@ -68,8 +73,12 @@ Search() for name in $searchlist; do $EXIST "${name}" >/dev/null 2>&1 if [ $? -eq 0 ]; then - echo "${name}" - return 0 + "${name}" --version 2>&1 \ + | grep -v "environment variable" >/dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "${name}" + return 0 + fi fi done @@ -98,6 +107,12 @@ Notfound() exit 1 } +Run() +{ + [ "$VERBOSE" = "1" ] && echo " - running \"$@\" ..." + $@ +} + # Reset locale settings to suppress warning messages of Perl unset LC_ALL unset LANG @@ -123,19 +138,27 @@ fi # Try to detect the needed tools when no environment variable already # specifies one: -echo "Searching tools ..." +echo "Searching for required tools ..." [ -z "$ACLOCAL" ] && ACLOCAL=`Search aclocal 1` -[ "$VERBOSE" = "1" ] && echo "ACLOCAL=$ACLOCAL" +[ "$VERBOSE" = "1" ] && echo " - ACLOCAL=$ACLOCAL" [ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2` -[ "$VERBOSE" = "1" ] && echo "AUTOHEADER=$AUTOHEADER" +[ "$VERBOSE" = "1" ] && echo " - AUTOHEADER=$AUTOHEADER" [ -z "$AUTOMAKE" ] && AUTOMAKE=`Search automake 1` -[ "$VERBOSE" = "1" ] && echo "AUTOMAKE=$AUTOMAKE" +[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE=$AUTOMAKE" [ -z "$AUTOCONF" ] && AUTOCONF=`Search autoconf 2` -[ "$VERBOSE" = "1" ] && echo "AUTOCONF=$AUTOCONF" +[ "$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 +AUTOCONF_VERSION=`echo $AUTOCONF | cut -d'-' -f2-` +[ -n "$AUTOCONF_VERSION" -a "$AUTOCONF_VERSION" != "autoconf" ] \ + && export AUTOCONF_VERSION || unset AUTOCONF_VERSION +[ "$VERBOSE" = "1" ] && echo " - AUTOCONF_VERSION=$AUTOCONF_VERSION" +AUTOMAKE_VERSION=`echo $AUTOMAKE | cut -d'-' -f2-` +[ -n "$AUTOMAKE_VERSION" -a "$AUTOMAKE_VERSION" != "automake" ] \ + && export AUTOMAKE_VERSION || unset AUTOMAKE_VERSION +[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE_VERSION=$AUTOMAKE_VERSION" + +[ $# -gt 0 ] && CONFIGURE_ARGS=" $@" || CONFIGURE_ARGS="" +[ -z "$GO" -a -n "$CONFIGURE_ARGS" ] && GO=1 # Verify that all tools have been found [ -z "$ACLOCAL" ] && Notfound aclocal @@ -143,27 +166,68 @@ echo "Searching tools ..." [ -z "$AUTOMAKE" ] && Notfound automake [ -z "$AUTOCONF" ] && Notfound autoconf +AM_VERSION=`$AUTOMAKE --version | head -n 1 | sed -e 's/.* //g'` +ifs=$IFS; IFS="."; set $AM_VERSION; IFS=$ifs +AM_MAJOR="$1"; AM_MINOR="$2"; AM_PATCHLEVEL="$3" +echo "Detected automake $AM_VERSION ..." + +AM_MAKEFILES="src/ipaddr/Makefile.ng src/ngircd/Makefile.ng src/testsuite/Makefile.ng src/tool/Makefile.ng" + +# De-ANSI-fication? +if [ "$AM_MAJOR" -eq "1" -a "$AM_MINOR" -lt "12" ]; then + # automake < 1.12 => automatic de-ANSI-fication support available + echo " - Enabling de-ANSI-fication support." + sed -e "s|^__ng_PROTOTYPES__|AM_C_PROTOTYPES|g" configure.ng >configure.ac + DEANSI_START="" + DEANSI_END="" +else + # automake >= 1.12 => no de-ANSI-fication support available + echo " - Disabling de-ANSI-fication support." + sed -e "s|^__ng_PROTOTYPES__|AC_C_PROTOTYPES|g" configure.ng >configure.ac + DEANSI_START="#" + DEANSI_END=" (disabled by ./autogen.sh script)" +fi +# Serial test harness? +if [ "$AM_MAJOR" -eq "1" -a "$AM_MINOR" -ge "13" ]; then + # automake >= 1.13 => enforce "serial test harness" + echo " - Enforcing serial test harness." + SERIAL_TESTS="serial-tests" +else + # automake < 1.13 => no new test harness, nothing to do + SERIAL_TEST="" +fi + +sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}ansi2knr${DEANSI_END}|g" \ + src/portab/Makefile.ng >src/portab/Makefile.am +for makefile_ng in $AM_MAKEFILES; do + makefile_am=`echo "$makefile_ng" | sed -e "s|\.ng\$|\.am|g"` + sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}../portab/ansi2knr${DEANSI_END}|g" \ + $makefile_ng >$makefile_am +done + export ACLOCAL AUTOHEADER AUTOMAKE AUTOCONF # Generate files -echo "Generating files ..." -$ACLOCAL && \ - $AUTOHEADER && \ - $AUTOMAKE --add-missing && \ - $AUTOCONF +echo "Generating files using \"$AUTOCONF\" and \"$AUTOMAKE\" ..." +Run $ACLOCAL && \ + Run $AUTOCONF && \ + Run $AUTOHEADER && \ + Run $AUTOMAKE --add-missing --no-force 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}" + c="./configure${p}${CONFIGURE_ARGS}" + echo "Okay, autogen.sh for $NAME done." echo "Calling \"$c\" ..." $c exit $? else - echo "Okay, autogen.sh done; now run the \"configure\" script." + echo "Okay, autogen.sh for $NAME done." + echo "Now run the \"./configure\" script." exit 0 fi else