mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-04 22:19:57 +00:00
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 ...
This commit is contained in:
parent
1413a4886f
commit
192e304b94
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,6 +9,7 @@ build-stamp-ngircd*
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
configure.in
|
||||
configure.lineno
|
||||
cscope.out
|
||||
debian
|
||||
|
44
autogen.sh
44
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
|
||||
|
@ -61,7 +61,7 @@ AC_PROG_RANLIB
|
||||
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
AM_C_PROTOTYPES
|
||||
__ng_PROTOTYPES__
|
||||
|
||||
# -- Hard coded system and compiler dependencies/features/options ... --
|
||||
|
||||
@ -674,4 +674,12 @@ echo "$x_ssl_lib"
|
||||
|
||||
echo
|
||||
|
||||
if ! grep "^AUTOMAKE_OPTIONS = ../portab/ansi2knr" src/ngircd/Makefile.am >/dev/null 2>&1; then
|
||||
echo "WARNING:"
|
||||
echo "This GNU automake generated build system does not support \"de-ANSI-fication\","
|
||||
echo "therefore don't use it to generate \"official\" distribution archives!"
|
||||
echo "(Most probably you want to use GNU automake 1.11.x for this purpose ...)"
|
||||
echo
|
||||
fi
|
||||
|
||||
# -eof-
|
1
src/ipaddr/.gitignore
vendored
Normal file
1
src/ipaddr/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
Makefile.am
|
@ -3,7 +3,7 @@
|
||||
# (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = ../portab/ansi2knr
|
||||
__ng_Makefile_am_template__
|
||||
|
||||
INCLUDES = -I$(srcdir)/../portab
|
||||
|
1
src/ngircd/.gitignore
vendored
1
src/ngircd/.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
Makefile.am
|
||||
check-help
|
||||
check-version
|
||||
ngircd
|
||||
|
@ -9,7 +9,7 @@
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = ../portab/ansi2knr
|
||||
__ng_Makefile_am_template__
|
||||
|
||||
INCLUDES = -I$(srcdir)/../portab -I$(srcdir)/../tool -I$(srcdir)/../ipaddr
|
||||
|
1
src/portab/.gitignore
vendored
1
src/portab/.gitignore
vendored
@ -1 +1,2 @@
|
||||
Makefile.am
|
||||
portabtest
|
||||
|
@ -10,7 +10,7 @@
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = ansi2knr
|
||||
__ng_Makefile_am_template__
|
||||
|
||||
noinst_LIBRARIES = libngportab.a
|
||||
|
1
src/testsuite/.gitignore
vendored
1
src/testsuite/.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
Makefile.am
|
||||
T-ngircd1
|
||||
T-ngircd2
|
||||
channel-test
|
||||
|
@ -10,7 +10,7 @@
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = ../portab/ansi2knr
|
||||
__ng_Makefile_am_template__
|
||||
|
||||
INCLUDES = -I$(srcdir)/../portab
|
||||
|
1
src/tool/.gitignore
vendored
Normal file
1
src/tool/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
Makefile.am
|
@ -9,7 +9,7 @@
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = ../portab/ansi2knr
|
||||
__ng_Makefile_am_template__
|
||||
|
||||
INCLUDES = -I$(srcdir)/../portab
|
||||
|
Loading…
Reference in New Issue
Block a user