Blame configure.ac

Packit 9f0df5
# Process this file with autoconf to produce a configure script.
Packit 9f0df5
# You may need to use autoconf 2.56 or newer
Packit 9f0df5
Packit 9f0df5
# Require autoconf 2.61
Packit 9f0df5
AC_PREREQ([2.69])
Packit 9f0df5
Packit 9f0df5
AC_INIT([ccid],[1.4.29])
Packit 9f0df5
AC_CONFIG_SRCDIR(src/ifdhandler.c)
Packit 9f0df5
AC_CONFIG_AUX_DIR([.])
Packit 9f0df5
AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip subdir-objects)
Packit 9f0df5
AC_CONFIG_MACRO_DIR([m4])
Packit 9f0df5
Packit 9f0df5
# silent build by default
Packit 9f0df5
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
Packit 9f0df5
Packit 9f0df5
# Default install dir
Packit 9f0df5
AC_PREFIX_DEFAULT(/usr/local)
Packit 9f0df5
Packit 9f0df5
# Automake boilerplate.
Packit 9f0df5
AC_CANONICAL_HOST
Packit 9f0df5
Packit 9f0df5
# create a config.h file (Automake will add -DHAVE_CONFIG_H)
Packit 9f0df5
AC_CONFIG_HEADERS([config.h])
Packit 9f0df5
Packit 9f0df5
# Options
Packit 9f0df5
AM_MAINTAINER_MODE
Packit 9f0df5
Packit 9f0df5
# Checks for programs.
Packit 9f0df5
AC_PROG_CC
Packit 9f0df5
AM_PROG_CC_C_O
Packit 9f0df5
AC_PROG_CPP
Packit 9f0df5
AC_PROG_INSTALL
Packit 9f0df5
AC_PROG_MAKE_SET
Packit 9f0df5
AC_PROG_LN_S
Packit 9f0df5
AM_PROG_LEX
Packit 9f0df5
AM_PROG_AR
Packit 9f0df5
PKG_PROG_PKG_CONFIG
Packit 9f0df5
Packit 9f0df5
# check pcsc-lite version
Packit 9f0df5
PCSC_NEEDED_VERSION="1.8.3"
Packit 9f0df5
PKG_CHECK_EXISTS([libpcsclite],
Packit 9f0df5
	[PKG_CHECK_MODULES(PCSC, libpcsclite >= $PCSC_NEEDED_VERSION, [],
Packit 9f0df5
	[
Packit 9f0df5
	if test -f /usr/local/lib/pkgconfig/libpcsclite.pc -a "x$PKG_CONFIG" != x ; then
Packit 9f0df5
		AC_MSG_ERROR([use PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure])
Packit 9f0df5
	  else
Packit 9f0df5
		AC_MSG_WARN([install pcsc-lite $PCSC_NEEDED_VERSION or later])
Packit 9f0df5
	  fi
Packit 9f0df5
	])],
Packit 9f0df5
	[AC_MSG_WARN([libpcsclite not found by pkg-config])]
Packit 9f0df5
)
Packit 9f0df5
Packit 9f0df5
saved_CPPFLAGS="$CPPFLAGS"
Packit 9f0df5
CPPFLAGS="$CPPFLAGS $PCSC_CFLAGS"
Packit 9f0df5
PCSC_ERROR_MSG="install pcsc-lite $PCSC_NEEDED_VERSION or later, or use ./configure PCSC_CFLAGS=..."
Packit 9f0df5
AC_CHECK_HEADER(ifdhandler.h,, [AC_MSG_ERROR([$PCSC_ERROR_MSG])])
Packit 9f0df5
AC_CHECK_HEADER(reader.h,, [AC_MSG_ERROR([$PCSC_ERROR_MSG])])
Packit 9f0df5
CPPFLAGS="$saved_CPPFLAGS"
Packit 9f0df5
Packit 9f0df5
# Add libtool support.
Packit 9f0df5
# Static lib is disabled by default. Use --enable-static if needed
Packit 9f0df5
LT_INIT(disable-static)
Packit 9f0df5
LT_INIT
Packit 9f0df5
Packit 9f0df5
# Automatically update the libtool script if it becomes out-of-date.
Packit 9f0df5
AC_SUBST(LIBTOOL_DEPS)
Packit 9f0df5
Packit 9f0df5
# Checks for header files.
Packit 9f0df5
AC_HEADER_STDC
Packit 9f0df5
AC_CHECK_HEADERS(errno.h fcntl.h stdlib.h unistd.h termios.h string.h sys/time.h sys/types.h stdarg.h arpa/inet.h stdio.h,,
Packit 9f0df5
	[AC_MSG_ERROR([some header files not found])])
