2 # Process this file with autoconf to produce a configure script.
5 AC_INIT([libisds], [0.9], [petr.pisar@atlas.cz])
8 AC_CONFIG_SRCDIR([src/isds.c])
9 AC_CONFIG_MACRO_DIR([m4])
10 AC_CONFIG_HEADERS([config.h])
12 # Checks for programs.
17 # For libtool < 1.9b (Debian lenny).
18 # AC_PROG_LIBTOOL has been obsoleted by LT_INIT
22 # Enable example clients
23 AC_ARG_ENABLE(example, [AS_HELP_STRING([--enable-example],
24 [Build library usage examples])])
25 AM_CONDITIONAL([BUILD_EXAMPLE], [test "$enable_example" = "yes"])
28 AC_ARG_ENABLE(test, [AS_HELP_STRING([--enable-test],
29 [Enable internal library tests])])
30 AM_CONDITIONAL([BUILD_TEST], [test "$enable_test" = "yes"])
33 AC_ARG_ENABLE(online-test, [AS_HELP_STRING([--enable-online-test],
34 [Enable on-line internal library tests])])
36 AM_GNU_GETTEXT_VERSION([0.18.2])
37 AM_GNU_GETTEXT([external])
40 AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug],
41 [Compile in debugging mode])])
42 AS_IF([test "$enable_debug" = "yes"],
44 dnl AC_SUBST(DEBUG_CFLAGS)
45 AC_DEFINE([ENABLE_DEBUG], [1],
46 [Define if you want include debugging code])
49 AC_CHECK_DECL([_WIN32])
50 AM_CONDITIONAL([WIN32], [test "$ac_cv_have_decl__WIN32" = "yes"])
52 # Checks for libraries.
53 #TODO: Verify minimal version. libxml2-2.6.26 is just a guess.
54 AM_PATH_XML2([2.6.26])
57 LIBCURL_CHECK_CONFIG()
58 AS_IF([test -z "$LIBCURL"],
59 AC_MSG_WARN([libcurl disabled or not found. Network features will be
62 cppflags_orig="$CPPFLAGS"
63 CPPFLAGS="${CPPFLAGS} ${LIBCURL_CPPFLAGS}"
64 AC_CHECK_DECLS([CURLOPT_TIMEOUT_MS], [],
65 AC_MSG_WARN([Your libcurl does not support subsecond timeout resolution.
66 Consider upgrade to 7.16.2 version.]),
67 [[#include <curl/curl.h>]])
68 AC_CHECK_DECLS([CURLOPT_USERNAME], [],
69 AC_MSG_WARN([Your libcurl does not support separate username and password.
70 Your ISDS username could not contain colon.
71 Consider upgrade to 7.19.1 version.]),
72 [[#include <curl/curl.h>]])
73 AC_CHECK_DECLS([CURLOPT_SSLCERTTYPE], [],
74 AC_MSG_WARN([Your libcurl does not support client certificate format
75 declaration (PEM vs. DER).
76 Consider upgrade to 7.9.3 version.]),
77 [[#include <curl/curl.h>]])
78 AC_CHECK_DECLS([CURLOPT_CRLFILE], [],
79 AC_MSG_WARN([Your libcurl does not support certificate revocation list
81 Consider upgrade to 7.19.0 version.]),
82 [[#include <curl/curl.h>]])
83 AC_CHECK_DECLS([CURLINFO_REDIRECT_URL], [],
84 AC_MSG_ERROR([Your libcurl does not support getting redirected URL.
85 You must upgrade to 7.18.2 version.]),
86 [[#include <curl/curl.h>]])
87 AC_CHECK_DECLS([CURLOPT_KEYPASSWD], [], [], [[#include <curl/curl.h>]])
88 AC_CHECK_DECLS([CURLOPT_SSLKEYPASSWD], [], [], [[#include <curl/curl.h>]])
89 CPPFLAGS="$cppflags_orig"
91 AM_CONDITIONAL([BUILD_CURL], [test -n "$LIBCURL"])
93 dnl libcurl < 7.28.0 suffers from re-authorization bug, unfortunally there is
94 dnl no way how to re-check libcurl version. Thus we use explicit switch.
95 AC_ARG_ENABLE(curlreauthorizationbug,
96 [AS_HELP_STRING([--enable-curlreauthorizationbug],
97 [Compile in work-around for re-authorization bug in
98 curl < 7.28.0. Fixed by libcurl commit
99 ce8311c7e49eca93c136b58efa6763853541ec97.])])
100 AS_IF([test "$enable_curlreauthorizationbug" = "yes"],
101 AC_DEFINE([HAVE_CURL_REAUTHORIZATION_BUG], [1],
102 [Define if you want work-around re-authorization bug in libcurl])
105 dnl On-line tests requires libcurl
106 AM_CONDITIONAL([BUILD_ONLINE_TEST],
107 [test -n "$LIBCURL" -a "$enable_test" = "yes" \
108 -a "$enable_online_test" = "yes"])
110 dnl Simulated tests require gnutls
111 PKG_PROG_PKG_CONFIG()
112 AS_IF([test "$enable_test" = "yes"], [
113 PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.12.0])
114 AC_SUBST(LIBGNUTLS_CFLAGS)
115 AC_SUBST(LIBGNUTLS_LIBS)
118 AC_ARG_ENABLE([openssl-backend],
119 AS_HELP_STRING([--enable-openssl-backend], [Enable OpenSSL as cryptographic back-end.]))
120 AS_IF([test "x${enable_openssl_backend}" = "xyes"], [
121 dnl Use OpenSSL cryptographic back-end.
123 AC_DEFINE([USE_OPENSSL_BACKEND], [1], [Define if you want to use OpenSSL as cryptographic back-end.])
124 AC_SEARCH_LIBS([CMS_get0_content], [crypto], [], [AC_MSG_ERROR([OpenSSL librypto not found.])])
126 dnl Use default cryptographic back-end.
128 #TODO: Determine minimal version
129 AM_PATH_LIBGCRYPT([1:1.4.0])
131 # GPGME is compiled with large file support by default. We need to follow not
134 #TODO: Determine minimal version
137 AM_CONDITIONAL([USE_OPENSSL_BACKEND], [test "x${enable_openssl_backend}" = "xyes"])
140 AC_CHECK_LIB([expat], [XML_ExpatVersionInfo],
142 AC_SUBST(EXPAT_LIBS))
143 # Verify minimal version. See src/phys.c: init_expat()
147 expat_min_version="${expat_min_major}.${expat_min_minor}.${expat_min_micro}"
148 AC_MSG_CHECKING([for expat library version >= ${expat_min_version}])
151 [[#define MIN_MAJOR ${expat_min_major}
152 #define MIN_MINOR ${expat_min_minor}
153 #define MIN_MICRO ${expat_min_micro}
154 #include <expat.h>]],
155 [[#if (XML_MAJOR_VERSION < MIN_MAJOR) || \
156 (XML_MAJOR_VERSION == MIN_MAJOR && XML_MINOR_VERSION < MIN_MINOR) || \
157 (XML_MAJOR_VERSION == MIN_MAJOR && XML_MINOR_VERSION == MIN_MINOR && \
158 XML_MICRO_VERSION < MIN_MICRO)
159 #error "Expat library is too old"
161 AC_MSG_RESULT([yes]),
162 AC_MSG_FAILURE([Upgrade your expat to ${expat_min_version}])
165 # Do not consider compiler warnings as errors
166 # This harms libxml configure test
167 AC_ARG_ENABLE(fatalwarnings, [AS_HELP_STRING([--disable-fatalwarnings],
168 [Do not consider compiler warnings as errors])])
169 AS_IF([test "$enable_fatalwarnings" = "no"], , CFLAGS="${CFLAGS} -Werror")
172 # Checks for header files.
173 AC_CHECK_HEADERS([fcntl.h locale.h stdint.h stdlib.h string.h unistd.h])
175 # Checks for typedefs, structures, and compiler characteristics.
180 # Checks for library functions.
184 AC_CHECK_FUNCS([localtime_r memset munmap setlocale strdup strerror])
187 CFLAGS="${CFLAGS} -std=c99 -Wall"
189 AC_CONFIG_FILES([Makefile src/Makefile po/Makefile.in client/Makefile
190 test/Makefile test/offline/Makefile test/simline/Makefile
191 test/online/Makefile libisds.pc])
193 #AC_CONFIG_SUBDIRS([src])