]> arthur.barton.de Git - ngircd-alex.git/blobdiff - configure.ng
Don't abort startup when setgid/setuid() fails with EINVAL
[ngircd-alex.git] / configure.ng
index 34094a485180cc9874085daf4d45a2b8ae31aefb..0dccfbc5d466ad0f908909ab4b9a4c2ee7cb8ce7 100644 (file)
@@ -1,6 +1,6 @@
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2014 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
@@ -23,13 +23,13 @@ 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@lists.barton.de],[ngircd],[https://ngircd.barton.de/])
 
 AC_CONFIG_SRCDIR([src/ngircd/ngircd.c])
 AC_CONFIG_HEADER([src/config.h])
 AC_CANONICAL_HOST
 
-AM_INIT_AUTOMAKE([-Wall 1.10 ]ng_color_tests)
+AM_INIT_AUTOMAKE([-Wall 1.10 foreign ]ng_color_tests)
 
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
@@ -101,6 +101,7 @@ AC_DEFUN([WORKING_GETADDRINFO],[
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netdb.h>
+#include <string.h>
 int
 main(int argc, char **argv)
 {
@@ -124,6 +125,20 @@ main(int argc, char **argv)
        ])
 ])
 
+AC_DEFUN([GCC_W_NO_FORMAT_TRUNC],[
+       result=yes
+       AC_MSG_CHECKING([whether ${CC} accepts -Wno-format-truncation])
+       old_cflags="$CFLAGS"
+       CFLAGS="$CFLAGS -Werror -Wno-format-truncation"
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],[],[result=no])
+       echo $result
+       if test "X$result" = "Xyes"; then
+               CFLAGS="$old_cflags -Wno-format-truncation"
+       else
+               CFLAGS="$old_cflags"
+       fi
+])
+
 # -- Hard coded system and compiler dependencies/features/options ... --
 
 if test "$GCC" = "yes"; then
@@ -131,6 +146,7 @@ if test "$GCC" = "yes"; then
        CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes"
 
        GCC_STACK_PROTECT_CC
+       GCC_W_NO_FORMAT_TRUNC
 fi
 
 case "$host_os" in
@@ -154,15 +170,32 @@ 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 sys/types.h unistd.h \
+               fcntl.h \
+               netdb.h \
+               netinet/in.h \
+               stdlib.h \
+               string.h \
+               strings.h \
+               sys/socket.h \
+               sys/time.h \
+               sys/types.h \
+               unistd.h \
        ],,AC_MSG_ERROR([required C header missing!]))
 
 # Optional header files
 AC_CHECK_HEADERS_ONCE([ \
-       arpa/inet.h inttypes.h malloc.h netinet/in_systm.h netinet/ip.h \
-       stdbool.h stddef.h stdint.h varargs.h \
-       ])
+       arpa/inet.h \
+       inttypes.h \
+       malloc.h \
+       netinet/in_systm.h \
+       netinet/ip.h \
+       stdbool.h \
+       stddef.h \
+       stdint.h \
+       sys/resource.h \
+       sys/un.h \
+       varargs.h \
+])
 
 # -- Datatypes --
 
@@ -212,17 +245,51 @@ AC_FUNC_STRFTIME
 
 # Required functions
 AC_CHECK_FUNCS([ \
-       alarm dup2 endpwent gethostbyaddr gethostbyname gethostname \
-       gettimeofday inet_ntoa memmove memset setsid socket strcasecmp \
-       strchr strcspn strerror strncasecmp strrchr strspn strstr \
+               alarm \
+               dup2 \
+               endpwent \
+               gethostbyaddr \
+               gethostbyname \
+               gethostname \
+               gettimeofday \
+               inet_ntoa \
+               memmove \
+               memset \
+               setsid \
+               socket \
+               strcasecmp \
+               strchr \
+               strcspn \
+               strerror \
+               strncasecmp \
+               strrchr \
+               strspn \
+               strstr \
        ],,
        AC_MSG_ERROR([required function missing!]))
 
 # Optional functions
 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])
