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 #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 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 #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(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 ""