Packit 9f0df5
Packit 9f0df5
# Checks for typedefs, structures, and compiler characteristics.
Packit 9f0df5
AC_C_CONST
Packit 9f0df5
AC_TYPE_SIZE_T
Packit 9f0df5
AC_HEADER_TIME
Packit 9f0df5
Packit 9f0df5
# Checks for library functions.
Packit 9f0df5
AC_CHECK_FUNCS(select strerror strncpy memcpy strlcpy strlcat)
Packit 9f0df5
Packit 9f0df5
# Select OS specific versions of source files.
Packit 9f0df5
AC_SUBST(BUNDLE_HOST)
Packit 9f0df5
AC_SUBST(DYN_LIB_EXT)
Packit 9f0df5
BUNDLE_HOST=`uname | sed -e s,/,_,`
Packit 9f0df5
DYN_LIB_EXT="so"
Packit 9f0df5
case "$BUNDLE_HOST" in
Packit 9f0df5
Darwin)
Packit 9f0df5
	BUNDLE_HOST=MacOS
Packit 9f0df5
	DYN_LIB_EXT="dylib"
Packit 9f0df5
	;;
Packit 9f0df5
SunOS)
Packit 9f0df5
	BUNDLE_HOST=Solaris
Packit 9f0df5
	;;
Packit 9f0df5
	esac
Packit 9f0df5
Packit 9f0df5
# --disable-libusb
Packit 9f0df5
AC_ARG_ENABLE(libusb,
Packit 9f0df5
	AS_HELP_STRING([--disable-libusb],[do not use libusb]),
Packit 9f0df5
	[ use_libusb="${enableval}" ], [ use_libusb=yes ] )
Packit 9f0df5
Packit 9f0df5
# check if libusb is used
Packit 9f0df5
LIBUSB_NEEDED_VERSION="1.0.9"
Packit 9f0df5
if test "x$use_libusb" != xno ; then
Packit 9f0df5
	PKG_CHECK_EXISTS([libusb-1.0], [
Packit 9f0df5
	PKG_CHECK_MODULES(LIBUSB, libusb-1.0 >= $LIBUSB_NEEDED_VERSION, [],
Packit 9f0df5
		[
Packit 9f0df5
		AC_MSG_WARN([install libusb $LIBUSB_NEEDED_VERSION or later])
Packit 9f0df5
		PKG_CHECK_MODULES(LIBUSB, libusb-1.0)
Packit 9f0df5
		])
Packit 9f0df5
	])
Packit 9f0df5
Packit 9f0df5
	saved_CPPFLAGS="$CPPFLAGS"
Packit 9f0df5
	saved_LIBS="$LIBS"
Packit 9f0df5
Packit 9f0df5
	CPPFLAGS="$CPPFLAGS $LIBUSB_CFLAGS"
Packit 9f0df5
	LIBS="$LDFLAGS $LIBUSB_LIBS"
Packit 9f0df5
Packit 9f0df5
	AC_CHECK_HEADERS(libusb.h, [],
Packit 9f0df5
		[ AC_MSG_ERROR([libusb.h not found, install libusb or use ./configure LIBUSB_CFLAGS=...]) ])
Packit 9f0df5
Packit 9f0df5
	AC_MSG_CHECKING([for libusb_init])
Packit 9f0df5
	AC_TRY_LINK_FUNC(libusb_init, [ AC_MSG_RESULT([yes]) ],
Packit 9f0df5
		[ AC_MSG_ERROR([libusb not found, use ./configure LIBUSB_LIBS=...]) ])
Packit 9f0df5
Packit 9f0df5
	CPPFLAGS="$saved_CPPFLAGS"
Packit 9f0df5
	LIBS="$saved_LIBS"
Packit 9f0df5
Packit 9f0df5
	use_libusb=yes
Packit 9f0df5
fi
Packit 9f0df5
AC_SUBST(LIBUSB_CFLAGS)
Packit 9f0df5
AC_SUBST(LIBUSB_LIBS)
Packit 9f0df5
AM_CONDITIONAL(WITH_LIBUSB, test "${use_libusb}" != "no")
Packit 9f0df5
Packit 9f0df5
# --enable-composite-as-multislot
Packit 9f0df5
use_composite_as_multislot=no
Packit 9f0df5
AC_ARG_ENABLE(composite-as-multislot,
Packit 9f0df5
	AS_HELP_STRING([--enable-composite-as-multislot],[composite device are seen as multi-slots]),
Packit 9f0df5
	[ use_composite_as_multislot="${enableval}" ] )
