You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

385 lines
9.8 KiB

# -*- mode: m4; -*-
# Process this file with autoconf to produce a configure script
AC_PREREQ(2.58)
AC_INIT(pcsc-lite, 1.4.102)
AC_CONFIG_SRCDIR(src/pcscdaemon.c)
AM_INIT_AUTOMAKE(1.8)
AM_CONFIG_HEADER(config.h)
AC_CONFIG_MACRO_DIR(m4)
AC_CANONICAL_HOST
AC_PROG_CC
AC_C_BIGENDIAN
# Check for some target-specific stuff
case "$host" in
*-*-hpux*)
CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE_EXTENDED"
;;
*-*-solaris*)
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib"
need_dash_r=1
;;
*-*-sunos4*)
CPPFLAGS="$CPPFLAGS -DSUNOS4"
;;
*-*-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
;;
*-*-osf*)
CPPFLAGS="$CPPFLAGS -D_POSIX_PII_SOCKET"
;;
*-*-darwin*)
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
use_libusb=no
AC_MSG_WARN([libusb disabled on Darwin for pcsc-lite])
;;
esac
# Options
AM_MAINTAINER_MODE
# Checks for programs
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AM_PROG_LEX
PKG_PROG_PKG_CONFIG
AM_PROG_CC_C_O
# 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])
])
CC="$PTHREAD_CC"
AC_SUBST(PTHREAD_LIBS)
AC_SUBST(PTHREAD_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_HEADER_SYS_WAIT
AC_CHECK_HEADERS([getopt.h sys/filio.h syslog.h dl.h fcntl.h ])
# Checks for typedefs, structures, and compiler characteristics
AC_C_CONST
AC_TYPE_UID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
# Checks for library functions
AC_FUNC_ERROR_AT_LINE
AC_FUNC_STAT
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(daemon flock getopt_long nanosleep strerror vsnprintf)
# strlcpy, strlcat from OpenBSD
AC_CHECK_FUNCS(strlcpy strlcat)
# C Compiler features
AC_C_INLINE
if test "$GCC" = "yes"; then
CFLAGS="-Wall -fno-common $CFLAGS"
fi
# check if the compiler support -fvisibility=hidden (GCC >= 4)
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden"
AC_MSG_CHECKING([for -fvisibility=hidden])
AC_COMPILE_IFELSE([char foo;],
[ AC_MSG_RESULT([yes])
SYMBOL_VISIBILITY="-fvisibility=hidden" ],
AC_MSG_RESULT([no]))
CFLAGS="$saved_CFLAGS"
AC_SUBST(SYMBOL_VISIBILITY)
AC_SUBST(LIBDL)
AC_CHECK_LIB(dl, dlopen, [LIBDL="$LIBDL -ldl" ac_cv_func_dlopen_ldl=yes], ac_cv_func_dlopen_ldl=no)
# Use 'uname' output as an architecture define
PCSC_ARCH=`uname`
case "$PCSC_ARCH" in
Darwin)
PCSC_ARCH=MacOS
;;
SunOS)
PCSC_ARCH=Solaris
;;
esac
AC_DEFINE_UNQUOTED(PCSC_ARCH, "$PCSC_ARCH", [PC/SC target architecture])
PCSCLITE_FEATURES="${PCSCLITE_FEATURES} $PCSC_ARCH"
# See if socket() is found from libsocket
AC_CHECK_LIB(socket, socket, [LIBS="$LIBS -lsocket"])
# --enable-libhal
AC_ARG_ENABLE(libhal,
AC_HELP_STRING([--disable-libhal],[do not use libhal]),
[ use_libhal="${enableval}" ], [ use_libhal="${use_libhal-yes}" ] )
# check if libhal is used
if test "x$use_libhal" != xno ; then
PKG_CHECK_MODULES(LIBHAL, hal, [],
[ AC_MSG_ERROR([install libhal-dev or use --disable-libhal]) ])
saved_CPPFLAGS="$CPPFLAGS"
saved_LIBS="$LIBS"
CPPFLAGS="$CPPFLAGS $LIBHAL_CFLAGS"
LIBS="$LDFLAGS $LIBHAL_LIBS"
AC_CHECK_HEADERS(libhal.h, [],
[ AC_MSG_ERROR([libhal.h not found, use ./configure LIBHAL_CFLAGS=...]) ])
LIBS="$LIBS $COREFOUNDATION $IOKIT"
AC_MSG_CHECKING([for libhal_ctx_new])
AC_TRY_LINK_FUNC(libhal_ctx_new, [ AC_MSG_RESULT([yes]) ],
[ AC_MSG_ERROR([libhal not found, use ./configure LIBHAL_LIBS=...]) ])
# everything needed for libhal support is present
use_libhal=yes
CPPFLAGS="$saved_CPPFLAGS"
LIBS="$saved_LIBS"
fi
AC_SUBST(LIBHAL_CFLAGS)
AC_SUBST(LIBHAL_LIBS)
if test x$use_libhal = xyes; then
AC_DEFINE(HAVE_LIBHAL, 1, [Libhal is available])
PCSCLITE_FEATURES="${PCSCLITE_FEATURES} libhal"
fi
# --enable-libusb
AC_ARG_ENABLE(libusb,
AC_HELP_STRING([--enable-libusb],[use libusb]),
[ use_libusb="${enableval}" ],
[ if test "x$use_libhal" = xyes ; then use_libusb="${use_libusb-no}" ;
else use_libusb="${use_libusb-yes}" ; fi ] )
# check if libusb is used
if test "x$use_libusb" != xno ; then
if test "x$use_libhal" != xno ; then
AC_MSG_ERROR([You can't use libhal _and_ libusb. Select only one.])
fi
PKG_CHECK_MODULES(LIBUSB, libusb, [],
[
AC_MSG_RESULT([no])
AC_CHECK_PROG([LIBUSBCONFIG], [libusb-config], [yes])
if test "$LIBUSBCONFIG" = "yes" ; then
LIBUSB_CFLAGS="$LIBUSB_CFLAGS `libusb-config --cflags`"
LIBUSB_LIBS="$LIBUSB_LIBS `libusb-config --libs`"
else
AC_MSG_WARN([libusb-config not found.])
fi
])
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 ./configure LIBUSB_CFLAGS=...]) ])
LIBS="$LIBS $COREFOUNDATION $IOKIT"
AC_MSG_CHECKING([for usb_init])
AC_TRY_LINK_FUNC(usb_init, [ AC_MSG_RESULT([yes]) ],
[ AC_MSG_ERROR([libusb not found, use ./configure LIBUSB_LIBS=...]) ])
AC_MSG_CHECKING([for usb_get_string_simple])
AC_TRY_LINK_FUNC(usb_get_string_simple, [ AC_MSG_RESULT([yes]) ],
[ AC_MSG_ERROR([your libusb is too old. install version 0.1.7 or above]) ])
# everything needed for libusb support is present
use_libusb=yes
CPPFLAGS="$saved_CPPFLAGS"
LIBS="$saved_LIBS"
fi
AC_SUBST(LIBUSB_CFLAGS)
AC_SUBST(LIBUSB_LIBS)
if test x$use_libusb = xyes; then
AC_DEFINE(HAVE_LIBUSB, 1, [Libusb is available])
PCSCLITE_FEATURES="${PCSCLITE_FEATURES} libusb"
fi
# --enable-usbdropdir=DIR
AC_ARG_ENABLE(usbdropdir,
AC_HELP_STRING([--enable-usbdropdir=DIR],[directory containing USB
drivers (default /usr/local/pcsc/drivers)]),
[usbdropdir="${enableval}"], [usbdropdir=false])
if test x${usbdropdir} = xfalse ; then
if test "x$prefix" != xNONE; then
usbdropdir="$prefix/pcsc/drivers"
else
usbdropdir="$ac_default_prefix/pcsc/drivers"
fi
fi
AC_DEFINE_UNQUOTED(PCSCLITE_HP_DROPDIR, "$usbdropdir", [directory containing USB drivers])
PCSCLITE_FEATURES="${PCSCLITE_FEATURES} usbdropdir=${usbdropdir}"
# --enable-debugatr
AC_ARG_ENABLE(debugatr,
AC_HELP_STRING([--enable-debugatr],[enable ATR debug messages from pcscd]),
[ case "${enableval}" in
yes) debugatr=true ;;
no) debugatr=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-debugatr]) ;;
esac], [debugatr=false])
if test x${debugatr} = xtrue ; then
AC_DEFINE(ATR_DEBUG, 1, [display ATR parsing debug messages.])
PCSCLITE_FEATURES="${PCSCLITE_FEATURES} debugatr"
fi
# --enable-scf
AC_ARG_ENABLE(scf,
AC_HELP_STRING([--enable-scf],[use SCF for reader support]),
[ case "${enableval}" in
yes) scf=true ;;
no) scf=false ;;
*) AC_MSG_ERROR([bad value ${enableval} for --enable-scf]) ;;
esac], [scf=false])
AC_SUBST(LIBSMARTCARD)
if test x$scf = xtrue -a x$ac_cv_header_smartcard_scf_h = xyes; then
AC_CHECK_LIB(smartcard, SCF_strerror, [LIBSMARTCARD="$LIBSMARTCARD -lsmartcard" scf=true], scf=false)
else
scf=false
fi
AM_CONDITIONAL(HAVE_SCF, test x$scf = xtrue)
# --enable-confdir=DIR
AC_ARG_ENABLE(confdir,
AC_HELP_STRING([--enable-confdir=DIR],[directory containing reader.conf
(default /etc)]),
[confdir="${enableval}"], [confdir=false])
if test x${confdir} = xfalse ; then
confdir="/etc"
fi
PCSCLITE_FEATURES="${PCSCLITE_FEATURES} confdir=${confdir}"
# --enable-ipcdir=DIR
AC_ARG_ENABLE(ipcdir,
AC_HELP_STRING([--enable-ipcdir=DIR],[directory containing IPC files
(default /var/run/pcscd)]),
[ipcdir="${enableval}"], [ipcdir=false])
if test x${ipcdir} = xfalse ; then
ipcdir="/var/run/pcscd"
fi
AC_DEFINE_UNQUOTED(USE_IPCDIR, "$ipcdir", [directory containing IPC files])
PCSCLITE_FEATURES="${PCSCLITE_FEATURES} ipcdir=${ipcdir}"
CPPFLAGS="-I\${top_srcdir}/src $CPPFLAGS"
# HOST_TO_CCID
if test "x$ac_cv_c_bigendian" = "xyes"; then
AC_SUBST(host_to_ccid_16, ['((((x) >> 8) & 0xFF) + ((x & 0xFF) << 8))'])
AC_SUBST(host_to_ccid_32, ['((((x) >> 24) & 0xFF) + (((x) >> 8) & 0xFF00) + ((x & 0xFF00) << 8) + (((x) & 0xFF) << 24))'])
AC_MSG_RESULT([plateform endianess : big endian])
else
AC_SUBST(host_to_ccid_16, ['(x)'])
AC_SUBST(host_to_ccid_32, ['(x)'])
AC_MSG_RESULT([plateform endianess : little endian])
fi
# Setup dist stuff
AC_SUBST(usbdropdir)
AC_SUBST(confdir)
AC_SUBST(ipcdir)
AC_SUBST(host_to_ccid_16)
AC_SUBST(host_to_ccid_32)
AS_AC_EXPAND(confdir_exp,$confdir)
AS_AC_EXPAND(sysconfdir_exp,$sysconfdir)
AS_AC_EXPAND(sbindir_exp,$sbindir)
AS_AC_EXPAND(localstatedir_exp,$localstatedir)
AC_DEFINE_UNQUOTED([PCSCLITE_FEATURES], ["${PCSCLITE_FEATURES}"], [Enabled PC/SC lite features])
cat << EOF
PC/SC lite has been configured with following options:
Version: ${PACKAGE_VERSION}
System binaries: $(eval eval eval echo "${sbindir_exp}")
Configuration files: $(eval eval eval echo "${sysconfdir_exp}")
Host: ${host}
Compiler: ${CC}
Preprocessor flags: ${CPPFLAGS}
Compiler flags: ${CFLAGS}
Preprocessor flags: ${CPPFLAGS}
Linker flags: ${LDFLAGS}
Libraries: ${LIBS}
PTHREAD_CFLAGS: ${PTHREAD_CFLAGS}
PTHREAD_LIBS: ${PTHREAD_LIBS}
PCSC_ARCH: ${PCSC_ARCH}
libhal support: ${use_libhal}
libusb support: ${use_libusb}
SCF reader support: ${scf}
USB drop directory: ${usbdropdir}
ATR parsing messages: ${debugatr}
confdir: ${confdir}
ipcdir: ${ipcdir}
EOF
# Write Makefiles
AC_CONFIG_FILES([
Makefile
m4/Makefile
doc/Makefile
doc/doxygen.conf
doc/pcscd.8
doc/reader.conf.5
doc/update-reader.conf.8
doc/example/Makefile
etc/Makefile
etc/pcscd.init
etc/reader.conf
etc/update-reader.conf
src/Makefile
src/libpcsclite.pc
src/pcscd.h
src/PCSC/pcsclite.h
src/PCSC/reader.h
])
AC_OUTPUT