* Add the /tls1_3 modifier to establish connections use the TLS protocol
[alpine.git] / configure.ac
blobe9f1e855c50df57e74c40de02523fcafc00397e2
1 dnl Process this file with autoconf to produce a configure script.
3 dnl /* ========================================================================
4 dnl  * Copyright 2013-2018 Eduardo Chappa
5 dnl  * Copyright 2006-2008 University of Washington
6 dnl  *
7 dnl  * Licensed under the Apache License, Version 2.0 (the "License");
8 dnl  * you may not use this file except in compliance with the License.
9 dnl  * You may obtain a copy of the License at
10 dnl  *
11 dnl  *     http://www.apache.org/licenses/LICENSE-2.0
12 dnl  *
13 dnl  * ========================================================================
14 dnl  */
16 AC_PREREQ([2.69])
18 AC_REVISION([Rev:26 by chappa@washington.edu])
20 dnl Alpine Version Number is in $srcdir/VERSION
21 AC_INIT([alpine],[m4_esyscmd(tr -d \\n < VERSION)],[chappa@washington.edu])
23 AC_CONFIG_SRCDIR([include/system.h])
24 AC_CONFIG_HEADERS([include/config.h])
25 AC_CONFIG_MACRO_DIR([m4])
26 AM_INIT_AUTOMAKE([foreign nostdinc])
28 AM_MAINTAINER_MODE
30 AC_CANONICAL_HOST
32 AC_LANG(C)
34 AC_MSG_NOTICE([Configuring for $PACKAGE_STRING ($host)])
36 # start out with intent to build Web Alpine
37 WEB_BUILD=web/src/alpined.d
39 dnl CHECK PROGRAMS
41 AC_PROG_CC
42 AX_PROG_CC_FOR_BUILD
43 AC_PROG_CC_STDC
44 AC_PROG_INSTALL
45 AC_PROG_MAKE_SET
46 AC_PROG_LN_S
47 AC_PROG_AWK
48 LT_INIT
49 AC_SUBST([LIBTOOL_DEPS])
51 AC_PATH_PROG(AR, ar, ar)
52 AC_PATH_PROG(RM, rm, rm)
53 AC_PATH_PROG(CP, cp, cp)
54 AC_PATH_PROG(LN, ln, ln)
55 AC_PATH_PROG(LS, ls, ls)
56 AC_PATH_PROG(SED, sed, sed)
57 AC_PATH_PROG(MAKE, make)
59 dnl COMPILE-TIME OPTIONS
61 AM_GNU_GETTEXT_VERSION([0.16.1])
62 AM_GNU_GETTEXT([external])
64 dnl enable dmalloc per http://dmalloc.com
65 dnl NOTE: does not check c-client
66 AC_MSG_CHECKING([option: dmalloc enabled])
67 AC_ARG_ENABLE(dmalloc, AS_HELP_STRING([--enable-dmalloc],[Enable dmalloc debugging]))
68 if test x$enable_dmalloc = "xyes" ; then
69   AC_MSG_RESULT([yes])
70 else
71   AC_MSG_RESULT([no])
74 AC_ARG_WITH(dmalloc-dir,
75   AS_HELP_STRING([--with-dmalloc-dir=DIR],[Root of dmalloc lib/include path]),
76   [
77     if test "x$withval" != "xno" ; then
78       enable_dmalloc = "yes"
79       CPPFLAGS="$CPPFLAGS -I${withval}"
80       LDFLAGS="$LDFLAGS -L${withval}"
81     fi
82   ])
84 if test x$enable_dmalloc = "xyes" ; then
85   AC_DEFINE(ENABLE_DMALLOC, 1, [Define enable dmalloc debugging])
88 dnl set date and hostname
89 ALPINE_datestamp=`date`
90 AC_ARG_WITH(date-stamp,
91   AS_HELP_STRING([--with-date-stamp=DATE],[Set this as the date this program was built. Default: output of `date`]),
92   [ 
93     if test "x$withval" != "xno" ; then
94      ALPINE_datestamp=$withval
95     fi
96   ])
97 AC_SUBST([ALPINE_DATESTAMP], $ALPINE_datestamp)
99 ALPINE_hoststamp=`hostname`
100 AC_ARG_WITH(host-stamp,
101   AS_HELP_STRING([--with-host-stamp=HOST],[Set name of computer for compilation. Default: output of `hostname`]),
102   [ 
103     if test "x$withval" != "xno" ; then
104       ALPINE_hoststamp="$withval"
105     fi
106   ])
107 AC_SUBST([ALPINE_HOSTSTAMP], $ALPINE_hoststamp)
109 dnl set ps command, this test is fragile, but it should mostly work
110 ALPINE_psefcmd="/bin/ps auxww"
111 ALPINE_psfailed="0"
112 ALPINE_PSTEST="-"
113 AC_ARG_WITH(ps-cmd,
114   AS_HELP_STRING([--with-ps-cmd="CMD"],[Use this command to check running commands. Default: /bin/ps auxww]),
115   [
116     if test "x$withval" = "xno" -o "x$withval" = "xyes" -o "x$withval" = "x" ; then
117         withval=$ALPINE_psefcmd
118     fi
119     ALPINE_PSTEST=`$withval | $EGREP "$withval" | $EGREP -v $EGREP`
120     if test -n "$ALPINE_PSTEST" ; then
121        ALPINE_psefcmd="$withval"
122     else
123        ALPINE_psfailed="1"
124        if test "x$ALPINE_psefcmd" != "x$withval" ; then
125           AC_MSG_WARN(failed command $withval. Trying $ALPINE_psefcmd)
126        fi
127     fi
128   ])
129 if test "$ALPINE_psfailed" = "1" -o "$ALPINE_PSTEST" = "-" ; then
130    withval="$ALPINE_psefcmd"
131    ALPINE_PSTEST=`$withval | $EGREP "$withval" | $EGREP -v $EGREP`
132    if test -z "$ALPINE_PSTEST" ; then
133       ALPINE_psfailed="1"
134    else
135       ALPINE_psfailed="0"
136    fi
138 if test "$ALPINE_psfailed" = "0" ; then
139   AC_DEFINE_UNQUOTED([PSEFCMD], "$ALPINE_psefcmd", [ps command which outputs list of running commands])
142 dnl Set default locale dir.
143 case $host in
144     *apple-darwin*)
145       if test -d /opt/local ; then
146         localedir="/opt/local/share/locale"
147       else
148         localedir="\${datadir}/locale"
149       fi
150       ;;
151     *-*-cygwin)
152         localedir="/usr/share"
153       ;;
154     *)  
155       localedir="\${datadir}/locale"
156       ;;
157 esac
159 AC_ARG_WITH(localedir,
160   AS_HELP_STRING([--with-localedir=DIR],[Name of gettext locale directory]),
161   [
162     case $withval in
163       yes)
164         ;;
165       no)
166         ;;
167       *)
168         localedir=$withval
169         ;;
170     esac
171   ])
172 AC_SUBST(localedir, "[$localedir]")
174 # Setup OS-Specific features
175 case "$host" in
176   *darwin*)
177     dnl OS X Universal Binary Support
178     AC_ARG_ENABLE(osx-universal-binaries,
179       AS_HELP_STRING([--enable-osx-universal-binaries],[Produce universal binaries under OS X [[default=no]]]))
180     if test "x$enable_osx_universal_binaries" = "xyes" ; then
181       if test "x$enable_dependency_tracking" != xno ; then
182         AC_MSG_ERROR([--enable-osx-universal-binary requires --disable-dependency-tracking.
183 Please re-run configure with these options:
184     --disable-dependency-tracking --enable-osx-universal-binary])
185       fi
186       if [test -d /Developer/SDKs/MacOSX10.5.sdk] ; then
187         alpine_sysroot=/Developer/SDKs/MacOSX10.5.sdk
188       elif [test -d /Developer/SDKs/MacOSX10.4u.sdk] ; then
189         alpine_sysroot=/Developer/SDKs/MacOSX10.4u.sdk
190       else
191         AC_MSG_ERROR([No suitable MacOSX SDK found.  Make sure Xcode tools are installed])
192       fi
193       ub_cflags="-isysroot $alpine_sysroot -arch ppc -arch i386"
194       ub_ldflags="-Wl,-syslibroot,$alpine_sysroot -arch ppc -arch i386"
195       AM_CFLAGS="$AM_CFLAGS $ub_cflags"
196       AM_LDFLAGS="$AM_LDFLAGS $ub_ldflags"
197       alpine_c_client_cflags="$alpine_c_client_cflags $ub_cflags"
198       alpine_c_client_ldflags="$alpine_c_client_ldflags $ub_ldflags"
199     fi
200     ;;
201 esac
203 AC_ARG_WITH(include-path,
204   AS_HELP_STRING([--with-include-path=PATHS],[Colon-separated list of directories used for include file search]),
205   [
206     case $withval in
207       no)
208         ;;
209       yes)
210         ;;
211       *)
212         new_cppflags="-I`echo ${withval} | ${SED} 's/:/ -I/g'`"
213         CPPFLAGS="$CPPFLAGS ${new_cppflags}"
214         alpine_c_client_cflags="$alpine_c_client_cflags ${new_cppflags}"
215         ;;
216     esac
217   ])
219 AC_ARG_WITH(lib-path,
220   AS_HELP_STRING([--with-lib-path=PATHS],[Colon-separated list of directories used for library search]),
221   [
222     case $withval in
223       no)
224         ;;
225       yes)
226         ;;
227       *)
228         new_ldflags="-L`echo ${withval} | ${SED} 's/:/ -L/g'`"
229         LDFLAGS="$LDFLAGS $new_ldflags"
230         alpine_c_client_ldflags="$alpine_c_client_ldflags ${new_ldflags}"
231         ;;
232     esac
233   ])
235 AC_ARG_WITH(pubcookie,
236   AS_HELP_STRING([--with-pubcookie],[Include support for UW-Pubcookie Web Authentication]),
237   [
238     if test "x$withval" != "xno" ; then
239       WEB_PUBCOOKIE_BUILD=web/src/pubcookie
240     fi
241   ])
244 AC_ARG_WITH(web-bin,
245   AS_HELP_STRING([--with-web-bin=PATH],[Directory to hold Web Alpine component binary files]),
246   [
247     case "$withval" in
248       no)
249         ;;
250       yes)
251         ;;
252       *)
253         WEB_BINDIR=$withval
254         ;;
255     esac
256   ])
258 dnl disable debug, turned on by default
259 AC_MSG_CHECKING([option: debugging is enabled])
260 AC_ARG_ENABLE(debug, AS_HELP_STRING([--disable-debug],[Exclude debug messages from source]))
261 if test x$enable_debug != "xno" ; then
262   AM_CFLAGS="$AM_CFLAGS -g"
263   AC_DEFINE([DEBUG], [1], [Compile in debugging])
264   AC_DEFINE([DEBUGJOURNAL], [1], [Display debug messages in journal])
265   AC_MSG_RESULT([yes])
266 else
267 dnl ??? set AM_CFLAGS to optimize ???
268   AC_MSG_RESULT([no])
271 dnl disable optimization, on by default
272 AC_MSG_CHECKING([option: optimization is enabled])
273 AC_ARG_ENABLE(optimization, AS_HELP_STRING([--disable-optimization],[Exclude optimizing compiler flags]))
274 if test x$enable_optimization != "xno" ; then
275   AC_MSG_RESULT([yes])
276 else
277   CFLAGS="`echo $AM_CFLAGS | ${SED} 's/-O2//'`"
278   alpine_c_client_gccoptlevel="-O0"
279   AC_MSG_RESULT([no])
282 dnl disable mouse support
283 AC_MSG_CHECKING([option: mouse support enabled])
284 AC_ARG_ENABLE(mouse, AS_HELP_STRING([--disable-mouse],[Disable mouse support]))
285 if test x$enable_mouse != "xno" ; then
286   AC_DEFINE([MOUSE], [], [Compile in mouse support])
287   AC_MSG_RESULT([yes])
288 else
289    AC_MSG_RESULT([no])
292 dnl enable quotas
293 AC_MSG_CHECKING([option: quotas enabled])
294 AC_ARG_ENABLE(quotas, AS_HELP_STRING([--enable-quotas],[Enable disk quota checking on startup]))
295 if test x$enable_quotas = "xyes" ; then
296   AC_DEFINE([USE_QUOTAS], [], [Compile in quota check on startup])
297   AC_MSG_RESULT([yes])
298 else
299    AC_MSG_RESULT([no])
302 AC_MSG_CHECKING([option: From changing enabled])
303 AC_ARG_ENABLE(from_changing, AS_HELP_STRING([--disable-from-changing],[Disallow users changing From addresss]))
304 if test x$enable_from_changing != "xno" ; then
305   AC_MSG_RESULT([yes])
306 else
307   AC_DEFINE([NEVER_ALLOW_CHANGING_FROM], [], [Disallow users changing their From address])
308   AC_MSG_RESULT([no])
311 dnl enable background posting support
312 AC_MSG_CHECKING([option: background post enabled])
313 AC_ARG_ENABLE(background-post, AS_HELP_STRING([--disable-background-post],[Disable background posting]))
314 if test x$enable_background_post != "xno" ; then
315   AC_DEFINE([BACKGROUND_POST], [], [Enable background posting support])
316   AC_MSG_RESULT([yes])
317 else
318     AC_MSG_RESULT([no])
321 dnl enable keyboard locking support
322 AC_MSG_CHECKING([option: keyboard lock enabled])
323 AC_ARG_ENABLE(keyboard-lock, AS_HELP_STRING([--disable-keyboard-lock],[Disable keyboard locking]))
324 if test x$enable_keyboard_lock != "xno" ; then
325   AC_DEFINE([KEYBOARD_LOCK], [], [Enable keyboard lock support])
326   AC_MSG_RESULT([yes])
327 else
328   AC_MSG_RESULT([no])
331 dnl enable from encoding support
332 AC_MSG_CHECKING([option: from encoding enabled])
333 AC_ARG_ENABLE(from-encoding, AS_HELP_STRING([--enable-from-encoding],[Enable From encoding in sent messages]))
334 if test x$enable_from_encoding = "xyes" ; then
335   AC_DEFINE([ENCODE_FROMS], [], [Enable From address encoding in sent messages])
336   AC_MSG_RESULT([yes])
337 else
338   AC_MSG_RESULT([no])
341 dnl OPTION: name of local submission agent
342 dnl         Might not be sendmail, but it MUST speak SMTP on stdin/stdout
343 AC_ARG_WITH(smtp-msa,
344   AS_HELP_STRING([--with-smtp-msa=PATH],[Local Mail Submission Agent (sendmail)]),
345     [
346       case "$withval" in
347         no)
348           ;;
349         yes)
350           AC_PATH_PROG(SENDMAIL, sendmail, "", $PATH:/usr/sbin:/usr/lib)
351           ;;
352         *)
353           SENDMAIL=$withval
354           ;;
355       esac
356     ],
357     [
358           AC_PATH_PROG(SENDMAIL, sendmail, "", $PATH:/usr/sbin:/usr/lib)
359     ])
360 if test -n "$SENDMAIL" ; then
361     AC_DEFINE_UNQUOTED([SENDMAIL], "$SENDMAIL", [Local mail submission agent])
364 dnl OPTION: local msa arguments
365 smtp_msa_flags="-bs -odb -oem"
366 AC_ARG_WITH(smtp-msa-flags,
367   AS_HELP_STRING([--with-smtp-msa-flags=FLAGS],[MSA flags for SMTP on stdin/stdout (-bs -odb -oem)]),
368   [
369     if test "x$withval" != "xno" ; then
370       smtp_msa_flags=$withval
371     fi
372   ])
373 AC_DEFINE_UNQUOTED([SENDMAILFLAGS], "$smtp_msa_flags", [Local MSA flags for SMTP on stdin/stdout])
375 dnl OPTION: name of local news posting agent and flags
376 npa="inews"
377 AC_ARG_WITH(npa,
378   AS_HELP_STRING([--with-npa=PATH],[Posting agent when no nntp-servers defined (inews)]),
379     [
380       case "$withval" in
381         no)
382           ;;
383         yes)
384           AC_PATH_PROG(NPA_PROG, inews, "", $PATH:/usr/sbin:/usr/lib)
385           ;;
386         *)
387           NPA_PROG=$withval
388           ;;
389       esac
390     ],
391     [
392           AC_PATH_PROG(NPA_PROG, inews, "", $PATH:/usr/sbin:/usr/lib)
393     ])
395 npa_flags="-h"
396 AC_ARG_WITH(npa-flags,
397   AS_HELP_STRING([--with-npa-flags=FLAGS],[Flags to allow posting via local agent (-h)]),
398   [
399     if test "x$withval" != "xno" ; then
400       npa_flags=$withval
401     fi
402   ])
403 if test -n "$NPA_PROG" ; then
404   AC_DEFINE_UNQUOTED([SENDNEWS], "$NPA_PROG $npa_flags", [Posting agent to use when no nntp-servers defined])
407 dnl OPTION: password changing program
408 AC_ARG_WITH(password-prog,
409   AS_HELP_STRING([--with-password-prog=PATH],[Password change program (/bin/passwd)]),
410     [
411       case "$withval" in
412         no)
413           ;;
414         yes)
415           AC_PATH_PROG(PWPROG, passwd, "", $PATH:/usr/sbin:/usr/lib)
416           ;;
417         *)
418           AC_PATH_PROG(PWPROG, $withval, "", $PATH:/usr/sbin:/usr/lib)
419           ;;
420       esac
421     ],
422     [
423           AC_PATH_PROG(PWPROG, passwd, "", $PATH:/usr/sbin:/usr/lib)
424     ])
425 if test -n "$PWPROG" ; then
426     AC_DEFINE_UNQUOTED([PASSWD_PROG], "$PWPROG", [Program users use to change their password])
429 dnl OPTION: basic spell checking program
430 AC_ARG_WITH(simple-spellcheck,
431   AS_HELP_STRING([--with-simple-spellcheck=PROG],[Spellcheck program reads stdin, emits misspellings on stdout]),
432     [
433       if test "x$withval" != "xno" ; then
434         SPELLPROG=$withval
435       fi
436     ],
437     [
438       AC_CHECK_PROG([SPELLPROG], [hunspell], [hunspell], [])
439       if test -z "$SPELLPROG" ; then
440         AC_CHECK_PROG([SPELLPROG], [aspell], [aspell], [])
441         if test -z "$SPELLPROG" ; then
442           AC_CHECK_PROG([SPELLPROG], [ispell], [ispell], [])
443           if test -z "$SPELLPROG" ; then
444            SPELLPROG="spell"
445           fi
446         fi
447       fi
448     ])
450 if test "x$SPELLPROG" != "xno" ; then
451   AC_PATH_PROG(alpine_simple_spellcheck, $SPELLPROG)
452   if test -n "$alpine_simple_spellcheck" ; then
453     case "$SPELLPROG" in
454       hunspell)
455         alpine_simple_spellcheck="$alpine_simple_spellcheck -l"
456         ;;
457       aspell)
458         alpine_simple_spellcheck="$alpine_simple_spellcheck --dont-backup --mode=email list"
459         ;;
460       ispell)
461         alpine_simple_spellcheck="$alpine_simple_spellcheck -l"
462         ;;
463       *)
464         ;;
465     esac
466   fi
469 dnl OPTION: interactive spell checking program
470 AC_ARG_WITH(interactive-spellcheck,
471   AS_HELP_STRING([--with-interactive-spellcheck=PROG],[Interactive, filewise spell checker]),
472     [
473       if test "x$withval" != "xno" ; then
474         ISPELLPROG=$withval
475       fi
476     ],
477     [
478       AC_CHECK_PROG([ISPELLPROG], [hunspell], [hunspell], [])
479       if test -z "$ISPELLPROG" ; then
480         AC_CHECK_PROG([ISPELLPROG], [aspell], [aspell], [])
481         if test -z "$SPELLPROG" ; then
482           ISPELLPROG="ispell"
483         fi
484       fi
485     ])
487 if test "x$ISPELLPROG" != "xno" ; then
488   AC_PATH_PROG(alpine_interactive_spellcheck, $ISPELLPROG)
489   if test -n "$alpine_interactive_spellcheck" ; then
490     case "$ISPELLPROG" in
491       aspell)
492         alpine_interactive_spellcheck="$alpine_interactive_spellcheck --dont-backup --mode=email check"
493         ;;
494       *)
495         ;;
496     esac
497   fi
500 if test -n "$alpine_interactive_spellcheck" ; then
501     AC_DEFINE_UNQUOTED([DF_VAR_SPELLER], "$alpine_interactive_spellcheck", [Interactive, filewise spell checker])
504 if test -z "$alpine_simple_spellcheck" -a -n "$alpine_interactive_spellcheck" ; then
505   alpine_simple_spellcheck=test
507 AC_DEFINE_UNQUOTED([SPELLER], "$alpine_simple_spellcheck", [Simple spell checker: reads stdin, emits misspellings on stdout])
509 dnl OPTION: system-pinerc
510 dnl NOTE: historically we used /lib for the config dir.
511 dnl       don't ask, it was a long time ago. but, we can't
512 dnl       change it now without breaking compatibility
513 case "$prefix" in
514   NONE) dpv=/usr/local/lib/pine.conf ;;
515   *) dpv=${prefix}/lib/pine.conf ;;
516 esac
517 AC_ARG_WITH(system-pinerc,
518   AS_HELP_STRING([--with-system-pinerc=VALUE],[System pinerc (/usr/local/lib/pine.conf)]),
519     [
520       case "$withval" in
521         no)
522           ;;
523         yes)
524           ;;
525         *)
526           dpv=$withval
527           ;;
528       esac
529     ])
530 AC_DEFINE_UNQUOTED(SYSTEM_PINERC, "$dpv", [System pinerc])
532 dnl OPTION: system-fixed-pinerc
533 dnl NOTE: historically we used /lib for the config dir.
534 dnl       don't ask, it was a long time ago. but, we can't
535 dnl       change it now without breaking compatibility
536 case "$prefix" in
537   NONE) dpv=/usr/local/lib/pine.conf.fixed ;;
538   *) dpv=${prefix}/lib/pine.conf.fixed ;;
539 esac
540 AC_ARG_WITH(system-fixed-pinerc,
541   AS_HELP_STRING([--with-system-fixed-pinerc=VALUE],[System fixed pinerc (/usr/local/lib/pine.conf.fixed)]),
542     [
543       case "$withval" in
544         no)
545           ;;
546         yes)
547           ;;
548         *)
549           dpv=$withval
550           ;;
551       esac
552     ])
553 AC_DEFINE_UNQUOTED(SYSTEM_PINERC_FIXED, "$dpv", [System fixed pinerc])
555 dnl OPTION: local support information, file that contains information on
556 dnl         how to contact local support for Alpine.
557 dnl NOTE: historically we used /lib for the config dir.
558 dnl       don't ask, it was a long time ago. but, we can't
559 dnl       change it now without breaking compatibility
560 case "$prefix" in
561   NONE) dpv=/usr/local/lib/pine.info ;;
562   *) dpv=${prefix}/lib/pine.info ;;
563 esac
564 AC_ARG_WITH(local-support-info,
565   AS_HELP_STRING([--with-local-support-info=VALUE],[Local Support Info File (/usr/local/lib/pine.info)]),
566     [
567       case "$withval" in
568         no)
569           ;;
570         yes)
571           ;;
572         *)
573           dpv=$withval
574           ;;
575       esac
576     ])
577 AC_DEFINE_UNQUOTED(SYSTEM_PINE_INFO_PATH, "$dpv", [Local Support Info File])
579 dnl Function to simplify setting alpine/pico defaults
580 dnl usage: PINEVAR(configure-name, definition-name, definition-value, help)
581 AC_DEFUN([PINEVAR],
582   [
583     dpv=$3
584     AC_ARG_WITH($1,
585       AS_HELP_STRING([--with-$1=VALUE],[$4 ($3)]),
586       [
587         if test "x$withval" != "xno" ; then
588           dpv=$withval
589         fi
590       ])
591     AC_DEFINE_UNQUOTED($2, "$dpv", [Default configuration value])
592   ])
594 dnl Function to simplify setting pine/pico defaults
595 dnl usage: PINEVAR_UNQUOTED(configure-name, definition-name, definition-value, help)
596 AC_DEFUN([PINEVAR_UNQUOTED],
597   [
598     dpv=$3
599     AC_ARG_WITH($1,
600       AS_HELP_STRING([--with-$1=VALUE],[$4 ($3)]),
601       [
602         if test "x$withval" != "xno" ; then
603           dpv=$withval
604         fi
605       ])
606     AC_DEFINE_UNQUOTED($2, $dpv, [Default configuration value])
607   ])
609 PINEVAR(mailcheck-interval, DF_MAILCHECK, 150, [Specify default mail-check-interval])
610 PINEVAR_UNQUOTED(checkpoint-interval, CHECK_POINT_TIME, 420, [Specify default checkpoint-interval])
611 PINEVAR_UNQUOTED(checkpoint-frequency, CHECK_POINT_FREQ, 12, [State change count before checkpoint])
612 PINEVAR_UNQUOTED(display-rows, DEFAULT_LINES_ON_TERMINAL, 24, [Initial rows on display])
613 PINEVAR_UNQUOTED(display-columns, DEFAULT_COLUMNS_ON_TERMINAL, 80, [Initial columns on display])
614 PINEVAR_UNQUOTED(max-display-rows, MAX_SCREEN_ROWS, 200, [Maximum display rows])
615 PINEVAR_UNQUOTED(max-display-columns, MAX_SCREEN_COLS, 500, [Maximum display columns])
616 PINEVAR(fill-column, DF_FILLCOL, 74, [Default fill column])
617 PINEVAR_UNQUOTED(max_fill-column, MAX_FILLCOL, 80, [Maximum fill column])
618 PINEVAR_UNQUOTED(debug-level, DEFAULT_DEBUG, 2, [Specify default debug verbosity level])
619 PINEVAR_UNQUOTED(debug-files, NUMDEBUGFILES, 4, [Specify number of debug files])
620 PINEVAR(debug-file, DEBUGFILE, [.pine-debug], [Specify debug file name])
621 PINEVAR(forwarded-keyword, FORWARDED_FLAG, ["\$Forwarded"], [IMAP (c-client) keyword to store forwarded status])
622 PINEVAR(display-overlap, DF_OVERLAP, [2], [Lines preserved while paging])
623 PINEVAR(display-margin, DF_MARGIN, [0], [Lines visible while scrolling])
624 PINEVAR(default-fcc, DF_DEFAULT_FCC, [sent-mail], [Default sent mail folder])
625 PINEVAR(default-save-folder, DEFAULT_SAVE, [saved-messages], [Default save folder])
626 PINEVAR(default-legacy-postponed-folder, POSTPONED_MAIL, [postponed-mail], [Pre Pine 3.90 postponed folder])
627 PINEVAR(default-postponed-folder, POSTPONED_MSGS, [postponed-msgs], [Default postponed folder])
628 PINEVAR(default-trash-folder, TRASH_FOLDER, [Trash], [Default Trash folder for Web Alpine])
629 PINEVAR(default-interrupted-mail, INTERRUPTED_MAIL, [.pine-interrupted-mail], [Default folder for interrupted mail])
630 PINEVAR(default-dead-letter-folder, DEADLETTER, [dead.letter], [Default dead letter folder])
631 PINEVAR(default-mail-directory, DF_MAIL_DIRECTORY, [mail], [Default mail directory])
632 PINEVAR(default-inbox-name, INBOX_NAME, [INBOX], [Default inbox name])
633 PINEVAR(default-signature-file, DF_SIGNATURE_FILE, [.signature], [Default signature file])
634 PINEVAR(default-elm-style-save, DF_ELM_STYLE_SAVE, [no], [Default to Elm style save])
635 PINEVAR(default-header-in-reply, DF_HEADER_IN_REPLY, [no], [Include header in reply])
636 PINEVAR(default-old-style-reply, DF_OLD_STYLE_REPLY, [no], [Default to old style reply])
637 PINEVAR(default-use-only-domain-name, DF_USE_ONLY_DOMAIN_NAME, [no], [Default to using only the domain name])
638 PINEVAR(default-save-by-sender, DF_SAVE_BY_SENDER, [no], [Default to save by sender])
639 PINEVAR(default-sort-key, DF_SORT_KEY, [arrival], [Default sort key])
640 PINEVAR(default-addressbook-sort-rule, DF_AB_SORT_RULE, [fullname-with-lists-last], [Default addressbook sort rule])
641 PINEVAR(default-folder-sort-rule, DF_FLD_SORT_RULE, [alphabetical], [Default folder sort rule])
642 PINEVAR(default-saved-message-name-rule, DF_SAVED_MSG_NAME_RULE, [default-folder], [Default saved message name rule])
643 PINEVAR(default-fcc-rule, DF_FCC_RULE, [default-fcc], [Default fcc rule])
644 PINEVAR(default-standard-printer, DF_STANDARD_PRINTER, [lpr], [Default standard printern])
645 PINEVAR(default-ansi-printer, ANSI_PRINTER, [attached-to-ansi], [ANSI printer definition])
646 PINEVAR(default-addressbook, DF_ADDRESSBOOK, [.addressbook], [Default addressbook name])
647 PINEVAR(default-local-fullname, DF_LOCAL_FULLNAME, ["Local Support"], [Default local support fullname])
648 PINEVAR(default-local-address, DF_LOCAL_ADDRESS, [postmaster], [Default local support address])
649 PINEVAR(default-keyboard-lock-count, DF_KBLOCK_PASSWD_COUNT, [1], [Default keyboard lock count])
650 PINEVAR(default-remote-addressbook-history, DF_REMOTE_ABOOK_HISTORY, [3], [Default address book history count])
651 PINEVAR(smime-public-cert-directory, DF_PUBLICCERT_DIR, [.alpine-smime/public], [Default Public Cert Directory])
652 PINEVAR(smime-private-key-directory, DF_PRIVATEKEY_DIR, [.alpine-smime/private], [Default Private Key Directory])
653 PINEVAR(smime-cacert-directory, DF_CACERT_DIR, [.alpine-smime/ca], [Default Cert Authority Directory])
654 PINEVAR_UNQUOTED(default-printer, DF_DEFAULT_PRINTER, [ANSI_PRINTER], [Default printer])
656 AC_DEFINE_UNQUOTED([DF_PUBLIC_CONTAINER], "PublicContainer", [Name of default public container])
657 AC_DEFINE_UNQUOTED([DF_PRIVATE_CONTAINER], "PrivateContainer", [Name of default private container])
658 AC_DEFINE_UNQUOTED([DF_CA_CONTAINER], "CAContainer", [Name of default certificate authority container])
660 dnl set PASSFILE?
661 AC_ARG_WITH(passfile,
662   AS_HELP_STRING([--with-passfile=FILENAME],[Password cache file (recommended when S/MIME is enabled and configured)]),
663     [
664       case "$withval" in
665         no)
666           ;;
667         yes)
668           ;;
669         *)
670           alpine_PASSFILE=$withval
671           ;;
672       esac
673     ])
676 dnl os-specific credential cache?
677 AC_ARG_WITH(local-password-cache,
678  AS_HELP_STRING([--without-local-password-cache],[Disable OS-specific password cache, if supported]),
679    [
680      alpine_os_credential_cache=$withval
681    ])
683 dnl Particular os-specific credential cache?
684 AC_ARG_WITH(local-password-cache-method,
685  AS_HELP_STRING([--with-local-password-cache-method],[OS-specific credential cache (OSX=APPLEKEYCHAIN, Windows=WINCRED)]),
686    [
687      alpine_os_credential_cache_method=$withval
688    ])
690 if test -n "$alpine_PASSFILE" ; then
691   case $alpine_os_credential_cache in
692     no)
693       ;;
694     *)
695       alpine_os_credential_cache="no"
696       AC_MSG_NOTICE([--with-passfile definition overrides OS-Specific password caching])
697       ;;
698   esac
699   AC_DEFINE_UNQUOTED([PASSFILE], "$alpine_PASSFILE", [Password cache file (recommended if S/MIME is enabled and configured)])
702 dnl set DF_SSHPATH?
703 AC_ARG_WITH(default-sshpath,
704   AS_HELP_STRING([--with-default-sshpath=FILENAME],[set default value of ssh command path (defining should cause ssh to be preferred to rsh)]),
705     [
706       case "$withval" in
707         no)
708           ;;
709         yes)
710           ;;
711         *)
712           AC_DEFINE_UNQUOTED([DF_SSHPATH], "$withval", [set default value of ssh command path (defining should cause ssh to be preferred to rsh)])
713           ;;
714       esac
715     ])
717 dnl set DF_SSHCMD?
718 AC_ARG_WITH(default-sshcmd,
719   AS_HELP_STRING([--with-default-sshcmd=PERCENT_S_STRING],[set default value of ssh command string (usually "%s %s -l %s exec /etc/r%sd")]),
720     [
721       case "$withval" in
722         no)
723           ;;
724         yes)
725           ;;
726         *)
727           AC_DEFINE_UNQUOTED([DF_SSHCMD], "$withval", [set default value of ssh command string (usually "%s %s -l %s exec /etc/r%sd")])
728           ;;
729       esac
730     ])
732 dnl Include SSL?
733 dnl Set SSLDIR for c-client make
734 AC_ARG_WITH(ssl,
735   AS_HELP_STRING([--without-ssl],[Disable SSL support (OpenSSL)]),
736   [ with_ssl=$withval ])
738 if test "x$with_ssl" = "xno" ; then
739   alpine_SSLTYPE="none"
740 elif test -d /usr/local/ssl ; then
741 dnl When the system has openssl installed in its default location
742 dnl instead of the one used by the distribution assume that this
743 dnl is the one intended to be used.
744   alpine_SSLDIR="/usr/local/ssl"
745   alpine_SSLINCLUDE="$alpine_SSLDIR/include" 
746   alpine_SSLLIB="$alpine_SSLDIR/lib"
747 else
748   dnl preload c-client default locations/options
749   case $host in
750     *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*)
751       if test -f /etc/fedora-release -o -f /etc/redhat-release -o -f /etc/redhat_version ; then  
752         alpine_SSLTYPE="nopwd"
753         if test -d /etc/pki/tls ; then  
754           alpine_SSLDIR="/etc/pki/tls"
755         else
756           alpine_SSLDIR="/usr/share/ssl"
757         fi
758         alpine_SSLCERTS="$alpine_SSLDIR/certs"
759         alpine_SSLKEYS="$alpine_SSLDIR/private"
760         alpine_SSLINCLUDE="/usr/include/openssl" 
761         alpine_SSLLIB="/usr/lib"
762       elif test -f /etc/mandrake-release ; then
763         alpine_SSLDIR="/usr/lib/ssl"
764         alpine_SSLCERTS="$alpine_SSLDIR/certs" 
765         alpine_SSLKEYS="$alpine_SSLDIR/private"
766         alpine_SSLINCLUDE="/usr/include/openssl" 
767         alpine_SSLLIB="/usr/lib"
768       elif test -f /etc/SuSE-release ; then
769         alpine_SSLTYPE="nopwd"
770         alpine_SSLDIR="/etc/ssl"
771         alpine_SSLCERTS="$alpine_SSLDIR/certs"
772         alpine_SSLKEYS="$alpine_SSLDIR/private"
773         alpine_SSLINCLUDE="/usr/include/openssl" 
774         alpine_SSLLIB="/usr/lib"
775       elif test -d /etc/osso-af-init ; then
776         alpine_SSLTYPE="nopwd"
777         alpine_SSLDIR="/usr"
778         alpine_SSLCERTS="/usr/share/certs"
779         alpine_SSLINCLUDE="/usr/include/openssl"
780         alpine_SSLLIB="/usr/lib"
781       elif test -f /etc/debian_release -o -f /etc/debian_version ; then
782         if test ! -d /etc/osso-af-init ; then
783            alpine_SSLDIR="/etc/ssl"
784            alpine_SSLCERTS="$alpine_SSLDIR/certs"
785            alpine_SSLKEYS="$alpine_SSLDIR/private"
786            alpine_SSLINCLUDE="/usr/include/openssl" 
787            alpine_SSLLIB="/usr/lib"
788         fi
789       elif test -f /etc/manjaro-release ; then
790            alpine_SSLDIR="/etc/ssl"
791            alpine_SSLCERTS="$alpine_SSLDIR/certs"
792            alpine_SSLKEYS="$alpine_SSLDIR/private"
793            alpine_SSLINCLUDE="/usr/include/openssl" 
794            alpine_SSLLIB="/usr/lib"
795       else
796         alpine_SSLTYPE="nopwd"
797         alpine_SSLDIR="/usr"
798         alpine_SSLCERTS="/etc/ssl/certs"
799       fi
800       ;;
801     *-apple-darwin*)
802       alpine_SSLTYPE="nopwd"
803 dnl Originally this is where certs are, and they might still be there, even
804 dnl after installing Homebrew, MacPorts or Fink. We will use it if we cannot
805 dnl find it anywhere else.
806       alpine_SSLCERTS_ORIG="/System/Library/OpenSSL/certs"
807       if test -d /usr/local/opt/openssl ; then
808         alpine_SSLDIR="/usr/local/opt/openssl"
809         alpine_SSLINCLUDE="$alpine_SSLDIR/include"
810         alpine_SSLLIB="$alpine_SSLDIR/lib"
811         alpine_SSLCERTS="/usr/local/etc/openssl"
812         alpine_SSLKEYS="$alpine_SSLDIR/private"
813       elif test -d /opt/local/etc/openssl ; then
814         alpine_SSLDIR="/opt/local"
815         alpine_SSLINCLUDE="$alpine_SSLDIR/include"
816         alpine_SSLLIB="$alpine_SSLDIR/lib"
817         alpine_SSLCERTS="/opt/local/etc/openssl/certs"
818         alpine_SSLKEYS="/opt/local/etc/openssl/private"
819       elif test -d /sw/etc/ssl ; then
820         alpine_SSLDIR="/sw/etc/ssl"
821         alpine_SSLINCLUDE="/sw/include"
822         alpine_SSLLIB="/sw/lib"
823         alpine_SSLCERTS="/sw/etc/ssl/certs"
824         alpine_SSLKEYS="/sw/etc/ssl/private"
825       elif test -d /usr/local/ssl ; then
826         alpine_SSLDIR="/usr/local/ssl"
827       elif test -d /System/Library/OpenSSL ; then
828         alpine_SSLDIR="/System/Library/OpenSSL"
829         alpine_SSLCERTS="$alpine_SSLDIR/certs"
830         alpine_SSLKEYS="$alpine_SSLDIR/private"
831         alpine_SSLLIB="/usr/lib"
832         alpine_SSLINCLUDE="/usr/include/openssl"
833       fi
834       ;;
835     *-*-netbsd*)
836         alpine_SSLDIR="/etc/openssl"
837         alpine_SSLCERTS="$alpine_SSLDIR/certs"
838         alpine_SSLKEYS="$alpine_SSLDIR/private"
839         alpine_SSLINCLUDE="/usr/include/openssl"
840         alpine_SSLLIB="/usr/lib"
841       ;;
842     *-*-dragonfly*)
843         alpine_SSLDIR="/etc/openssl"
844         alpine_SSLCERTS="$alpine_SSLDIR/certs"
845         alpine_SSLKEYS="$alpine_SSLDIR/private"
846         alpine_SSLINCLUDE="/usr/include/openssl"
847         alpine_SSLLIB="/usr/lib"
848       ;;
849     *-openbsd*)
850         alpine_SSLTYPE="nopwd"
851         alpine_SSLDIR="/usr"
852         alpine_SSLCERTS="/etc/ssl/certs"
853       ;;
854     *-*-freebsd*)
855         alpine_SSLDIR="/etc/ssl"
856         alpine_SSLCERTS="$alpine_SSLDIR/certs"
857         alpine_SSLKEYS="$alpine_SSLDIR/private"
858         if test -d /usr/local/include/openssl ; then
859           alpine_SSLINCLUDE="/usr/local/include/openssl" 
860           alpine_SSLLIB="/usr/local/lib"
861         else
862           alpine_SSLINCLUDE="/usr/include/openssl" 
863           alpine_SSLLIB="/usr/lib"
864         fi
865       ;;
866     *-*-openbsd*)
867         alpine_SSLDIR="/etc/ssl"
868         alpine_SSLINCLUDE="/usr/include/openssl"
869         alpine_SSLLIB="/usr/lib"
870         alpine_SSLCERTS="/etc/ssl" 
871         alpine_SSLKEYS="/etc/ssl/private"
872       ;;
873     *-*-cygwin)
874         alpine_SSLDIR="/usr/ssl"
875         alpine_SSLCERTS="$alpine_SSLDIR/certs" 
876         alpine_SSLKEYS="$alpine_SSLDIR/certs"
877         alpine_SSLINCLUDE="/usr/include/openssl" 
878         alpine_SSLLIB="/usr/lib"
879       ;;
880     *-sco-sysv* | *-sysv*UnixWare | *-sysv*OpenUNIX)
881         alpine_SSLTYPE="sco.nopwd"
882         alpine_SSLDIR="/usr/local/ssl"
883       ;;
884     *-*-solaris*)
885       if test -d /usr/include/openssl ; then
886         alpine_SSLINCLUDE="/usr/include/openssl" 
887       elif test -d /usr/sfw/include/openssl ; then
888         alpine_SSLDIR="/usr/sfw"
889       elif test -d /opt/csw/include/openssl ; then
890         alpine_SSLDIR="/opt/csw"
891         if test -d /opt/csw/ssl/certs ; then
892           alpine_SSLCERTS="/opt/csw/ssl/certs"
893         fi
894       fi
895       if test -z "$alpine_SSLCERTS" -a -d /etc/certs ; then
896         alpine_SSLCERTS="/etc/certs"
897       fi
898       ;;
899     *)
900       alpine_SSLTYPE="nopwd"
901       alpine_SSLDIR="/usr/local/ssl"
902       ;;
903   esac
906 if test "x$alpine_SSLTYPE" != "xnone" ; then
907   AC_ARG_WITH(ssl-dir,
908     AS_HELP_STRING([--with-ssl-dir=DIR],[Root of SSL lib/include path]),
909     [
910       if test "x$withval" != "xno" ; then
911         alpine_SSLDIR=$withval
912         alpine_SSLINCLUDE=$alpine_SSLDIR/include
913         alpine_SSLLIB=$alpine_SSLDIR/lib
914       fi
915     ])
917   AC_ARG_WITH(ssl-certs-dir,
918     AS_HELP_STRING([--with-ssl-certs-dir=DIR],[Path to SSL certificate directory]),
919     [
920       if test "x$withval" != "xno" ; then
921         alpine_SSLCERTS=$withval
922       fi
923     ])
925   AC_ARG_WITH(ssl-include-dir,
926     AS_HELP_STRING([--with-ssl-include-dir=DIR],[SSL include file path]),
927     [
928       if test "x$withval" != "xno" ; then
929         alpine_SSLINCLUDE=$withval
930       fi
931     ])
933   AC_ARG_WITH(ssl-lib-dir,
934     AS_HELP_STRING([--with-ssl-lib-dir=DIR],[SSL library path]),
935     [
936       if test "x$withval" != "xno" ; then
937         alpine_SSLLIB=$withval
938       fi
939     ])
941   dnl setup globals so tests below work
942   if test -n "$alpine_SSLINCLUDE" ; then
943     CPPFLAGS="-I$alpine_SSLINCLUDE $CPPFLAGS"
944   elif test -n "$alpine_SSLDIR" ; then
945     CPPFLAGS="-I${alpine_SSLDIR}/include $CPPFLAGS"
946   fi
947   if test -n "$alpine_SSLLIB" ; then
948     LDFLAGS="-L$alpine_SSLLIB $LDFLAGS"
949   elif test -n "$alpine_SSLDIR" ; then
950     LDFLAGS="-L${alpine_SSLDIR}/lib $LDFLAGS"
951   fi
955 dnl Include Kerberos?
956 dnl Set GSSDIR for c-client make
957 AC_ARG_WITH(krb5,
958   AS_HELP_STRING([--without-krb5],[Disable Kerberos support]),
959   [ with_krb5=$withval ])
961 if test "x$with_krb5" = "xno" ; then
962   alpine_GSSTYPE="none"
963 else
964   alpine_GSSTYPE=
966   AC_ARG_WITH(krb5-dir,
967     AS_HELP_STRING([--with-krb5-dir=DIR],[Root of Kerberos lib/include path]),
968     [
969       if test "x$withval" != "xno" ; then
970         CPPFLAGS="$CPPFLAGS -I${withval}/include"
971         LDFLAGS="$LDFLAGS -L${withval}/lib"
972       fi
973     ])
975   AC_ARG_WITH(krb5-include-dir,
976     AS_HELP_STRING([--with-krb5-include-dir=DIR],[Kerberos include file path]),
977     [
978       if test "x$withval" != "xno" ; then
979         CPPFLAGS="$CPPFLAGS -I$withval"
980       fi
981     ])
983   AC_ARG_WITH(krb5-lib-dir,
984     AS_HELP_STRING([--with-krb5-lib-dir=DIR],[Kerberos library path]),
985     [
986       if test "x$withval" != "xno" ; then
987         LDFLAGS="$LDFLAGS -L$withval"
988       fi
989     ])
992 dnl Include LDAP?
993 AC_ARG_WITH(ldap,
994   AS_HELP_STRING([--without-ldap],[Disable LDAP query support]),
995   [ with_ldap=$withval ])
997 if test "x$with_ldap" = "xno" ; then
998   alpine_with_ldap=
999   AC_MSG_NOTICE([Excluding LDAP Support])
1000 else
1001   dnl Do stuff to figure out where OpenLDAP is
1003   case $host in
1004     *-*-freebsd*)
1005         alpine_LDAPDIR="/usr/local"
1006         alpine_LDAPINCLUDE="${LDAPDIR}/include"
1007         alpine_LDAPLIB="${LDAPDIR}/lib"
1008         ;;
1009   esac;
1011   alpine_with_ldap=yes
1013   AC_ARG_WITH(ldap-dir,
1014     AS_HELP_STRING([--with-ldap-dir=DIR],[Root of LDAP lib/include path]),
1015     [
1016       if test "x$withval" != "xno" ; then 
1017         alpine_LDAPDIR="${withval}"
1018         alpine_LDAPINCLUDE="${LDAPDIR}/include"
1019         alpine_LDAPLIB="${LDAPDIR}/lib"
1020       fi
1021     ])
1023   AC_ARG_WITH(ldap-include-dir,
1024     AS_HELP_STRING([--with-ldap-include-dir=DIR],[Directory containing LDAP include files]),
1025     [
1026       if test "x$withval" != "xno" ; then
1027         alpine_LDAPINCLUDE="$withval"
1028       fi
1029     ])
1031   AC_ARG_WITH(ldap-lib-dir,
1032     AS_HELP_STRING([--with-ldap-lib-dir=DIR],[LDAP library path]),
1033     [
1034       if test "x$withval" != "xno" ; then
1035         alpine_LDAPLIB="${withval}"
1036       fi
1037     ])
1039    if test -n "$alpine_LDAPINCLUDE" ; then
1040         CPPFLAGS="$CPPFLAGS -I${alpine_LDAPINCLUDE}/include"
1041    fi
1042    if test -n "$alpine_LDAPLIB" ; then
1043         LDFLAGS="$LDFLAGS -L${alpine_LDAPLIB}/lib"
1044    fi
1047 dnl Include SMIME?
1048 AC_ARG_WITH(smime,
1049   AS_HELP_STRING([--without-smime],[Disable S/MIME]),
1050   [ with_smime=$withval ])
1052 dnl Include TCL?
1053 AC_ARG_WITH(tcl,
1054   AS_HELP_STRING([--without-tcl],[Disable TCL, thus Web Alpine support]),
1055   [ with_tcl=$withval ])
1057 if test "x$with_tcl" = "xno" ; then
1058   WEB_BUILD=
1059   AC_MSG_NOTICE([Excluding TCL Support, and thus Web Alpine Support])
1060 else
1061   AC_ARG_WITH(tcl-lib,
1062     AS_HELP_STRING([--with-tcl-lib=LIBRARY],[Specific TCL Library, like \"tcl8.6\"]),
1063     [
1064       if test "x$withval" != "xno" ; then 
1065         alpine_TCLLIB=$withval
1066       fi
1067     ])
1068   AC_ARG_WITH(tcl-include,
1069     AS_HELP_STRING([--with-tcl-include=DIR],[Directory containing TCL include files]),
1070     [
1071       if test "x$withval" != "xno" ; then
1072         CPPFLAGS="$CPPFLAGS -I$withval"
1073         alpine_TCLINC=$withval
1074       fi
1075     ])
1078 AC_ARG_WITH(supplied-regex,
1079   AS_HELP_STRING([--with-supplied-regex],[Use regex library supplied with alpine]),
1080   [ alpine_REGEX=$withval ])
1082 AC_ARG_WITH(pthread,
1083   AS_HELP_STRING([--without-pthread],[Do NOT test for nor build with POSIX thread support]),
1084   [ with_pthread=$withval ])
1086 AC_ARG_WITH(system-mail-directory,
1087   AS_HELP_STRING([--with-system-mail-directory=DIR],[Directory where local mail is delivered]),
1088   [
1089     if test "x$withval" != "xno" ; then
1090       alpine_with_local_maildir="$withval"
1091     fi
1092   ])
1094 AC_ARG_WITH(c-client-target,
1095   AS_HELP_STRING([--with-c-client-target=TARGET],[IMAP build target (see imap/Makefile)]),
1096   [
1097     if test "x$withval" != "xno" ;then
1098       alpine_with_c_client_target="$withval"
1099     fi
1100   ])
1103 dnl Assume PAM is *not* required and only set the systems that need it.
1104 alpine_PAM="none"
1106 dnl HOST-OS SPECIFIC DEFINITIONS
1107 dnl Tests and assignments below are mostly to coax the appropriate
1108 dnl build from c-client.  Most of this will go away when c-client
1109 dnl adopts configure
1110 case "$host" in
1111   *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*)
1112     alpine_path_delim="/"
1113     alpine_mode_readonly="(0600)"
1114     if test -f /etc/fedora-release ; then  
1115       systype="LFD"
1116       alpine_PAM="yes"
1117       if test -d /etc/pki/tls ; then  
1118         alpine_c_client_target="lfd"
1119       else
1120         alpine_c_client_target="lrh"
1121       fi
1122     elif test -f /etc/mandrake-release ; then
1123       systype="LMD"
1124       alpine_c_client_target="lmd"
1125       alpine_PAM="yes"
1126     elif test -f /etc/redhat-release -o -f /etc/redhat_version ; then
1127       systype="LRH"
1128       alpine_PAM="yes"
1129       if test -d /etc/pki/tls ; then  
1130         alpine_c_client_target="lr5"
1131       else
1132         alpine_c_client_target="lrh"
1133       fi
1134     elif test -f /etc/debian_release -o -f /etc/debian_version ; then
1135       if test -d /etc/osso-af-init ; then
1136         systype="LN8"
1137         alpine_c_client_target="ln8"
1138       else
1139         systype="DEB"
1140         alpine_c_client_target="ldb"
1141         alpine_PAM="yes"
1142       fi
1143     elif test -f /etc/SuSE-release ; then
1144       systype="LSU"
1145       alpine_c_client_target="lsu"
1146       alpine_PAM="yes"
1147     else
1148       systype="LNX"
1149       AC_CHECK_LIB(pam, pam_start,
1150         [
1151           alpine_c_client_target="lnp"
1152           alpine_PAM="yes"
1153         ],
1154         [
1155           if test -f /etc/shadow ; then
1156             alpine_c_client_target="slx"
1157           else
1158             alpine_c_client_target="lnx"
1159           fi
1160         ])
1161     fi
1162     ;;
1163   *-apple-darwin*)
1164     systype="OSX"
1165     alpine_path_delim="/"
1166     alpine_mode_readonly="(0600)"
1167     LIBS="$LIBS -framework Carbon -framework ApplicationServices -framework Security"
1168     AM_CFLAGS="$AM_CFLAGS -Dbsd"
1169     dnl SEE include/system.h
1170     AC_DEFINE([OSX_TARGET],[1],[OSX TARGET])
1171     case "$alpine_os_credential_cache" in
1172       no)
1173         ;;
1174       *)
1175         AC_DEFINE([APPLEKEYCHAIN], [1], [Use Apple OS X key chain for credential caching])
1176         ;;
1177     esac
1178     AC_CHECK_LIB(pam, pam_start,
1179       [
1180         AC_CHECK_HEADER([security/pam_appl.h],
1181         [
1182           alpine_PAM="yes"
1183           alpine_c_client_target="oxs"
1184         ],
1185         [       AC_CHECK_HEADER([pam/pam_appl.h],
1186                 [
1187                    alpine_PAM="yes"
1188                    alpine_c_client_target="oxp" 
1189                 ],
1190                 [
1191                   alpine_PAM="none"
1192                   alpine_pam_none_reason="header files not found"
1193                 ])
1194         ])
1195       ],
1196       [
1197         alpine_c_client_target="osx"
1198       ])
1199     ;;
1200   *-*-solaris*)
1201     if test x$GCC = "xyes" ; then
1202       systype="GSO"
1203       alpine_c_client_target="gso"
1204       CFLAGS="$CFLAGS -D__USE_LEGACY_PROTOTYPES__"
1205     else
1206       systype="SOC"
1207       alpine_c_client_target="soc"
1208       AC_DEFINE([__EXTENSIONS__], [1], [Enable extended pthread features on Solaris])
1209     fi
1210     alpine_path_delim="/"
1211     alpine_mode_readonly="(0600)"
1212     dnl possible other OS's need this.
1213     dnl Use autoconf 2.61's AC_USE_SYSTEM_EXTENSIONS at some point
1214     ;;
1215   *-*-sunos4*)
1216     systype="SUN"
1217     alpine_path_delim="/"
1218     alpine_mode_readonly="(0600)"
1219     alpine_c_client_target="s40"
1220     ;;
1221   *-*-sco3.2v5*)
1222     if test x$GCC = "xyes" ; then
1223       systype="GO5"
1224       alpine_c_client_target="go5"
1225     else
1226       systype="SC5"
1227       alpine_c_client_target="sc5"
1228     fi
1229     alpine_path_delim="/"
1230     alpine_mode_readonly="(0600)"
1231     dnl possible other OS's need this.
1232     dnl Use autoconf 2.61's AC_USE_SYSTEM_EXTENSIONS at some point
1233     ;;
1234   *-next-*)
1235     systype="NXT"
1236     alpine_path_delim="/"
1237     alpine_mode_readonly="(0600)"
1238     alpine_c_client_target="nx3"
1239     ;;
1240   *-*-netbsd*)
1241     systype="NEB"
1242     alpine_path_delim="/"
1243     alpine_mode_readonly="(0600)"
1244     alpine_c_client_target="neb"
1245     ;;
1246   *-*-dragonfly*)
1247     systype="DFB"
1248     alpine_path_delim="/"
1249     alpine_mode_readonly="(0600)"
1250     alpine_c_client_target="neb"
1251     ;;
1252   *-*-bsdi*)
1253     systype="BSI"
1254     alpine_path_delim="/"
1255     alpine_mode_readonly="(0600)"
1256     alpine_c_client_target="bsi"
1257     ;;
1258   *-*-freebsd*)
1259     systype="BSF"
1260     alpine_path_delim="/"
1261     alpine_mode_readonly="(0600)"
1262     alpine_c_client_target="bsf"
1263     LIBS="$LIBS $LIBINTL"
1264     ;;
1265   *-*-openbsd*)
1266     systype="BSO"
1267     alpine_path_delim="/"
1268     alpine_mode_readonly="(0600)"
1269     alpine_c_client_target="bso"
1270     LIBS="$LIBS $LIBINTL"
1271     ;;
1272   *-*-aix5*)
1273     systype="A52"
1274     alpine_path_delim="/"
1275     alpine_mode_readonly="(0600)"
1276     alpine_c_client_target="a52"
1277     ;;
1278   *-*-aix4*)
1279     systype="A41"
1280     alpine_path_delim="/"
1281     alpine_mode_readonly="(0600)"
1282     alpine_c_client_target="a41"
1283     ;;
1284   *-*-aix3*)
1285     systype="A32"
1286     alpine_path_delim="/"
1287     alpine_mode_readonly="(0600)"
1288     alpine_c_client_target="a32"
1289     ;;
1290   *-*UNIX_SV | *-*-sysv5UnixWare7* | *-*OpenUNIX*)
1291     systype="UW2"
1292     alpine_path_delim="/"
1293     alpine_mode_readonly="(0600)"
1294     alpine_c_client_target="uw2"
1295     ;;
1296   *-*-osf5*)
1297     systype="OSF"
1298     alpine_path_delim="/"
1299     alpine_mode_readonly="(0600)"
1300     alpine_c_client_target="osf"
1301     ;;
1302   *-*-cygwin)
1303     systype="CYG"
1304     alpine_path_delim="/"
1305     alpine_mode_readonly="(S_IREAD | S_IWRITE)"
1306     alpine_c_client_target="cyg"
1307     LIBS="$LIBS $LIBINTL"
1308     ;;
1309   windows* | *-*-pw32*)
1310     systype="WNT"
1311     alpine_path_delim="\\"
1312     alpine_mode_readonly="(S_IREAD | S_IWRITE)"
1313     alpine_c_client_target="wnt"
1314     AC_DEFINE([_WINDOWS], [1], [Windows is just too different])
1315     ;;
1316   *)
1317     AC_MSG_ERROR(Unrecognized system: $host)
1318     ;;
1319 esac
1321 dnl Without IPv6?
1322 AC_ARG_WITH(ipv6,
1323   AS_HELP_STRING([--without-ipv6],[Disable IPv6, primarily to work around resolver problems]),
1324   [ with_ipv6=$withval ])
1326 if test "x$with_ipv6" = "xno" ; then
1327   AC_MSG_NOTICE([Excluding IPv6 Support])
1328   c_client_specials="${c_client_specials}IP6=4 "
1329   c_client_ip6="true"
1330 else
1331   c_client_ip6="touch imap/ip6"
1335 dnl CHECK LIBRARIES
1337 if test x$enable_dmalloc = "xyes" ; then
1338   if test "x$with_pthread" = "xyes" ; then
1339     dmalloc_lib=dmallocth
1340   else
1341     dmalloc_lib=dmalloc
1342   fi
1344   AC_CHECK_LIB($dmalloc_lib,dmalloc_shutdown,,
1345     [
1346       AC_MSG_ERROR($dmalloc_lib requested, but -ldmalloc not found)
1347     ])
1350 dnl which terminal cabability database
1351 AC_CHECK_LIB(tinfo, setupterm,
1352   [
1353     alpine_termdata=info
1354     LIBS="$LIBS -ltinfo"
1355   ],
1356   [
1357     AC_CHECK_LIB(ncurses, setupterm,
1358       [
1359         alpine_termdata=info
1360         LIBS="$LIBS -lncurses"
1361       ],
1362       [
1363         AC_CHECK_LIB(curses, setupterm,
1364           [
1365             alpine_termdata=info
1366             LIBS="$LIBS -lcurses"
1367           ],
1368           [
1369             AC_CHECK_LIB(termlib, tgetent,
1370               [
1371                 alpine_termdata=cap
1372                 LIBS="$LIBS -ltermlib"
1373               ],
1374               [
1375                 AC_CHECK_LIB(termcap, tgetent,
1376                   [
1377                     alpine_termdata=cap
1378                     LIBS="$LIBS -ltermcap"
1379                   ],
1380                   [
1381                     AC_MSG_ERROR(Terminfo/termcap not found)
1382                   ])
1383               ])
1384           ])
1385       ])
1386   ])
1387 case $alpine_termdata in
1388   info)
1389     AC_DEFINE(HAS_TERMINFO, [1], [Define if systems uses terminfo terminal database])
1390     ;;
1391   cap)
1392     AC_DEFINE(HAS_TERMCAP, [1], [Define if systems uses termcap terminal database])
1393     ;;
1394 esac
1396 dnl is -ldl present? if so, add it
1397 AC_SEARCH_LIBS([dlopen], [dl dld],, [ alpine_DL="none" ])
1398 if test "x$alpine_DL" = "xnone" ; then
1399     AC_MSG_ERROR([No library containing dlopen found])
1400     exit 1      
1403 dnl Check if openssl = LibreSSL
1404 if test "x$alpine_SSLTYPE" != "xnone" ; then
1405   AC_MSG_CHECKING([if OpenSSL is LibreSSL])
1406   AC_TRY_COMPILE([
1407 #include <stdio.h>
1408 #include <stdlib.h>
1409 #if HAVE_STDINT_H
1410 #include <stdint.h>
1411 #endif /* HAVE_STDINT_H */
1412 #include <openssl/ssl.h>
1413         ],[
1414 #if OPENSSL_VERSION_NUMBER < 0x20000000L
1415 #error
1416 #endif
1417         ],
1418         [ AC_MSG_RESULT(yes)
1419           alpine_SSLPROVIDER="libressl"
1420         ],
1421         [ AC_MSG_RESULT(no)
1422         ],
1423         [ AC_MSG_WARN([cross compiling: not checking])])
1426 dnl Check Openssl/LibreSSL version first
1427 if test "x$alpine_SSLTYPE" != "xnone" -a "x$alpine_SSLPROVIDER" != "xlibressl" ; then
1428   AC_MSG_CHECKING([Openssl library version >= 1.0.0c])
1429   AC_TRY_COMPILE([
1430 #include <stdio.h>
1431 #include <stdlib.h>
1432 #if HAVE_STDINT_H
1433 #include <stdint.h>
1434 #endif /* HAVE_STDINT_H */
1435 #include <openssl/ssl.h>
1436         ],[
1437 #if OPENSSL_VERSION_NUMBER < 0x1000003fL
1438 #error
1439 #endif
1440         ],
1441         [ AC_MSG_RESULT(yes) 
1442           alpine_SSLPROVIDER="openssl"
1443         ],
1444         [ alpine_SSLTYPE="none" ],
1445         [ AC_MSG_WARN([cross compiling: not checking])])
1447     if test "x$alpine_SSLTYPE" = "xnone" ; then
1448         AC_MSG_ERROR(Install openssl version >= 1.0.0c)
1449         exit 1
1450     fi
1453 dnl Now check if we are working with version 1.1.0 of openssl
1454 if test "x$alpine_SSLTYPE" != "xnone" -a "x$alpine_SSLPROVIDER" != "xlibressl" ; then
1455   AC_MSG_CHECKING([Openssl library version >= 1.1.0])
1456   AC_TRY_COMPILE([
1457 #include <stdio.h>
1458 #include <stdlib.h>
1459 #if HAVE_STDINT_H
1460 #include <stdint.h>
1461 #endif /* HAVE_STDINT_H */
1462 #include <openssl/ssl.h>
1463         ],[
1464 #if OPENSSL_VERSION_NUMBER < 0x10100000L
1465 #error
1466 #endif
1467         ],
1468         [ AC_MSG_RESULT(yes)
1469           alpine_SSLVERSION="new"
1470           CFLAGS="$CFLAGS -DOPENSSL_1_1_0 -DOPENSSL_API_COMPAT=0x10100000L"
1471         ],
1472         [ AC_MSG_RESULT(no)
1473           alpine_SSLVERSION="old" ],
1474         [ AC_MSG_WARN([cross compiling: not checking])])
1477 dnl Crypto support is needed 
1478 if test "x$alpine_SSLTYPE" != "xnone" ; then
1479   if test "x$alpine_SSLVERSION" = "xold" -o "x$alpine_SSLPROVIDER" = "xlibressl" ; then
1480      AC_SEARCH_LIBS(SSLeay,crypto,, [ alpine_CRYPTO="none" ])
1481   else
1482      AC_SEARCH_LIBS(OpenSSL_version_num,crypto,, [ alpine_CRYPTO="none" ])
1483   fi
1484   if test "x$alpine_CRYPTO" = "xnone" ; then
1485      AC_MSG_ERROR(crypto library NOT found)
1486      exit 1
1487   fi
1488   case $host in
1489     *-*-cygwin)
1490         AC_CHECK_HEADER(crypto.h, , [ alpine_CRYPTO_DEVEL="none" ])
1491         if test "x$alpine_CRYPTO_DEVEL" = "xnone" ; then
1492            AC_MSG_ERROR(crypto library file crypto.h NOT found. Install correspoding libcrypt-devel package)
1493            exit 1
1494         fi
1495         ;;
1496     *)  ;;
1497    esac
1500 dnl provide SSL support?
1501 if test "x$alpine_SSLTYPE" != "xnone" ; then
1502   if test "x$alpine_SSLVERSION" = "xold" -o "x$alpine_SSLPROVIDER" = "xlibressl" ; then
1503      AC_SEARCH_LIBS(SSL_library_init,ssl,,[ alpine_SSLTYPE="none" ])
1504      if test "x$alpine_SSLTYPE" = "xnone" ; then
1505         AC_MSG_ERROR(No library containing SSL_library_init found in your path)
1506         exit 1
1507      fi
1508   else
1509      AC_SEARCH_LIBS(OPENSSL_init_ssl,ssl,, [ alpine_SSLTYPE="none" ])
1510      if test "x$alpine_SSLTYPE" = "xnone" ; then
1511         AC_MSG_ERROR(No library containing OPENSSL_init_ssl found in your path)
1512         exit 1
1513      fi
1514   fi
1517 dnl provide LDAP support?
1518 if test "$alpine_with_ldap" = "yes" ; then
1519   alpine_has_ldap=
1520   AC_CHECK_LIB(lber, ber_alloc,
1521     [
1522       LIBS="$LIBS -llber"
1523     ])
1524   AC_SEARCH_LIBS(ldap_initialize,ldap,
1525     [
1526       alpine_has_ldap=yes
1527     ],
1528     [
1529       AC_SEARCH_LIBS(ldap_open,ldap,
1530         [
1531           alpine_has_ldap=yes
1532         ])
1533     ])
1535   if test "$alpine_has_ldap" = "yes" ; then
1536     AC_MSG_NOTICE([* * * Including LDAP Support])
1537     AC_DEFINE([ENABLE_LDAP], [], [Enable LDAP query support])
1538   fi
1541 dnl PAM support is needed to build c-client in some linux, and hence Alpine.
1542 if test "x$alpine_PAM" != "xnone" ; then
1543   AC_SEARCH_LIBS(pam_start,pam,
1544       [
1545         LIBS="$LIBS -lpam"
1546         AC_CHECK_HEADER([security/pam_appl.h],
1547         [
1548           alpine_PAM="yes"
1549         ],
1550         dnl Only mac is incompatible, do not spread bad habits.
1551         [ AC_CHECK_HEADER([pam/pam_appl.h],
1552           [
1553                 alpine_PAM="yes"
1554                 if test "x$alpine_c_client_target" != "xoxp" ; then
1555                    alpine_PAM="none"
1556                    alpine_pam_none_reason="header files not in security/ directory"
1557                 fi
1558           ],
1559           [
1560                 alpine_PAM="none"
1561                 alpine_pam_none_reason="header files not found"
1562           ])
1563         ])
1564       ],
1565       [
1566         alpine_PAM="none"
1567         alpine_pam_none_reason="library files not found"
1568       ])
1569     if test -n "$alpine_pam_none_reason" ; then
1570       AC_MSG_ERROR(No PAM support: $alpine_pam_none_reason)
1571   fi
1575 dnl provide KRB5 support?
1576 if test "x$alpine_GSSTYPE" != "xnone" ; then
1577   AC_SEARCH_LIBS(gss_init_sec_context,gss gssapi gssapi_krb5,
1578     [
1579       dnl MIT-based?
1580       LIBS="$LIBS -lkrb5"
1581       AC_CHECK_HEADER([gssapi/gssapi_generic.h],,
1582         [
1583           if test ! -d /usr/kerberos/include ; then
1584             alpine_GSSTYPE="none"
1585             alpine_gss_none_reason="header files not found"
1586           fi
1587         ])
1588     ],
1589     [
1590       alpine_GSSTYPE="none"
1591       alpine_gss_none_reason="libraries not found"
1592     ])
1593   if test -n "$alpine_gss_none_reason" ; then
1594     AC_MSG_NOTICE([NOT including Kerberos Support: $alpine_gss_none_reason])
1595   fi
1598 dnl Include NTLM?
1599 AC_ARG_WITH(ntlm,
1600   AC_HELP_STRING([--without-ntlm],[Disable NTLM client support]),
1601   [with_ntlm=$withval])
1603 dnl provide NTLM support?
1604 if test "x$with_ntlm" = "xno" ; then
1605   alpine_NTLM="none"
1606 else
1607   alpine_NTLM=
1609   AC_SEARCH_LIBS(buildSmbNtlmAuthRequest, ntlm, 
1610      [
1611         AC_CHECK_HEADER([ntlm.h],
1612         [
1613             extra_auth_ntlm=ntl
1614             AC_MSG_NOTICE([including NTLM support])
1615         ],
1616         [
1617             alpine_NTLM="none"
1618             alpine_ntlm_none_reason="header file ntlm.h not found"
1619         ])
1620      ],
1621      [
1622         alpine_NTLM="none"
1623         alpine_ntlm_none_reason="ntlm library not found"
1624      ])
1625   if test -n "$alpine_ntlm_none_reason" ; then
1626      AC_MSG_NOTICE([NOT including NTLM Support: $alpine_ntlm_none_reason])
1627   fi
1630 dnl check for tcl libraries for Web Alpine (HACKY)
1631 if test -n "$WEB_BUILD" ; then
1632 TCL_VERSIONS_DOT="tcl8.6 tcl8.5 tcl8.4 tcl8.3"
1633 TCL_VERSIONS_NODOT="`echo ${TCL_VERSIONS_DOT} | ${SED} 's/\.//g'`"
1634 TCL_VERSIONS="${TCL_VERSIONS_DOT} ${TCL_VERSIONS_NODOT} tcl"
1635   AC_SEARCH_LIBS([Tcl_Eval],[$alpine_TCLLIB ${TCL_VERSIONS}],,
1636     [
1637       WEB_BUILD=
1638     ])
1640   dnl look for header file
1641   if test -n "$alpine_TCLINC" ; then
1642     AC_CHECK_HEADER($alpine_TCLINC/tcl.h,,
1643       [
1644         WEB_BUILD=
1645       ])
1646     if test -z "$WEB_BUILD" ; then
1647       AC_MSG_NOTICE([Tcl Include file NOT found])
1648     fi
1649   else
1650     AC_CHECK_HEADER(tcl.h,,
1651       [
1652         for base in /usr /usr/local ; do
1653          for dir in ${TCL_VERSIONS} ; do
1654           if test -f $base/include/$dir/tcl.h ; then
1655             CPPFLAGS="$CPPFLAGS -I$base/include/$dir"
1656             found=yes
1657             break
1658           fi
1659          done
1660          if test "x$found" = "xyes" ; then
1661             break
1662          fi
1663         done
1664         if test "$found" != "yes" ; then
1665             WEB_BUILD=
1666             AC_MSG_NOTICE([header file tcl.h NOT found: Web Alpine will not be built])
1667         fi
1668       ])
1669   fi
1672 dnl Local or supplied regex?
1673 if test "x$alpine_REGEX" != "xyes" ; then
1674   AC_SEARCH_LIBS([regcomp],posix regexp regex re,,
1675     [
1676       if test x$alpine_REGEX = "xno" ; then
1677         AC_MSG_ERROR(Unable to find system regex library)
1678       else
1679         alpine_REGEX=yes
1680       fi
1681     ])
1683 if test "x$alpine_REGEX" != "xyes" ; then
1684   AC_CHECK_HEADER([regex.h],,
1685     [
1686       if test x$alpine_REGEX = "xno" ; then
1687         AC_MSG_ERROR(Unable to find system regex include file)
1688       else
1689         alpine_REGEX=yes
1690       fi
1691     ])
1693 AC_DEFINE(HAVE_REGEX_H,1,[Regular expression header file exists])
1694 if test "x$alpine_REGEX" = "xyes" ; then
1695   CPPFLAGS="$CPPFLAGS -I${top_builddir}/regex"
1696   LDFLAGS="$LDFLAGS -L${top_builddir}/regex"
1697   REGEX_BUILD=regex
1698   REGEX_MAKEFILE="$REGEX_BUILD/Makefile"
1701 if test "x$with_pthread" != "xno" ; then
1702   AC_MSG_CHECKING([for pthread support])
1703   ACX_PTHREAD(
1704     [
1705       AC_MSG_RESULT([yes])
1706       case "$target" in
1707           *openbsd*)
1708             AC_MSG_NOTICE([WARNING: pthread support on OpenBSD is unstable!])
1709             AM_CFLAGS="$AM_CFLAGS -pthread"
1710             ;;
1711       esac
1712       LIBS="$PTHREAD_LIBS $LIBS"
1713       AM_CFLAGS="$AM_CFLAGS $PTHREAD_CFLAGS"
1714       CC="$PTHREAD_CC"
1715       AC_DEFINE([HAVE_PTHREAD], [1], [System has pthread support])
1716     ],
1717     [
1718       AC_MSG_RESULT([no])
1719     ])
1721   AC_SEARCH_LIBS([nanosleep], [rt posix4],
1722     [
1723       AC_DEFINE([HAVE_NANOSLEEP], [1], [Define if system supports subsecond, non-alarm sleep])
1724     ])
1729 dnl CHECK HEADERS
1731 AC_HEADER_STDC
1732 AC_HEADER_DIRENT
1733 AC_HEADER_STAT
1734 AC_HEADER_SYS_WAIT
1735 AC_HEADER_TIME
1736 AC_HEADER_TIOCGWINSZ
1738 AC_CHECK_HEADERS([unistd.h])
1740 AC_CHECK_HEADERS([errno.h \
1741                   ctype.h \
1742                   fcntl.h \
1743                   signal.h \
1744                   setjmp.h \
1745                   memory.h \
1746                   sys/ioctl.h \
1747                   sys/param.h \
1748                   sys/socket.h \
1749                   sys/uio.h \
1750                   sys/un.h \
1751                   limits.h \
1752                   wchar.h \
1753                   sys/poll.h \
1754                   stropts.h \
1755                   netdb.h \
1756                   syslog.h \
1757                   sys/syslog.h \
1758                   locale.h \
1759                   langinfo.h \
1760                   utime.h \
1761                   sys/utime.h \
1762                   pthread.h \
1763                   pwd.h \
1764                   assert.h])
1766 dnl terminal line discipline?
1767 AC_CHECK_HEADER([termios.h],
1768   AC_DEFINE(HAS_TERMIOS, [1], [Define if systems uses termios terminal control]),
1769   [
1770     AC_CHECK_HEADER([termio.h],
1771       AC_DEFINE(HAS_TERMIO, [1], [Define if systems uses termio terminal control]),
1772       [
1773         AC_CHECK_HEADER([sgtty.h],
1774           AC_DEFINE(HAS_SGTTY, [1], [Define if systems uses old BSD-style terminal control]),
1775         [
1776           AC_MSG_ERROR(Unable to figure out terminal control method)
1777         ])
1778       ])
1779   ])
1782 dnl CHECK TYPEDEFS
1784 AC_DIAGNOSE([obsolete],[your code may safely assume C89 semantics that RETSIGTYPE is void.
1785 Remove this warning and the `AC_CACHE_CHECK' when you adjust the code.])dnl
1786 AC_CACHE_CHECK([return type of signal handlers],[ac_cv_type_signal],[AC_COMPILE_IFELSE(
1787 [AC_LANG_PROGRAM([#include <sys/types.h>
1788 #include <signal.h>
1790                  [return *(signal (0, 0)) (0) == 1;])],
1791                    [ac_cv_type_signal=int],
1792                    [ac_cv_type_signal=void])])
1793 AC_DEFINE_UNQUOTED([RETSIGTYPE],[$ac_cv_type_signal],[Define as the return type of signal handlers
1794                     (`int' or `void').])
1796 AC_TYPE_SIZE_T
1797 AC_TYPE_MODE_T
1798 AC_TYPE_PID_T
1799 AC_TYPE_UID_T
1800 AC_STRUCT_TM
1802 AC_CHECK_TYPES([union wait])
1804 AC_CHECK_HEADERS([stdint.h], [uint16=uint16_t], [
1805   AC_CHECK_HEADERS([inttypes.h], [uint16=uint16_t], [
1806     AC_CHECK_HEADERS([sys/types.h], [uint16=u_int16_t], [
1807       AC_CHECK_SIZEOF(unsigned short)
1808       if test $ac_cv_sizeof_unsigned_short -eq 2 ; then
1809         uint16="unsigned short"
1810       else
1811         AC_CHECK_SIZEOF(unsigned int)
1812         if $ac_cv_sizeof_unsigned_int -eq 2 ; then
1813           uint16="unsigned int"
1814         else
1815           AC_MSG_ERROR(Unable to determine 16 bit integer type)
1816         fi
1817       fi
1818     ])
1819   ])
1821 AC_DEFINE_UNQUOTED([UINT16], $uint16, [System defined unsigned 16 bit integer])
1823 AC_CHECK_HEADERS([stdint.h], [uint32=uint32_t], [
1824   AC_CHECK_HEADERS([inttypes.h], [uint32=uint32_t], [
1825     AC_CHECK_HEADERS([sys/types.h], [uint32=u_int32_t], [
1826       AC_CHECK_SIZEOF(unsigned int)
1827       if test $ac_cv_sizeof_unsigned_int -eq 4 ; then
1828         uint32="unsigned int"
1829       else
1830         AC_CHECK_SIZEOF(unsigned long)
1831         if $ac_cv_sizeof_unsigned_long -eq 4 ; then
1832           uint32="unsigned long"
1833         else
1834           AC_MSG_ERROR(Unable to determine 32 bit integer type)
1835         fi
1836       fi
1837     ])
1838   ])
1840 AC_DEFINE_UNQUOTED([UINT32], $uint32, [System defined unsigned 32 bit integer])
1842 AC_CACHE_CHECK(argument pointer type of qsort compare function and base,
1843 ac_cv_func_qsort_argtype,
1844 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1845 #if     HAVE_STDLIB_H
1846 #include "stdlib.h"
1847 #endif
1849 extern void *base;
1850 extern sortf(const void *, const void *);
1851 int sortf(a, b)
1852   const void *a;
1853   const void *b; { return 0; }
1854 ]], [[
1855 qsort(base, 2, sizeof(char *), sortf);
1856 ]])],[ac_cv_func_qsort_argtype=void],[ac_cv_func_qsort_argtype=char])
1858 AC_DEFINE_UNQUOTED([qsort_t], $ac_cv_func_qsort_argtype, [qsort compare function argument type])
1860 dnl check for "struct passwd" ?
1862 AC_FUNC_SELECT_ARGTYPES
1864 AC_FUNC_STRCOLL
1866 dnl CHECK FOR LIBRARY FUNCTIONS
1868 AC_FUNC_FORK
1869 AC_CHECK_FUNCS([strchr \
1870                 memcpy \
1871                 strtol \
1872                 strtoul \
1873                 select \
1874                 poll \
1875                 qsort \
1876                 getuid \
1877                 getpwuid \
1878                 getpwnam \
1879                 gettimeofday \
1880                 tmpfile \
1881                 uname \
1882                 rename \
1883                 read \
1884                 signal \
1885                 setjmp \
1886                 chown \
1887                 wait4 \
1888                 waitpid \
1889                 wait \
1890                 srandom \
1891                 popen \
1892                 pclose \
1893                 fsync \
1894                 truncate \
1895                 listen \
1896                 wcwidth \
1897                 mbstowcs \
1898                 wcrtomb \
1899                 putenv \
1900                 setenv])
1902 AC_SEARCH_LIBS([gethostname],[nsl])
1904 AC_SEARCH_LIBS([socket],[socket],,
1905   [
1906     WEB_BUILD=
1907   ])
1909 AC_SEARCH_LIBS([bind],[bind],,
1910   [
1911     WEB_BUILD=
1912   ])
1914 dnl check for POSIX signal interface
1915 AC_CHECK_FUNCS([sigaction sigemptyset sigaddset sigprocmask],
1916   [
1917     AC_DEFINE([POSIX_SIGNALS], [], [Define if system supports POSIX signal interface])
1918   ],
1919   [
1920     AC_CHECK_FUNCS([sigset sigrelse],
1921       [
1922         AC_DEFINE([SYSV_SIGNALS], [], [Define if system supports SYSV signal interface])
1923       ])
1924   ])
1926 AC_SEARCH_LIBS([syslog], [bsd socket inet],
1927   [
1928     AC_DEFINE([HAVE_SYSLOG], [1], [Define if system supplies syslog() logging])
1929   ])
1932 dnl set pico newmail check directory
1933 if test -n "$alpine_with_local_maildir" ; then
1934     alpine_local_maildir=$alpine_with_local_maildir
1935 elif test -d /var/spool/mail ; then
1936     alpine_local_maildir="/var/spool/mail"
1937 elif test -d /var/mail ; then
1938     alpine_local_maildir="/var/mail"
1939 else
1940     alpine_local_maildir="/usr/spool/mail"
1943 dnl set c-client make target
1944 if test -n "$alpine_with_c_client_target" ; then
1945     alpine_c_client_target=$alpine_with_c_client_target
1948 AC_DEFINE_UNQUOTED([SYSTYPE], "$systype", [Pine-Centric Host Specifier])
1949 AC_DEFINE_UNQUOTED([C_FILESEP],'$alpine_path_delim',[File name separator as character constant])
1950 AC_DEFINE_UNQUOTED([S_FILESEP],"$alpine_path_delim",[File name separator as string constant])
1951 AC_DEFINE_UNQUOTED([MAILDIR],"$alpine_local_maildir",[Path to local inboxes for pico newmail check])
1952 AC_DEFINE_UNQUOTED([MODE_READONLY], $alpine_mode_readonly, [File mode used to set readonly access])
1954 dnl c-client make particulars
1955 AC_SUBST([C_CLIENT_TARGET], $alpine_c_client_target)
1956 AC_SUBST([C_CLIENT_WITH_IPV6], $c_client_ip6)
1957 if test "x$alpine_SSLTYPE" = "xnone" ; then 
1958   AC_MSG_NOTICE([* * *  NOT Including SSL Support])
1959   c_client_specials="${c_client_specials}SSLTYPE=none "
1960 else
1961   dnl issue any warnings for common OpenSSL issues
1963   if test -n "$alpine_SSLCERTS" -a -d "$alpine_SSLCERTS" ; then
1964     certdir="$alpine_SSLCERTS"
1965   elif test -n "$alpine_SSLDIR" -a -d "${alpine_SSLDIR}/certs" ; then
1966     certdir="${alpine_SSLDIR}/certs"
1967   elif test -n "$alpine_SSLDIR" -a -d "${alpine_SSLDIR}/ssl/certs" ; then
1968     certdir="${alpine_SSLDIR}/ssl/certs"
1969   elif test -n "$alpine_SSLCERTS_ORIG" -a -d "$alpine_SSLCERTS_ORIG" ; then
1970     certdir="$alpine_SSLCERTS_ORIG"
1971   elif test -n "$alpine_SSLCERTS" ; then
1972     certdir="$alpine_SSLCERTS"
1973   else
1974     AC_MSG_NOTICE([SSL Problem: certificate directory not found])
1975   fi
1977   if test "x$with_smime" != "xno" ; then
1978     if test -n "$certdir" ; then
1979       AC_MSG_NOTICE([* * * S/MIME support enabled])
1980       AC_DEFINE([SMIME], [], [Enable S/MIME code])
1981       AC_DEFINE_UNQUOTED([SMIME_SSLCERTS],"$certdir",[Directory where S/MIME CACerts are located])
1982     fi
1983   fi
1986   SSL_CERT_LINK="no"
1987   if test -z "`ls ${certdir} | $EGREP '^@<:@0-9A-Fa-f@:>@{8}\.@<:@0-9@:>@'`" ; then
1988      SSL_BUNDLE_EXISTS="no"
1989      SSL_PEM="factory.pem ca-bundle.pem ca-bundle.crt"
1990      for SSL_BUNDLE in $SSL_PEM
1991      do
1992        if test -f ${certdir}/${SSL_BUNDLE} ; then
1993           SSL_BUNDLE_EXISTS="yes"
1994        fi
1995      done
1996   else
1997      SSL_CERT_LINK="yes"
1998   fi
2000   if test "x$SSL_BUNDLE_EXISTS" = "xno" -a "x$SSL_CERT_LINK" = "xno" ; then
2001      AC_MSG_NOTICE([* * * No certificates found in "${certdir}".])
2002      AC_MSG_NOTICE([* * *   This might indicate that CA certs did not get properly])
2003      AC_MSG_NOTICE([* * *   installed.  If you get certificate validation failures])
2004      AC_MSG_NOTICE([* * *   in Alpine, this might be the reason for them.])
2005   fi
2007   if test -n "$alpine_SSLINCLUDE" ; then
2008     c_client_specials="${c_client_specials}SSLINCLUDE=$alpine_SSLINCLUDE "
2009   fi
2011   if test -n "$alpine_SSLLIB" ; then
2012     c_client_specials="${c_client_specials}SSLLIB=$alpine_SSLLIB "
2013   fi
2015   if test -n "$alpine_SSLDIR" ; then
2016     c_client_specials="${c_client_specials}SSLDIR=$alpine_SSLDIR "
2017   fi
2019   if test -n "$certdir" ; then
2020     c_client_specials="${c_client_specials}SSLCERTS=$certdir "
2021   fi
2023   if test -n "$alpine_SSLKEYS" ; then
2024       c_client_specials="${c_client_specials}SSLKEYS=$alpine_SSLKEYS "
2025   fi
2028 extra_auth_gss=
2029 if test "x$alpine_GSSTYPE" != "xnone" ; then
2030   extra_auth_gss=gss
2031   AC_MSG_NOTICE([* * * Including Kerberos5 functionality])
2034 extra_auth_ntlm=
2035 if test "x$alpine_NTLM" != "xnone" ; then
2036   extra_auth_ntlm=ntl
2037   AC_MSG_NOTICE([* * * Including NTLM Authenticator])
2040 if test -n "$CPPFLAGS" ; then
2041   alpine_c_client_cflags="$alpine_c_client_cflags ${CPPFLAGS}"
2043 if test -n "$CFLAGS" ; then
2044   alpine_c_client_cflags="$alpine_c_client_cflags ${CFLAGS}"
2047 if test -n "$alpine_c_client_cflags" ; then
2048   AC_SUBST(C_CLIENT_CFLAGS, EXTRACFLAGS=\"$alpine_c_client_cflags\")
2051 if test -n "$LDFLAGS" ; then
2052   alpine_c_client_ldflags="$alpine_c_client_ldflags ${LDFLAGS}"
2054 if test -n "$LIBS" ; then
2055   alpine_c_client_ldflags="$alpine_c_client_ldflags ${LIBS}"
2058 if test -n "$alpine_c_client_ldflags" ; then
2059   AC_SUBST(C_CLIENT_LDFLAGS, EXTRALDFLAGS=\"$alpine_c_client_ldflags\")
2062 if test -n "$alpine_c_client_gccoptlevel" ; then
2063   AC_SUBST(C_CLIENT_GCCOPTLEVEL, GCCOPTLEVEL=\"$alpine_c_client_gccoptlevel\")
2066 c_client_auths="$extra_auth_gss $extra_auth_ntlm"
2067 AC_SUBST([C_CLIENT_AUTHS], $c_client_auths)
2069 AC_SUBST([C_CLIENT_SPECIALS], $c_client_specials)
2071 dnl Deal with Web Alpine
2072 if test -z "$WEB_BUILD" ; then
2073   WEB_PUBCOOKIE_BUILD=
2074   AC_MSG_NOTICE([* * * TCL libraries could not be found.])
2075   AC_MSG_NOTICE([* * * WEB ALPINE COMPONENT WILL NOT BE BUILT.])
2076 else
2077   if test -n "$WEB_PUBCOOKIE_BUILD" ; then
2078     if test "x$alpine_GSSTYPE" = "xnone" ; then
2079       WEB_PUBCOOKIE_BUILD=
2080       AC_MSG_NOTICE([* * * Kerberos5 support not found.])
2081       AC_MSG_NOTICE([* * * WEB ALPINE PUBCOOKIE COMPONENT WILL NOT BE BUILT.])
2082     elif test -z "$WEB_BINDIR" ; then
2083       WEB_PUBCOOKIE_BUILD=
2084       AC_MSG_NOTICE([* * * Web Alpine binary directory not provided.])
2085         AC_MSG_ERROR([* * * --with-pubcookie requires --with-web-bin=PATH.
2086         Please re-run configure with these options:
2087         --with-pubcookie --with-web-bin=/usr/local/libexec/alpine/bin])
2088     else
2089       AC_DEFINE([PUBCOOKIE],[1],[Include support for UW Pubcookie Web Authentication])
2090       WEB_PUBCOOKIE_LIB=../pubcookie/libauthgssproxy.a
2091       WEB_PUBCOOKIE_LINK=gssapi_proxy.l
2092     fi
2093   fi
2096 AC_SUBST([REGEX_BUILD])
2098 AC_SUBST([WEB_BUILD])
2099 AC_SUBST([WEB_BINDIR])
2100 AC_SUBST([WEB_PUBCOOKIE_BUILD])
2101 AC_SUBST([WEB_PUBCOOKIE_LIB])
2102 AC_SUBST([WEB_PUBCOOKIE_LINK])
2104 AC_SUBST([AM_CFLAGS])
2105 AC_SUBST([AM_LDFLAGS])
2107 AC_CONFIG_FILES([m4/Makefile po/Makefile.in $REGEX_MAKEFILE \
2108           pith/osdep/Makefile pith/charconv/Makefile pith/Makefile \
2109           pico/osdep/Makefile pico/Makefile \
2110           alpine/osdep/Makefile alpine/Makefile \
2111           web/src/Makefile web/src/pubcookie/Makefile \
2112           web/src/alpined.d/Makefile \
2113           Makefile])
2114 AC_OUTPUT