Fix fp_get_pollfds()
[libfprint.git] / configure.ac
blob778e7ad4a8089b58016ffa8215b0c483d496c5c0
1 AC_INIT([libfprint], [0.1.0-pre1])
2 AM_INIT_AUTOMAKE
3 AC_CONFIG_SRCDIR([libfprint/core.c])
4 AM_CONFIG_HEADER([config.h])
6 AC_PREREQ([2.50])
7 AC_PROG_CC
8 AC_PROG_LIBTOOL
9 AC_C_INLINE
10 AM_PROG_CC_C_O
11 AC_DEFINE([_GNU_SOURCE], [], [Use GNU extensions])
13 # Library versioning
14 lt_major="0"
15 lt_revision="0"
16 lt_age="0"
17 AC_SUBST(lt_major)
18 AC_SUBST(lt_revision)
19 AC_SUBST(lt_age)
21 all_drivers="upekts upektc upeksonly vcom5s uru4000 fdu2000 aes1610 aes2501 aes4000"
23 require_imagemagick='no'
24 require_aeslib='no'
25 enable_upekts='no'
26 enable_upektc='no'
27 enable_upeksonly='no'
28 enable_vcom5s='no'
29 enable_uru4000='no'
30 enable_fdu2000='no'
31 enable_aes1610='no'
32 enable_aes2501='no'
33 enable_aes4000='no'
35 AC_ARG_WITH([drivers],[AS_HELP_STRING([--with-drivers],
36         [List of drivers to enable])],
37         [drivers="$withval"],
38         [drivers="$all_drivers"])
40 for driver in `echo ${drivers} | sed -e 's/,/ /g' -e 's/,$//g'`; do
41         case ${driver} in
42                 upekts)
43                         AC_DEFINE([ENABLE_UPEKTS], [], [Build UPEK TouchStrip driver])
44                         enable_upekts="yes"
45                 ;;
46                 upektc)
47                         AC_DEFINE([ENABLE_UPEKTC], [], [Build UPEK TouchChip driver])
48                         enable_upektc="yes"
49                 ;;
50                 upeksonly)
51                         AC_DEFINE([ENABLE_UPEKSONLY], [], [Build UPEK TouchStrip sensor-only driver])
52                         enable_upeksonly="yes"
53                 ;;
54                 uru4000)
55                         AC_DEFINE([ENABLE_URU4000], [], [Build Digital Persona U.are.U 4000 driver])
56                         enable_uru4000="yes"
57                 ;;
58                 fdu2000)
59                         AC_DEFINE([ENABLE_FDU2000], [], [Build Secugen FDU 2000 driver])
60                         enable_fdu2000="yes"
61                 ;;
62                 vcom5s)
63                         AC_DEFINE([ENABLE_VCOM5S], [], [Build Veridicom 5thSense driver])
64                         enable_vcom5s="yes"
65                 ;;
66                 aes2501)
67                         AC_DEFINE([ENABLE_AES2501], [], [Build AuthenTec AES2501 driver])
68                         require_aeslib="yes"
69                         enable_aes2501="yes"
70                 ;;
71                 aes1610)
72                         AC_DEFINE([ENABLE_AES1610], [], [Build AuthenTec AES1610 driver])
73                         require_aeslib="yes"
74                         enable_aes1610="yes"
75                 ;;
76                 aes4000)
77                         AC_DEFINE([ENABLE_AES4000], [], [Build AuthenTec AES4000 driver])
78                         require_aeslib="yes"
79                         require_imagemagick="yes"
80                         enable_aes4000="yes"
81                 ;;
82         esac
83 done
85 AM_CONDITIONAL([ENABLE_UPEKTS], [test "$enable_upekts" != "no"])
86 #AM_CONDITIONAL([ENABLE_UPEKTC], [test "$enable_upektc" != "no"])
87 AM_CONDITIONAL([ENABLE_UPEKSONLY], [test "$enable_upeksonly" != "no"])
88 AM_CONDITIONAL([ENABLE_VCOM5S], [test "$enable_vcom5s" != "no"])
89 AM_CONDITIONAL([ENABLE_URU4000], [test "$enable_uru4000" != "no"])
90 #AM_CONDITIONAL([ENABLE_FDU2000], [test "$enable_fdu2000" != "no"])
91 #AM_CONDITIONAL([ENABLE_AES1610], [test "$enable_aes1610" != "no"])
92 AM_CONDITIONAL([ENABLE_AES2501], [test "$enable_aes2501" != "no"])
93 AM_CONDITIONAL([ENABLE_AES4000], [test "$enable_aes4000" != "no"])
94 AM_CONDITIONAL([REQUIRE_IMAGEMAGICK], [test "$require_imagemagick" != "no"])
95 AM_CONDITIONAL([REQUIRE_AESLIB], [test "$require_aeslib" != "no"])
98 PKG_CHECK_MODULES(LIBUSB, [libusb-1.0 >= 0.9.1])
99 AC_SUBST(LIBUSB_CFLAGS)
100 AC_SUBST(LIBUSB_LIBS)
102 # check for OpenSSL's libcrypto
103 PKG_CHECK_MODULES(CRYPTO, "libcrypto")
104 AC_SUBST(CRYPTO_CFLAGS)
105 AC_SUBST(CRYPTO_LIBS)
107 PKG_CHECK_MODULES(GLIB, "glib-2.0")
108 AC_SUBST(GLIB_CFLAGS)
109 AC_SUBST(GLIB_LIBS)
111 if test "$require_imagemagick" != "no"; then
112 PKG_CHECK_MODULES(IMAGEMAGICK, "ImageMagick")
113 AC_SUBST(IMAGEMAGICK_CFLAGS)
114 AC_SUBST(IMAGEMAGICK_LIBS)
117 # Examples build
118 AC_ARG_ENABLE([examples-build], [AS_HELP_STRING([--enable-examples-build],
119         [build example applications (default n)])],
120         [build_examples=$enableval],
121         [build_examples='no'])
122 AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$build_examples" != "xno"])
124 # Examples build
125 AC_ARG_ENABLE([x11-examples-build], [AS_HELP_STRING([--enable-x11-examples-build],
126         [build X11 example applications (default n)])],
127         [build_x11_examples=$enableval],
128         [build_x11_examples='no'])
129 AM_CONDITIONAL([BUILD_X11_EXAMPLES], [test "x$build_x11_examples" != "xno"])
132 if test "x$build_x11_examples" != "xno"; then
133         # check for Xv extensions
134         # imported from Coriander
135         AC_DEFUN([AC_CHECK_XV],[
136                 AC_SUBST(XV_CFLAGS)
137                 AC_SUBST(XV_LIBS)
138                 AC_MSG_CHECKING(for Xv extensions)
139                 AC_TRY_COMPILE([
140                 #include <X11/Xlib.h>
141                 #include <X11/extensions/Xvlib.h>],[
142                 int main(void) { (void) XvGetPortAttribute(0, 0, 0, 0); return 0; }
143                 ],xv=yes,xv=no);
144                 AC_MSG_RESULT($xv)
145                 if test x$xv = xyes; then
146                XV_LIBS="-lXv -lXext"
147                    XV_CFLAGS=""
148                    AC_DEFINE(HAVE_XV,1,[defined if XV video overlay is available])
149                 else
150                         AC_MSG_ERROR([XV is required for X11 examples])
151                 fi
152         ])
153         AC_CHECK_XV
156 # Message logging
157 AC_ARG_ENABLE([log], [AS_HELP_STRING([--disable-log], [disable all logging])],
158         [log_enabled=$enableval],
159         [log_enabled='yes'])
160 if test "x$log_enabled" != "xno"; then
161         AC_DEFINE([ENABLE_LOGGING], 1, [Message logging])
164 AC_ARG_ENABLE([debug-log], [AS_HELP_STRING([--enable-debug-log],
165         [enable debug logging (default n)])],
166         [debug_log_enabled=$enableval],
167         [debug_log_enabled='no'])
168 if test "x$debug_log_enabled" != "xno"; then
169         AC_DEFINE([ENABLE_DEBUG_LOGGING], 1, [Debug message logging])
172 # Restore gnu89 inline semantics on gcc 4.3 and newer
173 saved_cflags="$CFLAGS"
174 CFLAGS="$CFLAGS -fgnu89-inline"
175 AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]), inline_cflags="-fgnu89-inline", inline_cflags="")
176 CFLAGS="$saved_cflags"
178 AC_DEFINE([API_EXPORTED], [__attribute__((visibility("default")))], [Default visibility])
179 AM_CFLAGS="-std=gnu99 $inline_cflags -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow"
180 AC_SUBST(AM_CFLAGS)
182 AC_CONFIG_FILES([libfprint.pc] [Makefile] [libfprint/Makefile] [examples/Makefile] [doc/Makefile])
183 AC_OUTPUT