From 404239eb60b441d41b2c4851404b5e26d1b2a601 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 20 Jul 2016 11:55:46 -0700 Subject: [PATCH] Build system cleanup. --- Makefile.am | 6 +- authd/Makefile.am | 18 +- autogen.sh | 3 + bandb/Makefile.am | 67 +- charybdis/Makefile.am | 33 +- configure.ac | 1572 ++++++++++++++++++++-------------------- extensions/Makefile.am | 34 +- include/rb/Makefile.am | 6 +- ircd/Makefile.am | 37 +- m4/charybdis.m4 | 78 ++ modules/Makefile.am | 36 +- rb/Makefile.am | 41 +- ssld/Makefile.am | 24 +- tools/Makefile.am | 36 +- tools/boostrap.sh | 12 +- wsockd/Makefile.am | 23 +- 16 files changed, 1107 insertions(+), 919 deletions(-) diff --git a/Makefile.am b/Makefile.am index 601047de5..4d41cd3c3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,11 +2,11 @@ AUTOMAKE_OPTIONS = foreign ACLOCAL_AMFLAGS = -I m4 SUBDIRS = include/rb +if BUILD_LTDL +SUBDIRS += libltdl +endif SUBDIRS += rb SUBDIRS += ircd -if BUILD_LTDL - SUBDIRS += libltdl -endif SUBDIRS += charybdis SUBDIRS += authd SUBDIRS += bandb diff --git a/authd/Makefile.am b/authd/Makefile.am index 0fbe5a282..a0e6a8860 100644 --- a/authd/Makefile.am +++ b/authd/Makefile.am @@ -1,9 +1,17 @@ +AM_CPPFLAGS = \ + -I$(top_srcdir)/include \ + @BOOST_CPPFLAGS@ + +AM_LDFLAGS = \ + -L$(top_srcdir)/rb \ + @BOOST_LDFLAGS@ + + bin_PROGRAMS = authd -AM_CPPFLAGS = $(WARNFLAGS) -AM_CPPFLAGS += -I$(top_srcdir)/include -AM_CPPFLAGS += -isystem $(top_srcdir)/boost/include -AM_LDFLAGS = -L$(top_srcdir)/boost/lib +authd_LDADD = \ + $(top_srcdir)/rb/librb.la \ + @BOOST_LIBS@ authd_SOURCES = \ authd.cc \ @@ -20,8 +28,6 @@ authd_SOURCES = \ providers/rdns.cc \ providers/opm.cc -authd_LDADD = $(top_srcdir)/rb/librb.la -authd_LDADD += -lboost_system mrproper-local: rm -rf providers/.deps diff --git a/autogen.sh b/autogen.sh index d9a5933ec..391aacb77 100755 --- a/autogen.sh +++ b/autogen.sh @@ -86,6 +86,9 @@ run_or_die $AUTOCONF run_or_die $AUTOMAKE --add-missing --copy #run_or_die $SHTOOLIZE all +WCL_CONFIGURE=`wc -l ./configure` +echo -e "\033[1;30m*\033[0m $WCL_CONFIGURE" + echo echo -e "\033[1;32m*\033[0m Ready to configure Charybdis." echo -e "\033[1;5;33m*\033[0m Now run ./configure" diff --git a/bandb/Makefile.am b/bandb/Makefile.am index 5b5b205dd..bb30a1908 100644 --- a/bandb/Makefile.am +++ b/bandb/Makefile.am @@ -1,21 +1,54 @@ -bin_PROGRAMS = bandb bantool +AM_CFLAGS = \ + @SQLITE_CFLAGS@ -AM_CPPFLAGS = $(WARNFLAGS) -AM_CPPFLAGS += -I$(top_srcdir)/include -AM_CPPFLAGS += -isystem $(top_srcdir)/boost/include -AM_CPPFLAGS += @SQLITE_INCLUDES@ -AM_CPPFLAGS += -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION +AM_CPPFLAGS = \ + -DSQLITE_THREADSAFE=0 \ + -DSQLITE_OMIT_LOAD_EXTENSION \ + -I$(top_srcdir)/include \ + @BOOST_CPPFLAGS@ -AM_LDFLAGS = -L$(top_srcdir)/rb -AM_LDFLAGS += -L$(top_srcdir)/ircd -AM_LDFLAGS += -L$(top_srcdir)/boost/lib +AM_LDFLAGS = \ + -L$(top_srcdir)/rb \ + @BOOST_LDFLAGS@ -bandb_SOURCES = bandb.cc rsdb_sqlite3.c rsdb_snprintf.c -EXTRA_bandb_SOURCES = sqlite3.c -bandb_LDADD = -lrb @SQLITE_LD@ @SQLITE_OBJ@ -lboost_system -bandb_DEPENDENCIES = @SQLITE_OBJ@ -bantool_SOURCES = bantool.cc rsdb_sqlite3.c rsdb_snprintf.c -EXTRA_bantool_SOURCES = sqlite3.c -bantool_LDADD = -lrb @SQLITE_LD@ @SQLITE_OBJ@ -lboost_system -bantool_DEPENDENCIES = @SQLITE_OBJ@ +bin_PROGRAMS = bandb + +bandb_DEPENDENCIES = \ + @SQLITE_OBJ@ + +bandb_LDADD = \ + -lrb \ + @SQLITE_LDFLAGS@ \ + @SQLITE_OBJ@ \ + @SQLITE_LIBS@ \ + @BOOST_LIBS@ + +EXTRA_bandb_SOURCES = \ + sqlite3.c + +bandb_SOURCES = \ + bandb.cc \ + rsdb_sqlite3.c \ + rsdb_snprintf.c + + +bin_PROGRAMS += bantool + +bantool_DEPENDENCIES = \ + @SQLITE_OBJ@ + +bantool_LDADD = \ + -lrb \ + @SQLITE_LDFLAGS@ \ + @SQLITE_LIBS@ \ + @SQLITE_OBJ@ \ + @BOOST_LIBS@ + +EXTRA_bantool_SOURCES = \ + sqlite3.c + +bantool_SOURCES = \ + bantool.cc \ + rsdb_sqlite3.c \ + rsdb_snprintf.c diff --git a/charybdis/Makefile.am b/charybdis/Makefile.am index 040d1083c..b331d64fc 100644 --- a/charybdis/Makefile.am +++ b/charybdis/Makefile.am @@ -1,19 +1,26 @@ prefix = @prefix@ -AM_CPPFLAGS = @LTDLINCL@ -AM_CPPFLAGS += -I$(top_srcdir)/include -AM_CPPFLAGS += -isystem $(top_srcdir)/boost/include -if MINGW -EXTRA_FLAGS = -Wl,--enable-runtime-pseudo-reloc -export-symbols-regex '*' -endif +AM_CPPFLAGS = \ + -I$(top_srcdir)/include \ + @LTDLINCL@ \ + @BOOST_CPPFLAGS@ + +AM_LDFLAGS = \ + -dlopen self + +AM_LDFLAGS += \ + -L$(top_srcdir)/ircd \ + -L$(top_srcdir)/rb \ + @BOOST_LDFLAGS@ + bin_PROGRAMS = charybdis -charybdis_SOURCES = charybdis.cc -charybdis_LDFLAGS = $(EXTRA_FLAGS) -charybdis_LDFLAGS += -dlopen self -charybdis_LDFLAGS += -L$(top_srcdir)/ircd -charybdis_LDFLAGS += -L$(top_srcdir)/rb -charybdis_LDFLAGS += -L$(top_srcdir)/boost/lib +charybdis_SOURCES = \ + charybdis.cc -charybdis_LDADD = -lircd -lrb -lboost_system +charybdis_LDADD = \ + -lircd \ + -lrb \ + @LIBLTDL@ \ + @BOOST_LIBS@ diff --git a/configure.ac b/configure.ac index 29863e958..9fda27668 100644 --- a/configure.ac +++ b/configure.ac @@ -6,26 +6,37 @@ AC_PREREQ(2.63) AUTOMAKE_OPTIONS = 1.14 AC_INIT([charybdis], [5-dev]) -AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_HEADER(include/rb/config.h) -AC_PREFIX_DEFAULT($HOME/ircd) - -AC_LANG(C++) AC_GNU_SOURCE AC_USE_SYSTEM_EXTENSIONS -AX_CXX_COMPILE_STDCXX([14], [gnu], [mandatory], 201304) -AC_ISC_POSIX -AC_C_INLINE -AC_C_CONST -AC_C_BIGENDIAN -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_TYPE_SSIZE_T -AC_TYPE_UID_T +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_AUX_DIR([libltdl/config]) +AC_PREFIX_DEFAULT($HOME/ircd) + +AC_PATH_PROG(AUTOMAKE, automake) +AC_PATH_PROG(ACLOCAL, aclocal) +AC_PATH_PROG(AUTOHEADER, autoheader) +AC_PATH_PROG(AS, as) +AC_PATH_PROG(RM, rm) +AC_PATH_PROG(CP, cp) +AC_PATH_PROG(MV, mv) +AC_PATH_PROG(LN, ln) +AC_PATH_PROG(TOUCH, touch) + +LT_INIT([dlopen shared disable-static]) +LT_LANG([C++]) -AC_PROG_CXX -AC_PROG_MAKE_SET AC_PROG_LIBTOOL +AC_PROG_MAKE_SET +AC_PROG_CC +AC_PROG_CC_C_O +AC_PROG_CXX +AC_PROG_CXX_C_O +AC_LANG(C++) +AC_CONFIG_HEADER(include/rb/config.h) +AX_CXX_COMPILE_STDCXX([14], [gnu], [mandatory], 201300) + +LT_CONFIG_LTDL_DIR([libltdl]) +LTDL_INIT([subproject]) AC_PROG_YACC dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found @@ -38,21 +49,11 @@ if test "$LEX" = ":"; then AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.]) fi -AC_PATH_PROG(AUTOMAKE, automake) -AC_PATH_PROG(ACLOCAL, aclocal) -AC_PATH_PROG(AUTOHEADER, autoheader) -AC_PATH_PROG(AS, as) -AC_PATH_PROG(RM, rm) -AC_PATH_PROG(CP, cp) -AC_PATH_PROG(MV, mv) -AC_PATH_PROG(LN, ln) -AC_PATH_PROG(TOUCH, touch) -LT_CONFIG_LTDL_DIR([libltdl]) -LT_INIT([dlopen disable-static]) -LT_LANG([C++]) -LTDL_INIT -#LIBTOOL="$LIBTOOL --silent" +dnl *************************************************************************** +dnl Makefile tree +dnl These (and Makefile.in) are generated from a Makefile.am in the same dir. +dnl AC_CONFIG_FILES(\ Makefile \ @@ -73,89 +74,184 @@ AC_CONFIG_FILES(\ ) AM_INIT_AUTOMAKE([subdir-objects]) -AM_EXTRA_RECURSIVE_TARGETS([ - mrproper \ + + +dnl +dnl Recursive local targets (clean-local is implied) +dnl + +#AM_EXTRA_RECURSIVE_TARGETS([ +# mrproper +#]) + + +dnl +dnl General variables exported to Makefile.am +dnl + +AC_SUBST(CC) +AC_SUBST(CXX) +AC_SUBST(CFLAGS) +AC_SUBST(CXXFLAGS) +AC_SUBST(CPPFLAGS) +AC_SUBST(LDFLAGS) +AC_SUBST(LIBS) + + +dnl +dnl Coarse compiler test macros +dnl + +AM_CONDITIONAL([GCC], [[[[ $CXX = *g\+\+* ]]]]) +AM_CONDITIONAL([CLANG], [[[[ $CXX = *clang* ]]]]) + + +dnl +dnl Coarse operating system test macros +dnl + +AM_CONDITIONAL([LINUX], [[[[ $host_os = *linux* ]]]]) +AM_CONDITIONAL([NETBSD], [[[[ $host_os = *netbsd* ]]]]) +AM_CONDITIONAL([FREEBSD], [[[[ $host_os = *freebsd* ]]]]) +AM_CONDITIONAL([MINGW], [[[[ $host_os = *mingw* ]] || [[ $host_os = *msys* ]]]]) +AM_CONDITIONAL([CYGWIN], [[[[ $host_os = *cygwin* ]]]]) +AM_CONDITIONAL([INTERIX], [[[[ $host_os = *interix* ]]]]) +AM_CONDITIONAL([SOLARIS], [[[[ $host_os = *solaris* ]]]]) + + + +dnl *************************************************************************** +dnl Preprocessor define macros +dnl +dnl Use RB_DEFINE() et al to generate defines in config.h +dnl Use CPPDEFINE() to generate defines on the command line if required +dnl + +AC_DEFUN([RB_DEFINE], +[ + AC_DEFINE([RB_$1], [$2], [$3]) ]) -VERSION_CMD="git describe --tags" -DATESTR_CMD="date -R" -DATECODE_CMD="date +%s" - -RB_VERSION=`$VERSION_CMD` -RB_DATESTR=`$DATESTR_CMD` -RB_DATECODE=`$DATECODE_CMD` - -AC_DEFUN([RB_DEFINE], [AC_DEFINE([RB_$1], [$2], [$3])]) -AC_DEFUN([RB_DEFINE_UNQUOTED], [AC_DEFINE_UNQUOTED([RB_$1], [$2], [$3])]) -AC_DEFUN([IRCD_DEFINE], [AC_DEFINE([IRCD_$1], [$2], [$3])]) -AC_DEFUN([IRCD_DEFINE_UNQUOTED], [AC_DEFINE_UNQUOTED([IRCD_$1], [$2], [$3])]) - -RB_DEFINE_UNQUOTED([VERSION], ["$RB_VERSION"], [Version generated at configuration time.]) -RB_DEFINE_UNQUOTED([DATESTR], ["$RB_DATESTR"], [Readable date string of configuration time.]) -RB_DEFINE_UNQUOTED([DATECODE], [$RB_DATECODE], [UNIX epoch time at configuration time.]) - -AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.]) -AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.]) -AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.]) -AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.]) -AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.]) -AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.]) -AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.]) -AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.]) -AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.]) -AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.]) -AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.]) -AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.]) -AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.]) -AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.]) -AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.]) -AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.]) - - -case "$host_os" in -*cygwin*) - AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system]) - AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system]) - ;; -*mingw* | *msys*) - AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system]) - AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system]) - AC_CHECK_HEADER(windows.h, , [AC_MSG_ERROR([** MinGW and no windows.h. I give up.])]) - AC_CHECK_HEADER(winsock2.h, , [AC_MSG_ERROR([** MinGW and no winsock2.h. I give up.])]) - AC_DEFINE_UNQUOTED(HAVE_WINSOCK2_H, 1, [Have WINSOCK2_H]) - AC_DEFINE_UNQUOTED(HAVE_WINSOCK_H, 1, [Have WINSOCK_H]) - LIBS="$LIBS -lws2_32 -liphlpapi" - is_mingw="yes" - ;; -*interix*) - CPPFLAGS="$CPPFLAGS -D_ALL_SOURCE -D_XOPEN_SOURCE=500" - ;; -*solaris*) - CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_XPG4_2" - ;; -*) - ;; -esac - -AM_CONDITIONAL([MINGW], [test "$is_mingw" = "yes"]) - - -dnl Checks for system header files. -AC_DEFUN([RB_CHK_SYSHEADER], \ +AC_DEFUN([RB_DEFINE_UNQUOTED], [ - AC_CHECK_HEADER([$1], \ + AC_DEFINE_UNQUOTED([RB_$1], [$2], [$3]) +]) + +AC_DEFUN([IRCD_DEFINE], +[ + AC_DEFINE([IRCD_$1], [$2], [$3]) +]) + +AC_DEFUN([IRCD_DEFINE_UNQUOTED], +[ + AC_DEFINE_UNQUOTED([IRCD_$1], [$2], [$3]) +]) + +AC_DEFUN([CPPDEFINE], +[ + if [[ -z "$2" ]]; then + CPPFLAGS+="-D$1 $CPPFLAGS" + else + CPPFLAGS="-D$1=$2 $CPPFLAGS" + fi +]) + + + +dnl *************************************************************************** +dnl Development options +dnl + + +AC_MSG_CHECKING(if you want to enable debugging) +AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [Enable debugging suite for development.]), +[ + AC_SUBST(DEBUG, 1) + CXXFLAGS="$CXXFLAGS -O0 -ggdb" + RB_DEFINE_UNQUOTED([DEBUG], [1], [Not configured for release when lit.]) +], [ + AC_SUBST(DEBUG, 0) + CXXFLAGS="$CXXFLAGS -O3" + CPPDEFINE([NDEBUG]) +]) + + +AC_MSG_CHECKING(if you want to do a profile build) +AC_ARG_ENABLE(profile, AC_HELP_STRING([--enable-profile], [Enable profiling]), +[ + if test "$ac_cv_c_compiler_gnu" = yes; then + AC_MSG_RESULT([yes, adding -pg]) + CXXFLAGS="$CXXFLAGS -pg" + AC_DEFINE(CHARYBDIS_PROFILE, 1, [Define this if you are profiling.]) + else + AC_MSG_RESULT([no, profile builds only work with gcc]) + fi +], [ +]) + + +CWARNS="" +AC_MSG_CHECKING(if you want to disable warnings) +AC_ARG_ENABLE(warnings, +AC_HELP_STRING([--disable-warnings],[Disable all sorts of warnings like a rockstar]), +[], +[ +CHARYBDIS_C_GCC_TRY_FLAGS([-Wall], charybdis_cv_c_gcc_w_all) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wextra], charybdis_cv_c_gcc_w_extra) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wpointer-arith], charybdis_cv_c_gcc_w_pointer_arith) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-align], charybdis_cv_c_gcc_w_cast_align) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-qual], charybdis_cv_c_gcc_w_cast_qual) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wfloat-equal], charybdis_cv_c_gcc_w_float_equal) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wwrite-strings], charybdis_cv_c_gcc_w_write_strings) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-declarations], charybdis_cv_c_gcc_w_prototypes) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wno-missing-field-initializers], charybdis_cv_c_gcc_w_missing_field_initializers) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wparentheses], charybdis_cv_c_gcc_parentheses) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_noreturn) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wundef], charybdis_cv_c_gcc_w_undef) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wpacked], charybdis_cv_c_gcc_w_packed) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wno-unused -Wno-unused-function -Wno-unused-label -Wno-unused-value -Wno-unused-variable -Wno-unused-parameter], charybdis_cv_c_gcc_w_unused) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wformat-security -Wformat-nonliteral], charybdis_cv_c_gcc_w_format) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-aliasing -Wstrict-overflow], charybdis_cv_c_gcc_w_strict) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wdisabled-optimization], charybdis_cv_c_gcc_w_disabled_optimization) +CHARYBDIS_C_GCC_TRY_FLAGS([-Winvalid-pch], charybdis_cv_c_gcc_w_invalid_pch) +CHARYBDIS_C_GCC_TRY_FLAGS([-Winit-self], charybdis_cv_c_gcc_w_init_self) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wuninitialized], charybdis_cv_c_gcc_w_uninitialized) +CHARYBDIS_C_GCC_TRY_FLAGS([-Wunreachable-code], charybdis_cv_c_gcc_w_unreachable_code) + +AM_COND_IF([GCC], +[ + CHARYBDIS_C_GCC_TRY_FLAGS([-Wlogical-op], charybdis_cv_c_gcc_w_logical_op) + CHARYBDIS_C_GCC_TRY_FLAGS([-Wsuggest-attribute=format], charybdis_cv_c_gcc_w_suggest_attribute_format) +],[]) + +]) + +CPPFLAGS+="$CWARNS" + + + +dnl *************************************************************************** +dnl Header file checks +dnl + +AC_DEFUN([RB_CHK_SYSHEADER], +[ + AC_CHECK_HEADER([$1], [ AC_DEFINE([HAVE_$2], [1], [ Indication $1 is available. ]) RB_DEFINE_UNQUOTED([INC_$2], [$1>], [ The computed-include location of $1. ]) - ],[ - if test "$is_mingw" = "yes"; then + ], [ + AM_COND_IF([MINGW], + [ RB_DEFINE_UNQUOTED([INC_$2], [stdint.h>], [ The dead-header in place of $1. ]) - else + ], [ RB_DEFINE_UNQUOTED([INC_$2], [/dev/null>], [ The dead-header in place of $1. ]) - fi + ]) ]) ]) +AC_HEADER_STDBOOL +dnl AC_HEADER_STDC RB_CHK_SYSHEADER([errno.h], [ERRNO_H]) RB_CHK_SYSHEADER([assert.h], [ASSERT_H]) RB_CHK_SYSHEADER([stddef.h], [STDDEF_H]) @@ -177,6 +273,9 @@ RB_CHK_SYSHEADER([sys/file.h], [SYS_FILE_H]) RB_CHK_SYSHEADER([sys/param.h], [SYS_PARAM_H]) RB_CHK_SYSHEADER([sys/resource.h], [SYS_RESOURCE_H]) RB_CHK_SYSHEADER([sys/socket.h], [SYS_SOCKET_H]) +RB_CHK_SYSHEADER([sys/syslog.h], [SYS_SYSLOG_H]) +RB_CHK_SYSHEADER([sys/wait.h], [SYS_WAIT_H]) +RB_CHK_SYSHEADER([wait.h], [WAIT_H]) RB_CHK_SYSHEADER([arpa/inet.h], [ARPA_INET_H]) RB_CHK_SYSHEADER([netinet/in.h], [NETINET_IN_H]) RB_CHK_SYSHEADER([netinet/tcp.h], [NETINET_TCP_H]) @@ -195,6 +294,7 @@ RB_CHK_SYSHEADER([port.h], [PORT_H]) RB_CHK_SYSHEADER([sys/signalfd.h], [SYS_SIGNALFD_H]) RB_CHK_SYSHEADER([sys/timerfd.h], [SYS_TIMERFD_H]) RB_CHK_SYSHEADER([execinfo.h], [EXECINFO_H]) +RB_CHK_SYSHEADER([machine/endian.h], [MACHINE_ENDIAN_H]) RB_CHK_SYSHEADER([cstddef], [CSTDDEF]) RB_CHK_SYSHEADER([cstdint], [CSTDINT]) @@ -227,37 +327,78 @@ RB_CHK_SYSHEADER([ws2tcpip.h], [WS2TCPIP_H]) RB_CHK_SYSHEADER([iphlpapi.h], [IPHLPAPI_H]) -dnl todo -AC_DEFINE([HAVE_BOOST_ASIO_HPP], [1], [ boost asio. ]) -RB_DEFINE_UNQUOTED([INC_BOOST_ASIO_HPP], [boost/asio.hpp>], [ boost asio. ]) -AC_DEFINE([HAVE_BOOST_CONTEXT_ALL_HPP], [1], [ boost context. ]) -RB_DEFINE_UNQUOTED([INC_BOOST_CONTEXT_ALL_HPP], [boost/context/all.hpp>], [ boost context. ]) +dnl *************************************************************************** +dnl Philology checks +dnl -AC_DEFINE([HAVE_BOOST_ASIO_SPAWN_HPP], [1], [ boost asio spawn. ]) -RB_DEFINE_UNQUOTED([INC_BOOST_ASIO_SPAWN_HPP], [boost/asio/spawn.hpp>], [ boost asio spawn. ]) - -AC_DEFINE([HAVE_BOOST_LEXICAL_CAST_HPP], [1], [ boost asio. ]) -RB_DEFINE_UNQUOTED([INC_BOOST_LEXICAL_CAST_HPP], [boost/lexical_cast.hpp>], [ boost lexical_cast. ]) - -AC_DEFINE([HAVE_BOOST_TOKENIZER_HPP], [1], [ boost tokenizer. ]) -RB_DEFINE_UNQUOTED([INC_BOOST_TOKENIZER_HPP], [boost/tokenizer.hpp>], [ boost tokenizer. ]) - - -dnl use directory structure of cached as default (hack) -if test "$libexecdir" = '${exec_prefix}/libexec' && - test "$localstatedir" = '${prefix}/var'; then - libexecdir='${bindir}' - localstatedir='${prefix}' +AC_ISC_POSIX +AC_C_CONST +AC_C_INLINE +if test "$ac_cv_header_machine_endian_h" = "no" ; then + AC_C_BIGENDIAN fi +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_TYPE_UID_T +AC_TYPE_PID_T +AC_CHECK_SIZEOF(char) +AC_CHECK_SIZEOF(short) +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(long) +AC_CHECK_SIZEOF(long long) + +AC_CHECK_TYPES([intptr_t]) +AC_CHECK_TYPES([uintptr_t]) + +AC_FUNC_MMAP +AC_FUNC_VFORK +AC_FUNC_ALLOCA +AC_CHECK_FUNCS([ \ + strlcpy \ + strlcat \ + strnlen \ + strcasestr \ + strcasecmp \ + strncasecmp \ + strdup \ + strndup \ + strtok_r \ + snprintf \ + vsnprintf \ + gettimeofday \ + getrusage \ + gmtime_r \ + usleep \ + fstat \ + writev \ + sendmsg \ + socketpair \ + signalfd \ + timerfd_create \ + port_create \ + epoll_ctl \ + kevent \ + poll \ + select \ + getexecname \ + posix_spawn \ + arc4random \ +]) + +AC_SEARCH_LIBS(dlinfo, dl, AC_DEFINE(HAVE_DLINFO, 1, [Define if you have dlinfo])) +AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if you have nanosleep])) +AC_SEARCH_LIBS(timer_create, rt, AC_DEFINE(HAVE_TIMER_CREATE, 1, [Define if you have timer_create])) + + +dnl dnl Networking Functions -dnl ==================== +dnl AC_SEARCH_LIBS(socket, [socket],,) - - AC_CHECK_MEMBER([struct sockaddr.sa_len], [AC_DEFINE(SOCKADDR_IN_HAS_LEN, 1, [Define to 1 if sockaddr has a 'sa_len' member.])],,[[ #ifdef HAVE_SYS_TYPES_H #include @@ -312,7 +453,10 @@ getpeername(0,0,&len); rb_socklen_t=$rb_cv_socklen_t - +AC_CHECK_TYPE([sa_family_t], [], +[AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])], +[[#include +#include ]]) AC_ARG_ENABLE(ipv6, AC_HELP_STRING([--disable-ipv6], [Disable IPv6 support]), [ipv6=$enableval], [ipv6=yes]) @@ -324,7 +468,6 @@ else AC_DEFINE([HAVE_IPV6], [0], [IPv6 not supported]) fi - AC_CHECK_TYPES([struct sockaddr_storage],[ rb_have_sockaddr_storage=yes ],[], [ @@ -333,108 +476,6 @@ AC_CHECK_TYPES([struct sockaddr_storage],[ ]) -dnl Check for stdarg.h - if we cant find it, halt configure -AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - librb will not compile without it **])]) - -AC_CHECK_TYPE([sa_family_t], [], -[AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])], -[[#include -#include ]]) - - -dnl check for various functions... -AC_CHECK_FUNCS([snprintf vsnprintf socketpair gettimeofday writev sendmsg gmtime_r strtok_r usleep posix_spawn getexecname strlcpy strlcat strnlen strcasestr strcasecmp strncasecmp fstat signalfd select poll kevent port_create epoll_ctl arc4random getrusage timerfd_create]) - -AC_SEARCH_LIBS(dlinfo, dl, AC_DEFINE(HAVE_DLINFO, 1, [Define if you have dlinfo])) -AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP, 1, [Define if you have nanosleep])) -AC_SEARCH_LIBS(timer_create, rt, AC_DEFINE(HAVE_TIMER_CREATE, 1, [Define if you have timer_create])) - -AC_DEFUN([RB_CHECK_TIMER_CREATE], - [AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)], - [rb__cv_timer_create_works], - [AC_TRY_RUN([ -#ifdef HAVE_TIME_H -#include -#endif -#ifdef HAVE_SIGNAL_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -int main(int argc, char *argv[]) -{ -#if HAVE_TIMER_CREATE - struct sigevent ev; - timer_t timer; - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGVTALRM; - if (timer_create(CLOCK_REALTIME, &ev, &timer) != 0) { - return 1; - } -#else - return 1; -#endif - return 0; -} - ], - [rb__cv_timer_create_works=yes], - [rb__cv_timer_create_works=no], - [rb__cv_timer_create_works=no]) - ]) -case $rb__cv_timer_create_works in - yes) AC_DEFINE([USE_TIMER_CREATE], 1, - [Define to 1 if we can use timer_create(CLOCK_REALTIME,...)]);; -esac -]) - - - -AC_DEFUN([RB_CHECK_TIMERFD_CREATE], - [AC_CACHE_CHECK([for a working timerfd_create(CLOCK_REALTIME)], - [rb__cv_timerfd_create_works], - [AC_TRY_RUN([ -#ifdef HAVE_TIME_H -#include -#endif -#ifdef HAVE_SIGNAL_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_SYS_TIMERFD_H -#include -#endif -int main(int argc, char *argv[]) -{ -#if defined(HAVE_TIMERFD_CREATE) && defined(HAVE_SYS_TIMERFD_H) - if (timerfd_create(CLOCK_REALTIME, 0) < 0) { - return 1; - } -#else - return 1; -#endif - return 0; -} - ], - [rb__cv_timerfd_create_works=yes], - [rb__cv_timerfd_create_works=no], - [rb__cv_timerfd_create_works=no]) - ]) -case $rb__cv_timerfd_create_works in - yes) AC_DEFINE([USE_TIMERFD_CREATE], 1, - [Define to 1 if we can use timerfd_create(CLOCK_REALTIME,...)]);; -esac -]) - -RB_CHECK_TIMER_CREATE -RB_CHECK_TIMERFD_CREATE - -AC_FUNC_ALLOCA -AC_FUNC_VFORK -AC_FUNC_MMAP - AC_MSG_CHECKING(for /dev/poll) if test -c "/dev/poll"; then AC_MSG_RESULT(yes) @@ -444,12 +485,360 @@ else fi -if test "$is_mingw" = "yes"; then - AC_DEFINE(HAVE_WIN32, [1], [Define to 1 if you are on windows]) +dnl SunOS/Solaris required libnsl for inet_ntoa() +if test x"$SUN" = xyes; then + AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])]) fi +AC_SEARCH_LIBS(crypt, [crypt descrypt],,) + +CRYPT_LIB=$ac_cv_search_crypt + +if test "$CRYPT_LIB" = "none required"; then + unset CRYPT_LIB +elif test "$CRYPT_LIB" = no; then + unset CRYPT_LIB +fi + +AC_SUBST(CRYPT_LIB) + +dnl definitions are in m4/charybdis.m4 +RB_CHECK_TIMER_CREATE +RB_CHECK_TIMERFD_CREATE + +AC_CHECK_TYPE([sa_family_t], [], +[AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])], +[[#include +#include ]]) + +dnl check for various functions... + + +dnl check for nanosleep +AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep, + LIBS="${LIBS} -lrt", + [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4" + )])]) +if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno +then + AC_MSG_RESULT("nanosleep not found..using select for delay") +else + AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists]) +fi + +dnl check for /dev/null so we can use it to hold evil fd's +AC_MSG_CHECKING([for /dev/null]) +if test -c /dev/null ; then + AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null]) + AC_MSG_RESULT(yes) +else + AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null]) + AC_MSG_RESULT(no - using devnull.log) +fi + + + +dnl *************************************************************************** +dnl TODO: sort this OS-specific section +dnl + +AM_COND_IF(MINGW, +[ + AC_DEFINE(HAVE_WIN32, [1], [Define to 1 if you are on windows]) + LIBS="$LIBS -lws2_32 -liphlpapi" +],[]) + + +AM_COND_IF(INTERIX, +[ + CPPDEFINE([_ALL_SOURCE]) + CPPDEFINE([_XOPEN_SOURCE], [500]) + CPPDEFINE([_POSIX_PTHREAD_SEMANTICS]) + CPPDEFINE([_XPG4_2]) +],[]) + + + +dnl *************************************************************************** +dnl Installation Layout +dnl + +PKG_PROG_PKG_CONFIG +dnl use directory structure of cached as default (hack) +if test "$libexecdir" = '${exec_prefix}/libexec' && + test "$localstatedir" = '${prefix}/var'; then + libexecdir='${bindir}' + localstatedir='${prefix}' +fi + + +if test "$prefix" = "NONE"; then + AC_DEFINE_UNQUOTED(RB_PREFIX, "$ac_default_prefix", [Prefix where librb is installed.]) +else + dnl Don't get bitten by Cygwin's stupidity if the user specified + dnl a custom prefix with a trailing slash + prefix=`echo $prefix | sed 's/\/$//'` + AC_DEFINE_UNQUOTED(RB_PREFIX, "$prefix", [Prefix where librb is installed.]) + AC_SUBST(RB_PREFIX) +fi + + +if test "$prefix" = "NONE"; then + AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.]) +else + dnl Don't get bitten by Cygwin's stupidity if the user specified + dnl a custom prefix with a trailing slash + prefix=`echo $prefix | sed 's/\/$//'` + AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.]) +fi + + +AC_ARG_ENABLE([fhs-paths], + [AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])], + [], + [dnl detect if the user appears to want --enable-fhs-paths + AS_IF([test "$libexecdir" = '${exec_prefix}/libexec' && \ + test "$localstatedir" = '${prefix}/var' && \ + test "$libdir" = '${exec_prefix}/lib'], + [enable_fhs_paths=no], + [enable_fhs_paths=yes]) + ]) +dnl use directory structure of cached as default (hack) +AS_IF([test "x$enable_fhs_paths" = "xyes"], + [dnl Avoid name collisions. + pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}' + rundir=${rundir-'${prefix}/run'} + pkgrundir='${rundir}/${PACKAGE_TARNAME}' + pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}' + AC_DEFINE([ENABLE_FHS_PATHS], [1], [Uncomment if FHS pathnames are enabled])], + [libexecdir='${bindir}' + pkglibexecdir='${libexecdir}' + rundir='${sysconfdir}' + pkgrundir='${rundir}' + localstatedir='${prefix}' + pkglocalstatedir='${sysconfdir}']) +pkglibdir='${libdir}/${PACKAGE_TARNAME}' +AC_SUBST([pkglibdir]) +AC_SUBST([rundir]) +AC_SUBST([pkgrundir]) +AC_SUBST([pkglocalstatedir]) +AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]]) +AC_SUBST([pkglibexecdir]) +AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live]) + + +dnl +dnl Check for --with-confdir [deprecated, use --sysconfdir instead] +dnl + +AC_ARG_WITH([confdir], + [AC_HELP_STRING([--with-confdir=DIR], + [Directory to install config files [deprecated, use --sysconfdir instead].])], + [ sysconfdir=`echo $withval | sed 's/\/$//'` ], + [ confdir='etc' ]) +RB_DEFINE_UNQUOTED([ETC_DIR], ["${prefix}/${confdir}"], [Prefix where config files are installed.]) + + +dnl +dnl Check for --with-bindir +dnl + +AC_MSG_CHECKING([whether to modify binary directory]) +AC_ARG_WITH(bindir, +AC_HELP_STRING([--with-bindir=DIR], + [Directory where binary executables are placed.]), + [ logdir=`echo $withval | sed 's/\/$//'` + AC_MSG_RESULT(yes)], + [ AS_IF([test "x$enable_fhs_paths" = "xyes"], + [bindir="${prefix}/bin"], + [bindir="${prefix}/bin"]) + AC_MSG_RESULT(no)]) +RB_DEFINE_UNQUOTED([BIN_DIR], ["${bindir}"], [Directory where binary executables are to be found.]) +AC_SUBST_DIR([bindir]) + + +dnl +dnl Check for --with-logdir +dnl + +AC_MSG_CHECKING([whether to modify logdir]) +AC_ARG_WITH(logdir, +AC_HELP_STRING([--with-logdir=DIR], + [Directory where to write logfiles.]), + [ logdir=`echo $withval | sed 's/\/$//'` + AC_MSG_RESULT(yes)], + [ AS_IF([test "x$enable_fhs_paths" = "xyes"], + [logdir="${prefix}/var/log"], + [logdir="${prefix}/var/${PACKAGE_TARNAME}/log"]) + AC_MSG_RESULT(no)]) +RB_DEFINE_UNQUOTED([LOG_DIR], ["${logdir}"], [Prefix where to write logfiles.]) +AC_SUBST_DIR([logdir]) + + +dnl +dnl Check for --with-helpdir +dnl + +AC_MSG_CHECKING([whether to modify helpdir]) +AC_ARG_WITH(helpdir, +AC_HELP_STRING([--with-helpdir=DIR], + [Directory to install help files.]), + [ helpdir=`echo $withval | sed 's/\/$//'` + AC_MSG_RESULT(yes) ], + [ AS_IF([test "x$enable_fhs_paths" = "xyes"], + [helpdir="${prefix}/share/help"], + [helpdir="${prefix}/share/${PACKAGE_TARNAME}/help"]) + AC_MSG_RESULT(no) ]) +RB_DEFINE_UNQUOTED([HELP_DIR], ["${helpdir}"], [Prefix where help files are installed.]) +AC_SUBST_DIR([helpdir]) + + +dnl +dnl Check for --with-moduledir +dnl + +AC_MSG_CHECKING([whether to modify moduledir]) +AC_ARG_WITH(moduledir, + [AC_HELP_STRING([--with-moduledir=DIR], + [Directory to install modules.])], + [ moduledir=`echo $withval | sed 's/\/$//'` + AC_MSG_RESULT(yes)], + [ AS_IF([test "x$enable_fhs_paths" = "xyes"], + [moduledir="${prefix}/lib/modules"], + [moduledir="${prefix}/lib/${PACKAGE_TARNAME}/modules"]) + AC_MSG_RESULT(no) + ]) +RB_DEFINE_UNQUOTED([MODULE_DIR], ["${moduledir}"], [Prefix where modules are installed.]) +AC_SUBST_DIR([moduledir]) + + +dnl +dnl Check for --with-rundir +dnl + +AC_MSG_CHECKING([whether or modify rundir]) +AC_ARG_WITH([rundir], + [AC_HELP_STRING([--with-rundir=DIR], + [Directory in which to store pidfile.])], + [AC_MSG_RESULT([yes]) + rundir=`echo $withval | sed 's/\/$//'`], + [AC_MSG_RESULT([no]) + AS_IF([test "x$enable_fhs_paths" = "xyes"], + [rundir="${prefix}/var/run"], + [rundir="${prefix}/${PACKAGE_TARNAME}/run"])]) +AC_SUBST([rundir]) +AC_DEFINE_DIR([PKGRUNDIR], ["${rundir}"], [Directory to store pidfile in.]) + + +dnl +dnl Check for --with-program-prefix +dnl + +dnl Installed utility program prefixes (does not affect binaries +dnl installed into pkglibexecdir) +AC_MSG_CHECKING([for program prefix]) +AC_ARG_WITH([program-prefix], + [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])], + [test "x$with_program_prefix" = "xno" && with_program_prefix=], + [with_program_prefix=]) +AC_MSG_RESULT(["$with_program_prefix"]) +PROGRAM_PREFIX="$with_program_prefix" +AC_SUBST([PROGRAM_PREFIX]) +AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.]) + + + +dnl *************************************************************************** +dnl Third party +dnl + + +dnl +dnl ltdl support +dnl + +AM_CONDITIONAL([BUILD_LTDL], [[[ "$with_included_ltdl" = "yes" ]]]) + + + +dnl +dnl boost support +dnl + +AC_MSG_CHECKING([whether to use boost sources included here]) +AC_ARG_WITH(included-boost, +AC_HELP_STRING([--with-included-boost], [Use the boost sources from included submodule]), +[ + AC_MSG_RESULT([yes]) + AC_MSG_NOTICE([Bootstrapping boost]) + + AM_COND_IF([MINGW], + [ + BTOOLSET="mingw" + ], [ + dnl the CXX may have a space and then arguments so we must chop them + BTOOLSET=`echo $CXX | cut -d' ' -f1` + ]) + + bash tools/boostrap.sh $BTOOLSET system release shared single + if [[ $? != 0 ]]; then + AC_MSG_ERROR([Failed to build included boost.]) + fi + + AC_MSG_NOTICE([Bootstrapping boost: done]) + + AC_SUBST(BOOST_CPPFLAGS, "-isystem $PWD/boost/include") + + AM_COND_IF([MINGW], + [ + AC_SUBST(BOOST_LDFLAGS, "-L$PWD/boost/stage/lib") + ], [ + AC_SUBST(BOOST_LDFLAGS, "-L$PWD/boost/lib") + ]) +],[ + AC_SEARCH_LIBS(boost_system, boost_system, + [ + AC_DEFINE(HAVE_LIB_BOOST_SYSTEM, 1, [Define if you have boost_system]) + ], [ + AC_MSG_ERROR([Failed to find boost_system library. (try --with-included-boost)]) + ]) + + AC_SUBST(BOOST_CPPFLAGS, "") + AC_SUBST(BOOST_LDFLAGS, "") + AC_MSG_RESULT([no]) +]) + +AM_COND_IF([MINGW], +[ + dnl TODO + AC_SUBST(BOOST_LIBS, "-lboost_system-mgw53-1_61.dll") +], [ + AC_SUBST(BOOST_LIBS, "-lboost_system") +]) + + +AC_DEFINE([HAVE_BOOST_ASIO_HPP], [1], [ boost asio. ]) +RB_DEFINE_UNQUOTED([INC_BOOST_ASIO_HPP], [boost/asio.hpp>], [ boost asio. ]) + +AC_DEFINE([HAVE_BOOST_CONTEXT_ALL_HPP], [1], [ boost context. ]) +RB_DEFINE_UNQUOTED([INC_BOOST_CONTEXT_ALL_HPP], [boost/context/all.hpp>], [ boost context. ]) + +AC_DEFINE([HAVE_BOOST_ASIO_SPAWN_HPP], [1], [ boost asio spawn. ]) +RB_DEFINE_UNQUOTED([INC_BOOST_ASIO_SPAWN_HPP], [boost/asio/spawn.hpp>], [ boost asio spawn. ]) + +AC_DEFINE([HAVE_BOOST_LEXICAL_CAST_HPP], [1], [ boost asio. ]) +RB_DEFINE_UNQUOTED([INC_BOOST_LEXICAL_CAST_HPP], [boost/lexical_cast.hpp>], [ boost lexical_cast. ]) + +AC_DEFINE([HAVE_BOOST_TOKENIZER_HPP], [1], [ boost tokenizer. ]) +RB_DEFINE_UNQUOTED([INC_BOOST_TOKENIZER_HPP], [boost/tokenizer.hpp>], [ boost tokenizer. ]) + + + +dnl dnl OpenSSL support -AC_MSG_CHECKING(for OpenSSL) +dnl + +AC_MSG_CHECKING([for OpenSSL]) AC_ARG_ENABLE(openssl, [AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).]) AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])], @@ -510,10 +899,7 @@ else AC_MSG_RESULT(disabled) fi -save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $SSL_CFLAGS" -save_LIBS="$LIBS" -LIBS="$LIBS $SSL_LIBS" if test "$cf_enable_openssl" != no; then dnl Check OpenSSL version (must be 0.9.7 or above!) AC_MSG_CHECKING(for OpenSSL 0.9.7 or above) @@ -535,7 +921,6 @@ if test "$cf_enable_openssl" != no; then fi - if test "$cf_enable_openssl" != no; then CPPFLAGS="$CPPFLAGS $SSL_LIBS" AC_CHECK_LIB(crypto, RAND_status, @@ -550,8 +935,17 @@ if test "$cf_enable_openssl" != no; then [cf_enable_openssl=no], [-lcrypto]) fi +AC_SUBST(SSL_SRCS_ENABLE) +AC_SUBST(SSL_INCLUDES) +AC_SUBST(SSL_CFLAGS) +AC_SUBST(SSL_LIBS) + + +dnl dnl mbedTLS support +dnl + AC_ARG_ENABLE(mbedtls, [AC_HELP_STRING([--enable-mbedtls], [Enable mbedTLS support.]) AC_HELP_STRING([--disable-mbedtls], [Disable mbedTLS support.])], @@ -559,8 +953,6 @@ AC_HELP_STRING([--disable-mbedtls], [Disable mbedTLS support.])], [cf_enable_mbedtls="auto"]) if test "$cf_enable_mbedtls" != no; then - save_CPPFLAGS="$CPPFLAGS" - save_LIBS="$LIBS" LIBS="$LIBS $MBEDTLS_LIBS" AC_CHECK_LIB(mbedtls, mbedtls_ssl_init, [ MBEDTLS_LIBS="$MBEDTLS_LIBS -lmbedtls -lmbedx509 -lmbedcrypto" @@ -568,7 +960,15 @@ if test "$cf_enable_mbedtls" != no; then ], [cf_enable_mbedtls=no], [-lmbedx509 -lmbedcrypto]) fi +AC_SUBST(MBEDTLS_CFLAGS) +AC_SUBST(MBEDTLS_LIBS) + + + +dnl dnl GnuTLS support +dnl + AC_MSG_CHECKING(for GnuTLS) AC_ARG_ENABLE(gnutls, [AC_HELP_STRING([--enable-gnutls],[Enable GnuTLS support.]) @@ -582,6 +982,10 @@ if test "$cf_enable_gnutls" != no; then ], [cf_enable_gnutls="no"]) fi +AC_SUBST(GNUTLS_CFLAGS) +AC_SUBST(GNUTLS_LIBS) + + dnl mbed TLS is given highest preference when no specified TLS library is provided if test "$cf_enable_openssl" = "auto" -a "$cf_enable_mbedtls" = "yes"; then cf_enable_openssl="no" @@ -616,319 +1020,9 @@ fi - -CPPFLAGS="$save_CPPFLAGS" -LIBS="$save_LIBS" - -dnl End OpenSSL detection - - - - -dnl Debug-related options -dnl ===================== - -AC_ARG_ENABLE(assert, -AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]), -[assert=$enableval], [assert=no]) - -if test "$assert" = no; then - AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) -elif test "$assert" = soft; then - AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.]) - AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) -elif test "$assert" = yes; then - assert = "hard"; -fi - -AC_MSG_CHECKING(if you want to do a profile build) -AC_ARG_ENABLE(profile, -AC_HELP_STRING([--enable-profile],[Enable profiling]), -[profile=$enableval], [profile=no]) - -if test "$profile" = yes; then - if test "$ac_cv_c_compiler_gnu" = yes; then - CPPFLAGS="$CPPFLAGS -pg -static" - AC_MSG_RESULT([yes, adding -pg -static]) - AC_DEFINE(RB_PROFILE, 1, [Defined to mark profiling is enabled]) - else - AC_MSG_RESULT([no, profile builds only work with gcc]) - fi -else - AC_MSG_RESULT(no) -fi - -AC_SUBST(LDFLAGS) -AC_SUBST(PICFLAGS) -AC_SUBST(SEDOBJ) -AC_SUBST(SSL_CFLAGS) -AC_SUBST(SSL_LIBS) -AC_SUBST(GNUTLS_CFLAGS) -AC_SUBST(GNUTLS_LIBS) -AC_SUBST(MBEDTLS_CFLAGS) -AC_SUBST(MBEDTLS_LIBS) - -if test "$prefix" = "NONE"; then - AC_DEFINE_UNQUOTED(RB_PREFIX, "$ac_default_prefix", [Prefix where librb is installed.]) -else - -dnl Don't get bitten by Cygwin's stupidity if the user specified -dnl a custom prefix with a trailing slash - - prefix=`echo $prefix | sed 's/\/$//'` - AC_DEFINE_UNQUOTED(RB_PREFIX, "$prefix", [Prefix where librb is installed.]) - -fi - -AC_SUBST(RB_PREFIX) - - -PKG_PROG_PKG_CONFIG -build_ltdl=$with_included_ltdl -AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"]) - -case "$host_os" in -*cygwin*) - AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system]) - AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system]) - ;; -*mingw* | *msys*) - AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system]) - AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system]) - AC_CHECK_HEADER(winsock2.h, , [AC_MSG_ERROR([** MinGW and no winsock2.h. I give up.])]) - LIBS="$LIBS -lws2_32 -liphlpapi" - is_mingw="yes" - ;; -*) - ;; -esac - -AM_CONDITIONAL([MINGW], [test "$is_mingw" = "yes"]) - -dnl check for /dev/null so we can use it to hold evil fd's -AC_MSG_CHECKING([for /dev/null]) -if test -c /dev/null ; then - AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null]) - AC_MSG_RESULT(yes) -else - AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null]) - AC_MSG_RESULT(no - using devnull.log) -fi - -AC_ARG_ENABLE([fhs-paths], - [AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])], - [], - [dnl detect if the user appears to want --enable-fhs-paths - AS_IF([test "$libexecdir" = '${exec_prefix}/libexec' && \ - test "$localstatedir" = '${prefix}/var' && \ - test "$libdir" = '${exec_prefix}/lib'], - [enable_fhs_paths=no], - [enable_fhs_paths=yes]) - ]) -dnl use directory structure of cached as default (hack) -AS_IF([test "x$enable_fhs_paths" = "xyes"], - [dnl Avoid name collisions. - pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}' - rundir=${rundir-'${prefix}/run'} - pkgrundir='${rundir}/${PACKAGE_TARNAME}' - pkglocalstatedir='${localstatedir}/${PACKAGE_TARNAME}' - AC_DEFINE([ENABLE_FHS_PATHS], [1], [Uncomment if FHS pathnames are enabled])], - [libexecdir='${bindir}' - pkglibexecdir='${libexecdir}' - rundir='${sysconfdir}' - pkgrundir='${rundir}' - localstatedir='${prefix}' - pkglocalstatedir='${sysconfdir}']) -pkglibdir='${libdir}/${PACKAGE_TARNAME}' -AC_SUBST([pkglibdir]) -AC_SUBST([rundir]) -AC_SUBST([pkgrundir]) -AC_SUBST([pkglocalstatedir]) -AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]]) -AC_SUBST([pkglibexecdir]) -AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live]) - -dnl Checks for header files. -AC_HEADER_STDC -AC_HEADER_STDBOOL - -AC_CHECK_HEADERS([crypt.h sys/resource.h sys/param.h errno.h sys/syslog.h stddef.h sys/wait.h wait.h sys/epoll.h sys/uio.h machine/endian.h]) - -dnl Stuff that the memory manager (imalloc) depends on -dnl ================================================== - -AC_C_CONST -if test "$ac_cv_header_machine_endian_h" = "no" ; then - AC_C_BIGENDIAN -fi -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_CHECK_SIZEOF(short) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long) -AC_CHECK_SIZEOF(long long) - -dnl Networking Functions -dnl ==================== - -AC_SEARCH_LIBS(socket, [socket ws2_32], , [AC_MSG_ERROR([You have no socket()! Aborting.])]) - -dnl SunOS/Solaris required libnsl for inet_ntoa() -if test x"$SUN" = xyes; then - AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])]) -fi - -AC_SEARCH_LIBS(crypt, [crypt descrypt],,) - -CRYPT_LIB=$ac_cv_search_crypt - -if test "$CRYPT_LIB" = "none required"; then - unset CRYPT_LIB -elif test "$CRYPT_LIB" = no; then - unset CRYPT_LIB -fi - -AC_SUBST(CRYPT_LIB) - -AC_C_BIGENDIAN - -dnl Check for stdarg.h - if we can't find it, halt configure -AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - charybdis will not compile without it **])]) -AC_CHECK_FUNCS([strlcat strlcpy]) - -AC_TYPE_INT16_T -AC_TYPE_INT32_T - -AC_CHECK_TYPE([sa_family_t], [], -[AC_DEFINE(sa_family_t, [u_int16_t], [If system does not define sa_family_t, define it here.])], -[[#include -#include ]]) - -AC_CHECK_TYPES([uintptr_t]) - -dnl check for various functions... -AC_CHECK_FUNCS([snprintf vsnprintf socketpair mmap gettimeofday strdup strndup ]) - -AC_FUNC_ALLOCA - -dnl Specialized functions checks -dnl ============================ - -dnl check for nanosleep -AC_CHECK_FUNC(nanosleep,,[AC_CHECK_LIB(rt,nanosleep, - LIBS="${LIBS} -lrt", - [AC_CHECK_LIB(posix4,nanosleep, LIBS="${LIBS} -lposix4" - )])]) -if test x$ac_cv_func_nanosleep = xno && test x$ac_cv_lib_posix4_nanosleep = xno && test x$ac_cv_lib_rt_nanosleep = xno -then - AC_MSG_RESULT("nanosleep not found..using select for delay") -else - AC_DEFINE([HAVE_NANOSLEEP], 1, [Define if nanosleep exists]) -fi - -dnl OpenSSL support -AC_MSG_CHECKING(for OpenSSL) -AC_ARG_ENABLE(openssl, -[AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).]) -AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])], -[cf_enable_openssl=$enableval], -[cf_enable_openssl="auto"]) - -if test "$cf_enable_openssl" != "no" ; then - cf_openssl_basedir="" - if test "$cf_enable_openssl" != "auto" && - test "$cf_enable_openssl" != "yes" ; then - dnl Support for --enable-openssl=/some/place - cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`" - else - dnl Do the auto-probe here. Check some common directory paths. - for dirs in /usr/local/ssl /usr/pkg /usr/local \ - /usr/local/openssl ; do - if test -f "${dirs}/include/openssl/opensslv.h" ; then - cf_openssl_basedir="${dirs}" - break - fi - done - unset dirs - fi - dnl Now check cf_openssl_found to see if we found anything. - if test ! -z "$cf_openssl_basedir"; then - if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then - SSL_INCLUDES="-I${cf_openssl_basedir}/include" - SSL_LIBS="-L${cf_openssl_basedir}/lib" - else - dnl OpenSSL wasn't found in the directory specified. Naughty - dnl administrator... - cf_openssl_basedir="" - fi - else - dnl Check for stock FreeBSD 4.x and 5.x systems, since their files - dnl are in /usr/include and /usr/lib. In this case, we don't want to - dnl change INCLUDES or LIBS, but still want to enable OpenSSL. - dnl We can't do this check above, because some people want two versions - dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl) - dnl and they want /usr/local/ssl to have preference. - if test -f "/usr/include/openssl/opensslv.h" ; then - cf_openssl_basedir="/usr" - fi - fi - - dnl If we have a basedir defined, then everything is okay. Otherwise, - dnl we have a problem. - if test ! -z "$cf_openssl_basedir"; then - AC_MSG_RESULT($cf_openssl_basedir) - cf_enable_openssl="yes" - else - AC_MSG_RESULT([not found. Specify a correct path?]) - cf_enable_openssl="no" - fi - unset cf_openssl_basedir -else - dnl If --disable-openssl was specified - AC_MSG_RESULT(disabled) -fi - -save_CPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $SSL_INCLUDES" -save_LIBS="$LIBS" -LIBS="$LIBS $SSL_LIBS" -if test "$cf_enable_openssl" != no; then - dnl Check OpenSSL version (must be 0.9.6 or above!) - AC_MSG_CHECKING(for OpenSSL 0.9.6 or above) - AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [#include - #include ], - [[if ( OPENSSL_VERSION_NUMBER >= 0x00906000) - exit(0); else exit(1);]])], - cf_openssl_version_ok=yes, - cf_openssl_version_ok=no, - cf_openssl_version_ok=no) - - if test "$cf_openssl_version_ok" = yes; then - AC_MSG_RESULT(found) - - dnl Work around pmake/gmake conditional incompatibilities - AC_SUBST(ENCSPEED, encspeed) - - dnl Do all the HAVE_LIBCRYPTO magic -- and check for ciphers - CPPFLAGS="$CPPFLAGS $SSL_LIBS" - AC_CHECK_LIB(crypto, RSA_free) - SSL_LIBS="$SSL_LIBS -lcrypto" - SSL_SRCS_ENABLE='$(SSL_SRCS)' - else - AC_MSG_RESULT(no - OpenSSL support disabled) - fi -fi - -CPPFLAGS="$save_CPPFLAGS" -LIBS="$save_LIBS" - -dnl End OpenSSL detection - - -dnl Specialized functions and libraries -dnl =================================== +dnl +dnl zlib support +dnl AC_ARG_WITH(zlib-path, AC_HELP_STRING([--with-zlib-path=DIR],[Path to libz.so for ziplinks support.]), @@ -950,8 +1044,12 @@ AC_CHECK_HEADER(zlib.h, [ fi -dnl Check for shared sqlite -dnl ====================== + + +dnl +dnl sqlite support +dnl + AC_ARG_WITH(shared-sqlite, AC_HELP_STRING([--with-shared-sqlite],[Use shared sqlite]), [shared_sqlite=$withval],[shared_sqlite=no]) @@ -967,158 +1065,47 @@ if test "$shared_sqlite" = no; then SQLITE_OBJ='sqlite3.$(OBJEXT)' fi -AC_SUBST(SQLITE_LD, "$SQLITE_LIBS") -AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS") +AC_SUBST(SQLITE_CFLAGS, "$SQLITE_CFLAGS") +AC_SUBST(SQLITE_LDFLAGS, "$SQLITE_LDFLAGS") +AC_SUBST(SQLITE_LIBS, "$SQLITE_LIBS") AC_SUBST(SQLITE_OBJ) -dnl Check for PCRE2 -dnl =============== + + +dnl +dnl PCRE2 support +dnl PKG_CHECK_MODULES(PCRE, [libpcre2-8], [have_pcre="yes"], [have_pcre="no"]) AM_CONDITIONAL([PCRE], [test "x$have_pcre" = "xyes"]) -dnl ********************************************************************** -dnl Check for --with-confdir [deprecated, use --sysconfdir instead] -dnl ********************************************************************** - -AC_ARG_WITH([confdir], - [AC_HELP_STRING([--with-confdir=DIR], - [Directory to install config files [deprecated, use --sysconfdir instead].])], - [ sysconfdir=`echo $withval | sed 's/\/$//'` ], - [ confdir='etc' ]) -RB_DEFINE_UNQUOTED([ETC_DIR], ["${prefix}/${confdir}"], [Prefix where config files are installed.]) - -dnl ********************************************************************** -dnl Check for --with-bindir -dnl ********************************************************************** - -AC_MSG_CHECKING([whether to modify binary directory]) -AC_ARG_WITH(bindir, -AC_HELP_STRING([--with-bindir=DIR], - [Directory where binary executables are placed.]), - [ logdir=`echo $withval | sed 's/\/$//'` - AC_MSG_RESULT(yes)], - [ AS_IF([test "x$enable_fhs_paths" = "xyes"], - [bindir="${prefix}/bin"], - [bindir="${prefix}/bin"]) - AC_MSG_RESULT(no)]) -RB_DEFINE_UNQUOTED([BIN_DIR], ["${bindir}"], [Directory where binary executables are to be found.]) -AC_SUBST_DIR([bindir]) -dnl ********************************************************************** -dnl Check for --with-logdir -dnl ********************************************************************** +dnl *************************************************************************** +dnl Application settings +dnl -AC_MSG_CHECKING([whether to modify logdir]) -AC_ARG_WITH(logdir, -AC_HELP_STRING([--with-logdir=DIR], - [Directory where to write logfiles.]), - [ logdir=`echo $withval | sed 's/\/$//'` - AC_MSG_RESULT(yes)], - [ AS_IF([test "x$enable_fhs_paths" = "xyes"], - [logdir="${prefix}/var/log"], - [logdir="${prefix}/var/${PACKAGE_TARNAME}/log"]) - AC_MSG_RESULT(no)]) -RB_DEFINE_UNQUOTED([LOG_DIR], ["${logdir}"], [Prefix where to write logfiles.]) -AC_SUBST_DIR([logdir]) +AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.]) +AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.]) +AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.]) +AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.]) +AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.]) +AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.]) +AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.]) +AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.]) +AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.]) +AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.]) +AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.]) +AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.]) +AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.]) +AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.]) +AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.]) +AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.]) -dnl ********************************************************************** -dnl Check for --with-helpdir -dnl ********************************************************************** -AC_MSG_CHECKING([whether to modify helpdir]) -AC_ARG_WITH(helpdir, -AC_HELP_STRING([--with-helpdir=DIR], - [Directory to install help files.]), - [ helpdir=`echo $withval | sed 's/\/$//'` - AC_MSG_RESULT(yes) ], - [ AS_IF([test "x$enable_fhs_paths" = "xyes"], - [helpdir="${prefix}/share/help"], - [helpdir="${prefix}/share/${PACKAGE_TARNAME}/help"]) - AC_MSG_RESULT(no) ]) -RB_DEFINE_UNQUOTED([HELP_DIR], ["${helpdir}"], [Prefix where help files are installed.]) -AC_SUBST_DIR([helpdir]) - -dnl ********************************************************************** -dnl Check for --with-moduledir -dnl ********************************************************************** - -AC_MSG_CHECKING([whether to modify moduledir]) -AC_ARG_WITH(moduledir, - [AC_HELP_STRING([--with-moduledir=DIR], - [Directory to install modules.])], - [ moduledir=`echo $withval | sed 's/\/$//'` - AC_MSG_RESULT(yes)], - [ AS_IF([test "x$enable_fhs_paths" = "xyes"], - [moduledir="${prefix}/lib/modules"], - [moduledir="${prefix}/lib/${PACKAGE_TARNAME}/modules"]) - AC_MSG_RESULT(no) - ]) -RB_DEFINE_UNQUOTED([MODULE_DIR], ["${moduledir}"], [Prefix where modules are installed.]) -AC_SUBST_DIR([moduledir]) - -dnl Check for --with-rundir - -AC_MSG_CHECKING([whether or modify rundir]) -AC_ARG_WITH([rundir], - [AC_HELP_STRING([--with-rundir=DIR], - [Directory in which to store pidfile.])], - [AC_MSG_RESULT([yes]) - rundir=`echo $withval | sed 's/\/$//'`], - [AC_MSG_RESULT([no]) - AS_IF([test "x$enable_fhs_paths" = "xyes"], - [rundir="${prefix}/var/run"], - [rundir="${prefix}/${PACKAGE_TARNAME}/run"])]) -AC_SUBST([rundir]) -AC_DEFINE_DIR([PKGRUNDIR], ["${rundir}"], [Directory to store pidfile in.]) - -dnl Installed utility program prefixes (does not affect binaries -dnl installed into pkglibexecdir) -AC_MSG_CHECKING([for program prefix]) -AC_ARG_WITH([program-prefix], - [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])], - [test "x$with_program_prefix" = "xno" && with_program_prefix=], - [with_program_prefix=]) -AC_MSG_RESULT(["$with_program_prefix"]) -PROGRAM_PREFIX="$with_program_prefix" -AC_SUBST([PROGRAM_PREFIX]) -AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.]) - -dnl ********************************************************************** -dnl Branding -dnl ********************************************************************** - -AC_MSG_CHECKING([whether custom branding is requested]) -AC_ARG_WITH(custom-branding, -AC_HELP_STRING([--with-custom-branding=NAME], - [Custom branding name.]), - [BRANDING_NAME=$withval - AC_MSG_RESULT([yes])], - [BRANDING_NAME=$PACKAGE_NAME - AC_MSG_RESULT([no])] -) - -AC_MSG_CHECKING([whether a custom version is requested]) -AC_ARG_WITH(custom-version, -AC_HELP_STRING([--with-custom-version=NAME], - [Custom version branding.]), - [BRANDING_VERSION=$withval - AC_MSG_RESULT([yes])], - [BRANDING_VERSION=$PACKAGE_VERSION - AC_MSG_RESULT([no])] -) - -AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.]) -AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.]) - -if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then - AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.]) -fi - -dnl ********************************************************************** -dnl Enable oper chghost -dnl ********************************************************************** +dnl +dnl --enable-oper-chghost +dnl AC_ARG_ENABLE(oper-chghost, AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]), @@ -1128,38 +1115,10 @@ if test "$operchghost" = yes; then AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.]) fi -dnl Debug-related options -dnl ===================== -AC_ARG_ENABLE(assert, -AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]), -[assert=$enableval], [assert=no]) - -if test "$assert" = no; then - AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) -elif test "$assert" = soft; then - AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.]) - AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) -elif test "$assert" = yes; then - assert = "hard"; -fi - -AC_MSG_CHECKING(if you want to do a profile build) -AC_ARG_ENABLE(profile, -AC_HELP_STRING([--enable-profile],[Enable profiling]), -[profile=$enableval], [profile=no]) - -if test "$profile" = yes; then - if test "$ac_cv_c_compiler_gnu" = yes; then - CPPFLAGS="$CPPFLAGS -pg" - AC_MSG_RESULT([yes, adding -pg]) - AC_DEFINE(CHARYBDIS_PROFILE, 1, [Define this if you are profiling.]) - else - AC_MSG_RESULT([no, profile builds only work with gcc]) - fi -else - AC_MSG_RESULT(no) -fi +dnl +dnl --with-nicklen +dnl AC_ARG_WITH(nicklen, AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]), @@ -1178,6 +1137,13 @@ AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGT fi ], [NICKLEN=31]) +AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length]) + + +dnl +dnl --with-topiclen +dnl + AC_ARG_WITH(topiclen, AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]), [ @@ -1190,95 +1156,101 @@ AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (def ], [TOPICLEN=390]) AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)]) -AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length]) -# rpath, for finding librb.so at run time -hold_ldflags=$LDFLAGS -#AC_MSG_CHECKING(for the ld -rpath flag) -#LDFLAGS="${LDFLAGS} -Wl,-rpath=${prefix}/${libdir}" -#AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no) -#LDFLAGS=$hold_ldflags -#AC_MSG_RESULT($found) -#if test "$found" = yes; then -# LDFLAGS="${LDFLAGS} -Wl,-rpath=${prefix}/${libdir}" -#fi -# This must be down here, or it will mess up checks like the ones -# for -Wl,-export-dynamic -# -- jilles -CWARNS="" -AC_ARG_ENABLE(warnings, -AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]), + +dnl *************************************************************************** +dnl Branding defined in the compilation +dnl + +VERSION_CMD="git describe --tags" +RB_VERSION=`$VERSION_CMD` +RB_DEFINE_UNQUOTED([VERSION], ["$RB_VERSION"], [Version generated at configuration time.]) + +DATESTR_CMD="date -R" +RB_DATESTR=`$DATESTR_CMD` +RB_DEFINE_UNQUOTED([DATESTR], ["$RB_DATESTR"], [Readable date string of configuration time.]) + +DATECODE_CMD="date +%s" +RB_DATECODE=`$DATECODE_CMD` +RB_DEFINE_UNQUOTED([DATECODE], [$RB_DATECODE], [UNIX epoch time at configuration time.]) + + +dnl +dnl --with-custom-branding +dnl + +AC_MSG_CHECKING([whether custom branding is requested]) +AC_ARG_WITH(custom-branding, AC_HELP_STRING([--with-custom-branding=NAME], [Custom branding name.]), [ -CHARYBDIS_C_GCC_TRY_FLAGS([-Wall], charybdis_cv_c_gcc_w_all) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wextra], charybdis_cv_c_gcc_w_extra) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wpointer-arith], charybdis_cv_c_gcc_w_pointer_arith) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-align], charybdis_cv_c_gcc_w_cast_align) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wcast-qual], charybdis_cv_c_gcc_w_cast_qual) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wfloat-equal], charybdis_cv_c_gcc_w_float_equal) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wwrite-strings], charybdis_cv_c_gcc_w_write_strings) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-declarations], charybdis_cv_c_gcc_w_prototypes) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wno-missing-field-initializers], charybdis_cv_c_gcc_w_missing_field_initializers) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wparentheses], charybdis_cv_c_gcc_parentheses) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wmissing-noreturn], charybdis_cv_c_gcc_w_missing_noreturn) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wundef], charybdis_cv_c_gcc_w_undef) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wpacked], charybdis_cv_c_gcc_w_packed) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wno-unused -Wno-unused-function -Wno-unused-label -Wno-unused-value -Wno-unused-variable -Wno-unused-parameter], charybdis_cv_c_gcc_w_unused) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wformat-security -Wformat-nonliteral], charybdis_cv_c_gcc_w_format) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wsuggest-attribute=format], charybdis_cv_c_gcc_w_suggest_attribute_format) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wstrict-aliasing -Wstrict-overflow], charybdis_cv_c_gcc_w_strict) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wdisabled-optimization], charybdis_cv_c_gcc_w_disabled_optimization) -CHARYBDIS_C_GCC_TRY_FLAGS([-Winvalid-pch], charybdis_cv_c_gcc_w_invalid_pch) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wlogical-op], charybdis_cv_c_gcc_w_logical_op) -CHARYBDIS_C_GCC_TRY_FLAGS([-Winit-self], charybdis_cv_c_gcc_w_init_self) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wuninitialized], charybdis_cv_c_gcc_w_uninitialized) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wunreachable-code], charybdis_cv_c_gcc_w_unreachable_code) -CHARYBDIS_C_GCC_TRY_FLAGS([-Wno-unknown-warning -Wno-unknown-warning-option], charybdis_cv_c_gcc_w_unknown_warning) -],[]) + AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$withval"], [Custom branding name.]) + AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.]) + AC_MSG_RESULT([yes]) +],[ + AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$PACKAGE_NAME"], [Current package]) + AC_MSG_RESULT([no]) +]) + + +dnl +dnl --with-custom-version +dnl + +AC_MSG_CHECKING([whether a custom version is requested]) +AC_ARG_WITH(custom-version, AC_HELP_STRING([--with-custom-version=NAME], [Custom version branding.]), +[ + AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$withval"], [Custom branding version.]) + AC_MSG_RESULT([yes]) +], [ + AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$RB_VERSION"], [Current version]) + AC_MSG_RESULT([no]) +]) + + + +dnl *************************************************************************** +dnl Misc +dnl -CPPFLAGS="$CPPFLAGS $CWARNS" AC_SUBST(MODULES_LIBS) AC_SUBST(MOD_TARGET) - -AC_SUBST(SSL_SRCS_ENABLE) -AC_SUBST(SSL_INCLUDES) -AC_SUBST(SSL_LIBS) - -AC_SUBST(CFLAGS) -AC_SUBST(CPPFLAGS) -AC_SUBST(LDFLAGS) AC_SUBST(PICFLAGS) AC_SUBST(SEDOBJ) +AC_SUBST(CFLAGS) -if test "$prefix" = "NONE"; then - AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.]) - -else - -dnl Don't get bitten by Cygwin's stupidity if the user specified -dnl a custom prefix with a trailing slash - - prefix=`echo $prefix | sed 's/\/$//'` - AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.]) - -fi - AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl]) + + +dnl *************************************************************************** +dnl Output +dnl + + AC_OUTPUT + + +if [[ $DEBUG ]]; then + debug="yes" +else + debug="no" +fi + dnl Make it look sexay! - echo -echo "Compiling $PACKAGE_NAME $PACKAGE_VERSION" -echo $RB_VERSION -echo $RB_DATESTR -echo - -echo "Installing into: $prefix" - -echo "IPv6 support ................... $ipv6" -echo "Assert debugging ............... $assert" -echo "SSL Type........................ $SSL_TYPE" +echo "Configured ........................ $PACKAGE_NAME $PACKAGE_VERSION" +echo "Version ........................... $RB_VERSION" +echo "Configuration time ................ $RB_DATESTR" +echo "Compiler .......................... $CXX" +echo "Compiler flags (CXXFLAGS) ......... $CXXFLAGS" +echo "Building boost .................... $with_included_boost" +echo "Building libltdl .................. $with_included_ltdl" +echo "Developer debug ................... $debug" +echo "IPv6 support ...................... $ipv6" +echo "SSL type........................... $SSL_TYPE" +echo "Installing into ................... $prefix" echo +echo "* Ready to build $PACKAGE_NAME" +echo "* Now run 'make'" diff --git a/extensions/Makefile.am b/extensions/Makefile.am index c16debaa0..562cb5865 100644 --- a/extensions/Makefile.am +++ b/extensions/Makefile.am @@ -1,14 +1,30 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include $(LTDLINCL) -AM_CPPFLAGS += -isystem $(top_srcdir)/boost/include -AM_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined -shared -AM_LDFLAGS += -export-symbols-regex _mheader -AM_LDFLAGS += -L$(top_srcdir)/boost/lib -lboost_system -AM_LDFLAGS += -L$(top_srcdir)/ircd -lircd -AM_LDFLAGS += -L$(top_srcdir)/rb -lrb - - extensiondir=@moduledir@/extensions +AM_CPPFLAGS = \ + -I$(top_srcdir)/include \ + $(LTDLINCL) \ + @BOOST_CPPFLAGS@ + +AM_LDFLAGS = \ + -L$(top_srcdir)/ircd \ + -L$(top_srcdir)/rb \ + @BOOST_LDFLAGS@ + +AM_LDFLAGS += \ + -module \ + -export-dynamic \ + -avoid-version \ + -no-undefined \ + -shared \ + -export-symbols-regex _mheader + +AM_LDFLAGS += \ + -lircd \ + -lrb \ + @LIBLTDL@ \ + @BOOST_LIBS@ + + chm_adminonly_la_SOURCES = chm_adminonly.cc chm_operonly_la_SOURCES = chm_operonly.cc chm_operonly_compat_la_SOURCES = chm_operonly_compat.cc diff --git a/include/rb/Makefile.am b/include/rb/Makefile.am index 2343a5990..d84b0a826 100644 --- a/include/rb/Makefile.am +++ b/include/rb/Makefile.am @@ -1,12 +1,12 @@ AUTOMAKE_OPTIONS = foreign -AM_CPPFLAGS = -isystem $(top_srcdir)/boost/include -AM_LDFLAGS = -L$(top_srcdir)/boost/lib +AM_CPPFLAGS = @BOOST_CPPFLAGS@ +AM_LDFLAGS = @BOOST_LDFLAGS@ BUILT_SOURCES = rb.h.gch rb.h.gch: - $(CXX) -o rb.h.gch $(CPPFLAGS) rb.h + $(CXX) $(CXXFLAGS) -o rb.h.gch $(DEFS) $(CPPFLAGS) rb.h clean-local: rm -f rb.h.gch diff --git a/ircd/Makefile.am b/ircd/Makefile.am index 95fc7c4e3..60addb8ba 100644 --- a/ircd/Makefile.am +++ b/ircd/Makefile.am @@ -1,23 +1,39 @@ AUTOMAKE_OPTIONS = foreign + libircddir = @libdir@ -AM_CPPFLAGS = @LTDLINCL@ -AM_CPPFLAGS += -I$(top_srcdir)/include -AM_CPPFLAGS += -isystem $(top_srcdir)/boost/include - -AM_LDFLAGS = -export-dynamic -avoid-version -no-undefined -AM_LDFLAGS += -L$(top_srcdir)/rb -AM_LDFLAGS += -L$(top_srcdir)/boost/lib - AM_YFLAGS = -d # --language=c++ AM_LFLAGS = # --c++ +AM_CPPFLAGS = \ + -I$(top_srcdir)/include \ + @LTDLINCL@ \ + @BOOST_CPPFLAGS@ + if MINGW -EXTRA_FLAGS = -Wl,--enable-runtime-pseudo-reloc -export-symbols-regex '*' +PLATFORM_LDFLAGS = -Wl,--enable-runtime-pseudo-reloc -export-symbols-regex '*' endif +AM_LDFLAGS = \ + -export-dynamic \ + -avoid-version \ + -no-undefined \ + $(PLATFORM_LDFLAGS) + +AM_LDFLAGS += \ + -L$(top_srcdir)/rb \ + @BOOST_LDFLAGS@ + BUILT_SOURCES = ircd_parser.h + +libircd_LTLIBRARIES = libircd.la + +libircd_la_LIBADD = \ + -lrb \ + @LIBLTDL@ \ + @BOOST_LIBS@ + libircd_la_SOURCES = \ authproc.cc \ bandbi.cc \ @@ -65,10 +81,7 @@ libircd_la_SOURCES = \ version.cc \ whowas.cc \ wsproc.cc -libircd_la_LDFLAGS = $(EXTRA_FLAGS) -avoid-version -no-undefined -libircd_la_LIBADD = @LIBLTDL@ -libircd_LTLIBRARIES = libircd.la install-data-local: test -d $(prefix)/@logdir@ || mkdir -p $(prefix)/@logdir@ diff --git a/m4/charybdis.m4 b/m4/charybdis.m4 index 50057e2d6..e19807204 100644 --- a/m4/charybdis.m4 +++ b/m4/charybdis.m4 @@ -56,3 +56,81 @@ int main(void); AC_MSG_RESULT(no, not using GCC) fi ]) + + +AC_DEFUN([RB_CHECK_TIMER_CREATE],[AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)], +[rb__cv_timer_create_works], [AC_TRY_RUN([ + +#ifdef HAVE_TIME_H +#include +#endif +#ifdef HAVE_SIGNAL_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +int main(int argc, char *argv[]) +{ +#if HAVE_TIMER_CREATE + struct sigevent ev; + timer_t timer; + ev.sigev_notify = SIGEV_SIGNAL; + ev.sigev_signo = SIGVTALRM; + if (timer_create(CLOCK_REALTIME, &ev, &timer) != 0) { + return 1; + } +#else + return 1; +#endif + return 0; +} + ], + [rb__cv_timer_create_works=yes], + [rb__cv_timer_create_works=no], + [rb__cv_timer_create_works=no]) + ]) +case $rb__cv_timer_create_works in + yes) AC_DEFINE([USE_TIMER_CREATE], 1, + [Define to 1 if we can use timer_create(CLOCK_REALTIME,...)]);; +esac +]) + + + +AC_DEFUN([RB_CHECK_TIMERFD_CREATE], [AC_CACHE_CHECK([for a working timerfd_create(CLOCK_REALTIME)], +[rb__cv_timerfd_create_works], [AC_TRY_RUN([ + +#ifdef HAVE_TIME_H +#include +#endif +#ifdef HAVE_SIGNAL_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_SYS_TIMERFD_H +#include +#endif +int main(int argc, char *argv[]) +{ +#if defined(HAVE_TIMERFD_CREATE) && defined(HAVE_SYS_TIMERFD_H) + if (timerfd_create(CLOCK_REALTIME, 0) < 0) { + return 1; + } +#else + return 1; +#endif + return 0; +} + ], + [rb__cv_timerfd_create_works=yes], + [rb__cv_timerfd_create_works=no], + [rb__cv_timerfd_create_works=no]) + ]) +case $rb__cv_timerfd_create_works in + yes) AC_DEFINE([USE_TIMERFD_CREATE], 1, + [Define to 1 if we can use timerfd_create(CLOCK_REALTIME,...)]);; +esac +]) diff --git a/modules/Makefile.am b/modules/Makefile.am index 49f4acce8..cdd570341 100644 --- a/modules/Makefile.am +++ b/modules/Makefile.am @@ -1,16 +1,31 @@ AUTOMAKE_OPTIONS = subdir-objects - -AM_CPPFLAGS = $(LTDLINCL) -AM_CPPFLAGS += -I$(top_srcdir)/include -AM_CPPFLAGS += -isystem $(top_srcdir)/boost/include -AM_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined -shared -AM_LDFLAGS += -export-symbols-regex _mheader -AM_LDFLAGS += -L$(top_srcdir)/boost/lib -lboost_system -AM_LDFLAGS += -L$(top_srcdir)/ircd -lircd -AM_LDFLAGS += -L$(top_srcdir)/rb -lrb - auto_load_moddir=@moduledir@/autoload +AM_CPPFLAGS = \ + -I$(top_srcdir)/include \ + $(LTDLINCL) \ + @BOOST_CPPFLAGS@ + +AM_LDFLAGS = \ + -L$(top_srcdir)/ircd \ + -L$(top_srcdir)/rb \ + @BOOST_LDFLAGS@ + +AM_LDFLAGS += \ + -module \ + -export-dynamic \ + -avoid-version \ + -no-undefined \ + -shared \ + -export-symbols-regex _mheader + +AM_LDFLAGS += \ + -lircd \ + -lrb \ + @LIBLTDL@ \ + @BOOST_LIBS@ + + cap_account_tag_la_SOURCES = cap_account_tag.cc cap_server_time_la_SOURCES = cap_server_time.cc chm_nocolour_la_SOURCES = chm_nocolour.cc @@ -168,7 +183,6 @@ core_m_quit_la_SOURCES = core/m_quit.cc core_m_server_la_SOURCES = core/m_server.cc core_m_squit_la_SOURCES = core/m_squit.cc - module_LTLIBRARIES = \ core/m_ban.la \ core/m_die.la \ diff --git a/rb/Makefile.am b/rb/Makefile.am index 1a1dc693b..10eb093e9 100644 --- a/rb/Makefile.am +++ b/rb/Makefile.am @@ -2,15 +2,41 @@ AUTOMAKE_OPTIONS = foreign pkgconfigdir = $(libdir)/pkgconfig #pkgconfig_DATA = librb.pc - librbdir = @libdir@ -AM_CPPFLAGS = @SSL_CFLAGS@ @GNUTLS_CFLAGS@ @MBEDTLS_CFLAGS@ -AM_CPPFLAGS += -isystem $(top_srcdir)/boost/include -AM_CPPFLAGS += -I$(top_srcdir)/include # This is temp since all remaining C is circling the drain. AM_CFLAGS = -std=gnu99 +AM_CPPFLAGS = \ + -I$(top_srcdir)/include \ + @SSL_CFLAGS@ \ + @GNUTLS_CFLAGS@ \ + @MBEDTLS_CFLAGS@ \ + @BOOST_CPPFLAGS@ + +if MINGW +PLATFORM_LDFLAGS = -Wl,--enable-runtime-pseudo-reloc +endif + +AM_LDFLAGS = \ + -avoid-version \ + -no-undefined \ + -export-symbols export-syms.txt \ + $(PLATFORM_LDFLAGS) + +AM_LDFLAGS += \ + -L$(top_srcdir)/rb \ + @BOOST_LDFLAGS@ + + +lib_LTLIBRARIES = librb.la + +librb_la_LIBADD = \ + @SSL_LIBS@ \ + @GNUTLS_LIBS@ \ + @MBEDTLS_LIBS@ \ + @BOOST_LIBS@ + librb_la_SOURCES = \ unix.c \ win32.c \ @@ -40,10 +66,3 @@ librb_la_SOURCES = \ version.c \ terminate.cc \ rb.cc - -librb_la_LDFLAGS = @SSL_LIBS@ @GNUTLS_LIBS@ @MBEDTLS_LIBS@ -avoid-version -no-undefined -export-symbols export-syms.txt -librb_la_LDFLAGS += -L$(top_srcdir)/boost/lib - -librb_la_LIBADD = @SSL_LIBS@ @GNUTLS_LIBS@ @MBEDTLS_LIBS@ -librb_la_LIBADD += -lboost_system -lib_LTLIBRARIES = librb.la diff --git a/ssld/Makefile.am b/ssld/Makefile.am index d74b8682c..8e7acef75 100644 --- a/ssld/Makefile.am +++ b/ssld/Makefile.am @@ -1,12 +1,18 @@ +AM_CPPFLAGS = \ + -I$(top_srcdir)/include \ + @BOOST_CPPFLAGS@ + +AM_LDFLAGS = \ + -L$(top_srcdir)/rb \ + @BOOST_LDFLAGS@ + + bin_PROGRAMS = ssld -AM_CPPFLAGS = $(WARNFLAGS) -AM_CPPFLAGS += -I$(top_srcdir)/include -AM_CPPFLAGS += -I$(top_srcdir)/boost/include +ssld_LDADD = \ + -lrb \ + @ZLIB_LD@ \ + @BOOST_LIBS@ -AM_LDFLAGS = -L$(top_srcdir)/ircd -AM_LDFLAGS += -L$(top_srcdir)/rb -AM_LDFLAGS += -L$(top_srcdir)/boost/lib - -ssld_SOURCES = ssld.cc -ssld_LDADD = -lrb -lboost_system @ZLIB_LD@ +ssld_SOURCES = \ + ssld.cc diff --git a/tools/Makefile.am b/tools/Makefile.am index ce38c78fb..37e60ea4f 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -1,18 +1,32 @@ -AM_CPPFLAGS = $(WARNFLAGS) -AM_CPPFLAGS += @LTDLINCL@ -AM_CPPFLAGS += -I$(top_srcdir)/include -AM_CPPFLAGS += -isystem $(top_srcdir)/boost/include +AM_CPPFLAGS = \ + -I$(top_srcdir)/include \ + @LTDLINCL@ \ + @BOOST_CPPFLAGS@ -AM_LDFLAGS = -L$(top_srcdir)/rb -AM_LDFLAGS += -L$(top_srcdir)/boost/lib +AM_LDFLAGS = \ + @BOOST_LDFLAGS@ \ + -L$(top_srcdir)/rb -bin_PROGRAMS = charybdis-mkpasswd charybdis-mkfingerprint -charybdis_mkpasswd_SOURCES = mkpasswd.cc -charybdis_mkpasswd_LDADD = -lrb -lboost_system +bin_PROGRAMS = charybdis-mkpasswd + +charybdis_mkpasswd_LDADD = \ + -lrb \ + @BOOST_LIBS@ + +charybdis_mkpasswd_SOURCES = \ + mkpasswd.cc + + +bin_PROGRAMS += charybdis-mkfingerprint + +charybdis_mkfingerprint_LDADD = \ + -lrb \ + @BOOST_LIBS@ + +charybdis_mkfingerprint_SOURCES = \ + mkfingerprint.cc -charybdis_mkfingerprint_SOURCES = mkfingerprint.cc -charybdis_mkfingerprint_LDADD = -lrb -lboost_system mrproper-local: rm -f genssl diff --git a/tools/boostrap.sh b/tools/boostrap.sh index 37a4e8bfa..dee330615 100755 --- a/tools/boostrap.sh +++ b/tools/boostrap.sh @@ -1,11 +1,11 @@ #!/bin/bash -TOPDIR=$1 # This should be an absolute path to the repo root +BTOOLSET=$1 # The platform toolchain name (gcc, clang, mingw, ...) BLIBS=$2 # A comma-separated list of which boost libs to build -BTOOLSET=$3 # The platform toolchain name (gcc, clang, mingw, ...) -BVARIANT=$4 # release optimization or debug symbols etc -BLINK=$5 # whether to build with shared or static linkage (we like shared) -BTHREADING=$6 # whether to build with thread-safety (we benefit from SINGLE THREADED) +BVARIANT=$3 # release optimization or debug symbols etc +BLINK=$4 # whether to build with shared or static linkage (we like shared) +BTHREADING=$5 # whether to build with thread-safety (we benefit from SINGLE THREADED) +TOPDIR=$6 # This should be an absolute path to the repo root if [ -z $TOPDIR ]; then @@ -127,7 +127,7 @@ run git submodule update --init --recursive libs/date_time run git submodule update --init --recursive libs/smart_ptr run git submodule update --init --recursive libs/bind -run ./bootstrap.sh --prefix=`pwd` --with-libraries=$BLIBS $BSFLAGS +run ./bootstrap.sh --prefix=$PWD --libdir=$PWD/lib --with-libraries=$BLIBS $BSFLAGS run ./b2 threading=$BTHREADING variant=$BVARIANT link=$BLINK address-model=64 ### Install should go right into this local submodule repository diff --git a/wsockd/Makefile.am b/wsockd/Makefile.am index 9a11fe9de..b8c8429d3 100644 --- a/wsockd/Makefile.am +++ b/wsockd/Makefile.am @@ -1,11 +1,18 @@ +AM_CPPFLAGS = \ + -I$(top_srcdir)/include \ + @BOOST_CPPFLAGS@ + +AM_LDFLAGS = \ + -L$(top_srcdir)/rb \ + @BOOST_LDFLAGS@ + + bin_PROGRAMS = wsockd -AM_CPPFLAGS = $(WARNFLAGS) -AM_CPPFLAGS += -isystem $(top_srcdir)/boost/include -AM_CPPFLAGS += -I$(top_srcdir)/include +wsockd_LDADD = \ + -lrb \ + @BOOST_LIBS@ -AM_LDFLAGS = -L$(top_srcdir)/rb -AM_LDFLAGS += -L$(top_srcdir)/boost/lib - -wsockd_SOURCES = wsockd.cc sha1.c -wsockd_LDADD = -lrb -lboost_system +wsockd_SOURCES = \ + wsockd.cc \ + sha1.c