X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=configure.ng;h=34094a485180cc9874085daf4d45a2b8ae31aefb;hp=6c28f39a9e0ed81937a65f2b04cdc96012fc3613;hb=1e386fb7acdf6754a9ee4e6ddc8fa7180f6e5c1e;hpb=d0c9f4a692877d0a232499031f82413b02a45739 diff --git a/configure.ng b/configure.ng index 6c28f39a..34094a48 100644 --- a/configure.ng +++ b/configure.ng @@ -1,6 +1,6 @@ # # ngIRCd -- The Next Generation IRC Daemon -# Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors +# Copyright (c)2001-2014 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 @@ -23,8 +23,7 @@ m4_ifdef([AM_SILENT_RULES], # -- Initialisation -- AC_PREREQ([2.61]) -AC_INIT([ngIRCd], VERSION_ID, - [ngircd-ml@ngircd.barton.de], [ngircd], [http://ngircd.barton.de/]) +AC_INIT([ngIRCd],[VERSION_ID],[ngircd-ml@ngircd.barton.de],[ngircd],[http://ngircd.barton.de/]) AC_CONFIG_SRCDIR([src/ngircd/ngircd.c]) AC_CONFIG_HEADER([src/config.h]) @@ -67,6 +66,7 @@ AC_PROG_AWK AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET +AC_PROG_MKDIR_P AC_PROG_RANLIB # -- Compiler Features -- @@ -75,23 +75,57 @@ AC_C_CONST AC_C_INLINE __ng_PROTOTYPES__ -# -- Hard coded system and compiler dependencies/features/options ... -- +# -- Function Definitions -- AC_DEFUN([GCC_STACK_PROTECT_CC],[ - ssp_cc=yes - # we use -fstack-protector-all for the test to enfoce the use of the guard variable - AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector]) - ssp_old_cflags="$CFLAGS" - CFLAGS="$CFLAGS -fstack-protector-all" - AC_TRY_LINK(,,, ssp_cc=no) - echo $ssp_cc - CFLAGS="$ssp_old_cflags" - if test "X$ssp_cc" = "Xyes"; then - CFLAGS="$CFLAGS -fstack-protector" - AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.]) - fi + ssp_cc=yes + # Use -fstack-protector-all for the test to enfoce the use of the + # guard variable + AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector]) + ssp_old_cflags="$CFLAGS" + CFLAGS="$CFLAGS -fstack-protector-all" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],[],[ssp_cc=no]) + echo $ssp_cc + CFLAGS="$ssp_old_cflags" + if test "X$ssp_cc" = "Xyes"; then + CFLAGS="$CFLAGS -fstack-protector" + AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.]) + fi ]) +AC_DEFUN([WORKING_GETADDRINFO],[ + AC_CHECK_FUNCS([getaddrinfo],[ + AC_MSG_CHECKING([whether getaddrinfo() works]) + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +#include +int +main(int argc, char **argv) +{ + struct addrinfo hints, *ai; + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_PASSIVE; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = PF_UNSPEC; + if(getaddrinfo(NULL, "0", &hints, &ai) != 0) + return 1; + return 0; +} + ]])],[ + AC_DEFINE([HAVE_WORKING_GETADDRINFO], 1, [getaddrinfo(0)]) + AC_MSG_RESULT(yes) + ],[ + AC_MSG_RESULT(no) + ],[ + AC_MSG_RESULT(no) + ]) + ]) +]) + +# -- Hard coded system and compiler dependencies/features/options ... -- + if test "$GCC" = "yes"; then # We are using the GNU C compiler. Good! CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes" @@ -121,7 +155,7 @@ AC_HEADER_TIME # Required header files AC_CHECK_HEADERS([ \ fcntl.h netdb.h netinet/in.h stdlib.h string.h \ - strings.h sys/socket.h sys/time.h unistd.h \ + strings.h sys/socket.h sys/time.h sys/types.h unistd.h \ ],,AC_MSG_ERROR([required C header missing!])) # Optional header files @@ -133,20 +167,19 @@ AC_CHECK_HEADERS_ONCE([ \ # -- Datatypes -- AC_MSG_CHECKING(whether socklen_t exists) -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include - ],[ + ]],[[ socklen_t a, b; a = 2; b = 4; a += b; - ],[ + ]])],[ AC_DEFINE(HAVE_socklen_t) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) AC_TYPE_PID_T -AC_TYPE_SIGNAL AC_TYPE_SIZE_T AC_TYPE_SSIZE_T AC_TYPE_UID_T @@ -186,9 +219,12 @@ AC_CHECK_FUNCS([ \ AC_MSG_ERROR([required function missing!])) # Optional functions -AC_CHECK_FUNCS_ONCE([ \ - gai_strerror getaddrinfo getnameinfo inet_aton sigaction sigprocmask \ - snprintf vsnprintf strdup strlcpy strlcat strtok_r waitpid]) +AC_CHECK_FUNCS_ONCE([ + arc4random arc4random_stir gai_strerror getnameinfo inet_aton \ + setgroups sigaction sigprocmask snprintf strdup strlcat strlcpy \ + strndup strtok_r unsetenv vsnprintf waitpid]) + +WORKING_GETADDRINFO # -- Configuration options -- @@ -431,14 +467,18 @@ AC_ARG_WITH(tcp-wrappers, LDFLAGS="-L$withval/lib $LDFLAGS" fi AC_MSG_CHECKING(for hosts_access) + saved_LIBS="$LIBS" LIBS="-lwrap $LIBS" - AC_TRY_LINK([ + LIBS_END="-lwrap $LIBS_END" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +#include #include int allow_severity = 0; int deny_severity = 0; - ],[ + ]],[[ tcpd_warn("link test"); - ],[ + ]])],[ AC_MSG_RESULT(yes) AC_DEFINE(TCPWRAP, 1) x_tcpwrap_on=yes @@ -446,6 +486,7 @@ int deny_severity = 0; AC_MSG_RESULT(no) AC_MSG_ERROR([Can't enable TCP wrappers!]) ]) + LIBS="$saved_LIBS" fi ] ) @@ -527,14 +568,15 @@ if test "$x_ircplus_on" = "yes"; then LDFLAGS="-L$withval/lib $LDFLAGS" fi AC_CHECK_LIB(iconv, iconv_open) - AC_CHECK_FUNCS(iconv_open, x_iconv_on=yes, + AC_CHECK_FUNCS(iconv_open, x_iconv_on=yes) + if test "$x_iconv_on" != "yes"; then AC_CHECK_LIB(iconv, libiconv_open) - AC_CHECK_FUNCS(libiconv_open, x_iconv_on=yes, - AC_MSG_ERROR([Can't enable libiconv support!]) - ) - ) - fi - ] + AC_CHECK_FUNCS(libiconv_open, x_iconv_on=yes) + fi + if test "$x_iconv_on" != "yes"; then + AC_MSG_ERROR([Can't enable libiconv support!]) + fi + fi ] ) if test "$x_iconv_on" = "yes"; then AC_DEFINE(ICONV, 1) @@ -600,9 +642,12 @@ AC_DEFINE_UNQUOTED(HOST_CPU, "$host_cpu" ) AC_DEFINE_UNQUOTED(HOST_VENDOR, "$host_vendor" ) AC_DEFINE_UNQUOTED(HOST_OS, "$host_os" ) -# Add additional CFLAGS, eventually specified on the command line, but after -# running this configure script. Useful for "-Werror" for example. +# Add additional CFLAGS, LDFLAGS and LIBS which were specified on the command +# line or by some tests from above, but after running this script. Useful for +# adding "-Werror", for example: test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END" +test -n "$LDFLAGS_END" && LDFLAGS="$LDFLAGS $LDFLAGS_END" +test -n "$LIBS_END" && LIBS="$LIBS $LIBS_END" # -- Generate files -- @@ -631,7 +676,9 @@ 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 + if test ! -f debian/rules -a -f contrib/Debian/rules; then + ln -s contrib/Debian debian + fi fi # -- Result -- @@ -701,7 +748,7 @@ test "$x_ipv6_on" = "yes" \ && echo $ECHO_N "yes $ECHO_C" \ || echo $ECHO_N "no $ECHO_C" echo $ECHO_N " I/O backend: $ECHO_C" - echo "\"$x_io_backend\"" + echo "$x_io_backend" echo $ECHO_N " PAM support: $ECHO_C" test "$x_pam_on" = "yes" \