Packit 9f0df5
Packit 9f0df5
if test "x$use_composite_as_multislot" = xyes; then
Packit 9f0df5
	AC_DEFINE(USE_COMPOSITE_AS_MULTISLOT, 1, [composite device are seen as multi-slots])
Packit 9f0df5
fi
Packit 9f0df5
Packit 9f0df5
# check if the compiler support -fvisibility=hidden (GCC >= 4)
Packit 9f0df5
saved_CFLAGS="$CFLAGS"
Packit 9f0df5
CFLAGS="$CFLAGS -fvisibility=hidden"
Packit 9f0df5
AC_MSG_CHECKING([for -fvisibility=hidden])
Packit 9f0df5
AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])],
Packit 9f0df5
    [   AC_MSG_RESULT([yes])
Packit 9f0df5
        SYMBOL_VISIBILITY="-fvisibility=hidden" ],
Packit 9f0df5
    AC_MSG_RESULT([no]))
Packit 9f0df5
CFLAGS="$saved_CFLAGS"
Packit 9f0df5
AC_SUBST(SYMBOL_VISIBILITY)
Packit 9f0df5
Packit 9f0df5
# --disable-multi-thread
Packit 9f0df5
AC_ARG_ENABLE(multi-thread,
Packit 9f0df5
	AS_HELP_STRING([--disable-multi-thread],[disable multi threading]),
Packit 9f0df5
	[ multithread="${enableval}" ], [ multithread=yes ] )
Packit 9f0df5
Packit 9f0df5
if test "${multithread}" != no ; then
Packit 9f0df5
	AX_PTHREAD(
Packit 9f0df5
		[ AC_DEFINE(HAVE_PTHREAD, 1,
Packit 9f0df5
			[Define if you have POSIX threads libraries and header files.])
Packit 9f0df5
	   	], [ AC_MSG_ERROR([POSIX thread support required]) ])
Packit 9f0df5
Packit 9f0df5
	multithread=yes
Packit 9f0df5
fi
Packit 9f0df5
Packit 9f0df5
# --enable-bundle=NAME
Packit 9f0df5
AC_ARG_ENABLE(bundle,
Packit 9f0df5
	AS_HELP_STRING([--enable-bundle=NAME],[bundle directory name
Packit 9f0df5
	(default ifd-ccid.bundle)]),
Packit 9f0df5
	[bundle="${enableval}"], [bundle=false])
Packit 9f0df5
if test "${bundle}" = false ; then
Packit 9f0df5
	bundle="ifd-ccid.bundle"
Packit 9f0df5
fi
Packit 9f0df5
AC_DEFINE_UNQUOTED(BUNDLE, "$bundle", [bundle directory name])
Packit 9f0df5
Packit 9f0df5
# --enable-usbdropdir=DIR
Packit 9f0df5
AC_ARG_ENABLE(usbdropdir,
Packit 9f0df5
	AS_HELP_STRING([--enable-usbdropdir=DIR],[directory containing USB
Packit 9f0df5
	drivers (default to pcscd config or $(prefix)/pcsc/drivers)]),
Packit 9f0df5
	[usbdropdir="${enableval}"], [usbdropdir=false])
Packit 9f0df5
if test "${usbdropdir}" = false ; then
Packit 9f0df5
	usbdropdir=`$PKG_CONFIG libpcsclite --variable=usbdropdir`
Packit 9f0df5
fi
Packit 9f0df5
AC_DEFINE_UNQUOTED(PCSCLITE_HP_DROPDIR, "$usbdropdir", [directory containing USB drivers])
Packit 9f0df5
if test "${usbdropdir}" = "" ; then
Packit 9f0df5
	AC_MSG_ERROR([use --enable-usbdropdir=DIR])
Packit 9f0df5
fi
Packit 9f0df5
Packit 9f0df5
# --enable-twinserial
Packit 9f0df5
AC_ARG_ENABLE(twinserial,
Packit 9f0df5
	AS_HELP_STRING([--enable-twinserial],[also compile and install the serial Twin driver]),
Packit 9f0df5
	[twinserial="${enableval}"], [twinserial=no])
Packit 9f0df5
AM_CONDITIONAL(WITH_TWIN_SERIAL, test "${twinserial}" != "no")
Packit 9f0df5
Packit 9f0df5
# --enable-ccidtwindir=DIR
Packit 9f0df5
AC_ARG_ENABLE(ccidtwindir,
Packit 9f0df5
	AS_HELP_STRING([--enable-ccidtwindir=DIR],[directory to install the
Packit 9f0df5
	serial Twin driver (default to pcscd config or $(prefix)/pcsc/drivers/serial)]),
Packit 9f0df5
	[ccidtwindir="${enableval}"], [ccidtwindir=false])
