opensc/configure.in

510 lines
12 KiB
Plaintext

dnl -*- mode: m4; -*-
dnl Process this file with autoconf to produce a configure script.
dnl $Id$
# Require autoconf 2.52
AC_PREREQ(2.52)
AC_INIT(src/libopensc/sc.c)
AM_INIT_AUTOMAKE(libopensc, 0.4.0)
AM_CONFIG_HEADER(config.h)
AC_CANONICAL_HOST
case $host in
darwin* | rhapsody*)
AC_DEFINE(OS_MACOSX,1,[MacOS X])
;;
beos*)
AC_DEFINE(OS_BEOS,1,[BeOS])
;;
cygwin* | mingw* | pw32*)
AC_DEFINE(OS_CYGWIN,1,[Cywin32 and friends])
;;
*irix*)
AC_DEFINE(OS_IRIX,1,[SGI IRIX])
;;
*hpux*)
AC_DEFINE(OS_HPUX,1,[HP-UX])
;;
*solaris* | *sunos*)
AC_DEFINE(OS_SOLARIS,1,[Sun Solaris])
;;
*osf*)
AC_DEFINE(OS_DUNIX,1,[Digital UNIX])
;;
*aix*)
AC_DEFINE(OS_AIX,1,[IBM AIX])
;;
*freebsd*)
AC_DEFINE(OS_FREEBSD,1,[FreeBSD])
;;
*netbsd*)
AC_DEFINE(OS_NETBSD,1,[NetBSD])
;;
*openbsd*)
AC_DEFINE(OS_OPENBSD,1,[OpenBSD])
;;
*linux*)
AC_DEFINE(OS_LINUX,1,[Linux])
;;
esac
AC_PROG_CC
AC_C_BIGENDIAN
dnl Check for some target-specific stuff
case "$host" in
*-*-hpux*)
CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE"
AC_DEFINE(PAM_SUN_CODEBASE, 1, [PAM based on SUN codebase])
;;
*-*-solaris*)
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib"
need_dash_r=1
AC_DEFINE(PAM_SUN_CODEBASE, 1, [PAM based on SUN codebase])
;;
*-*-sunos4*)
CPPFLAGS="$CPPFLAGS -DSUNOS4"
AC_CHECK_FUNCS(getpwanam)
AC_DEFINE(PAM_SUN_CODEBASE, 1, [PAM based on SUN codebase])
;;
*-*-aix*)
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib"
if (test "$LD" != "gcc" && test -z "$blibpath"); then
blibpath="/usr/lib:/lib:/usr/local/lib"
fi
;;
*-*-linux*)
;;
esac
dnl Allow user to specify flags
AC_ARG_WITH(cflags,
[ --with-cflags Specify additional flags to pass to compiler],
[
if test "x$withval" != "xno" ; then
CFLAGS="$CFLAGS $withval"
fi
]
)
AC_ARG_WITH(cppflags,
[ --with-cppflags Specify additional flags to pass to preprocessor] ,
[
if test "x$withval" != "xno"; then
CPPFLAGS="$CPPFLAGS $withval"
fi
]
)
AC_ARG_WITH(ldflags,
[ --with-ldflags Specify additional flags to pass to linker],
[
if test "x$withval" != "xno" ; then
LDFLAGS="$LDFLAGS $withval"
fi
]
)
AC_ARG_WITH(libs,
[ --with-libs Specify additional libraries to link with],
[
if test "x$withval" != "xno" ; then
LIBS="$LIBS $withval"
fi
]
)
dnl Checks for programs.
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AM_PROG_LEX
dnl Special check for pthread support.
ACX_PTHREAD(
[
AC_DEFINE(HAVE_PTHREAD,1,
[Define if you have POSIX threads libraries and header files.])
], [
AC_MSG_ERROR([POSIX thread support required])
])
LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
CC="$PTHREAD_CC"
dnl Add libtool support.
AM_PROG_LIBTOOL
dnl Automatically update the libtool script if it becomes out-of-date.
#AC_SUBST(LIBTOOL_DEPS)
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([errno.h fcntl.h malloc.h stdlib.h string.h sys/time.h unistd.h syslog.h security/pam_appl.h security/_pam_macros.h])
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
dnl Checks for library functions.
AC_FUNC_ERROR_AT_LINE
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_STAT
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([getpass gettimeofday memset mkdir strdup strerror])
dnl C Compiler features
AC_C_INLINE
if test "$GCC" = "yes"; then
CFLAGS="$CFLAGS -Wall"
fi
dnl OS specific options
case "$host_os" in
hpux*)
CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
;;
osf*)
CFLAGS="$CFLAGS -D_POSIX_PII_SOCKET"
;;
*)
;;
esac
AC_ARG_WITH(common-dir,
[ --with-common-dir=PATH Specify path for common installation libraries],
[
if test "x$withval" != "xno" ; then
trycommondir=$withval
fi
]
)
saved_LDFLAGS="$LDFLAGS"
saved_CPPFLAGS="$CPPFLAGS"
if test "x$prefix" != "xNONE" ; then
trycommondir="$trycommondir $prefix"
fi
AC_CACHE_CHECK([for common directory], ac_cv_commondir, [
for commondir in $trycommondir "" /usr/local /usr/pkg /opt ; do
# Skip directories if they don't exist
if test ! -z "$commondir" -a ! -d "$commondir" ; then
continue;
fi
CPPFLAGS="$saved_CPPFLAGS"
LDFLAGS="$saved_LDFLAGS"
if test ! -z "$commondir" -a "x$commondir" != "x/usr"; then
# Try to use $commondir/lib if it exists, otherwise
# $commondir
if test -d "$commondir/lib" ; then
LDFLAGS="-L$commondir/lib $saved_LDFLAGS"
if test ! -z "$need_dash_r" ; then
LDFLAGS="-R$commondir/lib $LDFLAGS"
fi
else
LDFLAGS="-L$commondir $saved_LDFLAGS"
if test ! -z "$need_dash_r" ; then
LDFLAGS="-R$commondir $LDFLAGS"
fi
fi
# Try to use $commondir/include if it exists, otherwise
# $commondir
if test -d "$commondir/include" ; then
CPPFLAGS="-I$commondir/include $saved_CPPFLAGS"
else
CPPFLAGS="-I$commondir $saved_CPPFLAGS"
fi
fi
break;
done
if test -z "$commondir" ; then
commondir="(system)"
fi
ac_cv_commondir=$commondir
])
if (test ! -z "$ac_cv_commondir" && test "x$ac_cv_commondir" != "x(system)") ; then
dnl Need to recover commondir - test above runs in subshell
commondir=$ac_cv_commondir
if test ! -z "$commondir" -a "x$commondir" != "x/usr"; then
# Try to use $commondir/lib if it exists, otherwise
# $commondir
if test -d "$commondir/lib" ; then
LDFLAGS="-L$commondir/lib $saved_LDFLAGS"
if test ! -z "$need_dash_r" ; then
LDFLAGS="-R$commondir/lib $LDFLAGS"
fi
else
LDFLAGS="-L$commondir $saved_LDFLAGS"
if test ! -z "$need_dash_r" ; then
LDFLAGS="-R$commondir $LDFLAGS"
fi
fi
# Try to use $commondir/include if it exists, otherwise
# $commondir
if test -d "$commondir/include" ; then
CPPFLAGS="-I$commondir/include $saved_CPPFLAGS"
else
CPPFLAGS="-I$commondir $saved_CPPFLAGS"
fi
fi
fi
AC_SUBST(LIBPCSCLITE)
saved_LIBS="$LIBS"
saved_LDFLAGS="$LDFLAGS"
saved_CPPFLAGS="$CPPFLAGS"
AC_ARG_WITH(pcsclite,
[ --with-pcsclite=PATH use PC/SC Lite in PATH],
[
for pcscdir in /pcsc ""; do
CPPFLAGS="$saved_CPPFLAGS"
LDFLAGS="$saved_LDFLAGS"
LIBS="$saved_LIBS $LIBCRYPTO"
if test -d "$withval/lib$pcscdir"; then
if test -n "${need_dash_r}"; then
LDFLAGS="-L${withval}/lib${pcscdir}/ -R${withval}/lib${pcscdir}/ ${LDFLAGS}"
else
LDFLAGS="-L${withval}/lib${pcscdir} ${LDFLAGS}"
fi
else
if test -n "${need_dash_r}"; then
LDFLAGS="-L${withval}${pcscdir} -R${withval}${pcscdir} ${LDFLAGS}"
else
LDFLAGS="-L${withval}${pcscdir} ${LDFLAGS}"
fi
fi
if test -d "$withval/include"; then
CPPFLAGS="-I${withval}/include${pcscdir} ${CPPFLAGS}"
else
CPPFLAGS="-I${withval}${pcscdir} ${CPPFLAGS}"
fi
AC_CHECK_LIB(pcsclite, SCardEstablishContext, [LIBPCSCLITE="$LIBPCSCLITE -lpcsclite"])
if test "x$ac_cv_lib_pcsclite_SCardEstablishContext" = "xyes" ; then
break;
fi
done
]
)
if test "x$ac_cv_lib_pcsclite_SCardEstablishContext" = "xno" ; then
AC_CHECK_LIB(pcsclite, SCardEstablishContext, [LIBPCSCLITE="$LIBPCSCLITE -lpcsclite"])
fi
AM_CONDITIONAL(HAVE_PCSCLITE, test "x$ac_cv_lib_pcsclite_SCardEstablishContext" = "xyes")
AC_SUBST(LIBDL)
AC_CHECK_LIB(dl, dlopen, [LIBDL="$LIBDL -ldl" ac_cv_func_dlopen_ldl=yes], ac_cv_func_dlopen_ldl=no)
dnl The big search for OpenSSL
AC_ARG_WITH(ssl-dir,
[ --with-ssl-dir=PATH Specify path to OpenSSL installation],
[
if test "x$withval" != "xno" ; then
tryssldir=$withval
fi
]
)
saved_LIBS="$LIBS"
saved_LDFLAGS="$LDFLAGS"
saved_CPPFLAGS="$CPPFLAGS"
if test "x$prefix" != "xNONE" ; then
tryssldir="$tryssldir $prefix"
fi
AC_SUBST(LIBCRYPTO)
AC_CACHE_CHECK([for OpenSSL directory], ac_cv_openssldir, [
for ssldir in $tryssldir "" /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl ; do
# Skip directories if they don't exist
if test ! -z "$ssldir" -a ! -d "$ssldir" ; then
continue;
fi
LIBCRYPTO="-lcrypto"
CPPFLAGS="$saved_CPPFLAGS"
LDFLAGS="$saved_LDFLAGS"
LIBS="$saved_LIBS $LIBCRYPTO"
if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then
# Try to use $ssldir/lib if it exists, otherwise
# $ssldir
if test -d "$ssldir/lib" ; then
LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
if test ! -z "$need_dash_r" ; then
LDFLAGS="-R$ssldir/lib $LDFLAGS"
fi
else
LDFLAGS="-L$ssldir $saved_LDFLAGS"
if test ! -z "$need_dash_r" ; then
LDFLAGS="-R$ssldir $LDFLAGS"
fi
fi
# Try to use $ssldir/include if it exists, otherwise
# $ssldir
if test -d "$ssldir/include" ; then
CPPFLAGS="-I$ssldir/include $saved_CPPFLAGS"
else
CPPFLAGS="-I$ssldir $saved_CPPFLAGS"
fi
fi
# Basic test to check for compatible version and correct linking
# *does not* test for RSA - that comes later.
AC_TRY_RUN(
[
#include <string.h>
#include <openssl/rand.h>
int main(void)
{
char a[2048];
memset(a, 0, sizeof(a));
RAND_add(a, sizeof(a), sizeof(a));
return(RAND_status() <= 0);
}
],
[
found_crypto=1
break;
], []
)
if test ! -z "$found_crypto" ; then
break;
fi
done
if test -z "$ssldir" ; then
ssldir="(system)"
fi
if test -n "$found_crypto" ; then
AM_CONDITIONAL(HAVE_SSL, test -n "$found_crypto")
ac_cv_openssldir=$ssldir
fi
])
if (test ! -z "$ac_cv_openssldir" && test "x$ac_cv_openssldir" != "x(system)") ; then
AC_DEFINE(HAVE_OPENSSL, 1, [Have OpenSSL libraries])
dnl Need to recover ssldir - test above runs in subshell
ssldir=$ac_cv_openssldir
if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then
# Try to use $ssldir/lib if it exists, otherwise
# $ssldir
if test -d "$ssldir/lib" ; then
LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
if test ! -z "$need_dash_r" ; then
LDFLAGS="-R$ssldir/lib $LDFLAGS"
fi
else
LDFLAGS="-L$ssldir $saved_LDFLAGS"
if test ! -z "$need_dash_r" ; then
LDFLAGS="-R$ssldir $LDFLAGS"
fi
fi
# Try to use $ssldir/include if it exists, otherwise
# $ssldir
if test -d "$ssldir/include" ; then
CPPFLAGS="-I$ssldir/include $saved_CPPFLAGS"
else
CPPFLAGS="-I$ssldir $saved_CPPFLAGS"
fi
fi
fi
LIBS="$saved_LIBS"
dnl Check for PAM libs
PAM_MSG="no"
no_pam=""
AC_SUBST(LIBPAM)
saved_LIBS="$LIBS"
AC_MSG_CHECKING([PAM support])
AC_ARG_WITH(pam,
[ --with-pam Enable PAM support],
[
if test "x$withval" = "xno" ; then
AC_MSG_RESULT(disabled)
no_pam=1
fi
],
)
if test -z "$no_pam" ; then
if test "x$ac_cv_header_security_pam_appl_h" = "xyes" ; then
AC_MSG_RESULT(yes)
PAM_MSG="yes"
AC_CHECK_LIB(pam, pam_set_item, [LIBPAM="$LIBPAM -lpam"], AC_MSG_ERROR([*** libpam missing]))
LIBS="$LIBS $LIBPAM"
AC_CHECK_FUNCS(pam_getenvlist)
AC_CHECK_FUNCS(pam_putenv)
disable_shadow=yes
AC_DEFINE(HAVE_PAM, 1, [Have Pluggable Authentication Modules])
else
AC_MSG_RESULT(no)
fi
fi
dnl Check for older PAM
if test "x$PAM_MSG" = "xyes" ; then
# Check PAM strerror arguments (old PAM)
AC_MSG_CHECKING([whether pam_strerror takes only one argument])
AC_TRY_COMPILE(
[
#include <stdlib.h>
#include <security/pam_appl.h>
],
[(void)pam_strerror((pam_handle_t *)NULL, -1);],
[AC_MSG_RESULT(no)],
[
AC_DEFINE(HAVE_OLD_PAM, 1, [Have OLD Pluggable Authentication Modules])
AC_MSG_RESULT(yes)
PAM_MSG="yes (old library)"
]
)
fi
LIBS="$saved_LIBS"
AM_CONDITIONAL(COMPILE_PAM, test "x$PAM_MSG" = "xyes")
dnl Enable/disable debugging messages.
AC_ARG_ENABLE(debug,
[ --enable-debug enable debug messages. [default=no]],
, enable_debug=no)
if (test x$enable_debug = xyes); then
AC_DEFINE(DEBUG, 1, [Enable debug messages.])
fi
AC_OUTPUT([
Makefile
aclocal/Makefile
src/Makefile
src/libopensc/Makefile
src/openssh/Makefile
src/pam/Makefile
src/pkcs11/Makefile
src/pkcs11/pkcs11/Makefile
src/tests/Makefile
src/tools/Makefile
])
dnl Someone please show me a better way :)
A=`eval echo ${prefix}` ; A=`eval echo ${A}`
B=`eval echo ${bindir}` ; B=`eval echo ${B}`
echo ""
echo "OpenSC has been configured with the following options"
echo ""
echo "User binaries: ${B}"
echo ""
echo "Host: ${host}"
echo "Compiler: ${CC}"
echo "Compiler flags: ${CFLAGS}"
echo "Preprocessor flags: ${CPPFLAGS}"
echo "Linker flags: ${LDFLAGS}"
echo "Libraries: ${LIBS}"
echo ""
echo "PAM support: ${PAM_MSG}"
echo ""