sj4/configure.in
2008-01-11 11:57:08 +00:00

900 lines
23 KiB
Text

# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
AC_INIT([sj3], [2.0.1.21], [iwata@quasiquote.org])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_SRCDIR([src/sj3serv/main.c])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE([1.9.6])
# Enable GNU extensions such as asprintf(3), BSD-originated functions,
# POSIX features and more on glibc (and some other
# implementations). See features.h. This macro should be placed here.
AC_GNU_SOURCE
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_RANLIB
# Checks for libraries.
LIBSJ3CORE_MAJOR_VERSION=2
LIBSJ3CORE_MINOR_VERSION=0
LIBSJ3CORE_MICRO_VERSION=121
LIBSJ3CORE_MICRO_VERSION_SUFFIX=
LIBSJ3CORE_VERSION=$LIBSJ3CORE_MAJOR_VERSION.$LIBSJ3CORE_MINOR_VERSION.$LIBSJ3CORE_MICRO_VERSION$LIBSJ3CORE_MICRO_VERSION_SUFFIX
LIBSJ3CORE_VERSION_INFO=`expr $LIBSJ3CORE_MAJOR_VERSION + $LIBSJ3CORE_MINOR_VERSION`:$LIBSJ3CORE_MICRO_VERSION:$LIBSJ3CORE_MINOR_VERSION
LIBSJ3CORE_VERSION_NUMBER=`expr $LIBSJ3CORE_MAJOR_VERSION \* 10000 + $LIBSJ3CORE_MINOR_VERSION \* 100 + $LIBSJ3CORE_MICRO_VERSION`
AC_SUBST(LIBSJ3CORE_MAJOR_VERSION)
AC_SUBST(LIBSJ3CORE_MINOR_VERSION)
AC_SUBST(LIBSJ3CORE_MICRO_VERSION)
AC_SUBST(LIBSJ3CORE_MICRO_VERSION_SUFFIX)
AC_SUBST(LIBSJ3CORE_VERSION)
AC_SUBST(LIBSJ3CORE_VERSION_INFO)
AC_SUBST(LIBSJ3CORE_VERSION_NUMBER)
AC_SUBST(LIBSJ3CORE_VERSION_EXTRA)
LIBSJ3LIB_MAJOR_VERSION=2
LIBSJ3LIB_MINOR_VERSION=0
LIBSJ3LIB_MICRO_VERSION=121
LIBSJ3LIB_MICRO_VERSION_SUFFIX=
LIBSJ3LIB_VERSION=$LIBSJ3LIB_MAJOR_VERSION.$LIBSJ3LIB_MINOR_VERSION.$LIBSJ3LIB_MICRO_VERSION$LIBSJ3LIB_MICRO_VERSION_SUFFIX
LIBSJ3LIB_VERSION_INFO=`expr $LIBSJ3LIB_MAJOR_VERSION + $LIBSJ3LIB_MINOR_VERSION`:$LIBSJ3LIB_MICRO_VERSION:$LIBSJ3LIB_MINOR_VERSION
LIBSJ3LIB_VERSION_NUMBER=`expr $LIBSJ3LIB_MAJOR_VERSION \* 10000 + $LIBSJ3LIB_MINOR_VERSION \* 100 + $LIBSJ3LIB_MICRO_VERSION`
AC_SUBST(LIBSJ3LIB_MAJOR_VERSION)
AC_SUBST(LIBSJ3LIB_MINOR_VERSION)
AC_SUBST(LIBSJ3LIB_MICRO_VERSION)
AC_SUBST(LIBSJ3LIB_MICRO_VERSION_SUFFIX)
AC_SUBST(LIBSJ3LIB_VERSION)
AC_SUBST(LIBSJ3LIB_VERSION_INFO)
AC_SUBST(LIBSJ3LIB_VERSION_NUMBER)
AC_SUBST(LIBSJ3LIB_VERSION_EXTRA)
LIBSJ3RKCV_MAJOR_VERSION=2
LIBSJ3RKCV_MINOR_VERSION=0
LIBSJ3RKCV_MICRO_VERSION=121
LIBSJ3RKCV_MICRO_VERSION_SUFFIX=
LIBSJ3RKCV_VERSION=$LIBSJ3RKCV_MAJOR_VERSION.$LIBSJ3RKCV_MINOR_VERSION.$LIBSJ3RKCV_MICRO_VERSION$LIBSJ3RKCV_MICRO_VERSION_SUFFIX
LIBSJ3RKCV_VERSION_INFO=`expr $LIBSJ3RKCV_MAJOR_VERSION + $LIBSJ3RKCV_MINOR_VERSION`:$LIBSJ3RKCV_MICRO_VERSION:$LIBSJ3RKCV_MINOR_VERSION
LIBSJ3RKCV_VERSION_NUMBER=`expr $LIBSJ3RKCV_MAJOR_VERSION \* 10000 + $LIBSJ3RKCV_MINOR_VERSION \* 100 + $LIBSJ3RKCV_MICRO_VERSION`
AC_SUBST(LIBSJ3RKCV_MAJOR_VERSION)
AC_SUBST(LIBSJ3RKCV_MINOR_VERSION)
AC_SUBST(LIBSJ3RKCV_MICRO_VERSION)
AC_SUBST(LIBSJ3RKCV_MICRO_VERSION_SUFFIX)
AC_SUBST(LIBSJ3RKCV_VERSION)
AC_SUBST(LIBSJ3RKCV_VERSION_INFO)
AC_SUBST(LIBSJ3RKCV_VERSION_NUMBER)
AC_SUBST(LIBSJ3RKCV_VERSION_EXTRA)
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL
# Checks for header files.
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([ \
arpa/inet.h \
fcntl.h \
getopt.h \
locale.h \
netdb.h \
syslog.h \
netinet/in.h \
stdlib.h \
string.h \
strings.h \
sys/file.h \
sys/ioctl.h \
sys/param.h \
sys/socket.h \
sys/time.h \
termio.h \
termios.h \
unistd.h \
utmp.h \
utmpx.h \
wctype.h \
])
case "$host" in
*-*-aix*)
# Some versions of VAC won't allow macro redefinitions at
# -qlanglevel=ansi, and autoconf 2.60 sometimes insists on using that
# particularly with older versions of vac or xlc.
# It also throws errors about null macro argments, but these are
# not fatal.
AC_MSG_CHECKING(if compiler allows macro redefinitions)
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE([[
#define testmacro foo
#define testmacro bar
int main(void) { exit(0); }
]])],
[ AC_MSG_RESULT(yes) ],
[ AC_MSG_RESULT(no)
CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`"
LD="`echo $LD | sed 's/-qlanglvl\=ansi//g'`"
CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`"
CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`"
]
)
AC_MSG_CHECKING([how to specify blibpath for linker ($LD)])
if (test -z "$blibpath"); then
blibpath="/usr/lib:/lib"
fi
saved_LDFLAGS="$LDFLAGS"
if test "$GCC" = "yes"; then
flags="-Wl,-blibpath: -Wl,-rpath, -blibpath:"
else
flags="-blibpath: -Wl,-blibpath: -Wl,-rpath,"
fi
for tryflags in $flags ;do
if (test -z "$blibflags"); then
LDFLAGS="$saved_LDFLAGS $tryflags$blibpath"
AC_TRY_LINK([], [], [blibflags=$tryflags])
fi
done
if (test -z "$blibflags"); then
AC_MSG_RESULT(not found)
AC_MSG_ERROR([*** must be able to specify blibpath on AIX - check config.log])
else
AC_MSG_RESULT($blibflags)
fi
LDFLAGS="$saved_LDFLAGS"
;;
*-*-cygwin*)
AC_DEFINE(HAVE_CYGWIN, 1, [Define if you are on Cygwin])
;;
*-*-dgux*)
;;
*-*-darwin*)
AC_MSG_CHECKING(if we have working getaddrinfo)
AC_TRY_RUN([#include <mach-o/dyld.h>
main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
exit(0);
else
exit(1);
}], [AC_MSG_RESULT(working)],
[AC_MSG_RESULT(buggy)
AC_DEFINE(BROKEN_GETADDRINFO, 1, [getaddrinfo is broken (if present)])],
[AC_MSG_RESULT(assume it is working)])
;;
*-*-dragonfly*)
;;
*-*-hpux*)
# first we define all of the options common to all HP-UX releases
CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
LIBS="$LIBS -lsec"
AC_CHECK_LIB(xnet, t_error, ,
AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***]))
# next, we define all of the options specific to major releases
case "$host" in
*-*-hpux10*)
if test -z "$GCC"; then
CFLAGS="$CFLAGS -Ae"
fi
;;
*-*-hpux11*)
;;
esac
# lastly, we define options specific to minor releases
case "$host" in
*-*-hpux10.26)
;;
esac
;;
*-*-irix5*)
PATH="$PATH:/usr/etc"
AC_DEFINE(BROKEN_INET_NTOA, 1,
[Define if you system's inet_ntoa is busted
(e.g. Irix gcc issue)])
;;
*-*-irix6*)
PATH="$PATH:/usr/etc"
AC_DEFINE(BROKEN_INET_NTOA)
;;
*-*-linux*)
AC_DEFINE(DONT_TRY_OTHER_AF, 1, [Workaround more Linux IPv6 quirks])
inet6_default_4in6=yes
;;
mips-sony-bsd|mips-sony-newsos4)
SONY=1
;;
*-*-netbsd*)
;;
*-*-freebsd*)
;;
*-*-bsdi*)
;;
*-next-*)
;;
*-*-openbsd*)
AC_DEFINE(HAVE_ATTRIBUTE__SENTINEL__, 1, [OpenBSD's gcc has sentinel])
AC_DEFINE(HAVE_ATTRIBUTE__BOUNDED__, 1, [OpenBSD's gcc has bounded])
;;
*-*-solaris*)
;;
*-*-sunos4*)
CPPFLAGS="$CPPFLAGS -DSUNOS4"
;;
*-ncr-sysv*)
LIBS="$LIBS -lc89"
;;
*-sni-sysv*)
# /usr/ucblib MUST NOT be searched on ReliantUNIX
AC_CHECK_LIB(dl, dlsym, ,)
# -lresolv needs to be at the end of LIBS or DNS lookups break
AC_CHECK_LIB(resolv, res_query, [ LIBS="$LIBS -lresolv" ])
# /usr/ucblib/libucb.a no longer needed on ReliantUNIX
# Attention: always take care to bind libsocket and libnsl before libc,
# otherwise you will find lots of "SIOCGPGRP errno 22" on syslog
;;
# UnixWare 1.x, UnixWare 2.x, and others based on code from Univel.
*-*-sysv4.2*)
;;
# UnixWare 7.x, OpenUNIX 8
*-*-sysv5*)
;;
*-*-sysv*)
;;
# SCO UNIX and OEM versions of SCO UNIX
*-*-sco3.2v4*)
AC_MSG_ERROR("This Platform is no longer supported.")
;;
# SCO OpenServer 5.x
*-*-sco3.2v5*)
if test -z "$GCC"; then
CFLAGS="$CFLAGS -belf"
fi
LIBS="$LIBS -lprot -lx -ltinfo -lm"
no_dev_ptmx=1
MANTYPE=man
TEST_SHELL=ksh
;;
*-*-unicosmk*)
LDFLAGS="$LDFLAGS"
LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
MANTYPE=cat
;;
*-*-unicosmp*)
LDFLAGS="$LDFLAGS"
LIBS="$LIBS -lgen -lacid -ldb"
MANTYPE=cat
;;
*-*-unicos*)
LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal"
LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
MANTYPE=cat
;;
*-dec-osf*)
AC_DEFINE(BROKEN_GETADDRINFO)
;;
*-*-nto-qnx*)
;;
*-*-ultrix*)
AC_DEFINE(BROKEN_GETGROUPS, 1, [getgroups(0,NULL) will return -1])
AC_DEFINE(HAVE_SYS_SYSLOG_H, 1, [Force use of sys/syslog.h on Ultrix])
;;
*-*-lynxos)
CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"
;;
esac
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_HEADER_STDBOOL
AC_TYPE_UID_T
AC_CACHE_CHECK([for ssize_t], ac_cv_have_ssize_t, [
AC_TRY_COMPILE(
[
#include <sys/types.h>
],
[ ssize_t foo; foo = 1235; ],
[ ac_cv_have_ssize_t="yes" ],
[ ac_cv_have_ssize_t="no" ]
)
])
if test "x$ac_cv_have_ssize_t" = "xyes" ; then
AC_DEFINE(HAVE_SSIZE_T, 1, [define if you have ssize_t data type])
fi
# Checks for library functions.
AC_FUNC_CHOWN
AC_FUNC_ERROR_AT_LINE
AC_FUNC_FORK
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_REALLOC
AC_FUNC_SELECT_ARGTYPES
AC_FUNC_SETPGRP
AC_TYPE_SIGNAL
AC_FUNC_STAT
AC_FUNC_VPRINTF
AC_FUNC_WAIT3
AC_CHECK_FUNCS([ \
alarm \
arc4random \
asprintf \
dup2 \
endpwent \
freeaddrinfo \
ftruncate \
inet_ntoa \
getaddrinfo \
gethostbyaddr \
gethostbyname \
gethostname \
getnameinfo \
getopt \
getpeereid \
memset \
mkdir \
select \
setlocale \
setproctitle \
setsid \
socket \
snprintf \
strchr \
strdup \
strerror \
strlcat \
strlcpy \
strrchr \
strstr \
strtol \
vsnprintf \
vasprintf \
])
AC_CHECK_LIBM
AC_SUBST(LIBM)
# IRIX has a const char return value for gai_strerror()
AC_CHECK_FUNCS(gai_strerror,[
AC_DEFINE(HAVE_GAI_STRERROR)
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
const char *gai_strerror(int);],[
char *str;
str = gai_strerror(0);],[
AC_DEFINE(HAVE_CONST_GAI_STRERROR_PROTO, 1,
[Define if gai_strerror() returns const char *])])])
AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <sys/socket.h>
],
[ struct sockaddr_storage s; ],
[ ac_cv_have_struct_sockaddr_storage="yes" ],
[ ac_cv_have_struct_sockaddr_storage="no" ]
)
])
if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1,
[define if you have struct sockaddr_storage data type])
fi
AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <netinet/in.h>
],
[ struct sockaddr_in6 s; s.sin6_family = 0; ],
[ ac_cv_have_struct_sockaddr_in6="yes" ],
[ ac_cv_have_struct_sockaddr_in6="no" ]
)
])
if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1,
[define if you have struct sockaddr_in6 data type])
fi
AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <netinet/in.h>
],
[ struct in6_addr s; s.s6_addr[0] = 0; ],
[ ac_cv_have_struct_in6_addr="yes" ],
[ ac_cv_have_struct_in6_addr="no" ]
)
])
if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1,
[define if you have struct in6_addr data type])
fi
AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
AC_TRY_COMPILE(
[
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
],
[ struct addrinfo s; s.ai_flags = AI_PASSIVE; ],
[ ac_cv_have_struct_addrinfo="yes" ],
[ ac_cv_have_struct_addrinfo="no" ]
)
])
if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1,
[define if you have struct addrinfo data type])
fi
# Check for broken snprintf
if test "x$ac_cv_func_snprintf" = "xyes" ; then
AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
int main(void){char b[5];snprintf(b,5,"123456789");exit(b[4]!='\0');}
]])],
[AC_MSG_RESULT(yes)],
[
AC_MSG_RESULT(no)
AC_DEFINE(BROKEN_SNPRINTF, 1,
[Define if your snprintf is busted])
AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
],
[ AC_MSG_WARN([cross compiling: Assuming working snprintf()]) ]
)
fi
# If we don't have a working asprintf, then we strongly depend on vsnprintf
# returning the right thing on overflow: the number of characters it tried to
# create (as per SUSv3)
if test "x$ac_cv_func_asprintf" != "xyes" && \
test "x$ac_cv_func_vsnprintf" = "xyes" ; then
AC_MSG_CHECKING([whether vsnprintf returns correct values on overflow])
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <sys/types.h>
#include <stdio.h>
#include <stdarg.h>
int x_snprintf(char *str,size_t count,const char *fmt,...)
{
size_t ret; va_list ap;
va_start(ap, fmt); ret = vsnprintf(str, count, fmt, ap); va_end(ap);
return ret;
}
int main(void)
{
char x[1];
exit(x_snprintf(x, 1, "%s %d", "hello", 12345) == 11 ? 0 : 1);
} ]])],
[AC_MSG_RESULT(yes)],
[
AC_MSG_RESULT(no)
AC_DEFINE(BROKEN_SNPRINTF, 1,
[Define if your snprintf is busted])
AC_MSG_WARN([****** Your vsnprintf() function is broken, complain to your vendor])
],
[ AC_MSG_WARN([cross compiling: Assuming working vsnprintf()]) ]
)
fi
AC_CACHE_CHECK([whether va_copy exists], ac_cv_have_va_copy, [
AC_TRY_LINK(
[#include <stdarg.h>
va_list x,y;],
[va_copy(x,y);],
[ ac_cv_have_va_copy="yes" ],
[ ac_cv_have_va_copy="no" ]
)
])
if test "x$ac_cv_have_va_copy" = "xyes" ; then
AC_DEFINE(HAVE_VA_COPY, 1, [Define if va_copy exists])
fi
AC_CACHE_CHECK([whether __va_copy exists], ac_cv_have___va_copy, [
AC_TRY_LINK(
[#include <stdarg.h>
va_list x,y;],
[__va_copy(x,y);],
[ ac_cv_have___va_copy="yes" ],
[ ac_cv_have___va_copy="no" ]
)
])
if test "x$ac_cv_have___va_copy" = "xyes" ; then
AC_DEFINE(HAVE___VA_COPY, 1, [Define if __va_copy exists])
fi
AC_CACHE_CHECK([whether getopt has optreset support],
ac_cv_have_getopt_optreset, [
AC_TRY_LINK(
[
#include <getopt.h>
],
[ extern int optreset; optreset = 0; ],
[ ac_cv_have_getopt_optreset="yes" ],
[ ac_cv_have_getopt_optreset="no" ]
)
])
if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
AC_DEFINE(HAVE_GETOPT_OPTRESET, 1,
[Define if your getopt(3) defines and uses optreset])
fi
AC_CHECK_FUNCS(setresuid, [
dnl Some platorms have setresuid that isn't implemented, test for this
AC_MSG_CHECKING(if setresuid seems to work)
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdlib.h>
#include <errno.h>
int main(){errno=0; setresuid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);}
]])],
[AC_MSG_RESULT(yes)],
[AC_DEFINE(BROKEN_SETRESUID, 1,
[Define if your setresuid() is broken])
AC_MSG_RESULT(not implemented)],
[AC_MSG_WARN([cross compiling: not checking setresuid])]
)
])
AC_CHECK_FUNCS(setresgid, [
dnl Some platorms have setresgid that isn't implemented, test for this
AC_MSG_CHECKING(if setresgid seems to work)
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdlib.h>
#include <errno.h>
int main(){errno=0; setresgid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);}
]])],
[AC_MSG_RESULT(yes)],
[AC_DEFINE(BROKEN_SETRESGID, 1,
[Define if your setresgid() is broken])
AC_MSG_RESULT(not implemented)],
[AC_MSG_WARN([cross compiling: not checking setresuid])]
)
])
AC_CHECK_FUNC(daemon,
[AC_DEFINE(HAVE_DAEMON, 1, [Define if your libraries define daemon()])],
[AC_CHECK_LIB(bsd, daemon,
[LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
)
# On systems where [v]snprintf is broken, but is declared in stdio,
# check that the fmt argument is const char * or just char *.
# This is only useful for when BROKEN_SNPRINTF
AC_MSG_CHECKING([whether snprintf can declare const char *fmt])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
int snprintf(char *a, size_t b, const char *c, ...) { return 0; }
int main(void) { snprintf(0, 0, 0); }
]])],
[AC_MSG_RESULT(yes)
AC_DEFINE(SNPRINTF_CONST, [const],
[Define as const if snprintf() can declare const char *fmt])],
[AC_MSG_RESULT(no)
AC_DEFINE(SNPRINTF_CONST, [/* not const */])])
AC_ARG_WITH(libwrap,[ --with-libwrap use tcp wrappers [default=no]], , wrap_ok=no)
# Check for missing getpeereid (or equiv) support
NO_PEERCHECK=""
if test "x$ac_cv_func_getpeereid" != "xyes" ; then
AC_MSG_CHECKING([whether system supports SO_PEERCRED getsockopt])
AC_TRY_COMPILE(
[#include <sys/types.h>
#include <sys/socket.h>],
[int i = SO_PEERCRED;],
[ AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_SO_PEERCRED, 1, [Have PEERCRED socket option])
],
[AC_MSG_RESULT(no)
NO_PEERCHECK=1]
)
fi
if test ! -z "$NO_PEERCHECK" ; then
echo "WARNING: the operating system that you are using does not "
echo "appear to support either the getpeereid() API nor the "
echo "SO_PEERCRED getsockopt() option. These facilities are used to "
echo "enforce security checks to prevent unauthorised connections to "
echo "sj3serv. Their absence increases the risk that a malicious "
echo "user can connect to your agent. "
echo ""
fi
if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
test "x$check_for_hpux_broken_getaddrinfo" = "x1"; then
AC_MSG_CHECKING(if getaddrinfo seems to work)
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
#include <sys/socket.h>
#include <netdb.h>
#include <errno.h>
#include <netinet/in.h>
#define TEST_PORT "2222"
int
main(void)
{
int err, sock;
struct addrinfo *gai_ai, *ai, hints;
char ntop[NI_MAXHOST], strport[NI_MAXSERV], *name = NULL;
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE;
err = getaddrinfo(name, TEST_PORT, &hints, &gai_ai);
if (err != 0) {
fprintf(stderr, "getaddrinfo failed (%s)", gai_strerror(err));
exit(1);
}
for (ai = gai_ai; ai != NULL; ai = ai->ai_next) {
if (ai->ai_family != AF_INET6)
continue;
err = getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop,
sizeof(ntop), strport, sizeof(strport),
NI_NUMERICHOST|NI_NUMERICSERV);
if (err != 0) {
if (err == EAI_SYSTEM)
perror("getnameinfo EAI_SYSTEM");
else
fprintf(stderr, "getnameinfo failed: %s\n",
gai_strerror(err));
exit(2);
}
sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
if (sock < 0)
perror("socket");
if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) {
if (errno == EBADF)
exit(3);
}
}
exit(0);
}
]])],
[
AC_MSG_RESULT(yes)
],
[
AC_MSG_RESULT(no)
AC_DEFINE(BROKEN_GETADDRINFO)
],
[
AC_MSG_RESULT(cross-compiling, assuming yes)
]
)
fi
AC_MSG_CHECKING(enable server for sj3)
AC_ARG_ENABLE(server,
AC_HELP_STRING([--enable-server],
[install server @<:@default=yes@:>@]),
[],
[
enable_server=yes
])
AM_CONDITIONAL(BUILDABLE_SJ3SERV, test x$enable_server = xyes)
AC_MSG_RESULT($enable_server)
AC_MSG_CHECKING(enable client for sj3)
AC_ARG_ENABLE(client,
AC_HELP_STRING([--enable-client],
[install client @<:@default=yes@:>@]),
[],
[
enable_client=yes
])
AM_CONDITIONAL(BUILDABLE_SJ3CLIENT, test x$enable_client = xyes)
AC_MSG_RESULT($enable_client)
AC_MSG_CHECKING(enable dictionary for sj3)
AC_ARG_ENABLE(dict,
AC_HELP_STRING([--enable-dict],
[install dictionary @<:@default=yes@:>@]),
[],
[
if test ! x$enable_server = xyes; then
AC_MSG_ERROR([*** must be set --enable-server])
fi
enable_dict=yes
])
AM_CONDITIONAL(BUILDABLE_SJ3DICT, test x$enable_dict = xyes)
AC_MSG_RESULT($enable_dict)
AC_MSG_CHECKING(enable demo for sj3)
AC_ARG_ENABLE(demo,
AC_HELP_STRING([--enable-demo],
[install demo @<:@default=yes@:>@]),
[],
[
if test ! x$enable_client = xyes; then
AC_MSG_ERROR([*** must be set --enable-client])
fi
enable_demo=yes
])
AM_CONDITIONAL(BUILDABLE_SJ3DEMO, test x$enable_demo = xyes)
AC_MSG_RESULT($enable_demo)
WRAP_LIB=
if test "x$with_libwrap" = "xyes"; then
sj3_save_LIBS="$LIBS"
LIBS="$LIBS -lwrap"
AC_MSG_CHECKING([for tcp_wrapper library and headers])
wrap_ok=no
AC_TRY_LINK(
[#include <stdio.h>
#include <tcpd.h>
#include <syslog.h>
int allow_severity = LOG_INFO;
int deny_severity = LOG_WARNING;],
[struct request_info *request; return hosts_access (request);],
[AC_DEFINE(USE_LIBWRAP, 1, [Define if you have the tcp_wrapper library.])
WRAP_LIB="-lwrap"
wrap_ok=yes],
[LIBS="$LIBS -lnsl"
AC_TRY_LINK(
[#include <stdio.h>
#include <tcpd.h>
#include <syslog.h>
int allow_severity = LOG_INFO;
int deny_severity = LOG_WARNING;],
[struct request_info *request; return hosts_access (request);],
[AC_DEFINE(USE_LIBWRAP, 1, [Define if you have the tcp_wrapper library.])
WRAP_LIB="-lwrap -lnsl"
wrap_ok=yes])])
AC_MSG_RESULT($wrap_ok)
LIBS="$sj3_save_LIBS"
fi
AC_SUBST(WRAP_LIB)
AC_ARG_WITH(external-lua,
AS_HELP_STRING([--with-external-lua], [Use external lua library,
@<:@default=no@:>@]),
[
if test "x$with_external_lua" = "xyes"; then
PKG_CHECK_MODULES(LUA, lua >= 5.1, with_internal_lua="no")
else
with_internal_lua=yes
fi
],
[
with_internal_lua=yes
]
)
AM_CONDITIONAL(SJ3_INTERNAL_LUA, test x$with_internal_lua = xyes)
AC_ARG_WITH(user,
[ --with-user=uid name of the sj3 user (default=_sj3)],
sj3_user="$withval", sj3_user="_sj3")
SJ3OWNER=$sj3_user
AC_DEFINE_UNQUOTED(SJ3OWNER, "$sj3_user",[name of the sj3 user])
AC_SUBST(SJ3OWNER)
AC_ARG_WITH(group,
[ --with-group=gid name of the sj3 group (default=_sj3)],
sj3_group="$withval", sj3_group="_sj3")
SJ3GROUP=$sj3_group
AC_DEFINE_UNQUOTED(SJ3GROUP, "$sj3_group",[name of the sj3 group])
AC_SUBST(SJ3GROUP)
dnl configure config directory
sj3sysconf_dir=`echo $sysconfdir | grep prefix`
if test -n "$sj3sysconf_dir"; then
if test "$prefix" = "NONE"
then
sj3sysconf_dir="$ac_default_prefix/etc/sj3"
else
sj3sysconf_dir="$prefix/etc/sj3"
fi
else
sj3sysconf_dir="$sysconfdir/sj3"
fi
SJ3SYSCONFDIR=$sj3sysconf_dir
AC_SUBST(SJ3SYSCONFDIR)
AC_DEFINE_UNQUOTED(SJ3CONFDIR, "$sj3sysconf_dir", [server config dir])
AC_DEFINE_UNQUOTED(RUNCMDFILE, "$sj3sysconf_dir/sj3serv.lua", [server config file])
dnl configure config directory
sj3var_dir=`echo $localstatedir | grep prefix`
if test -n "$sj3var_dir"; then
if test "$prefix" = "NONE"
then
sj3var_dir="$ac_default_prefix/var"
else
sj3var_dir="$prefix/var"
fi
else
sj3var_dir="$localstatedir"
fi
SJ3VARDIR="$sj3var_dir"
AC_SUBST(SJ3VARDIR)
AC_DEFINE_UNQUOTED(CHROOTDIR, "$sj3var_dir/spool/sj3", [chrooted dir])
AC_DEFINE_UNQUOTED(SOCKETNAME, "$sj3var_dir/run/sj3serv.socket", [socket file])
AC_DEFINE_UNQUOTED(PIDFILE, "$sj3var_dir/run/sj3serv.pid", [pid file])
SJ3DICTDIR="$sj3var_dir/spool/sj3"
AC_SUBST(SJ3DICTDIR)
AC_DEFINE_UNQUOTED(DICTROOTDIR, "$SJ3DICTDIR", [dict root dir])
AH_BOTTOM([/* Include os specific header. */
#include "sj3compat.h"])
AC_CONFIG_FILES([
Makefile
sj3.spec
include/Makefile
include/sj3common/Makefile
include/sj3compat/Makefile
include/sj3core/Makefile
include/sj3lib/Makefile
include/sj3rkcv/Makefile
dict/Makefile
doc/Makefile
doc/man/Makefile
doc/doc/Makefile
lib/Makefile
lib/sj3compat/Makefile
lib/sj3core/Makefile
lib/sj3lib/Makefile
lib/lua/Makefile
lib/lua/doc/Makefile
lib/lua/etc/Makefile
lib/lua/src/Makefile
lib/lua/test/Makefile
lib/sj3lib/sj3lib.pc
lib/sj3rkcv/Makefile
src/Makefile
src/sj3demo/Makefile
src/sj3dic/Makefile
src/sj3mkdic/Makefile
src/sj3serv/Makefile
src/sj3stat/Makefile
])
AC_OUTPUT