# Process this file with autoconf to produce a configure script. # You may need to use autoconf 2.56 or newer # $Id$ # Require autoconf 2.52 AC_PREREQ(2.52) AC_INIT(ccid, 0.9.4) AC_CONFIG_SRCDIR(src/ifdhandler.c) AC_CONFIG_AUX_DIR(build) AM_INIT_AUTOMAKE # Default install dir AC_PREFIX_DEFAULT(/usr/local) # Automake boilerplate. AC_CANONICAL_HOST # create a config.h file (Automake will add -DHAVE_CONFIG_H) AM_CONFIG_HEADER(config.h) # Options AM_MAINTAINER_MODE # Checks for programs. AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LN_S AM_PROG_LEX # check pcsc-lite version PKG_CHECK_MODULES(PCSC, libpcsclite >= 1.2.9-beta8, [], [ if test -f /usr/local/lib/pkgconfig/libpcsclite.pc ; then AC_MSG_ERROR([use PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure]) else AC_MSG_WARN([install pcsc-lite 1.2.9-beta8 or later]) fi ]) OLD_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PCSC_CFLAGS" AC_CHECK_HEADER(ifdhandler.h,, [AC_MSG_ERROR([ifdhandler.h not found, install pcsc-lite 1.2.9-beta8 or later, or use CFLAGS=... ./configure])], [ #include ]) AC_CHECK_HEADER(reader.h,, [AC_MSG_ERROR([reader.h not found, install pcsc-lite 1.2.9-beta8 or later, or use CFLAGS=... ./configure])], [ #include ]) CFLAGS="$OLD_CFLAGS" # Add libtool support. AM_PROG_LIBTOOL # Automatically update the libtool script if it becomes out-of-date. AC_SUBST(LIBTOOL_DEPS) # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(errno.h fcntl.h stdlib.h unistd.h termios.h string.h errno.h sys/time.h sys/types.h stdarg.h,, [AC_MSG_WARN([some header files not found])]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T AC_HEADER_TIME # Checks for library functions. AC_CHECK_FUNCS(select strerror strncpy memcpy) # Select OS specific versions of source files. AC_SUBST(BUNDLE_HOST) AC_SUBST(DYN_LIB_EXT) case "$host" in *-*-darwin*) BUNDLE_HOST="MacOS" DYN_LIB_EXT="dylib" AC_SUBST(COREFOUNDATION) COREFOUNDATION="-Wl,-framework,CoreFoundation" AC_SUBST(IOKIT) IOKIT="-Wl,-framework,IOKit" if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -no-cpp-precomp" fi ;; *) BUNDLE_HOST="Linux" DYN_LIB_EXT="so" esac CFLAGS="$CFLAGS -Wall" # --enable-libusb=PATH LIBUSB_CFLAGS=`libusb-config --cflags` LIBUSB_LIBS=`libusb-config --libs` AC_ARG_ENABLE(libusb, AC_HELP_STRING([--enable-libusb=PATH],[libusb path (default /usr)]), [ case ${enableval} in "" | "yes" | "YES") ;; "no" | "NO") use_libusb=false ;; *) LIBUSB_CFLAGS="-I${enableval}/include" LIBUSB_LIBS="-L${enableval}/lib -lusb" ;; esac ] ) # check if libusb is available if test "x$use_libusb" != xfalse ; then saved_CPPFLAGS="$CPPFLAGS" saved_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $LIBUSB_CFLAGS" LIBS="$LDFLAGS $LIBUSB_LIBS" AC_CHECK_HEADERS(usb.h, [], [ AC_MSG_ERROR([usb.h not found, use --enable-libusb=PATH]) ]) LIBS="$LIBS $COREFOUNDATION $IOKIT" AC_CHECK_LIB(usb, usb_init, [LIBUSB="$LIBUSB -lusb"], [ AC_MSG_ERROR([libusb not found]) ]) LIBS="$LIBS $COREFOUNDATION $IOKIT" AC_CHECK_LIB(usb, usb_get_string_simple, [LIBUSB="$LIBUSB -lusb"], [ AC_MSG_ERROR([your libusb is too old. install version 0.1.7 or above]) ]) CPPFLAGS="$saved_LIBS" LIBS="$saved_LIBS" fi AC_SUBST(LIBUSB_CFLAGS) AC_SUBST(LIBUSB_LIBS) # check what to use for dlopen AC_SUBST(LIBDL) AC_CHECK_LIB(dl, dlopen, [LIBDL="$LIBDL -ldl" ac_cv_func_dlopen_ldl=yes], ac_cv_func_dlopen_ldl=no) # --enable-multi-thread AC_ARG_ENABLE(multi-thread, AC_HELP_STRING([--enable-multi-thread],[enable multi threading (default=yes)]), [ multithread="${enableval}" ], [ multithread=yes ] ) if test "${multithread}" != no ; then ACX_PTHREAD( [ AC_DEFINE(HAVE_PTHREAD, 1, [Define if you have POSIX threads libraries and header files.]) ], [ AC_MSG_ERROR([POSIX thread support required]) ]) fi AC_MSG_RESULT([multi threading : $multithread]) # --enable-bundle=NAME AC_ARG_ENABLE(bundle, AC_HELP_STRING([--enable-bundle=NAME],[bundle directory name (default ifd-ccid.bundle)]), [bundle="${enableval}"], [bundle=false]) if test "${bundle}" = false ; then bundle="ifd-ccid.bundle" fi AC_MSG_RESULT([bundle directory name : $bundle]) AC_DEFINE_UNQUOTED(BUNDLE, "$bundle", [bundle directory name]) # --enable-usbdropdir=DIR AC_ARG_ENABLE(usbdropdir, AC_HELP_STRING([--enable-usbdropdir=DIR],[directory containing USB drivers (default to pcscd config or $(prefix)/pcsc/drivers)]), [usbdropdir="${enableval}"], [usbdropdir=false]) if test "${usbdropdir}" = false ; then usbdropdir=`pkg-config libpcsclite --variable=usbdropdir` fi AC_MSG_RESULT([USB drop directory : $usbdropdir]) AC_DEFINE_UNQUOTED(PCSCLITE_HP_DROPDIR, "$usbdropdir", [directory containing USB drivers]) if test "${usbdropdir}" = "" ; then AC_MSG_ERROR([use --enable-usbdropdir=DIR]) fi # --enable-ccidtwindir=DIR AC_ARG_ENABLE(ccidtwindir, AC_HELP_STRING([--enable-ccidtwindir=DIR],[directory to install the serial Twin driver (default to pcscd config or $(prefix)/pcsc/drivers/serial)]), [ccidtwindir="${enableval}"], [ccidtwindir=false]) if test "${ccidtwindir}" = false ; then ccidtwindir=`pkg-config libpcsclite --variable=usbdropdir`/serial fi AC_MSG_RESULT([serial twin install dir : $ccidtwindir]) # --enable-pcsclite AC_ARG_ENABLE(pcsclite, AC_HELP_STRING([--enable-pcsclite],[compile for pcsc-lite (default=yes)]), [ pcsclite=no ], [ pcsclite=yes ] ) if test "${pcsclite}" = no ; then AM_CONDITIONAL(WITHOUT_PCSC, true) AM_CONDITIONAL(NEED_PARSER, true) else # check that pcsc-lite is installed OLD_LDLIBS="$LDLIBS" OLD_LIBS="$LIBS" LDLIBS="$LDLIBS $PCSC_LIBS" AC_CHECK_LIB(pcsclite, SCardEstablishContext, [], [AC_MSG_ERROR([SCardEstablishContext() not found, install pcsc-lite 1.2.9-beta8 or later, or use LDLIBS=... ./configure])]) LDLIBS="$OLD_LDLIBS" LIBS="$OLD_LIBS" AM_CONDITIONAL(WITHOUT_PCSC, false) AM_CONDITIONAL(NEED_PARSER, false) fi AC_MSG_RESULT([compiled for pcsc-lite : $pcsclite]) # Setup dist stuff AC_SUBST(ac_aux_dir) AC_SUBST(bundle) AC_SUBST(usbdropdir) AC_SUBST(ccidtwindir) # Write Makefiles. AC_CONFIG_FILES(Makefile aclocal/Makefile src/Makefile readers/Makefile examples/Makefile) AC_OUTPUT