1dnl Process this file with autoconf to produce a configure script. 2dnl $Id: configure.in,v 1.122 2010/05/30 21:45:35 mrsam Exp $ 3dnl 4dnl Copyright 1998 - 2009 Double Precision, Inc. See COPYING for 5dnl distribution information. 6 7AC_INIT(courier, 0.65, [courier-users@lists.sourceforge.net]) 8 9>confdefs.h # Kill PACKAGE_ macros 10 11AC_CONFIG_SRCDIR(submit.C) 12AC_CANONICAL_SYSTEM 13AM_INIT_AUTOMAKE([foreign]) 14LPATH="$PATH:/usr/local/bin" 15AM_CONFIG_HEADER(config.h) 16 17dnl Checks for programs. 18AC_PROG_MAKE_SET 19AC_PROG_AWK 20AC_PROG_CC 21AC_PROG_CXX 22AC_PROG_INSTALL 23AC_PROG_LN_S 24AC_PATH_PROGS(PERL, perl5 perl, perl, $LPATH) 25AC_LIBTOOL_DLOPEN 26AM_PROG_LIBTOOL 27 28AC_PATH_PROG(PROCMAIL, procmail, /usr/bin/procmail, $LPATH) 29AC_PATH_PROG(CAT, cat, cat, $LPATH) 30AC_PATH_PROG(SED, sed, sed, $LPATH) 31if test "$SED" = "sed" 32then 33 AC_MSG_ERROR(sed not found.) 34fi 35AC_SUBST(SED) 36 37AC_PATH_PROG(SORT, sort, sort, $LPATH) 38if test "$SORT" = "sort" 39then 40 AC_MSG_ERROR(sort not found) 41fi 42AC_SUBST(SORT) 43 44AC_PATH_PROG(SETENV, env, env, $LPATH) 45if test "$SETENV" = "env" 46then 47 AC_MSG_ERROR(env not found.) 48fi 49AC_SUBST(SETENV) 50 51AC_PATH_PROGS(COURIERAUTHCONFIG, courierauthconfig) 52 53if test "$COURIERAUTHCONFIG" = "" 54then 55 AC_MSG_ERROR(courierauthconfig not found) 56fi 57 58CFLAGS="-I$srcdir/.. -I.. -I$srcdir/../afx -I$srcdir/../rfc822 -I$srcdir/libs $CFLAGS" 59CXXFLAGS="-I$srcdir/.. -I.. -I$srcdir/../afx -I$srcdir/../rfc822 -I$srcdir/libs $CXXFLAGS" 60 61AC_ARG_WITH(softlinkdir, [ --with-softlinks=dir:link,dir:link... specify soft links for 62 installation subdirectories.], , 63 ac_configure_args="$ac_configure_args --with-softlinkdir=$prefix") 64 65AC_ARG_WITH(testmode, [ -- This space intentionally left blank --], 66 testmode="$withval", testmode="N") 67 68case "$testmode" in 69y*|y*|1) 70 testmode=1 71 CFLAGS=`echo "$CFLAGS" | sed 's/-O2//'` 72 CXXFLAGS=`echo "$CXXFLAGS" | sed 's/-O2//'` 73 ;; 74*) 75 testmode=0 76 ;; 77esac 78AC_SUBST(testmode) 79 80version=`cat ../version` 81 82COPYRIGHT="Courier $version Copyright 1999-2008 Double Precision, Inc." 83AC_SUBST(COPYRIGHT) 84 85dnl Check whether we should use gdbm, or db. 86# 87# 88# We may need libdl for later, not just shared check. 89# 90 91saveLIBS="$LIBS" 92AC_CHECK_LIB(dl, dlopen, [ LIBDL="-ldl" ]) 93LIBS="$saveLIBS" 94 95dnl Checks for transport libraries. 96 97# 98# Figure out what goes into make dist. Search for all the available 99# module. subdirectories 100# 101 102distdirlist="" 103 104AC_MSG_CHECKING(for available modules) 105for f in $srcdir/module.*/courier.config 106do 107 test -f "$f" || continue 108 dir=`echo $f | sed 's:/courier.config$::;s:.*/::;'` 109 name=` . $f ; echo $NAME` 110 distdirlist="$distdirlist $dir" 111 eval "DIR_$name=$dir" 112done 113AC_MSG_RESULT($distdirlist) 114 115AC_ARG_WITH(transport, 116[ --with-transport='local esmtp ...' 117 Specify list of modules to install], 118 transport="$withval", 119 transport=` 120 for f in $distdirlist 121 do 122 ( . $srcdir/$f/courier.config ; echo $PRIORITY $NAME ) 123 done | sort -n | awk ' { print $2 } ' 124 ` 125 transport=`echo $transport` 126 ac_configure_args="$ac_configure_args --with-transport='$transport'", 127 ) 128 129AC_SUBST(MODE) 130AC_SUBST(transport) 131 132AC_MSG_CHECKING(for modules to compile) 133 134dirlist="" 135for module in $transport 136do 137 name='$DIR_'$module 138 eval "dir=\"$name\"" 139 if test "$dir" = "" 140 then 141 AC_MSG_ERROR(Driver not available: $module) 142 fi 143 dirlist="$dirlist $dir" 144done 145 146AC_MSG_RESULT($dirlist) 147AC_SUBST(dirlist) 148AC_SUBST(distdirlist) 149 150AC_ARG_WITH(db, [], db="$withval", db="") 151 152. ../dbobj.config 153dblibrary="../$dblibrary" 154AC_SUBST(dblibrary) 155 156AC_ARG_WITH(courierlogger, [], courierlogger=$withval, 157 [ 158 AC_MSG_ERROR(--with-courierlogger option missing) 159 ]) 160 161AC_SUBST(courierlogger) 162 163USENSL=no 164AC_CHECK_LIB(socket,socket,result=yes,result=no) 165if test $result = yes; then 166 NETLIBS="-lsocket" 167else 168 AC_CHECK_LIB(socket,socket,result=yes,result=no,-lnsl) 169 if test $result = yes; then 170 NETLIBS = "-lsocket -lnsl" 171 USENSL=yes 172 else 173 AC_CHECK_LIB(socket,connect,result=yes,result=no) 174 if test $result = yes; then 175 NETLIBS="-lsocket" 176 else 177 AC_CHECK_LIB(socket,connect,result=yes,result=no,-lnsl) 178 if test $result = yes; then 179 NETLIBS="-lsocket -lnsl" 180 USENSL=yes 181 fi 182 fi 183 fi 184fi 185 186if test $USENSL != yes; then 187 LIBS="$LIBS $NETLIBS" 188 AC_TRY_LINK_FUNC(inet_addr, [ : ], 189 [ 190 AC_CHECK_LIB(nsl,inet_addr,result=yes,result=no) 191 if test $result = yes; then 192 NETLIBS="$NETLIBS -lnsl" 193 fi 194 ]) 195fi 196 197LIBS="$saveLIBS" 198 199AC_SUBST(NETLIBS) 200 201AC_CHECK_HEADERS(netinet/in.h) 202 203saveLIBS="$LIBS" 204LIBS="$NETLIBS $LIBS" 205LDAPLIBS="" 206AC_CHECK_LIB(lber, ber_scanf, 207 [ LDAPLIBS="-llber" LIBS="-llber $LIBS" ]) 208 209 210 AC_MSG_CHECKING(whether -lresolv is needed for res_query) 211 AC_LINK_IFELSE(AC_LANG_PROGRAM([ 212#include <sys/types.h> 213#if HAVE_NETINET_IN_H 214#include <netinet/in.h> 215#endif 216#include <resolv.h> 217 218void (*func)()= (void (*)())res_query; 219], 220 [ (*func)(); ]), 221 AC_MSG_RESULT(no), 222 [ 223 LIBS="-lresolv $LIBS" 224 225 AC_LINK_IFELSE(AC_LANG_PROGRAM([ 226#if HAVE_NETINET_IN_H 227#include <netinet/in.h> 228#endif 229#include <resolv.h> 230 231void (*func)()= (void (*)())res_query; 232], 233 [ (*func)(); ]), [ 234 LDAPLIBS="-lresolv $LDAPLIBS" 235 HAVE_LDAP=1 236 AC_MSG_RESULT(yes) 237 ], 238 AC_MSG_ERROR(Cannot find function res_query)) 239 ]) 240 241AC_CHECK_LIB(ldap, ldap_open, 242 [ LDAPLIBS="-lldap $LDAPLIBS" ; LIBS="-lldap $LIBS" ]) 243AC_CHECK_FUNC(ldap_search_st, HAVE_LDAP=1, HAVE_LDAP=0) 244LIBS="$saveLIBS" 245 246AC_ARG_WITH(ldapaliasd, [ --without-ldapaliasd ], 247 ldapaliasd="$withval", 248 ldapaliasd="yes") 249 250if test "$ldapaliasd" = "no" 251then 252 LDAPLIBS="" 253 HAVE_LDAP=0 254fi 255 256 257AC_SUBST(LDAPLIBS) 258 259if test $HAVE_LDAP = 1 260then 261 COURIERLDAPALIASD=courierldapaliasd 262 LDAPALIASRC=ldapaliasrc.dist 263fi 264 265AC_SUBST(COURIERLDAPALIASD) 266AC_SUBST(LDAPALIASRC) 267AC_SUBST(HAVE_LDAP) 268 269AC_CONFIG_SUBDIRS( libs filters doc webadmin $dirlist ) 270 271dnl Checks for header files. 272AC_HEADER_STDC 273AC_HEADER_DIRENT 274AC_CHECK_HEADERS(sys/types.h sys/time.h sys/stat.h sys/wait.h sys/file.h sysexits.h unistd.h fcntl.h syslog.h locale.h langinfo.h sys/ioctl.h ldap.h lber.h) 275AC_HEADER_TIME 276 277dnl Checks for typedefs, structures, and compiler characteristics. 278 279AC_PID_T 280AC_TYPE_UID_T 281AC_TYPE_SIGNAL 282 283AC_COMPILE_IFELSE([ 284 285#include <stdio.h> 286 287int main() 288{ 289 setvbuf(stderr, NULL, _IOLBF, BUFSIZ); 290} 291], 292 AC_DEFINE_UNQUOTED(HAVE_SETVBUF_IOLBF,1,[Whether setvbuf(..._IOLBF) works]) 293) 294 295AC_CACHE_CHECK([for socklen_t], 296 courier_cv_hassocklen_t, 297 298AC_COMPILE_IFELSE( 299AC_LANG_SOURCE( [ 300#include <sys/types.h> 301#include <sys/socket.h> 302 303socklen_t sl_t; 304],[ 305 accept(0, 0, &sl_t); 306]), 307 courier_cv_hassocklen_t=yes, 308 courier_cv_hassocklen_t=no) 309) 310 311socklen_t="int" 312 313if test $courier_cv_hassocklen_t = yes 314then 315 : 316else 317 AC_DEFINE_UNQUOTED(socklen_t, int, [ Default definition for socklen_t ]) 318fi 319 320dnl Checks for library functions. 321 322AC_CHECK_FUNCS(strcasecmp strncasecmp setpgrp setgroups initgroups mkfifo setlocale) 323 324AC_CHECK_FUNC(setpgrp, 325 [ 326 AC_FUNC_SETPGRP 327 ] 328) 329 330dnl Other options 331 332AC_ARG_WITH(mailuser, [], mailuser="$withval", 333 AC_MSG_ERROR(--with-mailuser not set)) 334 335AC_ARG_WITH(mailgroup, [], mailgroup="$withval", 336 AC_MSG_ERROR(--with-mailgroup not set)) 337 338AC_ARG_WITH(mailuid, [], mailuid="$withval", 339 AC_MSG_ERROR(--with-mailuid not set)) 340 341AC_ARG_WITH(mailgid, [], mailgid="$withval", 342 AC_MSG_ERROR(--with-mailgid not set)) 343 344AC_SUBST(mailuser) 345AC_SUBST(mailgroup) 346AC_SUBST(mailuid) 347AC_SUBST(mailgid) 348 349AC_ARG_WITH(explicitsync, [ --without-explicitsync Do not manually sync queue files], 350 explicitsync="$withval", explicitsync="Y") 351 352case "$explicitsync" in 353y*|Y*|1*) 354 AC_DEFINE_UNQUOTED(EXPLICITSYNC,1, 355 [ Whether message files are explicitly flushed after creation ]) 356 ;; 357esac 358 359AC_ARG_WITH(dirsync, [ --with-dirsync Manually sync queue file directory], 360 dirsync="$withval", dirsync="N") 361 362case "$dirsync" in 363y*|Y*|1*) 364 AC_DEFINE_UNQUOTED(EXPLICITDIRSYNC,1, 365 [ Whether to sync the parent directory after delivering to a maildir ]) 366 ;; 367esac 368 369 370AC_ARG_WITH(shellpath, [ --with-shellpath=path Initialize PATH to path for .courier programs], 371 SHELLPATH="$withval", 372 SHELLPATH="$prefix/bin:/bin:/usr/bin:/usr/local/bin") 373 374AC_SUBST(SHELLPATH) 375 376# 377# Default POP3 configuration 378# 379 380for f in $AUTHMODULELIST x 381do 382 if test "$f" = "authldap" 383 then 384 AC_ERROR(You must use authdaemon with authldap) 385 fi 386done 387 388# Automake stupidity 389 390if test "$testmode" = "0" 391then 392 INSTALL_PROGRAM='${INSTALL} -m 700' 393 INSTALL_SCRIPT='${INSTALL} -m 700' 394 INSTALL_DATA='${INSTALL} -m 600' 395fi 396 397AC_LANG_CPLUSPLUS 398AC_CACHE_CHECK([if the C++ compiler needs -fhandle-exceptions], 399 ac_cv_need_handlexceptions, 400 401AC_TRY_COMPILE([], 402[ 403throw; 404], ac_cv_need_handlexceptions=no, 405ac_cv_need_handlexceptions=yes) 406) 407 408if test "$ac_cv_need_handlexceptions" = "yes" 409then 410 case "$CXXFLAGS" in 411 *handle-exceptions*) 412 ;; 413 *) 414 CXXFLAGS="-fhandle-exceptions $CXXFLAGS" 415 CXXFLAGS=`echo "$CXXFLAGS" | sed 's/-O2//'` 416 ;; 417 esac 418fi 419AC_LANG_C 420 421AC_TRY_COMPILE( [ 422#include <signal.h> 423#include <string.h> 424#include <stdio.h> 425],[ 426struct sigaction sa; 427 428memset(&sa, 0, sizeof(sa)); 429sa.sa_handler=SIG_IGN; 430sa.sa_flags=SA_NOCLDWAIT; 431sigaction(SIGCHLD, &sa, NULL); 432], AC_DEFINE_UNQUOTED(USE_NOCLDWAIT,1, [ Whether to use SA_NOCLDWAIT ])) 433 434if test x$GCC = xyes 435then 436 CFLAGS="-Wall $CFLAGS" 437fi 438if test x$GXX = xyes 439then 440 CXXFLAGS="-Wall $CXXFLAGS" 441fi 442 443echo "mailuser=$mailuser" >uidgid 444echo "mailgroup=$mailgroup" >>uidgid 445 446if $SHELL -c 'ulimit -v 0 2>/dev/null' 447then 448 ULIMIT='ulimit -v' 449else 450 ULIMIT='ulimit -d' 451fi 452 453AC_SUBST(ULIMIT) 454 455for f in /etc/environment /etc/default/locale /etc/sysconfig/i18n /etc/sysconfig/language 456do 457 if test -f "$f" 458 then 459 INIT_LOCALE=". $f" 460 fi 461done 462 463AC_SUBST(INIT_LOCALE) 464 465# Unless you're the maintainer, reset DEBUGLIB just in case. 466# 467#case `hostname` in 468#*.email-scan.com) 469# ;; 470#*) 471 DEBUGLIB="" 472# ;; 473#esac 474 475AC_SUBST(DEBUGLIB) 476 477test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' 478 479eval "exec_prefix=$exec_prefix" 480eval "datarootdir=$datarootdir" 481eval "bindir=$bindir" 482eval "localstatedir=$localstatedir" 483 484MAILDROP="$bindir/maildrop" 485AC_SUBST(MAILDROP) 486 487AC_DEFINE_UNQUOTED(MAILDROP,"$MAILDROP", 488 [ Whether maildrop is installed ]) 489 490. ../tcpd/couriertls.config 491AC_SUBST(couriertls) 492 493# Some automake roughage 494EXTRABIN='$(extrabin)' 495AC_SUBST(EXTRABIN) 496EXTRAPKGLIB='$(extrapkglib)' 497AC_SUBST(EXTRAPKGLIB) 498EXTRASBIN='$(extrasbin)' 499AC_SUBST(EXTRASBIN) 500SBINSCRIPTS='$(sbinscripts)' 501AC_SUBST(SBINSCRIPTS) 502EXTRACMDLIB='$(extracmdlib)' 503AC_SUBST(EXTRACMDLIB) 504EXTRAWEBMAIL='$(extrawebmail)' 505AC_SUBST(EXTRAWEBMAIL) 506 507. ../rootcerts/rootcertsdir.cnf 508AC_SUBST(cacerts) 509 510AC_OUTPUT(Makefile courier.h \ 511 courierctl.start \ 512 courierd.dist \ 513 dot-qmail-to-dot-courier.pl \ 514 pop3d \ 515 pop3d-ssl \ 516 imapd.rc \ 517 imapd-ssl.rc \ 518 rfcerrheader.txt 519 makealiases \ 520 makehosteddomains \ 521 mkmodules.sh perms.sh setperms.sh \ 522 perftest1 webmaild webmlmrc.dist webmlmd.rc) 523