]> arthur.barton.de Git - ngircd-alex.git/commitdiff
Reworked configure system: it should be more compatible to most systems
authorAlexander Barton <alex@barton.de>
Thu, 11 Mar 2004 22:21:20 +0000 (22:21 +0000)
committerAlexander Barton <alex@barton.de>
Thu, 11 Mar 2004 22:21:20 +0000 (22:21 +0000)
now, and it should even be more flexible and faster :-)

autogen.sh
configure.in

index 6a292394c88d048d6239478b76f5d97eb963f61f..5e55ee1b1c689e9b052f6c5a97c092c7fca8d5db 100755 (executable)
 #!/bin/sh
 #
-# $Id: autogen.sh,v 1.7 2003/04/22 10:15:46 alex Exp $
+# ngIRCd -- The Next Generation IRC Daemon
+# Copyright (c)2001-2004 Alexander Barton <alex@barton.de>
 #
+# 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# Please read the file COPYING, README and AUTHORS for more information.
+#
+# $Id: autogen.sh,v 1.8 2004/03/11 22:21:20 alex Exp $
+#
+
+Search()
+{
+       [ $# -eq 2 ] || exit 1
+
+       name="$1"
+       major="$2"
+       minor=99
+
+       type "${name}" >/dev/null 2>&1
+       if [ $? -eq 0 ]; then
+               echo "${name}"
+               return 0
+       fi
+
+       while [ $minor -ge 0 ]; do
+               type "${name}${major}${minor}" >/dev/null 2>&1
+               if [ $? -eq 0 ]; then
+                       echo "${name}${major}${minor}"
+                       return 0
+               fi
+               type "${name}-${major}.${minor}" >/dev/null 2>&1
+               if [ $? -eq 0 ]; then
+                       echo "${name}-${major}.${minor}" >/dev/null 2>&1
+               fi
+               minor=`expr $minor - 1`
+       done
+       return 1
+}
+
+Notfound()
+{
+       echo "Error: $* not found!"
+       echo "Please install recent versions of GNU autoconf and GNU automake."
+       exit 1
+}
 
-WANT_AUTOMAKE=1.6
+# Reset locale settings to suppress warning messages of Perl
+unset LC_ALL
+unset LANG
+
+# We want to use GNU automake 1.7, if available (WANT_AUTOMAKE is used by
+# the wrapper scripts of Gentoo Linux):
+WANT_AUTOMAKE=1.7
 export WANT_AUTOMAKE
 
-aclocal && \
- autoheader && \
- automake --add-missing && \
- autoconf && \
- echo "Okay, autogen.sh done."
+# Try to detect the needed tools when no environment variable already
+# spezifies one:
+echo "Searching tools ..."
+[ -z "$ACLOCAL" ] && ACLOCAL=`Search aclocal 1`
+[ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2`
+[ -z "$AUTOMAKE" ] && AUTOMAKE=`Search automake 1`
+[ -z "$AUTOCONF" ] && AUTOCONF=`Search autoconf 2`
+
+# Some debugging output ...
+if [ -n "$DEBUG" ]; then
+       echo "ACLOCAL=$ACLOCAL"
+       echo "AUTOHEADER=$AUTOHEADER"
+       echo "AUTOMAKE=$AUTOMAKE"
+       echo "AUTOCONF=$AUTOCONF"
+fi
+
+# Verify that all tools have been found
+[ -z "$AUTOCONF" ] && Notfounf autoconf
+[ -z "$AUTOHEADER" ] && Notfound autoheader
+[ -z "$AUTOMAKE" ] && Notfound automake
+[ -z "$AUTOCONF" ] && Notfound autoconf
+
+export AUTOCONF AUTOHEADER AUTOMAKE AUTOCONF
+
+# Generate files
+echo "Generating files ..."
+$ACLOCAL && \
+       $AUTOHEADER && \
+       $AUTOMAKE --add-missing && \
+       $AUTOCONF
+
+if [ $? -eq 0 ]; then
+       # Success: if we got some parameters we call ./configure and pass
+       # all of them to it.
+       if [ -n "$*" -a -x ./configure ]; then
+               echo "Calling generated \"configure\" script ..."
+               ./configure $*
+               exit $?
+       else
+               echo "Okay, autogen.sh done; now run the \"configure\" script."
+               exit 0
+       fi
+else
+       # Failure!?
+       echo "Error! Check your installation of GNU automake and autoconf!"
+       exit 1
+fi
 
 # -eof-
index 8c5afcd36206f401eac90047733b789677dbee77..cd54a6f62bb6a14a78f08b29a7a1b7e46764542d 100644 (file)
@@ -8,10 +8,10 @@
 # (at your option) any later version.
 # Please read the file COPYING, README and AUTHORS for more information.
 #
-# $Id: configure.in,v 1.100 2004/02/29 17:19:43 alex Exp $
+# $Id: configure.in,v 1.101 2004/03/11 22:21:20 alex Exp $
 #
 
-# -- Initialisierung --
+# -- Initialisation --
 
 AC_PREREQ(2.50)
 AC_INIT(ngircd, CVSHEAD)
@@ -20,7 +20,7 @@ AC_CANONICAL_TARGET
 AM_INIT_AUTOMAKE(1.6)
 AM_CONFIG_HEADER(src/config.h)
 
-# -- Templates fuer config.h --
+# -- Templates for config.h --
 
 AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
 AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
@@ -41,7 +41,7 @@ AH_TEMPLATE([TARGET_CPU], [Target CPU name])
 
 AC_PROG_CC
 
-# -- Hilfsprogramme --
+# -- Helper programs --
 
 AC_PROG_AWK
 AC_PROG_INSTALL
@@ -51,47 +51,25 @@ AC_PROG_RANLIB
 
 # -- Compiler Features --
 
-AC_LANG_C
-
 AM_C_PROTOTYPES
 AC_C_CONST
 
-# -- Defines --
-
-os=`uname`
-
-if test "$os" = "Linux" -o $os = "GNU"; then
-       # define _POSIX_SOURCE, _GNU_SOURCE and _BSD_SOURCE when compiling
-       # on Linux or Hurd (glibc-based systems):
-       AC_MSG_RESULT([detected ${os}, defining _POSIX_SOURCE, _GNU_SOURCE and _BSD_SOURCE])
-       add_DEFINES="-D_POSIX_SOURCE -D_GNU_SOURCE -D_BSD_SOURCE $add_DEFINES"
-fi
+# -- Hard coded system and compiler dependencies/features/options ... --
 
-if test "$os" = "A/UX"; then
-       # define _POSIX_SOURCE when compiling on A/UX:
-       AC_MSG_RESULT([detected A/UX, defining _POSIX_SOURCE])
-       add_DEFINES="-D_POSIX_SOURCE $add_DEFINES"
+if test "$GCC" = "yes"; then
+       # We are using the GNU C compiler. Good!
+       CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes"
 fi
 
-if test "$os" = "HP-UX"; then
-       # define _XOPEN_SOURCE_EXTENDED when compiling on HP-UX (11.11):
-       AC_MSG_RESULT([detected HP-UX, defining _XOPEN_SOURCE_EXTENDED])
-       add_DEFINES="-D_XOPEN_SOURCE_EXTENDED $add_DEFINES"
-fi
+# Add additional CFLAGS, eventually specified on the command line:
+test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD"
 
-if test "$os" = "SunOS"; then
-       # define _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED=1 and __EXTENSIONS__
-       # when compiling on SunOS (tested with 5.6):
-       AC_MSG_RESULT([detected SunOS, defining _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED=1 and __EXTENSIONS__])
-       add_DEFINES="-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ $add_DEFINES"
-fi
+CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
 
-# -- Header --
+# -- Headers --
 
 AC_HEADER_STDC
-
 AC_HEADER_TIME
-
 AC_HEADER_SYS_WAIT
 
 AC_CHECK_HEADERS([ \
@@ -101,7 +79,7 @@ AC_CHECK_HEADERS([ \
 
 AC_CHECK_HEADERS([arpa/inet.h ctype.h malloc.h stdint.h varargs.h])
 
-# -- Datentypen --
+# -- Datatypes --
 
 AC_MSG_CHECKING(whether socklen_t exists)
 AC_TRY_COMPILE([
@@ -117,7 +95,6 @@ AC_TRY_COMPILE([
 ])
 
 AC_TYPE_SIGNAL
-
 AC_TYPE_SIZE_T
 
 # -- Libraries --
@@ -126,18 +103,15 @@ AC_CHECK_LIB(UTIL,memmove)
 AC_CHECK_LIB(socket,bind)
 AC_CHECK_LIB(nsl,gethostent)
 
-# -- Funktionen --
-
-AC_FUNC_MALLOC
+# -- Functions --
 
 AC_FUNC_FORK
-
 AC_FUNC_STRFTIME
 
 AC_CHECK_FUNCS([ \
-       bind gethostbyaddr gethostbyname gethostname inet_ntoa memmove \
-       memset setsockopt socket strcasecmp strchr strerror strstr waitpid \
-       ],,AC_MSG_ERROR([required function missing!]))
+       bind gethostbyaddr gethostbyname gethostname inet_ntoa malloc memmove \
+       memset realloc setsid setsockopt socket strcasecmp strchr strerror \
+       strstr waitpid],,AC_MSG_ERROR([required function missing!]))
 
 AC_CHECK_FUNCS(inet_aton isdigit sigaction snprintf vsnprintf strlcpy strlcat)
 
@@ -145,7 +119,7 @@ AC_CHECK_FUNCS(select,[AC_CHECK_HEADERS(sys/select.h)],
        AC_MSG_ERROR([required function select() is missing!])
 )
 
-# -- Konfigurationsoptionen --
+# -- Configuration options --
 
 x_syslog_on=no
 AC_ARG_WITH(syslog,
@@ -264,6 +238,7 @@ AC_ARG_ENABLE(debug,
 )
 if test "$x_debug_on" = "yes"; then
        AC_DEFINE(DEBUG, 1)
+       test "$GCC" = "yes" && CFLAGS="-pedantic $CFLAGS"
 fi
 
 x_strict_rfc_on=no
@@ -275,51 +250,15 @@ AC_ARG_ENABLE(strict-rfc,
        fi
 )
 
-# -- Definitionen --
+# -- Definitions --
 
 AC_DEFINE_UNQUOTED(TARGET_CPU, "$target_cpu" )
 AC_DEFINE_UNQUOTED(TARGET_VENDOR, "$target_vendor" )
 AC_DEFINE_UNQUOTED(TARGET_OS, "$target_os" )
 
-# -- Variablen --
-
-if test "$GCC" = "yes"; then
-       the_CFLAGS="-Wmissing-declarations -Wpointer-arith -Wstrict-prototypes"
-       ansi=" -ansi"
-       pedantic=" -pedantic"
-
-       $CC --version | grep 20020420 >/dev/null 2>&1
-       if test $? -eq 0; then
-               # Mac OS X (and Darwin?) ship with a slightly broken
-               # prerelease of GCC 3.1 which don't like -pedantic:
-               AC_MSG_RESULT([detected broken GNU C compiler, disabling "-pedantic"])
-               pedantic=""
-       fi
-
-       $CC --version | grep 20030304 >/dev/null 2>&1
-       if test $? -eq 0; then
-               # Mac OS X 10.3 (and Darwin 7.0?) have a strange gcc (or
-               # system header files?) which produces lots of errors when
-               # using -ansi; so we don't =:-)
-               AC_MSG_RESULT([detected broken GNU C compiler, disabling "-ansi"])
-               ansi=""
-       fi
-
-       uname | grep "CYGWIN" >/dev/null 2>&1
-       if test $? -eq 0; then
-               # The include files of Cygwin don't like -ansi,
-               # so we disable it:
-               AC_MSG_RESULT([detected Cygwin, disabling "-ansi"])
-               ansi=""
-       fi
-
-       add_CFLAGS="-pipe -Wall -W${ansi}${pedantic} $CFLAGS $CFLAGS_ADD"
-else
-       the_CFLAGS="$CFLAGS"
-       add_CFLAGS="$CFLAGS_ADD"
-fi
-
-CFLAGS="$the_CFLAGS $add_CFLAGS $add_DEFINES -DSYSCONFDIR='\"\$(sysconfdir)\"'"
+# Add additional CFLAGS, eventually specified on the command line, but after
+# running this configure script. Useful for "-Werror" for example.
+test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END"
 
 # -- Generate files --
 
@@ -337,6 +276,14 @@ AC_OUTPUT([ \
        contrib/MacOSX/Makefile \
 ])
 
+type dpkg >/dev/null 2>&1
+if test $? -eq 0; then
+       # Generate debian/ link if the dpkg command exists
+       # (read: if we are running on a debian compatible system)
+       echo "creating Debian-specific links ..."
+       test -f debian/rules || ln -s contrib/Debian debian
+fi
+
 # -- Result --
 
 echo
@@ -352,9 +299,7 @@ D=`eval echo ${datadir}/doc/${PACKAGE}` ; D=`eval echo ${D}`
 
 echo "               Host: ${host}"
 echo "           Compiler: ${CC}"
-echo "     Compiler flags: ${the_CFLAGS}"
-test -n "$add_CFLAGS"  && echo "                     ${add_CFLAGS}"
-test -n "$add_DEFINES" && echo "                     ${add_DEFINES}"
+test -n "$CFLAGS"      && echo "     Compiler flags: ${CFLAGS}"
 test -n "$CPPFLAGS"    && echo " Preprocessor flags: ${CPPFLAGS}"
 test -n "$LDFLAGS"     && echo "       Linker flags: ${LDFLAGS}"
 test -n "$LIBS"                && echo "          Libraries: ${LIBS}"