dnl configure.in for BitchX 1.0 dnl Copyright (c) 1999-2001 David Walluck dnl All rights reserved. AC_PREREQ(2.59) AC_INIT AC_CONFIG_SRCDIR([$srcdir/source/irc.c]) topdir="`pwd`" AC_SUBST(topdir) AC_CONFIG_HEADERS(include/defs.h) _VERSION_="BitchX" RELEASE_TAG="bitchx-1.2.1" RELEASE="1.2.1" VERSION_NUMBER="$RELEASE`"$srcdir/gitversion.sh" "$RELEASE_TAG" "$srcdir"`" VERSION="$_VERSION_-$VERSION_NUMBER" AC_DEFINE_UNQUOTED(VERSION_NUMBER, "$VERSION_NUMBER", Define BitchX version number here.) AC_SUBST(VERSION_NUMBER) echo Welcome to the "$VERSION" configuration echo dnl Checks for programs. dnl _AC_EMXOS2 dnl _AC_CYGWIN AC_PROG_CC AC_PROG_INSTALL AM_SANITY_CHECK AC_PROG_LN_S AC_ARG_PROGRAM AC_CHECK_PROG(MAKE, gmake, gmake) if test x"$MAKE" = x""; then AC_CHECK_PROG(MAKE, make, make) fi AC_SUBST(MAKE) AC_PROG_MAKE_SET AC_PROG_GCC_TRADITIONAL AC_ISC_POSIX AC_AIX AC_PROG_AWK dnl Enable -fno-strict-aliasing, if the compiler supports it. dnl Hopefully this is a temporary measure, until the code can be fixed. AC_MSG_CHECKING(whether compiler understands -fno-strict-aliasing) old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-strict-aliasing" AC_TRY_COMPILE([],[], AC_MSG_RESULT(yes), AC_MSG_RESULT(no) CFLAGS="$old_CFLAGS") dnl Checks for libraries. AC_CHECK_LIB(sun, getpwnam, LIBS="-lsun $LIBS",) AC_CHECK_LIB(dgc, inet_addr, LIBS="-ldgc $LIBS",) AC_CHECK_LIB(crypt, crypt, LIBS="-lcrypt $LIBS"; AC_DEFINE(HAVE_CRYPT, 1, Define this if you have a crypt implementation in -lcrypt),) AC_CHECK_LIB(m, pow, LIBS="-lm $LIBS",) dnl Checks for header files. AC_HEADER_DIRENT AC_CHECK_HEADERS([sys/socket.h sys/sockio.h sys/time.h sys/fcntl.h fcntl.h sys/file.h netinet/in.h netdb.h sys/un.h sys/filio.h regex.h arpa/nameser.h dirent.h sys/ndir.h sys/dir.h ndir.h termios.h]) AC_CHECK_HEADERS([net/if.h], [], [], [AC_INCLUDES_DEFAULT #ifdef HAVE_SYS_SOCKET_H #include #endif ]) AC_CHECK_HEADERS([arpa/inet.h resolv.h], [], [], [AC_INCLUDES_DEFAULT #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_ARPA_NAMESER_H #include #endif ]) dnl Checks for declarations. AC_CHECK_DECLARATION(stpcpy, stpcpy, stpcpy, string.h, STPCPY_DECLARED) AC_CHECK_DECLARATION(getpgid, getpgid, [" getpgid"], unistd.h, GETPGID_DECLARED) AC_CHECK_DECLARATION(killpg, killpg, killpg, signal.h, KILLPG_DECLARED) AC_CHECK_DECLARATION(getpass, getpass, getpass, unistd.h, GETPASS_DECLARED) AC_CHECK_DECLARATION(errno, errno, [int?( | )_?_?errno], errno.h, ERRNO_DECLARED) AC_CHECK_DECLARATION(struct linger, struct_linger, [struct( | )*linger], sys/socket.h, STRUCT_LINGER_DECLARED) AC_CHECK_DECLARATION(sun_len, sun_len, sun_len, sys/un.h, HAVE_SUN_LEN) AC_CHECK_DECLS([strsignal, sys_siglist, _sys_siglist], , , [AC_INCLUDES_DEFAULT #include ]) dnl Checks for typedefs, structures, and compiler characteristics. AC_PROG_CC_STDC AC_C_CONST AC_TYPE_UID_T AC_C_INLINE AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_SIGNAL AC_HEADER_TIME AC_CHECK_TYPES([socklen_t], [], [], [ AC_INCLUDES_DEFAULT #ifdef HAVE_SYS_SOCKET_H #include #endif]) AC_CHECK_SIZEOF(unsigned int, 4) if test x"$ac_cv_sizeof_unsigned_int" = x"4"; then AC_DEFINE(UNSIGNED_INT32, 1, Define this if an unsigned int is 32 bits.) else AC_CHECK_SIZEOF(unsigned long, 4) if test x"$ac_cv_sizeof_unsigned_long" = x"4"; then AC_DEFINE(UNSIGNED_LONG32, 1, Define this if an unsigned long is 32 bits.) else AC_DEFINE(UNKNOWN_32INT, 1, Define this if you are unsure what is 32 bits.) fi fi dnl Check for resolver library (used by /NSLOOKUP) AC_CACHE_CHECK([library required for resolver functions], [bx_cv_lib_resolver], [ OLDLIBS="$LIBS" bx_cv_lib_resolver="not found" for reslib in '' '-lresolv' '-lbind' '-lsocket' do LIBS="$reslib $OLDLIBS" AC_LINK_IFELSE([AC_LANG_SOURCE([ #if !defined( __APPLE__ ) #if !defined( BIND_4_COMPAT ) #define BIND_4_COMPAT #endif #else #if !defined( BIND_8_COMPAT ) #define BIND_8_COMPAT #endif #endif AC_INCLUDES_DEFAULT #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_ARPA_NAMESER_H #include #endif #ifdef HAVE_RESOLV_H #include #endif int main() { return res_mkquery(0, 0, 0, 0, 0, 0, 0, 0, 0); }])], [ if test x"$reslib" != x; then bx_cv_lib_resolver="$reslib" else bx_cv_lib_resolver="none required" fi break], []) done LIBS="$OLDLIBS" ]) if test x"$bx_cv_lib_resolver" != x"not found"; then AC_DEFINE(HAVE_RESOLV, 1, Define this if you have the resolv library.) if test x"$bx_cv_lib_resolver" != x"none required"; then LIBS="$bx_cv_lib_resolver $LIBS" fi dnl This is for getting the DNS servers on Windows AC_MSG_CHECKING([for the iphlpapi library]) OLDLIBS="$LIBS" LIBS="-liphlpapi $LIBS" AC_LINK_IFELSE([[ #define WIN32_LEAN_AND_MEAN #include #include int main() { ULONG buflen; GetNetworkParams(0, &buflen); return buflen; }]], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_LIBIPHLPAPI, 1, [Define to 1 if you have the Windows iphlpapi library]) ],[ AC_MSG_RESULT(no) LIBS="$OLDLIBS" ]) else AC_MSG_WARN([No resolver library found, /nslookup will be disabled.]) fi dnl Checks for library functions. AC_FUNC_ALLOCA if test x"$cross_compiling" != x"yes"; then AC_FUNC_GETPGRP AC_FUNC_SETPGRP fi AC_FUNC_STRFTIME AC_CHECK_FUNCS(socket gethostname gettimeofday strtoul strlcpy strlcat stpcpy vsnprintf snprintf setsid strerror uname getrusage sysconf getpgid killpg getlogin realpath fchdir getpass fpathconf getpwent setvbuf select mkstemp memmove setenv) dnl Need these for Solaris AC_CHECK_FUNC(gethostbyname,, AC_CHECK_LIB(nsl, gethostbyname, LIBS="-lnsl $LIBS",)) AC_CHECK_FUNC(connect,, AC_CHECK_LIB(socket, connect, LIBS="-lsocket $LIBS",)) AC_CHECK_FUNC(inet_aton, AC_DEFINE(HAVE_INET_ATON, 1, Define this if inet_aton is in the system), AC_CHECK_LIB(resolv, inet_aton, LIBS="-lresolv $LIBS" ; AC_DEFINE(HAVE_INET_ATON, 1, Define this if inet_aton is in the system.),)) dnl Checking this produces a warning from autoconf. if test x"$cross_compiling" = x"no"; then AC_FUNC_SETVBUF_REVERSED else AC_MSG_RESULT(cross-compiling - assuming setvbuf params are not reversed) fi dnl Check for non-blocking type. This is from ircii-2.8.2's configure.in. dnl (c) 1993 Matthew Green dnl (c) 1999 David Walluck AC_CACHE_CHECK(for non-blocking type, ac_cv_non_blocking_type, [ changequote(<<, >>)dnl << precode='#include #include #include #include #include #include typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); int alarmed(void) { exit(1); } int main() { char b[12], x[32]; int f, l = sizeof(x); f = socket(AF_INET, SOCK_DGRAM, 0); if (f >= 0 && (fcntl(f, F_SETFL,' postcode=') != -1)) { signal(SIGALRM, (sighandler_t)alarmed); alarm(3); recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l); alarm(0); exit(0); } exit(1); }' >> changequote([, ])dnl code="$precode O_NONBLOCK $postcode" AC_TRY_RUN($code, ac_cv_non_blocking_type="posix", code="$precode O_NDELAY $postcode" AC_TRY_RUN($code, ac_cv_non_blocking_type="bsd", code="$precode FIONBIO $postcode" AC_TRY_RUN($code, ac_cv_non_blocking_type="unknown", ac_cv_non_blocking_type="cross-compiling", :), :), :)]) case "$ac_cv_non_blocking_type" in posix) AC_DEFINE(NBLOCK_POSIX, 1, Define this if your non-blocking type is posix.) ;; bsd) AC_DEFINE(NBLOCK_BSD, 1, Define this if your non-blocking type is bsd.) ;; sysv) AC_DEFINE(NBLOCK_SYSV, 1, Define this if your non-blocking type is sysv.) ;; unknown) AC_MSG_WARN(cannot find a working non-blocking system) ;; cross) AC_MSG_WARN(cross-compiling: assuming non-blocking is posix) AC_DEFINE(NBLOCK_POSIX, 1, Define this if your non-blocking type is posix.) ;; esac AH_VERBATIM([NON_BLOCKING_CONNECTS], [/* * Are we doing non-blocking connects? Note: SOCKS support precludes us from * using this feature. */ #if (defined(NBLOCK_POSIX) || defined(NBLOCK_BSD) || defined(NBLOCK_SYSV)) && !defined(SOCKS) #define NON_BLOCKING_CONNECTS #endif]) dnl This is all stolen from perl-4.036's Configure. larry is god. dnl Well, most of it. Couple of tweaks to make it work better. dnl This fails on cygwin, and probably emxos2, because the header files aren't dnl in the standard "/usr/include" location. There's got to be a better way. AC_CACHE_CHECK(for a list of signal names, ac_cv_signal_names, [ if test x"$ac_cv_have_decl_sys_siglist" != x"yes"; then if test x"$ac_cv_have_decl__sys_siglist" != x"yes"; then if test x"$ac_cv_have_decl_strsignal" != x"yes"; then if test -f "$srcdir/include/sig.inc"; then rm -f $srcdir/include/sig.inc fi set X `cat $oldincludedir/signal.h $oldincludedir/sys/signal.h \ $oldincludedir/linux/signal.h 2>&1 | sed 's/^#[ ]*/#/' | \ $AWK '$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $3 ~ /^[1-9][0-9]*$/ { [sig[$3] = substr($2,4,20)] if (max < $3 && $3 < 60) { max = $3 } } END { for (i=1; i<=max; i++) { [if (sig[i] == "")] printf "%d", i else [printf "%s", sig[i]] if (i < max) printf " " } printf "\n" } '` shift case "$#" in 0) set X `kill -l 2> /dev/null` shift case "$#" in 0) if test -f /bin/csh; then set X `/bin/csh -cf 'kill -l'` shift case "$#" in 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ;; esac fi ;; esac ;; esac sig_name="ZERO $*" [ echo "$sig_name" | sed -e 's/$/"};/' -e 's/ /", "/g' -e 's/^/char *sys_siglist[] = { "/' -e 's/};/, NULL};/' > $srcdir/include/sig.inc ] if test -f "$srcdir/include/sig.inc"; then ac_cv_signal_names="sig.inc" else ac_cv_signal_names="none" fi else ac_cv_signal_names="strsignal" fi else ac_cv_signal_names="_sys_siglist" fi else ac_cv_signal_names="sys_siglist" fi ]) if test x"$ac_cv_signal_names" = x"none"; then AC_MSG_WARN(something is wrong. Check to see that the file "$srcdir/include/sig.inc" exists.) fi dnl Check for GTK support. AC_MSG_CHECKING(whether to enable GTK support) AC_ARG_WITH(gtk, [ --with-gtk Enable GTK support], [ case "$withval" in yes) AC_MSG_RESULT(yes) AM_PATH_GLIB(1.2.0,,AC_MSG_ERROR(AC_MSG_ERROR(cannot find GLIB))) AM_PATH_GTK(1.2.0,,AC_MSG_ERROR(AC_MSG_ERROR(cannot fing GTK)), gthread) AC_CHECK_HEADER(pthread.h,,AC_MSG_ERROR(cannot find pthread.h)) AC_CHECK_LIB(pthread, pthread_attr_init, PTHREAD_LIBS="-lpthread", AC_CHECK_LIB(pthreads, pthread_attr_init, PTHREAD_LIBS="-lpthreads", AC_CHECK_LIB(c_r, pthread_attr_init, PTHREAD_LIBS="-lc_r", AC_MSG_ERROR(cannot find pthreads)))) AM_PATH_GDK_IMLIB(1.9.4, AC_DEFINE(USE_IMLIB, 1, Define this if you want imlib support.), AC_MSG_ERROR(cannot find imlib)) AM_PATH_GNOME(1.0.0, AC_DEFINE(USE_GNOME, 1, Define this if you want GNOME support.) [AC_TRY_RUN([ int main() { int major = 1; int minor = 0; int micro = 10; if ($gnome_major_version > major || $gnome_minor_version > minor || $gnome_micro_version >= micro) exit(0); exit(1); } ],[ if test x"$gnome_micro_version" = x"10"; then AC_MSG_ERROR(GNOME $gnome_major_version.$gnome_minor_version.$gnome_micro_version is broken. Please upgrade gnome-libs.) fi AC_DEFINE(HAVE_NEW_ZVT, 1, Define this if your ZVT is newer than 1.0.10.)], , AC_MSG_WARN(cross-compiling: assuming new ZVT); AC_DEFINE(HAVE_NEW_ZVT, 1, Define this if your ZVT is newer than 1.0.10.))], AC_MSG_ERROR(GNOME not found or too old)) AC_MSG_CHECKING(for ZVT) ZVT_LIBS="`$GNOME_CONFIG $gnome_config_args --libs-only-l zvt`" if test x"$ZVT_LIBS" != x""; then AC_MSG_RESULT(yes) AC_DEFINE(USE_ZVT, 1, Define this if you want ZVT support.) AC_MSG_CHECKING(whether ZVT depends on gnome-libs) AC_TRY_RUN([ int main() { int major = 1; int minor = 2; int micro = 0; if ($gnome_major_version >= major && $gnome_minor_version >= minor) exit(0); exit(1); }],[ AC_MSG_RESULT(no) NEED_GNOME=0 ], [AC_MSG_RESULT(yes) NEED_GNOME=1 ], [AC_MSG_WARN(cross-compiling: assuming yes) NEED_GNOME=1 ]) else AC_MSG_RESULT(no) AC_MSG_ERROR(cannot find ZVT) fi if test x"$NEED_GNOME" = x"1"; then G_CFLAGS="$GLIB_CFLAGS $GTK_CFLAGS $GDK_IMLIB_CFLAGS $GNOME_CFLAGS $ZVT_CFLAGS" G_LIBS="$GLIB_LIBS $GTK_LIBS $PTHREAD_LIBS $GDK_IMLIB_LIBS $GNOME_LIBS $ZVT_LIBS" else G_CFLAGS="$GLIB_CFLAGS $GTK_CFLAGS $GDK_IMLIB_CFLAGS $ZVT_CFLAGS" G_LIBS="$GLIB_LIBS $GTK_LIBS $PTHREAD_LIBS $GDK_IMLIB_LIBS $ZVT_LIBS" fi CFLAGS="$CFLAGS $G_CFLAGS" LIBS="$G_LIBS $LIBS" VERSION="gtk$VERSION" _VERSION_="gtk$_VERSION_" AC_DEFINE(GTK, 1, Define this if you want GTK support.) X_O="X.o" AC_SUBST(X_O) gtk=1 GUI_SRCS="gtkbitchx.c" ;; no) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) dnl Check for Win32 GUI support. AC_MSG_CHECKING(whether to enable Win32 GUI support) AC_ARG_WITH(win, [ --with-win Enable Win32 GUI support], [ case "$withval" in yes) AC_MSG_RESULT(yes) VERSION="Win$VERSION" _VERSION_="Win$_VERSION_" dnl Here we could just use LDFLAGS="-mwindows", but I prefer this way dnl so that we know exactly what's going on. LIBS="-luser32 -lgdi32 -Wl,--subsystem,windows $LIBS" win32=1 GUI_SRCS="winbitchx.c" ;; no) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) AH_VERBATIM([WIN32], [/* WIN32 is true if we are building a GUI client under Windows NT */ #if defined(GUI) && defined(WINNT) #define WIN32 1 #endif]) dnl Check for PM support. AC_MSG_CHECKING(whether to enable OS/2 PM support) AC_ARG_WITH(pm, [ --with-pm Enable OS/2 PM support], [ case "$withval" in yes) AC_MSG_RESULT(yes) VERSION="PM$VERSION" _VERSION_="PM$_VERSION_" AC_DEFINE(__EMXPM__, 1, Define this is you want OS/2 PM support.) LIBS="pmbitchx.def pmbitchx.res -ldw $LIBS" pm=1 GUI_SRCS="pmbitchx.c" ;; no) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) dnl Check for sound support. AC_MSG_CHECKING(whether to enable sound support) AC_ARG_ENABLE(sound, [ --enable-sound Enable sound support (Currently requires GUI BitchX)], [ case "$enableval" in yes) AC_MSG_RESULT(yes) AC_DEFINE(SOUND, 1, Define this is you want sound support via ESD.) if test x"$pm" = x"1"; then LIBS="-lmmpm $LIBS" else if test x"$gtk" = x"1"; then AM_PATH_ESD(0.2.5, CFLAGS="$CFLAGS $ESD_CFLAGS"; LIBS="$LIBS $ESD_LIBS", AC_MSG_ERROR(AC_MSG_ERROR(cannot find ESD))) AM_PATH_AUDIOFILE(0.1.5, CFLAGS="$CFLAGS $AUDIOFILE_CFLAGS"; LIBS="$LIBS $AUDIOFILE_LIBS", AC_MSG_ERROR(AC_MSG_ERROR(cannot find AUDIOFILE))) else if test x"$win32" = x"1"; then : dnl -lmmsystem already included in link else AC_MSG_RESULT(no) AC_MSG_ERROR(sound support can only be enabled in GUI BitchX.) fi fi fi ;; no) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) dnl Check for SSL support. AC_MSG_CHECKING(whether to enable SSL support) AC_ARG_WITH(ssl, [[ --with-ssl[=PATH] Enable SSL support (enabled by default if OpenSSL found)]], [], [with_ssl=check]) case "$with_ssl" in yes) AC_MSG_RESULT(yes) ;; check) AC_MSG_RESULT(if available) ;; no) AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT(yes) CFLAGS="$CFLAGS -I${with_ssl}/include" LDFLAGS="$LDFLAGS -L${with_ssl}/lib" with_ssl=yes ;; esac case "$with_ssl" in yes|check) AC_CHECK_LIB([crypto], [ERR_get_error], [], [], []) AS_IF([test x"$ac_cv_lib_crypto_ERR_get_error" = x"yes"], [AC_CHECK_LIB([ssl], [SSL_accept], [], [], [])], []) AS_IF([test x"$ac_cv_lib_ssl_SSL_accept" != x"yes"], [AS_IF([test x"$with_ssl" = x"yes"], [AC_MSG_FAILURE([--with-ssl given, but could not find OpenSSL.])], [AC_MSG_WARN([OpenSSL not found, will not have SSL support.])]) ], []) ;; esac dnl Now that we've checked for PM and GTK support, make sure dnl that we "#define GUI" and and that we don't build wserv or dnl scr-bx for PMBitchX or GTKBitchX, and substitue the BitchX dnl version now that we have the correct one. if test -n "$gtk" -o -n "$pm" -o -n "$win32"; then AC_DEFINE(GUI, 1, Define this if you want GUI support (PM or GTK or Win32).) gui=1 else if test -z "$CYGWIN" -a -z "$EMXOS2" -a -z "$MINGWIN32"; then EXTRAS="wserv scr-bx" INSTALL_EXTRAS="installwserv installscr-bx" fi fi AC_SUBST(VERSION) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", Define long BitchX version here.) AC_SUBST(_VERSION_) AC_DEFINE_UNQUOTED(_VERSION_, "$_VERSION_", Define short BitchX version here.) AC_SUBST(EXTRAS) AC_SUBST(INSTALL_EXTRAS) dnl Check for setupterm/tgetent. *DO NOT* check on EMXOS2 because dnl term support is built-in. if test -z "$EMXOS2" -a -z "$MINGWIN32"; then AC_MSG_CHECKING(whether to use use termcap in preference to terminfo) AC_ARG_WITH(termcap, [ --with-termcap Use termcap in preference to terminfo], [ AC_MSG_RESULT(yes) AC_SEARCH_LIBS([tgetent], [termcap termlib curses], [], AC_MSG_ERROR([Cannot find termcap.]))], [ AC_MSG_RESULT(no) AC_SEARCH_LIBS([setupterm], [tinfo terminfo ncurses curses mytinfo], AC_DEFINE(HAVE_TERMINFO, 1, [Define this if you have terminfo support.]), [AC_MSG_WARN([Cannot find terminfo, falling back to termcap.]) AC_SEARCH_LIBS([tgetent], [termcap termlib curses], [], AC_MSG_ERROR([Cannot find terminfo or termcap - try installing the ncurses-dev / ncurses-devel package.]))])]) AC_CHECK_FUNCS([tparm]) AC_CHECK_HEADERS([ncurses.h ncurses/ncurses.h curses.h], [break]) AC_CHECK_HEADERS([ncurses/termcap.h termcap.h ncurses/term.h term.h], [], [], [[#if defined(HAVE_NCURSES_H) #include #elif defined(HAVE_NCURSES_NCURSES_H) #include #elif defined(HAVE_CURSES_H) #include #endif ]]) fi dnl Check for Tcl. AC_MSG_CHECKING(whether to enable Tcl support) AC_ARG_WITH(tcl, [ --with-tcl Enable Tcl support], [ case "$withval" in yes) AC_MSG_RESULT(yes) AC_DEFINE(WANT_TCL, 1, Define this if you want Tcl support.) dnl For some reason, panasync's system needs this check. AC_CHECK_SHLIB AC_CHECK_HEADER(tcl.h, AC_DEFINE(HAVE_TCL_H, 1, Define if you have the header file.), AC_MSG_CHECKING(for alternate tcl.h) for startdir in /usr/include /usr/local /opt do for file in `(find $startdir -name tcl.h | sort -r) 2>/dev/null` do if test "$TCL_INC" = ""; then genname=`echo $file | grep generic` if test "$genname" = ""; then TCL_INC=`echo $file | sed s@tcl.h@@` TCL_INC="-I$TCL_INC" AC_MSG_RESULT(yes) fi fi done done if test "$TCL_INC" = ""; then AC_MSG_RESULT(no) AC_MSG_ERROR(cannot find tcl.h) fi CFLAGS="$CFLAGS $TCL_INC") dnl A lot of people can't seem to install Tcl correctly, for whatever dnl reason, including cygwin. AC_CHECK_LIB(tcl, Tcl_SetVar, TCL_LIBS="-ltcl", AC_MSG_CHECKING(for alternate libtcl) for startdir in /lib /usr/lib /usr/local /opt do for file in `(find $startdir -name "libtcl*" | sort -r) 2>/dev/null` do if test "$TCL_LIBS" = ""; then for num in 1 2 3 4 5 6 7 8 9 do testname=`echo $file | cut -f $num -d / | grep libtcl` stubname=`echo $testname | grep libtclstub` if test "$stubname" = ""; then if test "$testname" != ""; then [[tcllib=`echo $testname | sed s@.so.[0-9]@@`]] tcllib=`echo $tcllib | sed s@.so@@` tcllib=`echo $tcllib | sed s@.a@@` tcllib=`echo $tcllib | sed s@libtcl@tcl@` tclpath=`echo $file | sed s@"$testname"@@` TCL_LIBS="-l$tcllib -L$tclpath" AC_MSG_RESULT(yes) fi fi done fi done done) if test "$TCL_LIBS" = ""; then AC_MSG_RESULT(no) AC_MSG_ERROR(cannot find Tcl) fi LIBS="$TCL_LIBS $LIBS" AC_SUBST(TCL_LIBS) AC_MSG_CHECKING(for $srcdir/source/tcl.c) if test -f "$srcdir/source/tcl.c"; then AC_MSG_RESULT(yes) TCL_SRCS="\$(srcdir)/tcl.c" AC_SUBST(TCL_SRCS) TCL_OBJS="tcl.o" AC_SUBST(TCL_OBJS) dnl If we have tcl.c, then remove tcl.o, or tcl.c may not get dnl compiled rm -f source/tcl.o dnl To be safe, remove tcl.o from here, too. rm -f $srcdir/source/tcl.o else AC_MSG_RESULT(no) TCL_SRCS="" AC_SUBST(TCL_SRCS) AC_MSG_CHECKING(for source/tcl.o) if test -f "source/tcl.o"; then dnl tcl.o already here, so don't over-write with tcl-linux.o. got_tcl_objs=1 else mkdir source 2>/dev/null cp -f $srcdir/tcl-linux.o source/tcl.o 2>/dev/null if test -f "source/tcl.o"; then got_tcl_objs=1 fi fi if test x"$got_tcl_objs" = x"1"; then AC_MSG_RESULT(yes) TCL_OBJS="tcl.o" AC_SUBST(TCL_OBJS) else AC_MSG_RESULT(no) AC_MSG_ERROR(cannot find "$srcdir/source/tcl.c" or "source/tcl.o") fi fi ;; no) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) dnl Work out UNIX mail dir and check for QMAIL support. AC_MSG_CHECKING(for unix mail directory) AC_ARG_WITH(maildir, [ --with-maildir=PATH Enable QMAIL support], [ case "$withval" in no) AC_MSG_RESULT(none) ;; *) AC_MSG_RESULT($withval) AC_DEFINE(HAVE_QMAIL, 1, Define this if you want QMAIL support.) AC_DEFINE_UNQUOTED(UNIX_MAIL, "$withval", Define your maildir here.) ;; esac ], for mdir in /var/spool/mail /usr/spool/mail /var/mail /usr/mail; do if test -d "$mdir"; then AC_MSG_RESULT($mdir) AC_DEFINE_UNQUOTED(UNIX_MAIL, "$mdir", Define your maildir here.) break fi done if test ! -d "$mdir"; then AC_MSG_RESULT(none) fi ) dnl Check for default server list. AC_MSG_CHECKING(for default server list) AC_ARG_WITH(default-server, [ --with-default-server=SERVERNAME[:PORT:PASSWORD:NICK:SERVERNETWORK] Connect to SERVERNAME by default Additional servers can be separated by a comma], [ case "$withval" in yes) AC_MSG_RESULT(none) ;; no) AC_MSG_RESULT(none) ;; *) addl_servers="`echo "$withval" | sed -e 's/,/ /g'`" AC_MSG_RESULT($addl_servers) AC_DEFINE_UNQUOTED(DEFAULT_SERVER, "$addl_servers", Define a list of default servers here.) ;; esac ], AC_MSG_RESULT(none) ) AC_MSG_CHECKING(whether to enable IPv6 support) AC_ARG_ENABLE(ipv6, [ --enable-ipv6 Enable IPv6 support (Linux only)], [ case "$enableval" in yes) AC_LINK_IFELSE([AC_LANG_SOURCE([[ #include #include #include int main() { struct sockaddr_in6 sin6; sin6.sin6_family = AF_INET6; sin6.sin6_addr = in6addr_any; return sin6.sin6_addr.s6_addr[0]; }]])], [ ac_cv_ipv6_type="native" ], [ if test -d "/usr/inet6/include"; then CFLAGS="$CFLAGS -I/usr/inet6/include" LIBS="-L/usr/inet6/lib -linet6 $LIBS" ac_cv_ipv6_type="libinet6" else if test -d "/usr/local/v6/lib"; then LIBS="-L/usr/local/v6/lib -linet6 $LIBS" ac_cv_ipv6_type="freebsd+kame" else ac_cv_ipv6_type="none" fi fi]) if test x"$ac_cv_ipv6_type" != x"none"; then AC_MSG_RESULT(yes ($ac_cv_ipv6_type)) AC_DEFINE(IPV6, 1, Define this if you want IPV6 support.) else AC_MSG_RESULT(none found) fi ;; no) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) dnl Check for SOCKS support. AC_MSG_CHECKING(whether to enable SOCKS support) AC_ARG_WITH(socks, [ --with-socks=4|5 Enable external SOCKS4/SOCKS5 support], [ case "$withval" in yes) AC_MSG_ERROR(please specify SOCKS4 or SOCKS5) ;; no) AC_MSG_RESULT(no) ;; 5) AC_MSG_RESULT(yes) AC_DEFINE(SOCKS, 1, Define this if you want SOCKS support.) AC_CHECK_LIB(socks5, SOCKSconnect, LIBS="-lsocks5 $LIBS", AC_MSG_ERROR(cannot find SOCKS5)) ;; 4) AC_MSG_RESULT(yes) AC_DEFINE(SOCKS, 1, Define this if you want SOCKS support.) CFLAGS="$CFLAGS -Dconnect=Rconnect -Dgetsockname=Rgetsockname -Dgetpeername=Rgetpeername -Dbind=Rbind -Daccept=Raccept -Dlisten=Rlisten -Dselect=Rselect" AC_CHECK_LIB(socks, Rconnect, LIBS="-lsocks $LIBS", AC_MSG_ERROR(cannot find SOCKS4)) ;; esac ], AC_MSG_RESULT(no) ) dnl Check for CD-ROM support. AC_MSG_CHECKING(whether to enable CD-ROM support) AC_ARG_ENABLE(cdrom, [ --enable-cdrom Enable CD-ROM support (tested on Linux only)], [ case "$enableval" in yes) case "$(uname -s)" in Linux) AC_MSG_RESULT(yes) CD_SRCS="cdrom.c" CD_OBJS="cdrom.o" AC_SUBST(CD_SRCS) AC_SUBST(CD_OBJS) AC_DEFINE(WANT_CD, 1, Define this if you want CD-ROM support.) ;; *) AC_MSG_RESULT(no (cdrom support can currently be enabled on Linux only)) ;; esac ;; no) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) dnl Check for dmalloc. AC_MSG_CHECKING(whether to enable dmalloc debugging support) AC_ARG_ENABLE(debug, [ --enable-debug Enable dmalloc debugging support (console BX only)], [ case "$enableval" in yes) if test x"$gui" != x"1"; then AC_MSG_RESULT(yes) AC_CHECK_LIB(dmalloc, dmalloc_debug, CFLAGS="$CFLAGS -O -g -DMEM_DEBUG" LIBS="-ldmalloc $LIBS", AC_MSG_ERROR(cannot find dmalloc)) else AC_MSG_RESULT(no) fi ;; no) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) dnl Check for plugin support and which plugins to build. AC_MSG_CHECKING(whether to enable plugin support) AC_ARG_WITH(plugins, [[ --with-plugins[=LIST] Enable plugin support LIST is a comma separated list of plugins to build If none are specified, all available plugins are built]], [ case "$withval" in yes | all) AC_MSG_RESULT(yes) AC_CHECK_SHLIB AC_CHECK_PLUGIN_SUPPORT addl_plugins="`sed -n -e '/^#PLUGINS = /s///p' -e '/^#PLUGINS/q' < $srcdir/dll/Makefile.in`" AC_CHECK_PLUGINS ;; no) AC_MSG_RESULT(not building with plugin support - you will not be able to use plugins) ;; *) AC_MSG_RESULT(yes) AC_CHECK_SHLIB AC_CHECK_PLUGIN_SUPPORT addl_plugins="`echo "$withval" | sed -e 's/,/ /g'`" AC_CHECK_PLUGINS ;; esac ], AC_MSG_RESULT(not building with plugin support - you will not be able to use plugins) ) if test -z "$SHLIB_LD"; then SHLIB_LD="$CC -shared" fi if test -z "$SHLIB_SUFFIX"; then SHLIB_SUFFIX=".so" fi AC_SUBST(SHLIB_CFLAGS) AC_SUBST(SHLIB_LD) AC_SUBST(SHLIB_SUFFIX) dnl Finish up dnl Add -Wall to our CFLAGS if we're using gcc if test x"$GCC" = x"yes" -a -z "`echo "$CFLAGS" | grep \\\-Wall`"; then CFLAGS="$CFLAGS -Wall" fi LIBS="`echo "$LIBS" | sed -e 's/-rdynamic//g'`" dnl Remove dupes in LIBS and CFLAGS NEW_LIBS="" for LIB_IN in $LIBS; do for LIB_OUT in $NEW_LIBS; do if test x"$LIB_OUT" = x"$LIB_IN"; then LIB_IN="" break fi done NEW_LIBS="$NEW_LIBS $LIB_IN" done LIBS="$NEW_LIBS" NEW_CFLAGS="" for CFLAG_IN in $CFLAGS; do for CFLAG_OUT in $NEW_CFLAGS; do if test x"$CFLAG_OUT" = x"$CFLAG_IN"; then CFLAG_IN="" break fi done NEW_CFLAGS="$NEW_CFLAGS $CFLAG_IN" done CFLAGS="$NEW_CFLAGS" RM="rm -f" CP="cp -f" MV="mv -f" GZIP_ENV="--best" BZIP2="-9 --repetitive-best" dnl Should I keep this or not? if test -n "$CYGWIN" -o -n "$EMXOS2" -o -n "$MINGWIN32"; then bindir="\$(IRCLIB)" INSTALL_IRC="\$(IRCLIB)/\$(_VERSION_)\$(EXEEXT)" IRCLIB="\${prefix}/BitchX" IRCPATH="\$(DEFAULT_CTOOLZ_DIR):\$(DEFAULT_CTOOLZ_DIR)/plugins:.:\$(PLUGINDIR):\$(INSTALL_SCRIPT):\$(IRCLIB)" TRANSLATION_PATH="\$(IRCLIB)/translation" HELPDIR="\$(IRCLIB)/help" INSTALL_WSERV="\$(IRCLIB)/wserv\$(EXEEXT)" INSTALL_SCRBX="\$(IRCLIB)/scr-bx\$(EXEEXT)" INSTALL_SCRIPT="\$(IRCLIB)/script" PLUGINDIR="\$(IRCLIB)/plugins" DEFAULT_CTOOLZ_DIR="/PROGRA~1/BitchX" DEFAULT_MSGLOGFILE="BitchX.awy" DEFAULT_BITCHX_HELP_FILE="BitchX.hlp" DEFAULT_SCRIPT_HELP_FILE="BitchX.hlp" DEFAULT_BITCHX_KICK_FILE="BitchX.kck" DEFAULT_BITCHX_KILL_FILE="BitchX.kil" DEFAULT_BITCHX_QUIT_FILE="BitchX.qt" DEFAULT_BITCHX_IRCNAME_FILE="BitchX.nam" WINNT_INSTALL="\$(INSTALL_DATA) \$(top_srcdir)/doc/BitchX.ico \$(DESTDIR)\$(IRCLIB); \$(INSTALL_DATA) \$(top_srcdir)/doc/BitchX.bat \$(DESTDIR)\$(IRCLIB); \$(INSTALL_DATA) \$(top_srcdir)/doc/bx-rc \$(DESTDIR)\$(IRCLIB); \$(MV) \$(DESTDIR)\$(IRCLIB)/\$(VERSION)\$(EXEEXT) \$(DESTDIR)\$(IRCLIB)/\$(_VERSION_)\$(EXEEXT); \$(RM) \$(DESTDIR)\$(IRCLIB)/\$(_VERSION_).old" HINT_FILE="BitchX.hnt" mandir="\$(IRCLIB)" else INSTALL_IRC="\${bindir}/\$(_VERSION_)\$(EXEEXT)" IRCLIB="\${libdir}/bx" IRCPATH="\$(DEFAULT_CTOOLZ_DIR):\$(DEFAULT_CTOOLZ_DIR)/plugins:.:\$(PLUGINDIR):\$(INSTALL_SCRIPT):\$(IRCLIB)" TRANSLATION_PATH="\$(IRCLIB)/translation" HELPDIR="\$(IRCLIB)/help" INSTALL_WSERV="\$(IRCLIB)/wserv\$(EXEEXT)" INSTALL_SCRBX="\${bindir}/scr-bx\$(EXEEXT)" INSTALL_SCRIPT="\$(IRCLIB)/script" PLUGINDIR="\$(IRCLIB)/plugins" DEFAULT_CTOOLZ_DIR="~/.BitchX" DEFAULT_MSGLOGFILE="BitchX.away" DEFAULT_BITCHX_HELP_FILE="BitchX.help" DEFAULT_SCRIPT_HELP_FILE="BitchX.help" DEFAULT_BITCHX_KICK_FILE="BitchX.kick" DEFAULT_BITCHX_KILL_FILE="BitchX.kill" DEFAULT_BITCHX_QUIT_FILE="BitchX.quit" DEFAULT_BITCHX_IRCNAME_FILE="BitchX.ircnames" HINT_FILE="BitchX.hints" fi dnl Maybe someday we can #define these here dnl AC_DEFINE_UNQUOTED(DEFAULT_HELP_PATH, "$HELPDIR", BitchX help directory.) dnl AC_DEFINE_UNQUOTED(IRCLIB, "$IRCLIB", BitchX library path.) dnl AC_DEFINE_UNQUOTED(IRCPATH, "$IRCPATH", BitchX path.) dnl AC_DEFINE_UNQUOTED(SHLIB_SUFFIX, "$SHLIB_SUFFIX", Plugin suffix.) dnl AC_DEFINE_UNQUOTED(PLUGINDIR, "$PLUGINDIR", Plugin directory.) dnl AC_DEFINE_UNQUOTED(SCRIPT_PATH, "$INSTALL_SCRIPT", Script Directory.) dnl AC_DEFINE_UNQUOTED(WSERV_PATH, "$INSTALL_WSERV", Wserv path.) dnl AC_DEFINE_UNQUOTED(TRANSLATION_PATH, "$TRANSLATION_PATH", Translation path.) INCLUDES="-I. -I\$(topdir)/include -I\$(top_srcdir)/include -I\$(srcdir) -I\$(srcdir)/include" AC_SUBST(RM) AC_SUBST(CP) AC_SUBST(MV) AC_SUBST(GZIP_ENV) AC_SUBST(BZIP2) AC_SUBST(INSTALL_IRC) AC_SUBST(IRCLIB) AC_SUBST(IRCPATH) AC_SUBST(TRANSLATION_PATH) AC_SUBST(HELPDIR) AC_SUBST(INSTALL_WSERV) AC_SUBST(INSTALL_SCRBX) AC_SUBST(INSTALL_SCRIPT) AC_SUBST(PLUGINDIR) AC_SUBST(INCLUDES) AC_SUBST(GUI_SRCS) AC_SUBST(HAVE_INET_ATON) AC_DEFINE_UNQUOTED(DEFAULT_CTOOLZ_DIR, "$DEFAULT_CTOOLZ_DIR", Default CToolZ directory.) AC_SUBST(DEFAULT_CTOOLZ_DIR, "$DEFAULT_CTOOLZ_DIR") AC_DEFINE_UNQUOTED(DEFAULT_MSGLOGFILE, "$DEFAULT_MSGLOGFILE", Default MsgLog file.) AC_SUBST(DEFAULT_MSGLOGFILE) AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_HELP_FILE, "$DEFAULT_BITCHX_HELP_FILE", Default BitchX help file.) AC_SUBST(DEFAULT_BITCHX_HELP_FILE) AC_DEFINE_UNQUOTED(DEFAULT_SCRIPT_HELP_FILE, "$DEFAULT_SCRIPT_HELP_FILE", Default BitchX script file.) AC_SUBST(DEFAULT_SCRIPT_HELP_FILE) AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_KICK_FILE, "$DEFAULT_BITCHX_KICK_FILE", Default BitchX kick reasons file.) AC_SUBST(DEFAULT_BITCHX_KICK_FILE) AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_KILL_FILE, "$DEFAULT_BITCHX_KILL_FILE", Default BitchX kill reasons file.) AC_SUBST(DEFAULT_BITCHX_KILL_FILE) AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_QUIT_FILE, "$DEFAULT_BITCHX_QUIT_FILE", Default BitchX quit reasons file.) AC_SUBST(DEFAULT_BITCHX_QUIT_FILE) AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_IRCNAME_FILE, "$DEFAULT_BITCHX_IRCNAME_FILE", Default BitchX ircname file.) AC_SUBST(DEFAULT_BITCHX_IRCNAME_FILE) AC_SUBST(HINT_FILE) AC_SUBST(WINNT_INSTALL) AC_CONFIG_FILES([ Makefile bx-conf/Makefile doc/BitchX.bat dll/Makefile dll/abot/Makefile dll/acro/Makefile dll/amp/Makefile dll/arcfour/Makefile dll/autocycle/Makefile dll/blowfish/Makefile dll/cavlink/Makefile dll/cdrom/Makefile dll/encrypt/Makefile dll/europa/Makefile dll/fserv/Makefile dll/hint/Makefile dll/identd/Makefile dll/nap/Makefile dll/nicklist/Makefile dll/pkga/Makefile dll/possum/Makefile dll/qbx/Makefile dll/qmail/Makefile dll/wavplay/Makefile dll/xmms/Makefile source/Makefile ]) AC_CONFIG_COMMANDS([default],[[ echo timestamp > stamp-h ]],[[]]) AC_OUTPUT echo echo BitchX \(c\) 1996-2015 Colten Edwards et al echo ---------------------------------------------------------- echo echo The configuration script has finished. You should look through echo \"include/config.h\" and make any changes you would like to make. echo echo Now type \"$MAKE\" to compile BitchX.