1 # Process this file with autoconf to produce a configure script.
2 # You may need to use autoconf 2.56 or newer
4 # Require autoconf 2.61
7 AC_INIT([ccid],[1.4.33])
8 AC_CONFIG_SRCDIR(src/ifdhandler.c)
10 AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip subdir-objects foreign)
11 AC_CONFIG_MACRO_DIR([m4])
13 # silent build by default
14 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
17 AC_PREFIX_DEFAULT(/usr/local)
19 # Automake boilerplate.
22 # create a config.h file (Automake will add -DHAVE_CONFIG_H)
23 AC_CONFIG_HEADERS([config.h])
28 # Checks for programs.
39 # check pcsc-lite version
40 PCSC_NEEDED_VERSION="1.8.3"
41 PKG_CHECK_EXISTS([libpcsclite],
42 [PKG_CHECK_MODULES(PCSC, libpcsclite >= $PCSC_NEEDED_VERSION, [],
44 if test -f /usr/local/lib/pkgconfig/libpcsclite.pc -a "x$PKG_CONFIG" != x ; then
45 AC_MSG_ERROR([use PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure])
47 AC_MSG_WARN([install pcsc-lite $PCSC_NEEDED_VERSION or later])
50 [AC_MSG_WARN([libpcsclite not found by pkg-config])]
53 saved_CPPFLAGS="$CPPFLAGS"
54 CPPFLAGS="$CPPFLAGS $PCSC_CFLAGS"
55 PCSC_ERROR_MSG="install pcsc-lite $PCSC_NEEDED_VERSION or later, or use ./configure PCSC_CFLAGS=..."
56 AC_CHECK_HEADER(ifdhandler.h,, [AC_MSG_ERROR([$PCSC_ERROR_MSG])])
57 AC_CHECK_HEADER(reader.h,, [AC_MSG_ERROR([$PCSC_ERROR_MSG])])
58 CPPFLAGS="$saved_CPPFLAGS"
60 # Add libtool support.
61 # Static lib is disabled by default. Use --enable-static if needed
62 LT_INIT(disable-static)
65 # Automatically update the libtool script if it becomes out-of-date.
66 AC_SUBST(LIBTOOL_DEPS)
68 # Checks for header files.
70 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,,
71 [AC_MSG_ERROR([some header files not found])])
73 # Checks for typedefs, structures, and compiler characteristics.
78 # Checks for library functions.
79 AC_CHECK_FUNCS(select strerror strncpy memcpy strlcpy strlcat)
81 # Select OS specific versions of source files.
84 BUNDLE_HOST=`uname | sed -e s,/,_,`
86 case "$BUNDLE_HOST" in
98 AS_HELP_STRING([--disable-libusb],[do not use libusb]),
99 [ use_libusb="${enableval}" ], [ use_libusb=yes ] )
101 # check if libusb is used
102 LIBUSB_NEEDED_VERSION="1.0.9"
103 if test "x$use_libusb" != xno ; then
104 PKG_CHECK_EXISTS([libusb-1.0], [
105 PKG_CHECK_MODULES(LIBUSB, libusb-1.0 >= $LIBUSB_NEEDED_VERSION, [],
107 AC_MSG_WARN([install libusb $LIBUSB_NEEDED_VERSION or later])
108 PKG_CHECK_MODULES(LIBUSB, libusb-1.0)
112 saved_CPPFLAGS="$CPPFLAGS"
115 CPPFLAGS="$CPPFLAGS $LIBUSB_CFLAGS"
116 LIBS="$LDFLAGS $LIBUSB_LIBS"
118 AC_CHECK_HEADERS(libusb.h, [],
119 [ AC_MSG_ERROR([libusb.h not found, install libusb or use ./configure LIBUSB_CFLAGS=...]) ])
121 AC_MSG_CHECKING([for libusb_init])
122 AC_TRY_LINK_FUNC(libusb_init, [ AC_MSG_RESULT([yes]) ],
123 [ AC_MSG_ERROR([libusb not found, use ./configure LIBUSB_LIBS=...]) ])
125 CPPFLAGS="$saved_CPPFLAGS"
130 AC_SUBST(LIBUSB_CFLAGS)
131 AC_SUBST(LIBUSB_LIBS)
132 AM_CONDITIONAL(WITH_LIBUSB, test "${use_libusb}" != "no")
134 # --enable-composite-as-multislot
135 use_composite_as_multislot=no
136 AC_ARG_ENABLE(composite-as-multislot,
137 AS_HELP_STRING([--enable-composite-as-multislot],[composite device are seen as multi-slots]),
138 [ use_composite_as_multislot="${enableval}" ] )
140 if test "x$use_composite_as_multislot" = xyes; then
141 AC_DEFINE(USE_COMPOSITE_AS_MULTISLOT, 1, [composite device are seen as multi-slots])
144 # check if the compiler support -fvisibility=hidden (GCC >= 4)
145 saved_CFLAGS="$CFLAGS"
146 CFLAGS="$CFLAGS -fvisibility=hidden"
147 AC_MSG_CHECKING([for -fvisibility=hidden])
148 AC_COMPILE_IFELSE([AC_LANG_SOURCE([char foo;])],
149 [ AC_MSG_RESULT([yes])
150 SYMBOL_VISIBILITY="-fvisibility=hidden" ],
152 CFLAGS="$saved_CFLAGS"
153 AC_SUBST(SYMBOL_VISIBILITY)
155 # --disable-multi-thread
156 AC_ARG_ENABLE(multi-thread,
157 AS_HELP_STRING([--disable-multi-thread],[disable multi threading]),
158 [ multithread="${enableval}" ], [ multithread=yes ] )
160 if test "${multithread}" != no ; then
162 [ AC_DEFINE(HAVE_PTHREAD, 1,
163 [Define if you have POSIX threads libraries and header files.])
164 ], [ AC_MSG_ERROR([POSIX thread support required]) ])
169 # --enable-bundle=NAME
170 AC_ARG_ENABLE(bundle,
171 AS_HELP_STRING([--enable-bundle=NAME],[bundle directory name
172 (default ifd-ccid.bundle)]),
173 [bundle="${enableval}"], [bundle=false])
174 if test "${bundle}" = false ; then
175 bundle="ifd-ccid.bundle"
177 AC_DEFINE_UNQUOTED(BUNDLE, "$bundle", [bundle directory name])
179 # --enable-usbdropdir=DIR
180 AC_ARG_ENABLE(usbdropdir,
181 AS_HELP_STRING([--enable-usbdropdir=DIR],[directory containing USB
182 drivers (default to pcscd config or $(prefix)/pcsc/drivers)]),
183 [usbdropdir="${enableval}"], [usbdropdir=false])
184 if test "${usbdropdir}" = false ; then
185 usbdropdir=`$PKG_CONFIG libpcsclite --variable=usbdropdir`
187 AC_DEFINE_UNQUOTED(PCSCLITE_HP_DROPDIR, "$usbdropdir", [directory containing USB drivers])
188 if test "${usbdropdir}" = "" ; then
189 AC_MSG_ERROR([use --enable-usbdropdir=DIR])
192 # --enable-twinserial
193 AC_ARG_ENABLE(twinserial,
194 AS_HELP_STRING([--enable-twinserial],[also compile and install the serial Twin driver]),
195 [twinserial="${enableval}"], [twinserial=no])
196 AM_CONDITIONAL(WITH_TWIN_SERIAL, test "${twinserial}" != "no")
198 # --enable-ccidtwindir=DIR
199 AC_ARG_ENABLE(ccidtwindir,
200 AS_HELP_STRING([--enable-ccidtwindir=DIR],[directory to install the
201 serial Twin driver (default to pcscd config or $(prefix)/pcsc/drivers/serial)]),
202 [ccidtwindir="${enableval}"], [ccidtwindir=false])
203 if test "${ccidtwindir}" = false ; then
204 ccidtwindir=$usbdropdir/serial
207 # --enable-serialconfdir=DIR
208 AC_ARG_ENABLE(serialconfdir,
209 AS_HELP_STRING([--enable-serialconfdir=dir],[directory containing
210 serial drivers (default to pcscd config)]),
211 [serialconfdir="${enableval}"], [serialconfdir=false])
212 if test "${serialconfdir}" = false ; then
213 serialconfdir=`$PKG_CONFIG libpcsclite --variable=serialconfdir`
217 AC_ARG_ENABLE(pcsclite,
218 AS_HELP_STRING([--disable-pcsclite],[do not use pcsc-lite debug support]),
219 [ pcsclite="${enableval}" ], [ pcsclite=yes ] )
221 if test "${pcsclite}" != no ; then
222 # check that pcsc-lite is installed
225 LIBS="$LIBS $PCSC_LIBS"
226 CFLAGS="$CFLAGS $PCSC_CFLAGS"
227 AC_MSG_CHECKING([for SCardEstablishContext])
228 AC_TRY_LINK_FUNC(SCardEstablishContext,
229 [ AC_MSG_RESULT([yes]) ],
230 [ AC_MSG_ERROR([SCardEstablishContext() not found, install pcsc-lite, or use PCSC_LIBS=... ./configure]) ])
236 AM_CONDITIONAL(WITHOUT_PCSC, test "${pcsclite}" != "yes")
241 AC_ARG_ENABLE(syslog,
242 AS_HELP_STRING([--enable-syslog],[use syslog(3) instead of printf() for debug (Yosemite 10.10)]),
243 [ use_syslog="${enableval}" ], [ use_syslog=no ] )
245 if test x$use_syslog = xyes; then
246 AC_DEFINE(USE_SYSLOG, 1, [Use syslog(3) for debug])
251 AS_HELP_STRING([--enable-oslog],[use os_log(3) instead of printf() for debug (Sierra 10.12)]),
252 [ use_oslog="${enableval}" ], [ use_oslog=no ] )
254 if test x$use_oslog = xyes; then
255 AC_DEFINE(USE_OS_LOG, 1, [Use os_log(3) for debug])
261 AS_HELP_STRING([--disable-class],[remove the CCIDCLASSDRIVER from Info.plist]),
262 [class="${enableval}"], [class=yes])
263 if test "${class}" != yes ; then
269 AC_ARG_ENABLE(embedded,
270 AS_HELP_STRING([--enable-embedded],[limit RAM and CPU ressources by disabling features (log)]),
271 [ use_embedded="${enableval}" ])
273 if test x$use_embedded = xyes; then
274 AC_DEFINE(NO_LOG, 1, [Disable logging support])
279 AS_HELP_STRING([--enable-zlp],[enable the Zero Length Packet patch for some Gemalto readers]),
280 [ use_zlp="${enableval}" ])
282 if test x$use_zlp = xyes; then
283 AC_DEFINE(ENABLE_ZLP, 1, [Enable Zero Length Packet patch])
290 AC_SUBST(ccidtwindir)
291 AC_SUBST(serialconfdir)
292 AS_AC_EXPAND(bindir_exp,$bindir)
293 AS_AC_EXPAND(sysconfdir_exp,$sysconfdir)
297 libccid has been configured with following options:
299 Version: ${PACKAGE_VERSION}
300 User binaries: $(eval eval eval echo "${bindir_exp}")
301 Configuration files: $(eval eval eval echo "${sysconfdir_exp}")
306 Preprocessor flags: ${CPPFLAGS}
307 Compiler flags: ${CFLAGS}
308 Preprocessor flags: ${CPPFLAGS}
309 Linker flags: ${LDFLAGS}
312 PCSC_CFLAGS: ${PCSC_CFLAGS}
313 PCSC_LIBS: ${PCSC_LIBS}
314 PTHREAD_CFLAGS: ${PTHREAD_CFLAGS}
315 PTHREAD_LIBS: ${PTHREAD_LIBS}
316 BUNDLE_HOST: ${BUNDLE_HOST}
317 DYN_LIB_EXT: ${DYN_LIB_EXT}
318 LIBUSB_CFLAGS: ${LIBUSB_CFLAGS}
319 LIBUSB_LIBS: ${LIBUSB_LIBS}
320 SYMBOL_VISIBILITY: ${SYMBOL_VISIBILITY}
323 libusb support: ${use_libusb}
324 composite as multislot: ${use_composite_as_multislot}
325 multi threading: ${multithread}
326 bundle directory name: ${bundle}
327 USB drop directory: ${usbdropdir}
328 serial Twin support: ${twinserial}
329 serial twin install dir: ${ccidtwindir}
330 serial config directory: ${serialconfdir}
331 compiled for pcsc-lite: ${pcsclite}
332 syslog debug: ${use_syslog}
333 os_log debug: ${use_oslog}
334 class driver: ${class}
339 AC_CONFIG_FILES(Makefile
343 contrib/Kobil_mIDentity_switch/Makefile
344 contrib/RSA_SecurID/Makefile