Packit 9f0df5
if test "${ccidtwindir}" = false ; then
Packit 9f0df5
	ccidtwindir=$usbdropdir/serial
Packit 9f0df5
fi
Packit 9f0df5
Packit 9f0df5
# --enable-serialconfdir=DIR
Packit 9f0df5
AC_ARG_ENABLE(serialconfdir,
Packit 9f0df5
	AS_HELP_STRING([--enable-serialconfdir=dir],[directory containing
Packit 9f0df5
		serial drivers (default to pcscd config)]),
Packit 9f0df5
	[serialconfdir="${enableval}"], [serialconfdir=false])
Packit 9f0df5
if test "${serialconfdir}" = false ; then
Packit 9f0df5
	serialconfdir=`$PKG_CONFIG libpcsclite --variable=serialconfdir`
Packit 9f0df5
fi
Packit 9f0df5
Packit 9f0df5
# --disable-pcsclite
Packit 9f0df5
AC_ARG_ENABLE(pcsclite,
Packit 9f0df5
	AS_HELP_STRING([--disable-pcsclite],[do not use pcsc-lite debug support]),
Packit 9f0df5
	[ pcsclite="${enableval}" ], [ pcsclite=yes ] )
Packit 9f0df5
Packit 9f0df5
if test "${pcsclite}" != no ; then
Packit 9f0df5
	# check that pcsc-lite is installed
Packit 9f0df5
	OLD_LIBS="$LIBS"
Packit 9f0df5
	OLD_CFLAGS="$CFLAGS"
Packit 9f0df5
	LIBS="$LIBS $PCSC_LIBS"
Packit 9f0df5
	CFLAGS="$CFLAGS $PCSC_CFLAGS"
Packit 9f0df5
	AC_MSG_CHECKING([for SCardEstablishContext])
Packit 9f0df5
	AC_TRY_LINK_FUNC(SCardEstablishContext,
Packit 9f0df5
	    [ AC_MSG_RESULT([yes]) ],
Packit 9f0df5
		[ AC_MSG_ERROR([SCardEstablishContext() not found, install pcsc-lite, or use PCSC_LIBS=...  ./configure]) ])
Packit 9f0df5
	LIBS="$OLD_LIBS"
Packit 9f0df5
	CFLAGS="$OLD_CFLAGS"
Packit 9f0df5
Packit 9f0df5
	pcsclite=yes
Packit 9f0df5
fi
Packit 9f0df5
AM_CONDITIONAL(WITHOUT_PCSC, test "${pcsclite}" != "yes")
Packit 9f0df5
Packit 9f0df5
Packit 9f0df5
Packit 9f0df5
# --enable-syslog
Packit 9f0df5
AC_ARG_ENABLE(syslog,
Packit 9f0df5
	AS_HELP_STRING([--enable-syslog],[use syslog instead of printf for debug (Yosemite)]),
Packit 9f0df5
	[ use_syslog="${enableval}" ], [ use_syslog=no ] )
Packit 9f0df5
Packit 9f0df5
if test x$use_syslog = xyes; then
Packit 9f0df5
  AC_DEFINE(USE_SYSLOG, 1, [Use syslog(3) for debug])
Packit 9f0df5
fi
Packit 9f0df5
Packit 9f0df5
Packit 9f0df5
# --disable-class
Packit 9f0df5
AC_ARG_ENABLE(class,
Packit 9f0df5
	AS_HELP_STRING([--disable-class],[remove the CCIDCLASSDRIVER from Info.plist]),
Packit 9f0df5
	[class="${enableval}"], [class=yes])
Packit 9f0df5
if test "${class}" != yes ; then
Packit 9f0df5
	NOCLASS="--no-class"
Packit 9f0df5
fi
Packit 9f0df5
AC_SUBST(NOCLASS)
Packit 9f0df5
Packit 9f0df5
# --enable-embedded
Packit 9f0df5
AC_ARG_ENABLE(embedded,
Packit 9f0df5
  AS_HELP_STRING([--enable-embedded],[limit RAM and CPU ressources by disabling features (log)]),
Packit 9f0df5
  [ use_embedded="${enableval}" ])
Packit 9f0df5
Packit 9f0df5
if test x$use_embedded = xyes; then
Packit 9f0df5
  AC_DEFINE(NO_LOG, 1, [Disable logging support])