+       arc4random \
+       arc4random_stir \
+       gai_strerror \
+       getnameinfo \
+       inet_aton \
+       setgroups \
+       setrlimit \
+       sigaction \
+       sigprocmask \
+       snprintf \
+       strdup \
+       strlcat \
+       strlcpy \
+       strndup \
+       strsignal \
+       strtok_r \
+       unsetenv \
+       vsnprintf \
+       waitpid \
+])
 
 WORKING_GETADDRINFO
 
@@ -417,9 +484,13 @@ AC_ARG_WITH(openssl,
                                CPPFLAGS="-I$withval/include $CPPFLAGS"
                                LDFLAGS="-L$withval/lib $LDFLAGS"
                        fi
-                       AC_CHECK_LIB(crypto, BIO_s_mem)
-                       AC_CHECK_LIB(ssl, SSL_library_init)
-                       AC_CHECK_FUNCS(SSL_library_init, x_ssl_openssl=yes,
+                       PKG_CHECK_MODULES([OPENSSL], [libssl libcrypto],
+                               [LIBS="$LIBS $OPENSSL_LIBS" CFLAGS="$CFLAGS $OPENSSL_CFLAGS"
+                               AC_DEFINE(HAVE_LIBSSL, 1)],
+                               [AC_CHECK_LIB(crypto, BIO_s_mem)
+                               AC_CHECK_LIB(ssl, SSL_new)]
+                       )
+                       AC_CHECK_FUNCS(SSL_new, x_ssl_openssl=yes,
                                AC_MSG_ERROR([Can't enable openssl])
                        )
                fi
@@ -454,6 +525,8 @@ if test "$x_ssl_openssl" = "yes"; then
        x_ssl_lib=openssl
 fi
 
+AM_CONDITIONAL(HAVE_SSL, [test $x_ssl_lib != "no"])
+
 # use TCP wrappers?
 
 x_tcpwrap_on=no
@@ -584,18 +657,24 @@ if test "$x_ircplus_on" = "yes"; then
 fi
 
 # enable support for IPv6?
-x_ipv6_on=no
+
+x_ipv6_on=yes
 AC_ARG_ENABLE(ipv6,
-       AS_HELP_STRING([--enable-ipv6],
-                      [enable IPv6 protocol support]),
-       if test "$enableval" = "yes"; then x_ipv6_on=yes; fi
+       AS_HELP_STRING([--disable-ipv6],
+                      [disable IPv6 protocol support (autodetected by default)]),
+       [       if test "$enableval" = "no"; then
+                       x_ipv6_on=no
+               else
+                       AC_CHECK_FUNCS(
+                               [getaddrinfo getnameinfo],,
+                               AC_MSG_ERROR([required function missing for IPv6 support!])
+                       )
+               fi
+       ],
+       [       AC_CHECK_FUNCS([getaddrinfo getnameinfo],, x_ipv6_on=no)
+       ]
 )
 if test "$x_ipv6_on" = "yes"; then
-       # getaddrinfo() and getnameinfo() are optional when not compiling
-       # with IPv6 support, but are required for IPv6 to work!
-       AC_CHECK_FUNCS([ \
-               getaddrinfo getnameinfo \
-               ],,AC_MSG_ERROR([required function missing for IPv6 support!]))
        AC_DEFINE(WANT_IPV6, 1)
 fi
 
@@ -654,9 +733,6 @@ test -n "$LIBS_END" && LIBS="$LIBS $LIBS_END"
 AC_CONFIG_FILES([ \
        Makefile \
        contrib/Debian/Makefile \
-       contrib/MacOSX/Makefile \
-       contrib/MacOSX/ngIRCd.pmdoc/Makefile \
-       contrib/MacOSX/ngIRCd.xcodeproj/Makefile \
        contrib/Makefile \
        doc/Makefile \
        doc/src/Makefile \