X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=configure.in;h=e52c5e607ca14a793bd9059a9f0af9671e69a747;hp=c3fb81a7e1cdc83fb59a16e4aa4d9d3882c8fe1b;hb=389877bae1fe1a9f7259b8979f6a930744d90fab;hpb=557d33aeabe46e9a0411959703f721c5b9ce2ae9 diff --git a/configure.in b/configure.in index c3fb81a..e52c5e6 100644 --- a/configure.in +++ b/configure.in @@ -4,10 +4,17 @@ dnl dnl $Id$ dnl -AC_INIT(h/nmh.h) +dnl 2.13 definitely chokes; 2.53 is the earliest version I've tested. +dnl 2.50 is the major breakpoint between the old autoconf and the new, +dnl so require that. If there are bug reports about 2.50-2.52 not working +dnl we can always move this up a little. +AC_PREREQ(2.50) + +AC_INIT(nmh, m4_normalize(m4_include([VERSION]))) +AC_CONFIG_SRCDIR(h/nmh.h) AC_CONFIG_HEADER(config.h) -AC_CANONICAL_SYSTEM +AC_CANONICAL_TARGET dnl --------------------- dnl define a macro or two @@ -23,11 +30,8 @@ if test -n "$LIBTOOL" ; then fi ] ) - -dnl What version of nmh are we building? -VERSION=`sed -e 's/nmh-//' ${srcdir}/VERSION` -echo "configuring for nmh-$VERSION" -AC_SUBST(VERSION)dnl +echo "configuring for AC_PACKAGE_NAME-AC_PACKAGE_VERSION" +AC_SUBST(VERSION,AC_PACKAGE_VERSION)dnl dnl What date of nmh are we building? DATE=`cat ${srcdir}/DATE` @@ -348,11 +352,11 @@ AC_SUBST(pagerpath)dnl dnl Look for `sendmail' pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin -AC_PATH_PROG(sendmailpath, sendmail, no, [$pathtmp]) +AC_PATH_PROG(sendmailpath, sendmail, /usr/sbin/sendmail, [$pathtmp]) dnl Look for `vi' pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin -AC_PATH_PROG(vipath, vi, no, [$pathtmp]) +AC_PATH_PROG(vipath, vi, /bin/vi, [$pathtmp]) dnl If editor is not specified yet, dnl then use `vi' as the default. @@ -444,26 +448,25 @@ AC_HEADER_SYS_WAIT AC_HEADER_STAT AC_CHECK_HEADERS(string.h memory.h stdlib.h unistd.h errno.h fcntl.h \ limits.h crypt.h termcap.h termio.h termios.h locale.h \ - netdb.h sys/param.h sys/time.h sys/utsname.h arpa/inet.h \ - arpa/ftp.h) + langinfo.h netdb.h sys/param.h sys/time.h sys/utsname.h \ + iconv.h sys/stream.h arpa/inet.h arpa/ftp.h) AC_CACHE_CHECK(POSIX termios, nmh_cv_sys_posix_termios, -[AC_TRY_LINK([#include +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include #include -#include ], -[/* SunOS 4.0.3 has termios.h but not the library calls. */ -tcgetattr(0, 0);], - nmh_cv_sys_posix_termios=yes, nmh_cv_sys_posix_termios=no)]) +#include ]], +[[/* SunOS 4.0.3 has termios.h but not the library calls. */ +tcgetattr(0, 0);]])], +nmh_cv_sys_posix_termios=yes, nmh_cv_sys_posix_termios=no)]) if test $nmh_cv_sys_posix_termios = yes; then AC_CACHE_CHECK(TIOCGWINSZ in termios.h, nmh_cv_header_termios_h_tiocgwinsz, - [AC_TRY_LINK([#include -#include ], - [int x = TIOCGWINSZ;], - nmh_cv_header_termios_h_tiocgwinsz=yes, - nmh_cv_header_termios_h_tiocgwinsz=no)]) + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include +#include ]], + [[int x = TIOCGWINSZ;]])], + nmh_cv_header_termios_h_tiocgwinsz=yes,nmh_cv_header_termios_h_tiocgwinsz=no)]) else nmh_cv_header_termios_h_tiocgwinsz=no fi @@ -471,11 +474,10 @@ fi if test $nmh_cv_header_termios_h_tiocgwinsz = no; then AC_CACHE_CHECK(TIOCGWINSZ in sys/ioctl.h, nmh_cv_header_sys_ioctl_h_tiocgwinsz, - [AC_TRY_LINK([#include -#include ], - [int x = TIOCGWINSZ;], - nmh_cv_header_sys_ioctl_h_tiocgwinsz=yes, - nmh_cv_header_sys_ioctl_h_tiocgwinsz=no)]) + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include +#include ]], + [[int x = TIOCGWINSZ;]])], + nmh_cv_header_sys_ioctl_h_tiocgwinsz=yes,nmh_cv_header_sys_ioctl_h_tiocgwinsz=no)]) if test $nmh_cv_header_sys_ioctl_h_tiocgwinsz = yes; then AC_DEFINE(GWINSZ_IN_SYS_IOCTL)dnl fi @@ -490,7 +492,11 @@ AC_CHECK_HEADER(libio.h, [ AC_EGREP_HEADER(_IO_write_ptr, libio.h, [ AC_DEFINE(LINUX_STDIO) ]) ]) -AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM)) +AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM),, +[[#if HAVE_SYS_STREAM_H +# include +#endif +]]) dnl --------------- dnl CHECK FUNCTIONS @@ -499,7 +505,7 @@ AC_FUNC_VFORK AC_CHECK_LIB(mkstemp,mkstemp) AC_CHECK_FUNCS(waitpid wait3 sigaction sigprocmask sigblock sigsetmask \ sighold sigrelse writev lstat uname tzset killpg mkstemp \ - sethostent getutent) + sethostent getutent nl_langinfo) dnl solaris screws this up AC_CHECK_FUNC(gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)], @@ -507,10 +513,11 @@ AC_CHECK_FUNC(gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)], dnl sigsetjmp may be a macro AC_MSG_CHECKING(for sigsetjmp) -AC_TRY_LINK([#include ], [sigsetjmp((void *)0, 0);], - [AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no)) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[sigsetjmp((void *)0, 0);]])],[AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) -AC_REPLACE_FUNCS(snprintf strerror strdup) +AC_REPLACE_FUNCS(snprintf strdup) dnl Look for the initgroups() declaration. On AIX 4.[13], Solaris 4.1.3, and dnl ULTRIX 4.2A the function is defined in libc but there's no declaration in @@ -547,21 +554,113 @@ for lib in $termcap_curses_order; do done AC_SUBST(TERMLIB)dnl +dnl --------------- +dnl CHECK FOR ICONV +dnl --------------- + +dnl Find iconv. It may be in libiconv and may be iconv() or libiconv() +if test "x$ac_cv_header_iconv_h" = "xyes"; then + AC_CHECK_FUNC(iconv, ac_found_iconv=yes, ac_found_iconv=no) + if test "x$ac_found_iconv" = "xno"; then + AC_CHECK_LIB(iconv, iconv, ac_found_iconv=yes) + if test "x$ac_found_iconv" = "xno"; then + AC_CHECK_LIB(iconv, libiconv, ac_found_iconv=yes) + fi + if test "x$ac_found_iconv" != "xno"; then + LIBS="-liconv $LIBS" + fi + else + dnl Handle case where there is a native iconv but iconv.h is from libiconv + AC_CHECK_DECL(_libiconv_version, + [ AC_CHECK_LIB(iconv, libiconv, LIBS="-liconv $LIBS") ],, + [ #include ]) + fi +fi +if test "x$ac_found_iconv" = xyes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) +fi + +dnl Check if iconv uses const in prototype declaration +if test "x$ac_found_iconv" = "xyes"; then + AC_CACHE_CHECK(for iconv declaration, ac_cv_iconv_const, + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include + #include ]], + [[#ifdef __cplusplus + "C" + #endif + #if defined(__STDC__) || defined(__cplusplus) + size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); + #else + size_t iconv(); + #endif]])], + [ac_cv_iconv_const=], + [ac_cv_iconv_const=const])]) + AC_DEFINE_UNQUOTED([ICONV_CONST], $ac_cv_iconv_const, + [Define as const if the declaration of iconv() needs const.]) +fi + dnl -------------- dnl CHECK FOR NDBM dnl -------------- -dnl Checks for ndbm -AC_CHECK_FUNC(dbm_open, , - AC_CHECK_LIB(ndbm, dbm_open, , - AC_CHECK_LIB(dbm, dbm_open, , - AC_CHECK_LIB(db1, dbm_open, , - AC_CHECK_LIB(gdbm, dbm_open))))) -dnl ---------------- -dnl CHECK FOR NDBM.H -dnl ---------------- +AC_ARG_WITH([ndbm],AS_HELP_STRING([--with-ndbm=ARG],[use -lARG to link with ndbm]), + [nmh_ndbm=$withval],[nmh_ndbm=autodetect]) +AC_ARG_WITH([ndbmheader],AS_HELP_STRING([--with-ndbmheader=ARG],[#include to use ndbm]), + [nmh_ndbmheader=$withval],[nmh_ndbmheader=autodetect]) + +if test "$nmh_ndbm" = "autodetect"; then + if test "$nmh_ndbmheader" != "autodetect"; then + AC_MSG_ERROR([must specify both --with-ndbm and --with-ndbmheader or neither]) + else + + dnl There are at least four implementations of ndbm, and + dnl several of those can be in different places at the whim + dnl of the system integrator. A good summary of this mess + dnl can be found at http://www.unixpapa.com/incnote/dbm.html + + dnl Classic ndbm with no library required (eg NetBSD): try this + dnl first so we don't accidentally link in a pointless but harmless + dnl library in one of the later ndbm.h+libfoo tests: + NMH_CHECK_NDBM(ndbm.h,,, + dnl Berkeley DBv2 emulating ndbm: header in db.h: + NMH_CHECK_NDBM(db.h,db,, + dnl Berkeley DBv1 emulating ndbm: + NMH_CHECK_NDBM(ndbm.h,db,, + NMH_CHECK_NDBM(ndbm.h,db1,, + dnl Classic ndbm: + NMH_CHECK_NDBM(ndbm.h,ndbm,, + dnl glibc2.1 systems put db1 in a subdir: + NMH_CHECK_NDBM(db1/ndbm.h,db1,, + dnl GNU gdbm emulating ndbm, with header possibly in gdbm/ + dnl and possibly needing gbdm_compat library: + NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm,, + NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm_compat -lgdbm,, + NMH_CHECK_NDBM(ndbm.h,gdbm,, + NMH_CHECK_NDBM(ndbm.h,gdbm_compat -lgdbm)))))))))) + + fi +else + dnl We don't really need to check that the user-specified values work, + dnl but it is a convenience to the user to bomb out early rather than + dnl after configure and half the compile process. + NMH_CHECK_NDBM([$nmh_ndbmheader],[$nmh_ndbm]) +fi + +if test "$nmh_ndbm_found" = "no"; then + AC_MSG_ERROR([could not find a working ndbm library/header combination]) +else + dnl Now export the lib/header to our makefile/config.h: + if test x"$nmh_ndbmheader" != x; then + AC_DEFINE_UNQUOTED(NDBM_HEADER, <$nmh_ndbmheader>) + fi + if test x"$nmh_ndbm" != x; then + NDBM_LIBS="-l$nmh_ndbm" + else + NDBM_LIBS= + fi + AC_SUBST(NDBM_LIBS) +fi -AC_CHECK_HEADERS(db1/ndbm.h gdbm/ndbm.h, break, ) dnl ---------------- dnl CHECK FOR HESIOD @@ -658,23 +757,21 @@ LIBS="$TERMLIB $LIBS" dnl Checks for external variable ospeed in the termcap library. AC_CACHE_CHECK(if an include file defines ospeed, nmh_cv_decl_ospeed_include_defines, -[AC_TRY_LINK( -[#include +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include #if HAVE_TERMIOS_H #include #endif #if HAVE_TERMCAP_H #include -#endif], [ospeed = 0;], -nmh_cv_decl_ospeed_include_defines=yes, -nmh_cv_decl_ospeed_include_defines=no)]) +#endif]], [[ospeed = 0;]])], +nmh_cv_decl_ospeed_include_defines=yes,nmh_cv_decl_ospeed_include_defines=no)]) if test $nmh_cv_decl_ospeed_include_defines = no; then AC_CACHE_CHECK(if you must define ospeed, nmh_cv_decl_ospeed_must_define, - [AC_TRY_LINK( ,[extern short ospeed; ospeed = 0;], - nmh_cv_decl_ospeed_must_define=yes, - nmh_cv_decl_ospeed_must_define=no)]) + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], + [[extern short ospeed; ospeed = 0;]])], + nmh_cv_decl_ospeed_must_define=yes,nmh_cv_decl_ospeed_must_define=no)]) fi if test $nmh_cv_decl_ospeed_include_defines = yes; then @@ -714,10 +811,9 @@ dnl Check for sigset_t. Currently I'm looking in dnl and . Others might need dnl to be added. AC_CACHE_CHECK(for sigset_t, nmh_cv_type_sigset_t, -[AC_TRY_COMPILE( -[#include -#include ], [sigset_t tempsigset;], - nmh_cv_type_sigset_t=yes, nmh_cv_type_sigset_t=no)]) +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include +#include ]], [[sigset_t tempsigset;]])], +nmh_cv_type_sigset_t=yes,nmh_cv_type_sigset_t=no)]) if test $nmh_cv_type_sigset_t = no; then AC_DEFINE(sigset_t, unsigned int) fi @@ -725,11 +821,10 @@ fi dnl ---------------- dnl CHECK STRUCTURES dnl ---------------- -AC_STRUCT_ST_BLKSIZE +AC_CHECK_MEMBERS(struct stat.st_blksize) AC_CACHE_CHECK(for tm_gmtoff in struct tm, nmh_cv_struct_tm_gmtoff, -[AC_TRY_COMPILE( -[#ifdef TIME_WITH_SYS_TIME +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME # include # include #else @@ -738,13 +833,21 @@ AC_CACHE_CHECK(for tm_gmtoff in struct tm, nmh_cv_struct_tm_gmtoff, # else # include # endif -#endif], -[struct tm temptm; temptm.tm_gmtoff = 0;], - nmh_cv_struct_tm_gmtoff=yes, nmh_cv_struct_tm_gmtoff=no)]) +#endif]], [[struct tm temptm; temptm.tm_gmtoff = 0;]])], +nmh_cv_struct_tm_gmtoff=yes,nmh_cv_struct_tm_gmtoff=no)]) if test $nmh_cv_struct_tm_gmtoff = yes; then AC_DEFINE(HAVE_TM_GMTOFF) fi +AC_CACHE_CHECK(for ut_type in struct utmp, nmh_cv_struct_utmp_ut_type, +[AC_TRY_COMPILE( +[#include ], +[struct utmp temputmp; temputmp.ut_type = 0;], + nmh_cv_struct_utmp_ut_type=yes, nmh_cv_struct_utmp_ut_type=no)]) +if test $nmh_cv_struct_utmp_ut_type = yes; then + AC_DEFINE(HAVE_UTMP_UT_TYPE) +fi + dnl ------------- dnl CHECK SIGNALS dnl ------------- @@ -836,10 +939,11 @@ esac dnl ---------------- dnl OUTPUT MAKEFILES dnl ---------------- -AC_OUTPUT(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \ - mts/Makefile mts/smtp/Makefile \ - etc/Makefile docs/Makefile man/Makefile, \ - [test -z "$CONFIG_HEADERS" || echo > stamp-h]) +AC_CONFIG_FILES(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \ + mts/Makefile mts/smtp/Makefile \ + etc/Makefile docs/Makefile man/Makefile) +AC_CONFIG_COMMANDS([stamp],[test -z "$CONFIG_HEADERS" || echo > stamp-h]) +AC_OUTPUT dnl Umm, what's the point of these assignments?? -- eval "nmhbin=${bindir}"; eval "nmhbin2=${nmhbin}" @@ -865,7 +969,7 @@ fi echo " nmh configuration ----------------- -nmh version : ${VERSION} +nmh version : AC_PACKAGE_VERSION target os : ${target} compiler : ${CC} compiler flags : ${CFLAGS}