diff options
| author | Alexander Barton <alex@barton.de> | 2012-09-23 17:55:48 +0200 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2012-09-23 18:13:55 +0200 |
| commit | 192e304b94f239de13b0f10ca01f6694fe6eea40 (patch) | |
| tree | 02174f2d76a042c4abcfa63ef65e58b5841661e4 /autogen.sh | |
| parent | 1413a4886ffa120e82d4963368e82b4d5ec6eb2d (diff) | |
| download | ngircd-192e304b94f239de13b0f10ca01f6694fe6eea40.tar.gz ngircd-192e304b94f239de13b0f10ca01f6694fe6eea40.zip | |
Change build system to support new and old GNU automake
Starting with GNU automake 1.12, the "de-ANSI-fication support" has been
removed, which ngIRCd used to enable building itself on very old systems.
Now the problem is, that using automake >= 1.12 isn't working because of
the now unsupported M4 macros. Therefore the solution that this patch
implements is to dynamically generate the automake input files with our
own ./autogen.sh script:
configure.ng => configure.in
Makefile.ng => Makefile.am
This is quite an ugly approach, but it works and enables us to:
1. use current automake >= 1.12 for development and "private builds",
2. still build distribution archives using automake 1.11.x that have
"de-ANSI-fication support" enabled in the generated Makefile's.
And if you are using Makefile's generated with a automake version newer
than 1.11.x (without "de-ANSI-fication support"), the ./configure script
warns you not to use this generated build system to generate distribution
archives.
Drawback of this patch: you MUST use our autogen.sh script, you can't call
the autoconf/automake commands directly any more; but autoreconf should
still work ...
Diffstat (limited to 'autogen.sh')
| -rwxr-xr-x | autogen.sh | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/autogen.sh b/autogen.sh index cca200b2..d47d7504 100755 --- a/autogen.sh +++ b/autogen.sh @@ -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<major><minor>" (for example @@ -129,7 +134,7 @@ 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" [ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2` @@ -139,9 +144,8 @@ echo "Searching tools ..." [ -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 +[ $# -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 @@ -149,10 +153,37 @@ echo "Searching tools ..." [ -z "$AUTOMAKE" ] && Notfound automake [ -z "$AUTOCONF" ] && Notfound autoconf +AM_VERSION=`$AUTOMAKE --version | egrep -o "([0-9]+\.[0-9]+\.[0-9]+)"` +ifs=$IFS; IFS="."; set $AM_VERSION; IFS=$ifs +AM_MAJOR="$1"; AM_MINOR="$2"; AM_PATCHLEVEL="$3" + +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 + # automake < 1.12 => automatic de-ANSI-fication support available + echo "Enabling de-ANSI-fication support (automake $AM_VERSION) ..." + sed -e "s|^__ng_PROTOTYPES__|AM_C_PROTOTYPES|g" configure.ng >configure.in + DEANSI_START="" + DEANSI_END="" +else + # automake >= 1.12 => no de-ANSI-fication support available + echo "Disabling de-ANSI-fication support (automake $AM_VERSION) ..." + sed -e "s|^__ng_PROTOTYPES__|AC_C_PROTOTYPES|g" configure.ng >configure.in + DEANSI_START="#" + DEANSI_END=" # disabled by ./autogen.sh script" +fi +sed -e "s|^__ng_Makefile_am_template__|${DEANSI_START}AUTOMAKE_OPTIONS = 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_ng >$makefile_am +done + export ACLOCAL AUTOHEADER AUTOMAKE AUTOCONF # Generate files -echo "Generating files ..." +echo "Generating files using GNU $AUTOCONF and $AUTOMAKE ..." Run $ACLOCAL && \ Run $AUTOCONF && \ Run $AUTOHEADER && \ @@ -164,8 +195,7 @@ if [ $? -eq 0 -a -x ./configure ]; then 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 |