X-Git-Url: https://arthur.barton.de/gitweb/?p=ngircd-alex.git;a=blobdiff_plain;f=autogen.sh;h=bb5482278ea9d0c52f9582fbda19810e76d997cd;hp=6c2a8dd16b2c94fa7caced4af559bb1e1f76a315;hb=HEAD;hpb=e65a35e964e6a32de748f18e1f70ffe2ad146119 diff --git a/autogen.sh b/autogen.sh index 6c2a8dd1..0cf9a0e3 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,7 +1,7 @@ #!/bin/sh # # ngIRCd -- The Next Generation IRC Daemon -# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors +# Copyright (c)2001-2024 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 @@ -60,38 +60,58 @@ # and runs it with these arguments: "./configure --prefix=$HOME". # +Check_Tool() +{ + searchlist="$1" + major="$2" + minor="$3" + + 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 + return 1 +} + Search() { - [ $# -eq 2 ] || exit 1 + [ $# -lt 2 ] && return 1 + [ $# -gt 3 ] && return 1 searchlist="$1" major="$2" + minor_pref="$3" minor=99 [ -n "$PREFIX" ] && searchlist="${PREFIX}/$1 ${PREFIX}/bin/$1 $searchlist" + if [ -n "$minor_pref" ]; then + Check_Tool "$searchlist" "$major" "$minor_pref" && return 0 + fi + 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 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` + Check_Tool "$searchlist" "$major" "$minor" && return 0 + minor=$(expr $minor - 1) done return 1 } @@ -99,14 +119,15 @@ Search() Notfound() { echo "Error: $* not found!" - echo "Please install recent versions of GNU autoconf and GNU automake." + echo 'Please install supported versions of GNU autoconf, GNU automake' + echo 'and pkg-config: see the INSTALL file for details.' exit 1 } Run() { - [ "$VERBOSE" = "1" ] && echo " - running \"$@\" ..." - $@ + [ "$VERBOSE" = "1" ] && echo " - running \"$*\" ..." + "$@" } # Reset locale settings to suppress warning messages of Perl @@ -135,64 +156,87 @@ fi # Try to detect the needed tools when no environment variable already # specifies one: echo "Searching for required tools ..." -[ -z "$ACLOCAL" ] && ACLOCAL=`Search aclocal 1` +[ -z "$ACLOCAL" ] && ACLOCAL=$(Search aclocal 1 11) [ "$VERBOSE" = "1" ] && echo " - ACLOCAL=$ACLOCAL" -[ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2` +[ -z "$AUTOHEADER" ] && AUTOHEADER=$(Search autoheader 2) [ "$VERBOSE" = "1" ] && echo " - AUTOHEADER=$AUTOHEADER" -[ -z "$AUTOMAKE" ] && AUTOMAKE=`Search automake 1` +[ -z "$AUTOMAKE" ] && AUTOMAKE=$(Search automake 1 11) [ "$VERBOSE" = "1" ] && echo " - AUTOMAKE=$AUTOMAKE" -[ -z "$AUTOCONF" ] && AUTOCONF=`Search autoconf 2` +[ -z "$AUTOCONF" ] && AUTOCONF=$(Search autoconf 2) [ "$VERBOSE" = "1" ] && echo " - AUTOCONF=$AUTOCONF" -[ $# -gt 0 ] && CONFIGURE_ARGS=" $@" || CONFIGURE_ARGS="" -[ -z "$GO" -a -n "$CONFIGURE_ARGS" ] && GO=1 +AUTOCONF_VERSION=$(echo "$AUTOCONF" | cut -d'-' -f2-) +[ -n "$AUTOCONF_VERSION" ] && [ "$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" ] && [ "$AUTOMAKE_VERSION" != "automake" ] \ + && export AUTOMAKE_VERSION || unset AUTOMAKE_VERSION +[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE_VERSION=$AUTOMAKE_VERSION" + +[ $# -gt 0 ] && CONFIGURE_ARGS=" $*" || CONFIGURE_ARGS="" +[ -z "$GO" ] && [ -n "$CONFIGURE_ARGS" ] && GO=1 # Verify that all tools have been found +command -v pkg-config >/dev/null || Notfound pkg-config [ -z "$ACLOCAL" ] && Notfound aclocal [ -z "$AUTOHEADER" ] && Notfound autoheader [ -z "$AUTOMAKE" ] && Notfound automake [ -z "$AUTOCONF" ] && Notfound autoconf -AM_VERSION=`$AUTOMAKE --version|head -n 1|egrep -o "([1-9]\.[0-9]+(\.[0-9]+)*)"` +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" +AM_MAJOR="$1"; AM_MINOR="$2" +echo "Detected automake $AM_VERSION ..." AM_MAKEFILES="src/ipaddr/Makefile.ng src/ngircd/Makefile.ng src/testsuite/Makefile.ng src/tool/Makefile.ng" -if [ "$AM_MAJOR" -eq "1" -a "$AM_MINOR" -lt "12" ]; then +# De-ANSI-fication? +if [ "$AM_MAJOR" -eq "1" ] && [ "$AM_MINOR" -lt "12" ]; then # automake < 1.12 => automatic de-ANSI-fication support available - echo "Enabling de-ANSI-fication support (automake $AM_VERSION) ..." + 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 (automake $AM_VERSION) ..." + 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" + DEANSI_END=" (disabled by ./autogen.sh script)" fi -sed -e "s|^__ng_Makefile_am_template__|${DEANSI_START}AUTOMAKE_OPTIONS = ansi2knr${DEANSI_END}|g" \ +# Serial test harness? +if [ "$AM_MAJOR" -eq "1" ] && [ "$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 + # shellcheck disable=SC2034 + 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__|${DEANSI_START}AUTOMAKE_OPTIONS = ../portab/ansi2knr${DEANSI_END}|g" \ + 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 using GNU $AUTOCONF and $AUTOMAKE ..." +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 +if [ $? -eq 0 ] && [ -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` + NAME=$(grep PACKAGE_STRING= configure | cut -d"'" -f2) if [ "$GO" = "1" ]; then [ -n "$PREFIX" ] && p=" --prefix=$PREFIX" || p="" c="./configure${p}${CONFIGURE_ARGS}"