dnl -*- mode: m4; -*- dnl Process this file with autoconf to produce a configure script. # Require autoconf 2.52 AC_PREREQ(2.52) AC_INIT(src/libopensc/sc.c) AC_CONFIG_AUX_DIR(tools) AM_INIT_AUTOMAKE(opensc, 0.8.0-rc1) 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_CYGWIN32,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_DIGITAL_UNIX,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 ;; 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 ] ) 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" 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 dnl Checks for programs. AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AM_PROG_LEX AC_PATH_PROG(TEST_MINUS_S_SH, bash) AC_PATH_PROG(TEST_MINUS_S_SH, ksh) AC_PATH_PROG(TEST_MINUS_S_SH, sh) 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_HEADER_SYS_WAIT AC_CHECK_HEADERS([errno.h fcntl.h malloc.h stdlib.h string.h strings.h sys/time.h unistd.h libgen.h utmp.h getopt.h dlfcn.h security/pam_appl.h security/_pam_macros.h]) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_UID_T AC_TYPE_SIZE_T AC_HEADER_TIME AC_SUBST(GETOPTSRC) AC_CHECK_FUNC(getopt_long, AC_DEFINE(HAVE_GETOPT_LONG, 1, [Define if you have the `getopt_long' function.]), [GETOPTSRC="$GETOPTSRC \$(top_srcdir)/src/common/getopt.c \$(top_srcdir)/src/common/getopt1.c" CPPFLAGS="-I\$(top_srcdir)/src/common $CPPFLAGS" AC_DEFINE(HAVE_GETOPT_H, 1, [Define if you have the header file.])]) 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 setutent]) dnl C Compiler features AC_C_INLINE if test "$GCC" = "yes"; then CFLAGS="-Wall $CFLAGS" # Disabled until lex-parse.l doesn't give us a warning # -Werror 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_SUBST(LIBDL) AC_CHECK_LIB(dl, dlopen, [LIBDL="$LIBDL -ldl" ac_cv_func_dlopen_ldl=yes], ac_cv_func_dlopen_ldl=no) AC_CHECK_HEADERS([readline/readline.h]) AC_SUBST(LIBREADLINE) saved_LIBS="$LIBS" # libreadline will also need libtermcap on some OSes for add in "" "-ltermcap"; do if test "x$add" != x; then AC_MSG_CHECKING([for readline with]) AC_MSG_RESULT($add) fi LIBS="$saved_LIBS $add" unset ac_cv_lib_readline_readline AC_CHECK_LIB(readline, readline, [ LIBREADLINE="-lreadline $add" ac_cv_func_readline_lreadline=yes ], ac_cv_func_readline_lreadline=no) test "x$ac_cv_func_readline_lreadline" = xyes && break done LIBS="$LIBS $LIBREADLINE" AC_CHECK_FUNCS(readline) LIBS="$saved_LIBS" # # We check for various libraries # - SysVr4 style of "-lsocket" at first (unless in libc) # The hallmark is connect() routine (we presume) # AC_SUBST(LIBSOCKET)dnl ac_cv_libsocket_both=1 AC_CHECK_FUNC(connect, ac_cv_libsocket_both=0) AC_CHECK_FUNC(gethostbyname, ac_cv_libsocket_both=0) if test "$ac_cv_libsocket_both" = 1 ; then # Check cache if test "$ac_cv_func_socket_lsocket" = yes ; then AC_MSG_RESULT([need -lsocket library (cached)]) LIBSOCKET="-lsocket" if test "$ac_cv_func_gethostbyname_lnsl" = yes ; then LIBSOCKET="-lsocket -lnsl" fi else # Well, will this work ? SysVR4, but not Sun Solaris ? AC_CHECK_LIB(socket, connect, [LIBSOCKET="-lsocket" ac_cv_func_socket_lsocket=yes], ac_cv_func_socket_lsocket=no) if test "$ac_cv_func_socket_lsocket" = yes ; then t_oldLibs="$LIBS" LIBS="$LIBS -lsocket $LIBRESOLV" AC_TRY_LINK([],[gethostbyname();], ,[ LIBS="$LIBS -lnsl" # Add this Solaris library.. AC_TRY_LINK([],[gethostbyname();],[ LIBSOCKET="-lsocket -lnsl" ac_cv_func_gethostbyname_lnsl=yes ], [ AC_MSG_ERROR([Weird, '$LIBS' not enough to find gethostbyname() ?!]) ]) ]) LIBS="$t_oldLibs" fi fi fi AC_SUBST(LIBRESOLV)dnl if test "x$LIBRESOLV" = "x"; then # Ok, No -lresolv, is this enough for the _res to appear ? t_oldLibs="$LIBS" LIBS="$LIBS $LIBSOCKET" ac_cv_var__res_options=no # This following is for IRIX6.4, and I sincerely hope it # will not fail on other systems... It did! It did! # Many systems don't have idemponent headers, they need specific # includes before latter ones, or the latter ones won't be successful... AC_TRY_LINK([#include #include #include #include #include ], [_res.options = RES_INIT;], ac_cv_var__res_options=yes); if test "$ac_cv_var__res_options" != "yes"; then LIBRESOLV="-lresolv" fi LIBS="$t_oldLibs" fi if test "x$LIBRESOLV" = "x"; then # glibc 2.2.4 and libresolv is difficult # - gethostbyname won't require lresolv because all # queries are made through the nsswitch # - checking for the variable _res will not require # lresolv because _res is defined somewhere AC_CHECK_LIB(resolv, res_query, [LIBRESOLV=-lresolv]) LIBS="$t_oldLibs" fi # See about the routines that possibly exist at the libraries.. LIBS="$t_oldLibs $LIBSOCKET" AC_CHECK_FUNCS(socket socketpair) LIBS="$t_oldLibs" if test "$ac_cv_func_socket" = no -a "$LIBSOCKET" != ""; then LIBS="$LIBS $LIBSOCKET" AC_TRY_LINK([],[socket();], ac_cv_func_socket=yes) if test $ac_cv_func_socket = yes; then AC_DEFINE(HAVE_SOCKET, 1, [Have socket]) fi LIBS="$t_oldLibs" fi if test "$ac_cv_func_socketpair" = no -a "$LIBSOCKET" != ""; then LIBS="$LIBS $LIBSOCKET" AC_TRY_LINK([],[socketpair();], ac_cv_func_socketpair=yes) if test $ac_cv_func_socketpair = yes; then AC_DEFINE(HAVE_SOCKETPAIR, 1, [Have socketpair]) fi LIBS="$t_oldLibs" fi # Always link lib{socket,nsl,resolv) if found, sigh. LIBS="$LIBS $LIBSOCKET $LIBRESOLV" AC_ARG_WITH(flex-dir, [ --with-flex-dir=PATH Specify path to flex installation], [ if test "x$withval" != "xno" ; then tryflexdir=$withval fi ] ) saved_LDFLAGS="$LDFLAGS" saved_CPPFLAGS="$CPPFLAGS" AC_SUBST(LIBFL) AC_CACHE_CHECK([for flex directory], ac_cv_flexdir, [ for flexdir in $tryflexdir "" /usr/local/flex /usr/lib/flex /usr/local/flex /usr/lib/flex /usr/local /usr/pkg /opt /opt/flex ; do # Skip directories if they don't exist if test ! -z "$flexdir" -a ! -d "$flexdir" ; then continue; fi LIBFL="-lfl" CPPFLAGS="$saved_CPPFLAGS" LDFLAGS="$saved_LDFLAGS" if test ! -z "$flexdir" -a "x$flexdir" != "x/usr"; then # Try to use $flexdir/lib if it exists, otherwise # $flexdir if test -d "$flexdir/lib" ; then LDFLAGS="-L$flexdir/lib $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$flexdir/lib $LDFLAGS" fi else LDFLAGS="-L$flexdir $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$flexdir $LDFLAGS" fi fi # Try to use $flexdir/include if it exists, otherwise # $flexdir if test -d "$flexdir/include" ; then CPPFLAGS="-I$flexdir/include $saved_CPPFLAGS" else CPPFLAGS="-I$flexdir $saved_CPPFLAGS" fi fi break; done if test -z "$flexdir" ; then flexdir="(system)" fi ac_cv_flexdir=$flexdir ]) if (test ! -z "$ac_cv_flexdir" && test "x$ac_cv_flexdir" != "x(system)") ; then dnl Need to recover flexdir - test above runs in subshell flexdir=$ac_cv_flexdir if test ! -z "$flexdir" -a "x$flexdir" != "x/usr"; then # Try to use $flexdir/lib if it exists, otherwise # $flexdir if test -d "$flexdir/lib" ; then LDFLAGS="-L$flexdir/lib $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$flexdir/lib $LDFLAGS" fi else LDFLAGS="-L$flexdir $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$flexdir $LDFLAGS" fi fi # Try to use $flexdir/include if it exists, otherwise # $flexdir if test -d "$flexdir/include" ; then CPPFLAGS="-I$flexdir/include $saved_CPPFLAGS" else CPPFLAGS="-I$flexdir $saved_CPPFLAGS" fi fi fi 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 ] ) SSL_MSG="no" saved_LIBS="$LIBS" saved_LDFLAGS="$LDFLAGS" saved_CPPFLAGS="$CPPFLAGS" AC_SUBST(LIBCRYPTO) AC_SUBST(LIBCRYPTOA) AC_CACHE_CHECK([for OpenSSL directory], ac_cv_openssldir, [ for ssldir in $tryssldir /usr /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 #include 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 ], [] ) if test -n "$found_crypto" ; then # we found openssl, lets see if it # has an engine CPPFLAGS="$saved_CPPFLAGS" LDFLAGS="$saved_LDFLAGS" if test -d "$ssldir/lib" ; then LIBCRYPTOA="$ssldir/lib/libcrypto.a -ldl" else LIBCRYPTOA="$ssldir/libcrypto.a -ldl" fi LIBS="$saved_LIBS $LIBCRYPTOA" AC_TRY_RUN( [ #include #include #include #include int main(void) { char a[2048]; ENGINE *e; e = ENGINE_new(); ENGINE_load_dynamic(); if (!e) return 1; memset(a, 0, sizeof(a)); RAND_add(a, sizeof(a), sizeof(a)); return(RAND_status() <= 0); } ], [ found_engine=1 ], [] ) fi if test -n "$found_crypto" ; then break; fi done # if test -z "$found_crypto" ; then # AC_MSG_ERROR([Could not find working OpenSSL library, please install or check config.log]) # fi if test -n "$found_crypto" ; then if test -z "$ssldir" ; then ssldir="(system)" fi ac_cv_openssldir=$ssldir SSL_MSG="yes" fi ], [SSL_MSG=yes]) if (test ! -z "$ac_cv_openssldir" && test "x$ac_cv_openssldir" != "x(system)") ; then 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" if test "x$SSL_MSG" = "xyes" ; then AC_DEFINE(HAVE_OPENSSL, 1, [Have OpenSSL libraries]) fi AM_CONDITIONAL(HAVE_SSL, test "x$SSL_MSG" = "xyes") AM_CONDITIONAL(HAVE_ENGINE, test -n "$found_engine") ENGINE_MSG="no" if test -n "$found_engine" then ENGINE_MSG="yes" fi AC_ARG_WITH(pam-dir, [ --with-pam-dir=PATH Specify path for PAM installation libraries], [ if test "x$withval" != "xno" ; then trypamdir=$withval fi ] ) saved_LDFLAGS="$LDFLAGS" saved_CPPFLAGS="$CPPFLAGS" AC_CACHE_CHECK([for pam directory], ac_cv_pamdir, [ for pamdir in $trypamdir "" /usr/local /usr/pkg /opt ; do # Skip directories if they don't exist if test ! -z "$pamdir" -a ! -d "$pamdir" ; then continue; fi CPPFLAGS="$saved_CPPFLAGS" LDFLAGS="$saved_LDFLAGS" if test ! -z "$pamdir" -a "x$pamdir" != "x/usr"; then # Try to use $pamdir/lib if it exists, otherwise # $pamdir if test -d "$pamdir/lib" ; then LDFLAGS="-L$pamdir/lib $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$pamdir/lib $LDFLAGS" fi else LDFLAGS="-L$pamdir $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$pamdir $LDFLAGS" fi fi # Try to use $pamdir/include if it exists, otherwise # $pamdir if test -d "$pamdir/include" ; then CPPFLAGS="-I$pamdir/include $saved_CPPFLAGS" else CPPFLAGS="-I$pamdir $saved_CPPFLAGS" fi fi break; done if test -z "$pamdir" ; then pamdir="(system)" fi ac_cv_pamdir=$pamdir ]) if (test ! -z "$ac_cv_pamdir" && test "x$ac_cv_pamdir" != "x(system)") ; then dnl Need to recover pamdir - test above runs in subshell pamdir=$ac_cv_pamdir if test ! -z "$pamdir" -a "x$pamdir" != "x/usr"; then # Try to use $pamdir/lib if it exists, otherwise # $pamdir if test -d "$pamdir/lib" ; then LDFLAGS="-L$pamdir/lib $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$pamdir/lib $LDFLAGS" fi else LDFLAGS="-L$pamdir $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$pamdir $LDFLAGS" fi fi # Try to use $pamdir/include if it exists, otherwise # $pamdir if test -d "$pamdir/include" ; then CPPFLAGS="-I$pamdir/include $saved_CPPFLAGS" else CPPFLAGS="-I$pamdir $saved_CPPFLAGS" fi fi fi 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 #include ], [(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(HAVE_PAM, test "x$PAM_MSG" = "xyes") dnl Check for SIA libs AC_SUBST(LIBSIA) SIA_MSG="no" no_osfsia="" AC_MSG_CHECKING([SIA support]) AC_ARG_WITH(osfsia, [ --with-osfsia Enable Digital Unix SIA], [ if test "x$withval" = "xno" ; then AC_MSG_RESULT(disabled) no_osfsia=1 fi ], ) if test -z "$no_osfsia" ; then if test -f /etc/sia/matrix.conf; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_OSF_SIA, 1, [Have Digital Unix SIA]) LIBSIA="$LIBSIA -lsecurity -ldb -lm -laud" SIA_MSG="yes" else AC_MSG_RESULT(no) fi fi AM_CONDITIONAL(HAVE_SIA, test "x$SIA_MSG" = "xyes") PCSC_MSG=no pcsc_path=/usr AC_SUBST(CFLAGS_PCSC) AC_SUBST(LIBPCSC) found_pcsclite=no saved_LIBS="$LIBS" saved_LDFLAGS="$LDFLAGS" saved_CPPFLAGS="$CPPFLAGS" AC_ARG_WITH(pcsclite, [ --with-pcsclite=PATH use PC/SC Lite in PATH], [pcsc_path=$withval]) if test "$pcsc_path" != "no"; then AC_MSG_CHECKING(for PC/SC-Lite support) for pcscdir in /pcsc ""; do LDFLAGS="$saved_LDFLAGS" CPPFLAGS="$saved_CPPFLAGS" CFLAGS_PCSC= LIBS="-lpcsclite $saved_LIBS" for pcsc_libdir in $pcsc_path/lib$pcscdir \ $pcsc_path$pcscdir/lib \ $pcsc_path$pcscdir; do if test -d $pcsc_libdir; then if test -n "${need_dash_r}"; then LDFLAGS="-R${pcsc_libdir}/ ${LDFLAGS}" fi LDFLAGS="-L${pcsc_libdir} ${LDFLAGS}" fi done for pcsc_incdir in $pcsc_path/include$pcscdir \ $pcsc_path$pcscdir/include \ $pcsc_path$pcscdir; do if test -d $pcsc_incdir; then CFLAGS_PCSC="-I${pcsc_incdir}" break; fi done CPPFLAGS="${CFLAGS_PCSC} ${CPPFLAGS}" AC_TRY_LINK([#include #include ],[SCardEstablishContext(0, NULL, NULL, NULL);], ac_cv_lib_pcsclite_SCardEstablishContext=yes) if test "x$ac_cv_lib_pcsclite_SCardEstablishContext" = "xyes"; then AC_DEFINE(HAVE_PCSCLITE, 1, [Have PC/SC Lite]) PCSC_MSG=yes break; fi CPPFLAGS="$saved_CPPFLAGS" LDFLAGS="$saved_LDFLAGS" LIBS="$saved_LIBS" done AC_MSG_RESULT($PCSC_MSG) fi AM_CONDITIONAL(HAVE_PCSCLITE, test "x$ac_cv_lib_pcsclite_SCardEstablishContext" = "xyes") dnl --enable-usbtoken option. AC_ARG_ENABLE(usbtoken, AC_HELP_STRING( [--enable-usbtoken], [enable the usbtoken reader backed. [default=yes]]), , enable_usbtoken=yes) if test "x$enable_usbtoken" = "xyes"; then AC_DEFINE(HAVE_USBTOKEN, 1, [Enable usbtoken support]) USBTOKEN_MSG=yes else USBTOKEN_MSG=no fi AM_CONDITIONAL(HAVE_USBTOKEN, test "x$USBTOKEN_MSG" = "xyes") OPENCT_MSG=no openct_path=/usr AC_SUBST(OPENCT_CFLAGS) AC_SUBST(OPENCT_LDFLAGS) AC_SUBST(OPENCT_LIBS) found_openct=no AC_ARG_WITH(openct, [ --with-openct=PATH use OpenCT in PATH], [openct_path=$withval with_openct=yes]) if test "$openct_path" != "no"; then saved_LIBS="$LIBS" saved_LDFLAGS="$LDFLAGS" saved_CFLAGS="$CFLAGS" AC_MSG_CHECKING(for OpenCT support) LDFLAGS="$saved_LDFLAGS" CPPFLAGS="$saved_CPPFLAGS" OPENCT_CFLAGS="-I${openct_path}/include" OPENCT_LIBS="-lopenct" OPENCT_LDFLAGS= if test -n "${need_dash_r}"; then OPENCT_LDFLAGS="-R${openct_path}/lib" fi OPENCT_LDFLAGS="-L${openct_path}/lib $OPENCT_LDFLAGS" LIBS="$OPENCT_LIBS $saved_LIBS" LDFLAGS="$OPENCT_LDFLAGS $saved_LDFLAGS" CFLAGS="$OPENCT_CFLAGS $saved_CFLAGS" AC_TRY_LINK([#include ], [ct_reader_connect(0);], [ AC_DEFINE(HAVE_OPENCT, 1, [Have OpenCT libraries and header files]) OPENCT_MSG=yes LIBOPENCT="-lopenct" ],[ if test "x$with_openct" = "xyes" then AC_MSG_ERROR([OpenCT not found in $openct_path!]) fi OPENCT_LDFLAGS= OPENCT_LIBS= OPENCT_CFLAGS= ]) AC_MSG_RESULT($OPENCT_MSG) CFLAGS="$saved_CFLAGS" LDFLAGS="$saved_LDFLAGS" LIBS="$saved_LIBS" fi AM_CONDITIONAL(HAVE_OPENCT, test "x$OPENCT_MSG" = "xyes") # Check for user-specified random device, otherwise check /dev/urandom AC_ARG_WITH(random, [ --with-random=FILE read entropy from FILE (default=/dev/urandom)], [ if test "x$withval" != "xno" ; then RANDOM_POOL="$withval"; AC_DEFINE_UNQUOTED(RANDOM_POOL, "$RANDOM_POOL", [Location of random number pool]) fi ], [ # Check for random device AC_CHECK_FILE("/dev/urandom", [ RANDOM_POOL="/dev/urandom"; AC_SUBST(RANDOM_POOL) AC_DEFINE_UNQUOTED(RANDOM_POOL, "$RANDOM_POOL", [Location of random number pool]) ] ) ] ) # Check for PRNGD/EGD pool file AC_ARG_WITH(prngd-port, [ --with-prngd-port=PORT read entropy from PRNGD/EGD localhost:PORT], [ if test ! -z "$withval" -a "x$withval" != "xno" ; then PRNGD_PORT="$withval" AC_DEFINE_UNQUOTED(PRNGD_PORT, $PRNGD_PORT, [Port number of PRNGD/EGD random number socket]) fi ] ) # Check for PRNGD/EGD pool file AC_ARG_WITH(prngd-socket, [ --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool)], [ if test "x$withval" != "xno" ; then PRNGD_SOCKET="$withval" AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET", [Location of PRNGD/EGD random number socket]) fi ], [ # Check for existing socket only if we don't have a random device already if test -z "$RANDOM_POOL" ; then AC_MSG_CHECKING(for PRNGD/EGD socket) # Insert other locations here for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy /tmp/entropy; do if test -r $sock && $TEST_MINUS_S_SH -c "test -S $sock -o -p $sock" ; then PRNGD_SOCKET="$sock" AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET", [Location of PRNGD/EGD random number socket]) break; fi done if test ! -z "$PRNGD_SOCKET" ; then AC_MSG_RESULT($PRNGD_SOCKET) else AC_MSG_RESULT(not found) fi fi ] ) ### BEGIN LDAP SPECIFIC OPTIONS dnl ldap autoconf magic partly taken from pam_ldap dnl --enable-ldap option. AC_ARG_ENABLE(ldap, [ --enable-ldap enable use of LDAP for authentication. [default=yes]], , enable_ldap=yes) AC_ARG_ENABLE(ssl, [ --disable-ssl disable SSL/TSL support for ldap]) AC_ARG_WITH(ldap-lib, [ --with-ldap-lib=type select ldap library [auto|netscape5|netscape4|netscape3|umich|openldap]]) AC_ARG_WITH(ldap-dir, [ --with-ldap-dir=DIR base directory of ldap SDK]) AC_SUBST(LIBLDAP) LDAP_MSG="no" if (test x$enable_ldap = xyes); then if test -n "$with_ldap_dir"; then CPPFLAGS="$CPPFLAGS -I$with_ldap_dir/include" LDFLAGS="$LDFLAGS -L$with_ldap_dir/lib" case "$target_os" in solaris*) LDFLAGS="$LDFLAGS -Wl,-R$with_ldap_dir/lib" ;; *) LDFLAGS="$LDFLAGS -Wl,-rpath,$with_ldap_dir/lib" ;; esac fi AC_CHECK_HEADERS(lber.h ldap.h ldap_ssl.h) dnl check which ldap library we have if test -z "$with_ldap_lib"; then with_ldap_lib=auto fi if test -z "$found_ldap_lib" -a \( $with_ldap_lib = auto -o $with_ldap_lib = umich -o $with_ldap_lib = openldap \); then AC_CHECK_LIB(lber, ber_init, LIBLDAP="-llber $LIBLDAP" found_lber_lib=yes) saved_LIBS="$LIBS" LIBS="$LIBS $LIBLDAP" AC_CHECK_LIB(ldap, ldap_search, LIBLDAP="-lldap $LIBLDAP" found_ldap_lib=yes) AC_CHECK_LIB(ldap, ldap_start_tls_s, LIBLDAP="-lssl $LIBLDAP" need_ssl_lib=yes) LIBS="$saved_LIBS" fi if test -z "$found_ldap_lib" -a \( $with_ldap_lib = auto -o $with_ldap_lib = netscape5 \); then AC_CHECK_LIB(ldap50, ldap_search, LIBLDAP="-lldap50 -lssldap50 -lssl3 -lnss3 -lnspr4 -lprldap50 -lplc4 -lplds4 $LIBLDAP" found_ldap_lib=yes need_pthread=true,, -lpthread) fi if test -z "$found_ldap_lib" -a \( $with_ldap_lib = auto -o $with_ldap_lib = netscape4 \); then AC_CHECK_LIB(ldapssl41, ldap_search, LIBLDAP="-lldapssl41 -lplc3 -lplds3 -lnspr3 $LIBLDAP" found_ldap_lib=yes need_pthread=true,, -lpthread) if test -z "$found_ldap_lib"; then AC_CHECK_LIB(ldapssl40, ldap_search, LIBLDAP="-lldapssl40 $LIBLDAP" found_ldap_lib=yes need_pthread=true,, -lpthread) fi fi if test -z "$found_ldap_lib" -a \( $with_ldap_lib = auto -o $with_ldap_lib = netscape3 \); then AC_CHECK_LIB(ldapssl30, ldap_search, LIBLDAP="-lldapssl30 $LIBLDAP" found_ldap_lib=yes need_pthread=true,, -lpthread) fi if test -n "$found_ldap_lib" -a "x$ac_cv_header_ldap_h" = "xyes"; then AC_DEFINE(LDAP_REFERRALS,1,[This is needed for the native Solaris LDAP SDK]) AC_DEFINE(HAVE_LDAP, 1, [Use LDAP for authentication etc.]) LDAP_MSG="yes" saved_LIBS="$LIBS" LIBS="$LIBS $LIBLDAP" AC_CHECK_FUNCS(ldap_init) if test "$enable_ssl" \!= "no"; then AC_CHECK_FUNCS(ldapssl_init ldap_start_tls_s ldap_pvt_tls_set_option) fi LIBS="$saved_LIBS" fi fi AM_CONDITIONAL(HAVE_LDAP, test "x$LDAP_MSG" = "xyes") ### END LDAP SPECIFIC OPTIONS ### BEGIN ASSUAN SPECIFIC OPTIONS ASSUAN_MSG="no" AC_SUBST(CFLAGS_ASSUAN) AC_SUBST(LIBASSUAN) LIBASSUAN="-lassuan" AC_ARG_WITH(assuan, [ --with-assuan=PATH use Assuan libraries in PATH], [ if test -d "$withval/lib"; then if test -n "${need_dash_r}"; then LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}" else LDFLAGS="-L${withval}/lib ${LDFLAGS}" fi else if test -n "${need_dash_r}"; then LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}" else LDFLAGS="-L${withval} ${LDFLAGS}" fi fi if test -d "$withval/include"; then CFLAGS_ASSUAN="-I${withval}/include ${CFLAGS_ASSUAN}" else CFLAGS_ASSUAN="-I${withval} ${CFLAGS_ASSUAN}" fi ] ) AC_CHECK_LIB(assuan, assuan_pipe_connect, ASSUAN_MSG="yes", ASSUAN_MSG="no") if test "x$ASSUAN_MSG" != "xno" ; then saved_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CFLAGS_ASSUAN $CPPFLAGS" AC_CHECK_HEADER(assuan.h, ASSUAN_MSG="yes", ASSUAN_MSG="no") CPPFLAGS="$saved_CPPFLAGS" fi AM_CONDITIONAL(HAVE_ASSUAN, test "x$ASSUAN_MSG" = "xyes") ### END ASSUAN SPECIFIC OPTIONS PLUGINDIR="/usr/lib/mozilla/plugins" AC_ARG_WITH(plugin-dir, [ --with-plugin-dir=PATH install plugin to PATH [[/usr/lib/mozilla/plugins]]], [ PLUGINDIR="$withval" ] ) AC_SUBST(PLUGINDIR) # Check for PIN entry program used by OpenSC Signer PIN_ENTRY="/usr/local/bin/gpinentry" AC_ARG_WITH(pin-entry, [ --with-pin-entry=PROG Run PROG as PIN-entry for OpenSC Signer], [ if test ! -z "$withval" -a "x$withval" != "xno" ; then PIN_ENTRY="$withval" fi ] ) AC_DEFINE_UNQUOTED(PIN_ENTRY, "$PIN_ENTRY", [PIN-entry program for OpenSC Signer]) if test "x$prefix" = xNONE; then prefix=$ac_default_prefix fi 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 CPPFLAGS="-I\${top_builddir}/src/include $CPPFLAGS" AC_SUBST(LIBSCCONF) LIBSCCONF="\${top_builddir}/src/scconf/libscconf.la" AC_SUBST(LIBSCLDAP) LIBSCLDAP="\${top_builddir}/src/scldap/libscldap.la" AC_SUBST(LIBSCRANDOM) LIBSCRANDOM="\${top_builddir}/src/scrandom/libscrandom.la" AM_CONDITIONAL(HAVE_SCIDI, test "foo" = "bar") scldap_etc_path=`eval echo ${sysconfdir}` ; scldap_etc_path=`eval echo ${scldap_etc_path}` AC_DEFINE_UNQUOTED(SCLDAP_ETC_PATH, "$scldap_etc_path", [etc path for libscldap]) scldap_conf_path=`eval echo ${scldap_etc_path}/scldap.conf` AC_DEFINE_UNQUOTED(SCLDAP_CONF_PATH, "$scldap_conf_path", [default config file for libscldap]) opensc_etc_path=`eval echo ${sysconfdir}` ; opensc_etc_path=`eval echo ${opensc_etc_path}` AC_DEFINE_UNQUOTED(OPENSC_ETC_PATH, "$opensc_etc_path", [etc path for libopensc]) opensc_conf_path=`eval echo ${opensc_etc_path}/opensc.conf` AC_DEFINE_UNQUOTED(OPENSC_CONF_PATH, "$opensc_conf_path", [default config file for libopensc]) AC_SUBST(CFLAGS_OPENSC) CFLAGS_OPENSC="" AC_SUBST(LIBOPENSC) LIBOPENSC="\${top_builddir}/src/libopensc/libopensc.la" # Pass information about installed OpenSC requirements, so that # a proper opensc-config file will be build. OPENSC_LIBS="-L${libdir} -lopensc" OPENSC_CFLAGS="" AC_SUBST(OPENSC_LIBS) AC_SUBST(OPENSC_CFLAGS) pkgdata=`eval echo ${datadir}/${PACKAGE}` ; pkgdata=`eval echo ${pkgdata}` AC_SUBST(pkgdata) AC_OUTPUT([ Makefile aclocal/Makefile docs/Makefile docs/pkcs15-profile.5 etc/Makefile src/Makefile src/assuan/Makefile src/common/Makefile src/include/Makefile src/include/opensc/Makefile src/include/opensc/rsaref/Makefile src/libopensc/Makefile src/libopensc/opensc-config src/libopensc/libopensc.pc src/openssh/Makefile src/pam/Makefile src/pkcs11/Makefile src/pkcs11/rsaref/Makefile src/pkcs15init/Makefile src/scam/Makefile src/scconf/Makefile src/scldap/Makefile src/scrandom/Makefile src/sia/Makefile src/signer/Makefile src/signer/npinclude/Makefile src/sslengines/Makefile src/tests/Makefile src/tools/Makefile src/usbtoken/Makefile tools/Makefile win32/Makefile ]) if test ! -z "$RANDOM_POOL" ; then RAND_MSG="device ($RANDOM_POOL)" else if test ! -z "$PRNGD_PORT" ; then RAND_MSG="PRNGD/EGD (port localhost:$PRNGD_PORT)" elif test ! -z "$PRNGD_SOCKET" ; then RAND_MSG="PRNGD/EGD (socket $PRNGD_SOCKET)" else RAND_MSG="Builtin kluge" BUILTIN_RNG=1 fi fi dnl Someone please show me a better way :) A=`eval echo ${prefix}` ; A=`eval echo ${A}` B=`eval echo ${bindir}` ; B=`eval echo ${B}` C=`eval echo ${sysconfdir}` ; C=`eval echo ${C}` echo "" echo "OpenSC has been configured with the following options" echo "" echo "User binaries: ${B}" echo "Configuration files: ${C}" echo "" echo "Host: ${host}" echo "Compiler: ${CC}" echo "Compiler flags: ${CFLAGS}" echo "Preprocessor flags: ${CPPFLAGS}" echo "Linker flags: ${LDFLAGS}" echo "Libraries: ${LIBS}" echo "" echo "Random number collection: ${RAND_MSG}" echo "OpenSSL support: ${SSL_MSG}" echo " with engine: ${ENGINE_MSG}" echo "PC/SC support: ${PCSC_MSG}" echo "USBToken support: ${USBTOKEN_MSG}" echo "OpenCT support: ${OPENCT_MSG}" echo "Assuan support: ${ASSUAN_MSG}" echo "LDAP support: ${LDAP_MSG}" echo "PAM support: ${PAM_MSG}" echo "SIA support: ${SIA_MSG}" echo "" if test "x$ENGINE_MSG" = "xno" -a "x$SSL_MSG" = "xyes" then echo "OpenSSL was found. But to use the engine you will need" echo "version 0.9.7a or later." fi if test ! -z "$BUILTIN_RNG" ; then echo "WARNING: you are using the builtin random number service." echo "The random number service is very simple and is only" echo "intended for testing purposes. Please request your OS" echo "vendor to include /dev/random in future versions of" echo "their OS. Or use PRNGD/EGD instead, your choice." fi