Packit 9f0df5
fi
Packit 9f0df5
Packit 9f0df5
# --enable-zlp
Packit 9f0df5
AC_ARG_ENABLE(zlp,
Packit 9f0df5
  AS_HELP_STRING([--enable-zlp],[enable the Zero Length Packet patch for some Gemalto readers]),
Packit 9f0df5
  [ use_zlp="${enableval}" ])
Packit 9f0df5
Packit 9f0df5
if test x$use_zlp = xyes; then
Packit 9f0df5
  AC_DEFINE(ENABLE_ZLP, 1, [Enable Zero Length Packet patch])
Packit 9f0df5
fi
Packit 9f0df5
Packit 9f0df5
# Setup dist stuff
Packit 9f0df5
AC_SUBST(ac_aux_dir)
Packit 9f0df5
AC_SUBST(bundle)
Packit 9f0df5
AC_SUBST(usbdropdir)
Packit 9f0df5
AC_SUBST(ccidtwindir)
Packit 9f0df5
AC_SUBST(serialconfdir)
Packit 9f0df5
AS_AC_EXPAND(bindir_exp,$bindir)
Packit 9f0df5
AS_AC_EXPAND(sysconfdir_exp,$sysconfdir)
Packit 9f0df5
Packit 9f0df5
cat << EOF
Packit 9f0df5
Packit 9f0df5
libccid has been configured with following options:
Packit 9f0df5
Packit 9f0df5
Version:             ${PACKAGE_VERSION}
Packit 9f0df5
User binaries:       $(eval eval eval echo "${bindir_exp}")
Packit 9f0df5
Configuration files: $(eval eval eval echo "${sysconfdir_exp}")
Packit 9f0df5
Packit 9f0df5
Packit 9f0df5
Host:                ${host}
Packit 9f0df5
Compiler:            ${CC}
Packit 9f0df5
Preprocessor flags:  ${CPPFLAGS}
Packit 9f0df5
Compiler flags:      ${CFLAGS}
Packit 9f0df5
Preprocessor flags:  ${CPPFLAGS}
Packit 9f0df5
Linker flags:        ${LDFLAGS}
Packit 9f0df5
Libraries:           ${LIBS}
Packit 9f0df5
Packit 9f0df5
PCSC_CFLAGS:         ${PCSC_CFLAGS}
Packit 9f0df5
PCSC_LIBS:           ${PCSC_LIBS}
Packit 9f0df5
PTHREAD_CFLAGS:      ${PTHREAD_CFLAGS}
Packit 9f0df5
PTHREAD_LIBS:        ${PTHREAD_LIBS}
Packit 9f0df5
BUNDLE_HOST:         ${BUNDLE_HOST}
Packit 9f0df5
DYN_LIB_EXT:         ${DYN_LIB_EXT}
Packit 9f0df5
LIBUSB_CFLAGS:       ${LIBUSB_CFLAGS}
Packit 9f0df5
LIBUSB_LIBS:         ${LIBUSB_LIBS}
Packit 9f0df5
SYMBOL_VISIBILITY:   ${SYMBOL_VISIBILITY}
Packit 9f0df5
NOCLASS:             ${NOCLASS}
Packit 9f0df5
Packit 9f0df5
libusb support:          ${use_libusb}
Packit 9f0df5
composite as multislot:  ${use_composite_as_multislot}
Packit 9f0df5
multi threading:         ${multithread}
Packit 9f0df5
bundle directory name:   ${bundle}
Packit 9f0df5
USB drop directory:      ${usbdropdir}
Packit 9f0df5
serial Twin support:     ${twinserial}
Packit 9f0df5
serial twin install dir: ${ccidtwindir}
Packit 9f0df5
serial config directory: ${serialconfdir}
Packit 9f0df5
compiled for pcsc-lite:  ${pcsclite}
Packit 9f0df5
syslog debug:            ${use_syslog}
Packit 9f0df5
class driver:            ${class}
Packit 9f0df5
Packit 9f0df5
EOF
Packit 9f0df5
Packit 9f0df5
# Write Makefiles.
Packit 9f0df5
AC_CONFIG_FILES(Makefile
Packit 9f0df5
	src/Makefile
Packit 9f0df5
	readers/Makefile
Packit 9f0df5
	contrib/Makefile
Packit 9f0df5
	contrib/Kobil_mIDentity_switch/Makefile
Packit 9f0df5
	contrib/RSA_SecurID/Makefile
Packit 9f0df5
	examples/Makefile)
Packit 9f0df5
Packit 9f0df5
AC_OUTPUT
Packit 9f0df5