1dnl Process this file with autoconf to produce a configure script.
2AC_INIT([xmlsec1],[1.2.29],[http://www.aleksey.com/xmlsec])
3
4XMLSEC_PACKAGE=xmlsec1
5XMLSEC_VERSION_MAJOR=1
6XMLSEC_VERSION_MINOR=2
7XMLSEC_VERSION_SUBMINOR=29
8XMLSEC_VERSION="$XMLSEC_VERSION_MAJOR.$XMLSEC_VERSION_MINOR.$XMLSEC_VERSION_SUBMINOR"
9XMLSEC_VERSION_INFO=`echo $XMLSEC_VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'`
10XMLSEC_VERSION_SAFE=`echo $XMLSEC_VERSION | sed 's/\./_/g'`
11
12AC_PREREQ([2.52g])
13AC_LANG(C)
14AC_CANONICAL_HOST
15
16AC_SUBST(XMLSEC_VERSION)
17AC_SUBST(XMLSEC_PACKAGE)
18AC_SUBST(XMLSEC_VERSION_SAFE)
19AC_SUBST(XMLSEC_VERSION_MAJOR)
20AC_SUBST(XMLSEC_VERSION_MINOR)
21AC_SUBST(XMLSEC_VERSION_SUBMINOR)
22AC_SUBST(XMLSEC_VERSION_INFO)
23
24AC_CONFIG_MACRO_DIR(m4)
25AM_INIT_AUTOMAKE([1.7 tar-ustar subdir-objects -Wno-portability foreign])
26AC_CONFIG_HEADERS([config.h])
27AM_MAINTAINER_MODE
28
29# Support silent build rules, requires at least automake-1.11. Disable
30# by either passing --disable-silent-rules to configure or passing V=1
31# to make
32m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
33
34dnl
35dnl Check the environment
36dnl
37AC_PROG_CC
38AC_PROG_INSTALL
39AC_HEADER_STDC
40AC_PROG_LIBTOOL
41
42LT_INIT
43
44dnl
45dnl Find programs
46dnl
47if test "z$RM" = "z" ; then
48    AC_PATH_PROG(RM, rm, /bin/rm)
49fi
50AC_PATH_PROG(CP, cp, /bin/cp)
51AC_PATH_PROG(MV, mv, /bin/mv)
52AC_PATH_PROG(TAR, tar, /bin/tar)
53AC_PATH_PROG(PERL, perl)
54
55dnl Programs for man pahes and html docs
56AC_PATH_PROG(HELP2MAN, help2man)
57AC_PATH_PROG(XSLTPROC, xsltproc)
58AC_PATH_PROG(MAN2HTML, man2html)
59AC_PATH_PROG(GTKDOC_MKHTML, gtkdoc-mkhtml)
60AC_PATH_PROG(GTKDOC_MKDB,   gtkdoc-mkdb)
61AC_PATH_PROG(GTKDOC_SCAN,   gtkdoc-scan)
62AM_CONDITIONAL(HAS_HELP2MAN, [test x"$HELP2MAN" != x])
63AM_CONDITIONAL(HAS_MAN2HTML, [test x"$MAN2HTML" != x])
64AM_CONDITIONAL(HAS_XSLTPROC, [test x"$XSLTPROC" != x])
65
66dnl Checks for header files.
67AC_HEADER_DIRENT
68AC_HEADER_STDC
69AC_CHECK_HEADERS([stdio.h])
70AC_CHECK_HEADERS([stdlib.h])
71AC_CHECK_HEADERS([string.h])
72AC_CHECK_HEADERS([ctype.h])
73AC_CHECK_HEADERS([errno.h])
74AC_CHECK_HEADERS([ansidecl.h])
75AC_CHECK_HEADERS([time.h])
76AC_CHECK_FUNCS(strchr strrchr printf sprintf fprintf snprintf vfprintf vsprintf vsnprintf sscanf timegm)
77
78XMLSEC_DEFINES=""
79
80dnl ==========================================================================
81dnl Detect windows
82dnl ==========================================================================
83build_windows=no
84case "${host_os}" in
85    cygwin*|mingw*)
86        build_windows=yes
87        ;;
88esac
89
90dnl ==========================================================================
91dnl Specific setup for Aleksey's development environment:
92dnl	- with debug
93dnl - with pedantic compiler flags
94dnl - with docs build
95dnl	- with static binaries
96dnl	- without dynamic xmlsec-crypto loading
97dnl ==========================================================================
98AC_MSG_CHECKING(for development environment)
99AC_ARG_ENABLE([development], [AC_HELP_STRING([--enable-development], [enable development environment (no)])])
100if test "z$enable_development" = "zyes" ; then
101    enable_debugging="yes"
102    enable_pedantic="yes"
103    enable_static_linking="yes"
104    enable_manpages_build="no"
105    enable_docs_build="no"
106    enable_crypto_dl="no"
107    AC_MSG_RESULT([yes])
108else
109    AC_MSG_RESULT([disabled])
110fi
111
112dnl ==========================================================================
113dnl Do we want to build manpages?
114dnl ==========================================================================
115AC_MSG_CHECKING(for man pages build)
116AC_ARG_ENABLE([manpages_build], [AC_HELP_STRING([--enable-manpages-build], [man pages build (no)])])
117if test "z$enable_manpages_build" = "zyes" ; then
118    AM_CONDITIONAL(BUILD_MANPAGES, [test x"$HELP2MAN" != x])
119    AC_MSG_RESULT([yes])
120else
121    AM_CONDITIONAL(BUILD_MANPAGES, [test "x" = "y"])
122    AC_MSG_RESULT([disabled])
123fi
124
125dnl ==========================================================================
126dnl Do we want to build docs?
127dnl ==========================================================================
128AC_MSG_CHECKING(for docs build)
129AC_ARG_ENABLE([docs_build], [AC_HELP_STRING([--enable-docs-build], [docs build (no)])])
130if test "z$enable_docs_build" = "zyes" ; then
131    AM_CONDITIONAL(BUILD_MAN_DOCS, [test x"$PERL" != x && test x"$XSLTPROC" != x && test x"$MAN2HTML" != x])
132    AM_CONDITIONAL(BUILD_API_DOCS, [test x"$PERL" != x && test x"$XSLTPROC" != x && test x"$GTKDOC_MKHTML" != x && test x"$GTKDOC_MKDB" != x && test x"$GTKDOC_SCAN" != x])
133    AC_MSG_RESULT([yes])
134else
135    AM_CONDITIONAL(BUILD_MAN_DOCS, [test "x" = "y"])
136    AM_CONDITIONAL(BUILD_API_DOCS, [test "x" = "y"])
137    AC_MSG_RESULT([disabled])
138fi
139
140dnl ==========================================================================
141dnl Perform host specific configuration
142dnl ==========================================================================
143XMLSEC_EXTRA_LDFLAGS=
144XMLSEC_CRYPTO_EXTRA_LDFLAGS=
145dnl should separate extra LDFLAGS for xmlsec and crypto libs ?
146dnl should --enable-runtime-pseudo-reloc for mingw and cygwin ?
147if test -n "$shrext"; then
148  XMLSEC_SHLIBSFX="$shrext"
149else
150  dnl changed in libtool (between 1.5.2 and 1.5.14)
151  XMLSEC_SHLIBSFX="$shrext_cmds"
152fi
153case "${host}" in
154 *aix* )
155	CFLAGS="${CFLAGS} -D_ALL_SOURCE"
156	;;
157 *-*-mingw*)
158	dnl use libtool flags "-avoid-version" to create shared
159	dnl libraries without version suffix, i.e. libxmlsec1.dll
160	dnl instead libxmlsec1-NN.dll, where NN is a number.
161	XMLSEC_EXTRA_LDFLAGS="-no-undefined -avoid-version"
162	XMLSEC_CRYPTO_EXTRA_LDFLAGS="-no-undefined -avoid-version"
163	XMLSEC_SHLIBSFX=".dll.a"
164	;;
165 *-*-cygwin*)
166	XMLSEC_EXTRA_LDFLAGS="-no-undefined"
167	XMLSEC_CRYPTO_EXTRA_LDFLAGS="-no-undefined"
168	;;
169 *-*-darwin*)
170    XMLSEC_SHLIBSFX=".dylib"
171    ;;
172esac
173
174dnl ==========================================================================
175dnl Hack for autoconf version mismatch
176dnl ==========================================================================
177if test "z$shrext" = "z" ; then
178    AC_MSG_CHECKING(for shared library suffix)
179    module=no
180    eval shrext=$shrext_cmds
181    AC_MSG_RESULT($shrext)
182fi
183
184dnl ==========================================================================
185dnl Check for __FUNCTION__ or __func__
186dnl ==========================================================================
187AC_MSG_CHECKING(for __FUNCTION__ or __func__)
188AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
189	[[char *foo = __FUNCTION__;]])],
190	[ac_function_exists=yes],
191	[ac_function_exists=no])
192AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
193	[[char *foo = __func__;]])],
194	[ac_func_exists=yes],
195	[ac_func_exists=no])
196if test "z$ac_func_exists" = "zyes" ; then
197	AC_MSG_RESULT([__func__])
198	XMLSEC_DEFINES="$XMLSEC_DEFINES -D__XMLSEC_FUNCTION__=__func__"
199elif test "z$ac_function_exists" = "zyes" ; then
200    AC_MSG_RESULT([__FUNCTION__])
201    XMLSEC_DEFINES="$XMLSEC_DEFINES -D__XMLSEC_FUNCTION__=__FUNCTION__"
202else
203    AC_MSG_RESULT("no")
204fi
205
206dnl ==========================================================================
207dnl check do we have size_t and its size,
208dnl TODO: will need to replace this and the xmlSecSize define with
209dnl typedef on next ABI refresh
210dnl ==========================================================================
211AC_CHECK_SIZEOF(size_t)
212if test "$ac_cv_sizeof_size_t" -ne "4" ; then
213    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SIZE_T"
214fi
215
216dnl ==========================================================================
217dnl Check if pkg-config is enabled and installed
218dnl ==========================================================================
219PKGCONFIG_FOUND="no"
220AC_ARG_ENABLE([pkgconfig], [AC_HELP_STRING([--enable-pkgconfig], [enable pkgconfig for configuration (yes)])])
221if test "z$enable_pkgconfig" != "zno" ; then
222    PKG_PROG_PKG_CONFIG
223    PKGCONFIG_FOUND="yes"
224else
225    PKGCONFIG_FOUND="no"
226fi
227
228dnl ==========================================================================
229dnl Check if packages custom config scripts are enabled
230dnl ==========================================================================
231ENABLE_CUSTOM_CONFIGS="no"
232AC_ARG_ENABLE([custom-configs], [AC_HELP_STRING([--enable-custom-configs], [enable package-specific custom scripts for configuration (yes)])])
233if test "z$enable_custom_configs" != "zno" ; then
234    ENABLE_CUSTOM_CONFIGS="yes"
235else
236    ENABLE_CUSTOM_CONFIGS="no"
237fi
238
239dnl ==========================================================================
240dnl Check searching for typical packages folders is enabled
241dnl ==========================================================================
242ENABLE_FOLDERS_SEARCH="no"
243AC_ARG_ENABLE([folders-search], [AC_HELP_STRING([--enable-folders-search], [enable searching for package installation in typical folders (yes)])])
244if test "z$enable_folders_search" != "zno" ; then
245    ENABLE_FOLDERS_SEARCH="yes"
246else
247    ENABLE_FOLDERS_SEARCH="no"
248fi
249
250dnl ==========================================================================
251dnl Common installation locations
252dnl ==========================================================================
253COMMON_INCLUDE_DIR="/usr/include /usr/local/include"
254COMMON_LIB_DIR="/usr/lib /usr/lib64 /usr/local/lib"
255case $host in
256    i*86-*-linux-gnu)   COMMON_LIB_DIR="$COMMON_LIB_DIR /usr/lib/i386-linux-gnu" ;;
257    x86_64-*-linux-gnu) COMMON_LIB_DIR="$COMMON_LIB_DIR /usr/lib/x86_64-linux-gnu" ;;
258    *)                  COMMON_LIB_DIR="$COMMON_LIB_DIR /usr/lib/$host" ;;
259esac
260
261dnl Macro to help find the folder that contains marker file.
262dnl Usage: AX_FIND_FOLDER(RESULT_VARIABLE, MARKER_FILE, FOLDERS_LIST)
263AC_DEFUN([AX_FIND_FOLDER],[
264    for dir in $3 ; do
265        if test -f "$dir/$2" ; then
266            $1="$dir"
267            break;
268        fi
269    done
270])
271
272dnl ==========================================================================
273dnl find libxml
274dnl ==========================================================================
275LIBXML_MIN_VERSION="2.8.0"
276LIBXML_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/include/libxml2 /usr/local/include/libxml2 /usr/local/libxml2/include"
277LIBXML_LIB_DIR="$COMMON_LIB_DIR /usr/local/libxml2/lib"
278LIBXML_INCLUDE_MARKER="libxml/xmlversion.h"
279LIBXML_SHARED_LIB_MARKER="libxml2$shrext"
280LIBXML_STATIC_LIB_MARKER="libxml2.$libext"
281LIBXML_LIBS_LIST="-lxml2"
282LIBXML_CONFIG="xml2-config"
283
284LIBXML_INCLUDE_PATH=
285LIBXML_LIB_PATH=
286LIBXML_CONFIG_PATH=
287LIBXML_FOUND="no"
288AC_ARG_WITH([libxml], [AC_HELP_STRING([--with-libxml@<:@=PFX@:>@], [libxml2 location])])
289AC_ARG_WITH([libxml-src], [AC_HELP_STRING([--with-libxml-src@<:@=PFX@:>@], [libxml2 source tree location])])
290
291dnl Priority 0: LibXML2 is disabled: hard error.
292if test "z$with_libxml" = "zno" -o "z$with_libxml_src" = "zno"; then
293    LIBXML_FOUND="disabled"
294fi
295
296dnl Priority 1: User specifies the path to source code
297if test "z$LIBXML_FOUND" = "zno" -a "z$with_libxml_src" != "z" -a "z$with_libxml_src" != "zyes" ; then
298    AC_MSG_CHECKING(for libxml2 library source tree in "$with_libxml_src" folder)
299    if test [ -f "$with_libxml_src/include/$LIBXML_INCLUDE_MARKER" ] -a [ -f "$with_libxml_src/.libs/$LIBXML_SHARED_LIB_MARKER" -o -f "$with_libxml_src/.libs/$LIBXML_STATIC_LIB_MARKER"] ; then
300        LIBXML_INCLUDE_PATH="$with_libxml_src/include"
301        LIBXML_LIB_PATH="$with_libxml_src/.libs"
302        LIBXML_FOUND="yes"
303        AC_MSG_RESULT([yes])
304    else
305        AC_MSG_ERROR([not found: "$with_libxml_src/include/$LIBXML_INCLUDE_MARKER" or "$with_libxml_src/.libs/$LIBXML_SHARED_LIB_MARKER" or "$with_libxml_src/.libs/$LIBXML_STATIC_LIB_MARKER" files don't exist), typo?])
306    fi
307fi
308
309dnl Priority 2: User specifies path to installation
310if test "z$LIBXML_FOUND" = "zno" -a "z$with_libxml" != "z" -a "z$with_libxml" != "zyes" ; then
311    AC_MSG_CHECKING(for libxml2 library installation in "$with_libxml" folder)
312    if test "z$ENABLE_CUSTOM_CONFIGS" = "zyes" -a -f "$with_libxml/bin/$LIBXML_CONFIG" ; then
313        LIBXML_CONFIG_PATH="$with_libxml/bin/$LIBXML_CONFIG"
314        LIBXML_FOUND="yes"
315        AC_MSG_RESULT([yes])
316    elif test [ -f "$with_libxml/include/libxml2/$LIBXML_INCLUDE_MARKER" ] -a [ -f "$with_libxml/lib/$LIBXML_SHARED_LIB_MARKER" -o -f "$with_libxml/lib/$LIBXML_STATIC_LIB_MARKER" ] ; then
317        LIBXML_INCLUDE_PATH="$with_libxml/include/libxml2"
318        LIBXSLT_LIB_PATH="$with_libxml/lib"
319        LIBXML_FOUND="yes"
320        AC_MSG_RESULT([yes])
321    else
322        AC_MSG_ERROR([not found: "$with_libxml/bin/$LIBXML_CONFIG" tool, or "$with_libxml/include/libxml2/$LIBXML_INCLUDE_MARKER" and/or "$with_libxml/lib/$LIBXML_SHARED_LIB_MARKER" or "$with_libxml/lib/$LIBXML_STATIC_LIB_MARKER" files don't exist), typo?])
323    fi
324fi
325
326dnl Priority 3: User sets both CFLAGS and LIBS flags
327if test "z$LIBXML_FOUND" = "zno" -a "z$LIBXML_CFLAGS" != "z" -a "z$LIBXML_LIBS" != "z" ; then
328    LIBXML_FOUND="yes"
329fi
330
331dnl Priority 4: Guess with pkg_config
332if test "z$LIBXML_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
333    PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_MIN_VERSION,
334        [LIBXML_FOUND=yes],
335        [LIBXML_FOUND=no])
336fi
337
338dnl Priority 5: Guess the config tool location
339if test "z$LIBXML_FOUND" = "zno" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
340    AC_PATH_PROG(LIBXML_CONFIG_PATH, [$LIBXML_CONFIG], [], [$PATH])
341    if test "z$LIBXML_CONFIG_PATH" != "z" ; then
342        LIBXML_FOUND="yes"
343    fi
344fi
345
346dnl Priority 6: Guess using a list of folders.
347if test "z$LIBXML_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
348    AC_MSG_CHECKING(for libxml2 library installation in the typical folders)
349    if test "z$LIBXML_INCLUDE_PATH" = "z" ; then
350        AX_FIND_FOLDER(LIBXML_INCLUDE_PATH, $LIBXML_INCLUDE_MARKER, $LIBXML_INCLUDE_DIR)
351    fi
352    if test "z$LIBXML_LIB_PATH" = "z" ; then
353        AX_FIND_FOLDER(LIBXML_LIB_PATH, $LIBXML_SHARED_LIB_MARKER, $LIBXML_LIB_DIR)
354    fi
355    if test "z$LIBXML_LIB_PATH" = "z" ; then
356        AX_FIND_FOLDER(LIBXML_LIB_PATH, $LIBXML_STATIC_LIB_MARKER, $LIBXML_LIB_DIR)
357    fi
358    if test "z$LIBXML_INCLUDE_PATH" != "z" -a "z$LIBXML_LIB_PATH" != "z" ; then
359        LIBXML_FOUND="yes"
360        AC_MSG_RESULT([yes ("-I$LIBXML_INCLUDE_PATH -L$LIBXML_LIB_PATH")])
361    else
362        AC_MSG_RESULT([not found])
363    fi
364fi
365
366dnl Priority 7: Just try to compile/link and hope for the best
367if test "z$LIBXML_FOUND" = "zno" ; then
368    AC_MSG_CHECKING(for libxml2 library installation)
369    OLD_CPPFLAGS=$CPPFLAGS
370    CPPFLAGS="$CPPFLAGS $LIBXML_CFLAGS"
371    OLD_LIBS=$LIBS
372    LIBS="$LIBS $LIBXML_LIBS $LIBXML_LIBS_LIST"
373    AC_LINK_IFELSE([
374        AC_LANG_PROGRAM([[
375            #include <libxml/xmlversion.h>
376        ]],[[
377            int main () { xmlCheckVersion(0);; return(0); }
378        ]])
379    ],[
380        LIBXML_FOUND=yes
381        LIBXML_LIBS="$LIBXML_LIBS $LIBXML_LIBS_LIST"
382        AC_MSG_RESULT([yes])
383    ],[
384        LIBXML_FOUND=no
385        AC_MSG_RESULT([not found])
386    ])
387    CPPFLAGS=$OLD_CPPFLAGS
388    LIBS=$OLD_LIBS
389fi
390
391dnl Set CFLAGS/LIBS flags
392if test "z$LIBXML_FOUND" = "zyes" ; then
393    if test "z$LIBXML_CONFIG_PATH" != "z" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
394        dnl Get the values using config tool (overwrite CFLAGS/LIBS!)
395        if test "z$LIBXML_CFLAGS" = "z" ; then
396            LIBXML_CFLAGS="`$LIBXML_CONFIG_PATH --cflags`"
397        fi
398        if test "z$LIBXML_LIBS" = "z"; then
399            LIBXML_LIBS="`$LIBXML_CONFIG_PATH --libs`"
400        fi
401        LIBXML_CONFIG=$LIBXML_CONFIG_PATH
402        LIBXML_FOUND="yes"
403    else
404        dnl Set flags if INCLUDE_PATH or LIB_PATH are set (do NOT overwrite CFLAGS/LIBS!)
405        if test "z$LIBXML_INCLUDE_PATH" != "z" ; then
406            LIBXML_CFLAGS="$LIBXML_CFLAGS -I$LIBXML_INCLUDE_PATH"
407        fi
408        if test "z$LIBXML_LIB_PATH" != "z" ; then
409            if test "z$with_gnu_ld" = "zyes" ; then
410                LIBXML_LIBS="$LIBXML_LIBS -Wl,-rpath-link -Wl,$LIBXML_LIB_PATH"
411            fi
412            LIBXML_LIBS="$LIBXML_LIBS -L$LIBXML_LIB_PATH $LIBXML_LIBS_LIST"
413        fi
414    fi
415fi
416
417dnl Verify the version.
418AC_MSG_CHECKING(for libxml2 library >= $LIBXML_MIN_VERSION)
419if test "z$LIBXML_FOUND" = "zyes" ; then
420    OLD_CPPFLAGS=$CPPFLAGS
421    CPPFLAGS="$CPPFLAGS $LIBXML_CFLAGS"
422    minvers=`echo $LIBXML_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 100 + $2) * 100 + $3;}'`
423    AC_EGREP_CPP(greater-than-minvers, [
424        #include <libxml/xmlversion.h>
425        #if LIBXML_VERSION >= $minvers
426        greater-than-minvers
427        #endif
428    ],[
429        LIBXML_FOUND=yes
430    ],[
431        LIBXML_FOUND=no
432    ])
433    CPPFLAGS=$OLD_CPPFLAGS
434fi
435AC_MSG_RESULT([$LIBXML_FOUND])
436
437dnl LibXML2 is required so if we didn't find it then it is a fatal error.
438if test "z$LIBXML_FOUND" != "zyes" ; then
439    AC_MSG_ERROR([libxml2 library >= $LIBXML_MIN_VERSION is required for this version of $XMLSEC_PACKAGE])
440fi
441
442dnl Finally set variables
443AC_SUBST(LIBXML_CFLAGS)
444AC_SUBST(LIBXML_LIBS)
445AC_SUBST(LIBXML_CONFIG)
446AC_SUBST(LIBXML_MIN_VERSION)
447
448dnl ==========================================================================
449dnl find libxslt
450dnl ==========================================================================
451LIBXSLT_MIN_VERSION=1.0.20
452LIBXSLT_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/local/libxslt/include"
453LIBXSLT_LIB_DIR="$COMMON_LIB_DIR /usr/local/libxslt/lib"
454LIBXSLT_CONFIG="xslt-config"
455LIBXSLT_INCLUDE_MARKER="libxslt/xsltconfig.h"
456LIBXSLT_SHARED_LIB_MARKER="libxslt$shrext"
457LIBXSLT_STATIC_LIB_MARKER="libxslt.$libext"
458LIBXSLT_LIBS_LIST="-lxslt"
459
460XMLSEC_NO_LIBXSLT="1"
461LIBXSLT_INCLUDE_PATH=
462LIBXSLT_LIB_PATH=
463LIBXSLT_CONFIG_PATH=
464LIBXSLT_FOUND="no"
465AC_ARG_WITH([libxslt], [AC_HELP_STRING([--with-libxslt@<:@=PFX@:>@], [libxslt location])])
466AC_ARG_WITH([libxslt-src], [AC_HELP_STRING([--with-libxslt-src@<:@=PFX@:>@],[libxslt source tree location])])
467
468dnl Priority 0: Check if library is not needed
469if test "z$with_libxslt" = "zno" -o "z$with_libxslt_src" = "zno" ; then
470    LIBXSLT_FOUND="disabled"
471fi
472
473dnl Priority 1: User specifies the path to source code
474if test "z$LIBXSLT_FOUND" = "zno" -a "z$with_libxslt_src" != "z" -a "z$with_libxslt_src" != "zyes" ; then
475    AC_MSG_CHECKING(for libxslt library source tree in "$with_libxslt_src" folder)
476    if test [ -f "$with_libxslt_src/$LIBXSLT_INCLUDE_MARKER" ] -a [ -f "$with_libxslt_src/libxslt/.libs/$LIBXSLT_SHARED_LIB_MARKER" -o -f "$with_libxslt_src/libxslt/.libs/$LIBXSLT_STATIC_LIB_MARKER" ] ; then
477        LIBXSLT_INCLUDE_PATH="$with_libxslt_src"
478        LIBXSLT_LIB_PATH="$with_libxslt_src/libxslt/.libs"
479        LIBXSLT_FOUND="yes"
480        AC_MSG_RESULT([yes])
481    else
482        AC_MSG_ERROR([not found: "$with_libxslt_src/$LIBXSLT_INCLUDE_MARKER" and/or "$with_libxslt_src/libxslt/.libs/$LIBXSLT_SHARED_LIB_MARKER" or "$with_libxslt_src/libxslt/.libs/$LIBXSLT_STATIC_LIB_MARKER" files don't exist), typo?])
483    fi
484fi
485
486dnl Priority 2: User specifies path to installation
487if test "z$LIBXSLT_FOUND" = "zno" -a "z$with_libxslt" != "z" -a "z$with_libxslt" != "zyes" ; then
488    AC_MSG_CHECKING(for libxslt library installation in "$with_libxslt" folder)
489    if test "z$ENABLE_CUSTOM_CONFIGS" = "zyes" -a -f "$with_libxslt/bin/$LIBXSLT_CONFIG" ; then
490        LIBXSLT_CONFIG_PATH="$with_libxslt/bin/$LIBXSLT_CONFIG"
491        LIBXSLT_FOUND="yes"
492        AC_MSG_RESULT([yes])
493    elif test [ -f "$with_libxslt/include/$LIBXSLT_INCLUDE_MARKER" ] -a [ -f "$with_libxslt/lib/$LIBXSLT_SHARED_LIB_MARKER" -o -f "$with_libxslt/lib/$LIBXSLT_STATIC_LIB_MARKER" ] ; then
494        LIBXSLT_INCLUDE_PATH="$with_libxslt/include"
495        LIBXSLT_LIB_PATH="$with_libxslt/lib"
496        LIBXSLT_FOUND="yes"
497        AC_MSG_RESULT([yes])
498    else
499        AC_MSG_ERROR([not found: "$with_libxslt/bin/$LIBXSLT_CONFIG" tool, or "$with_libxslt/include/$LIBXSLT_INCLUDE_MARKER" and/or "$with_libxslt/lib/$LIBXSLT_SHARED_LIB_MARKER" or "$with_libxslt/lib/$LIBXSLT_STATIC_LIB_MARKER" files don't exist), typo?])
500    fi
501fi
502
503dnl Priority 3: User sets both CFLAGS and LIBS flags
504if test "z$LIBXSLT_FOUND" = "zno" -a  "z$LIBXSLT_CFLAGS" != "z" -a "z$LIBXSLT_LIBS" != "z" ; then
505    LIBXSLT_FOUND="yes"
506fi
507
508dnl Priority 4: Guess with pkg_config
509if test "z$LIBXSLT_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
510    PKG_CHECK_MODULES(LIBXSLT, libxslt >= $LIBXSLT_MIN_VERSION,
511        [LIBXSLT_FOUND=yes],
512        [LIBXSLT_FOUND=no])
513fi
514
515dnl Priority 5: Guess the config tool location
516if test "z$LIBXSLT_FOUND" = "zno" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
517    AC_PATH_PROG(LIBXSLT_CONFIG_PATH, [$LIBXSLT_CONFIG], [], [$PATH])
518    if test "z$LIBXSLT_CONFIG_PATH" != "z" ; then
519        LIBXSLT_FOUND="yes"
520    fi
521fi
522
523dnl Priority 6: Guess using a list of folders.
524if test "z$LIBXSLT_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
525    AC_MSG_CHECKING(for libxslt library installation in the typical folders)
526    if test "z$LIBXSLT_INCLUDE_PATH" = "z" ; then
527        AX_FIND_FOLDER(LIBXSLT_INCLUDE_PATH, $LIBXSLT_INCLUDE_MARKER, $LIBXSLT_INCLUDE_DIR)
528    fi
529    if test "z$LIBXSLT_LIB_PATH" = "z" ; then
530        AX_FIND_FOLDER(LIBXSLT_LIB_PATH, $LIBXSLT_SHARED_LIB_MARKER, $LIBXSLT_LIB_DIR)
531    fi
532    if test "z$LIBXSLT_LIB_PATH" = "z" ; then
533        AX_FIND_FOLDER(LIBXSLT_LIB_PATH, $LIBXSLT_STATIC_LIB_MARKER, $LIBXSLT_LIB_DIR)
534    fi
535    if test "z$LIBXSLT_INCLUDE_PATH" != "z" -a "z$LIBXSLT_LIB_PATH" != "z" ; then
536        LIBXSLT_FOUND="yes"
537        AC_MSG_RESULT([yes ("-I$LIBXSLT_INCLUDE_PATH -L$LIBXSLT_LIB_PATH")])
538    else
539        AC_MSG_RESULT([not found])
540    fi
541fi
542
543dnl Priority 7: Just try to compile/link and hope for the best
544if test "z$LIBXSLT_FOUND" = "zno" ; then
545    AC_MSG_CHECKING(for libxslt library installation)
546    OLD_CPPFLAGS=$CPPFLAGS
547    CPPFLAGS="$CPPFLAGS $LIBXML_CFLAGS $LIBXSLT_CFLAGS"
548    OLD_LIBS=$LIBS
549    LIBS="$LIBS $LIBXML_LIBS $LIBXSLT_LIBS $LIBXSLT_LIBS_LIST"
550    AC_LINK_IFELSE([
551        AC_LANG_PROGRAM([[
552            #include <libxslt/xslt.h>
553        ]],[[
554            int main () { xsltInit(); return(0); }
555        ]])
556    ],[
557        LIBXSLT_FOUND=yes
558        LIBXSLT_LIBS="$LIBXSLT_LIBS $LIBXSLT_LIBS_LIST"
559        AC_MSG_RESULT([yes])
560    ],[
561        LIBXSLT_FOUND=no
562        AC_MSG_RESULT([not found])
563    ])
564    CPPFLAGS=$OLD_CPPFLAGS
565    LIBS=$OLD_LIBS
566fi
567
568dnl Set CFLAGS/LIBS flags
569if test "z$LIBXSLT_FOUND" = "zyes" ; then
570    if test "z$LIBXSLT_CONFIG_PATH" != "z" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
571        dnl Get the values using config tool (overwrite CFLAGS/LIBS!)
572        if test "z$LIBXSLT_CFLAGS" = "z" ; then
573            LIBXSLT_CFLAGS="`$LIBXSLT_CONFIG_PATH --cflags`"
574        fi
575        if test "z$LIBXSLT_LIBS" = "z"; then
576            LIBXSLT_LIBS="`$LIBXSLT_CONFIG_PATH --libs`"
577        fi
578        LIBXSLT_CONFIG=$LIBXSLT_CONFIG_PATH
579        LIBXSLT_FOUND="yes"
580    else
581        dnl Set flags if INCLUDE_PATH or LIB_PATH are set (do NOT overwrite CFLAGS/LIBS!)
582        if test "z$LIBXSLT_INCLUDE_PATH" != "z" ; then
583            LIBXSLT_CFLAGS="$LIBXSLT_CFLAGS -I$LIBXSLT_INCLUDE_PATH"
584        fi
585        if test "z$LIBXSLT_LIB_PATH" != "z" ; then
586            if test "z$with_gnu_ld" = "zyes" ; then
587                LIBXSLT_LIBS="$LIBXSLT_LIBS -Wl,-rpath-link -Wl,$LIBXSLT_LIB_PATH"
588            fi
589            LIBXSLT_LIBS="$LIBXSLT_LIBS -L$LIBXSLT_LIB_PATH $LIBXSLT_LIBS_LIST"
590        fi
591    fi
592fi
593
594dnl Verify the version
595AC_MSG_CHECKING(for libxslt library >= $LIBXSLT_MIN_VERSION)
596if test "z$LIBXSLT_FOUND" = "zyes" ; then
597    OLD_CPPFLAGS=$CPPFLAGS
598    CPPFLAGS="$CPPFLAGS $LIBXSLT_CFLAGS"
599    minvers=`echo $LIBXSLT_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 100 + $2) * 100 + $3;}'`
600    AC_EGREP_CPP(greater-than-minvers, [
601        #include <libxslt/xsltconfig.h>
602        #if LIBXSLT_VERSION >= $minvers
603        greater-than-minvers
604        #endif
605    ],[
606        LIBXSLT_FOUND=yes
607    ],[
608        LIBXSLT_FOUND=no
609    ])
610    CPPFLAGS=$OLD_CPPFLAGS
611fi
612AC_MSG_RESULT([$LIBXSLT_FOUND])
613
614dnl Finally set variables
615if test "z$LIBXSLT_FOUND" = "zyes" ; then
616    XMLSEC_NO_LIBXSLT="0"
617    LIBXSLT_PC_FILE_COND="libxslt >= $LIBXSLT_MIN_VERSION"
618else
619    XMLSEC_NO_LIBXSLT="1"
620    LIBXSLT_PC_FILE_COND=""
621    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_XSLT=1"
622fi
623AC_SUBST(XMLSEC_NO_LIBXSLT)
624AC_SUBST(LIBXSLT_CFLAGS)
625AC_SUBST(LIBXSLT_LIBS)
626AC_SUBST(LIBXSLT_CONFIG)
627AC_SUBST(LIBXSLT_MIN_VERSION)
628AC_SUBST(LIBXSLT_PC_FILE_COND)
629
630dnl ==========================================================================
631dnl See if we can find a crypto library
632dnl ==========================================================================
633XMLSEC_CRYPTO_LIST=""
634XMLSEC_CRYPTO_DISABLED_LIST=""
635
636dnl ==========================================================================
637dnl OpenSSL
638dnl ==========================================================================
639OPENSSL_MIN_VERSION="1.0.0"
640OPENSSL_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/local/ssl/include"
641OPENSSL_LIB_DIR="$COMMON_LIB_DIR /usr/local/ssl/lib"
642OPENSSL_CRYPTO_LIB="$XMLSEC_PACKAGE-openssl"
643OPENSSL_INCLUDE_MARKER="openssl/opensslv.h"
644OPENSSL_LIB_SHARED_MARKER="libcrypto$shrext"
645OPENSSL_LIB_STATIC_MARKER="libcrypto.a"
646OPENSSL_LIBS_LIST="-lcrypto"
647case $host in
648    *-*-mingw*)   OPENSSL_EXTRA_LIBS=;;
649    *-*-osf5*)    OPENSSL_EXTRA_LIBS=;;
650    *-*-openbsd*) OPENSSL_EXTRA_LIBS=;;
651    *-*-netbsd*)  OPENSSL_EXTRA_LIBS=;;
652    *-*-freebsd*|*-*-dragonfly*) OPENSSL_EXTRA_LIBS=;;
653    *-*-darwin*) OPENSSL_EXTRA_LIBS=;;
654    #FIXME: check if lib "dl" is required
655    *)            OPENSSL_EXTRA_LIBS=-ldl;;
656esac
657
658XMLSEC_NO_OPENSSL="1"
659OPENSSL_VERSION=""
660OPENSSL_INCLUDE_PATH=
661OPENSSL_LIB_PATH=
662OPENSSL_FOUND=no
663AC_ARG_WITH([openssl], [AC_HELP_STRING([--with-openssl@<:@=PFX@:>@], [openssl location])])
664
665dnl Priority 0: Check if library is disabled
666if test "z$with_openssl" = "zno" ; then
667    OPENSSL_FOUND=disabled
668fi
669
670dnl Priority 1: User specifies the path to installation
671if test "z$OPENSSL_FOUND" = "zno" -a "z$with_openssl" != "z" -a "z$with_openssl" != "zyes" ; then
672    AC_MSG_CHECKING(for openssl library installation in "$with_openssl" folder)
673    if test -f "$with_openssl/include/$OPENSSL_INCLUDE_MARKER" -a -f "$with_openssl/lib/$OPENSSL_LIB_SHARED_MARKER" ; then
674        OPENSSL_INCLUDE_PATH="$with_openssl/include"
675        OPENSSL_LIB_PATH="$with_openssl/lib"
676        OPENSSL_FOUND="yes"
677        AC_MSG_RESULT([yes])
678    elif test -f "$with_openssl/include/$OPENSSL_INCLUDE_MARKER" -a -f "$with_openssl/lib/$OPENSSL_LIB_STATIC_MARKER" ; then
679        OPENSSL_INCLUDE_PATH="$with_openssl/include"
680        OPENSSL_LIB_PATH="$with_openssl/lib"
681        OPENSSL_FOUND="yes"
682        AC_MSG_RESULT([yes])
683    else
684        AC_MSG_ERROR([not found: "$with_openssl/include/$OPENSSL_INCLUDE_MARKER" or "$with_openssl/lib/$OPENSSL_LIB_SHARED_MARKER" or "$with_openssl/lib/$OPENSSL_LIB_STATIC_MARKER" files don't exist), typo?])
685    fi
686fi
687
688dnl Priority 2: User sets both CFLAGS and LIBS flags
689if test "z$OPENSSL_FOUND" = "zno" -a  "z$OPENSSL_CFLAGS" != "z" -a "z$OPENSSL_LIBS" != "z" ; then
690    OPENSSL_FOUND="yes"
691fi
692
693dnl Priority 3: Guess with pkg_config
694if test "z$OPENSSL_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
695    PKG_CHECK_MODULES(OPENSSL, openssl >= $OPENSSL_MIN_VERSION,
696        [OPENSSL_FOUND=yes],
697        [OPENSSL_FOUND=no])
698fi
699
700dnl Priority 4: Guess using a list of folders (do not overwrite CFLAGS/LIBS flags).
701if test "z$OPENSSL_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
702    AC_MSG_CHECKING(for openssl library installation in the typical folders)
703    if test "z$OPENSSL_INCLUDE_PATH" = "z" ; then
704        AX_FIND_FOLDER(OPENSSL_INCLUDE_PATH, $OPENSSL_INCLUDE_MARKER, $OPENSSL_INCLUDE_DIR)
705    fi
706    if test "z$OPENSSL_LIB_PATH" = "z" ; then
707        AX_FIND_FOLDER(OPENSSL_LIB_PATH, $OPENSSL_LIB_SHARED_MARKER, $OPENSSL_LIB_DIR)
708    fi
709    if test "z$OPENSSL_LIB_PATH" = "z" ; then
710        AX_FIND_FOLDER(OPENSSL_LIB_PATH, $OPENSSL_LIB_STATIC_MARKER, $OPENSSL_LIB_DIR)
711    fi
712    if test "z$OPENSSL_INCLUDE_PATH" != "z" -a "z$OPENSSL_LIB_PATH" != "z" ; then
713        OPENSSL_FOUND="yes"
714        AC_MSG_RESULT([yes ("-I$OPENSSL_INCLUDE_PATH -L$OPENSSL_LIB_PATH")])
715    else
716        AC_MSG_RESULT([not found])
717    fi
718fi
719
720dnl Priority 5: Just try to compile/link and hope for the best
721if test "z$OPENSSL_FOUND" = "zno" ; then
722    AC_MSG_CHECKING(for openssl library installation)
723    OLD_CPPFLAGS=$CPPFLAGS
724    CPPFLAGS="$CPPFLAGS $OPENSSL_CFLAGS"
725    OLD_LIBS=$LIBS
726    LIBS="$LIBS $OPENSSL_LIBS $OPENSSL_LIBS_LIST"
727    AC_LINK_IFELSE([
728        AC_LANG_PROGRAM([[
729            #include <openssl/opensslv.h>
730        ]],[[
731            int main () {
732                #if OPENSSL_VERSION_NUMBER < 0x10100000L
733                SSL_library_init();
734                #else
735                OPENSSL_init_ssl(0, NULL);
736                #endif
737                return(0);
738            }
739        ]])
740    ],[
741        OPENSSL_FOUND=yes
742        OPENSSL_LIBS="$OPENSSL_LIBS $OPENSSL_LIBS_LIST"
743        AC_MSG_RESULT([yes])
744    ],[
745        OPENSSL_FOUND=no
746        AC_MSG_RESULT([not found])
747    ])
748    CPPFLAGS=$OLD_CPPFLAGS
749    LIBS=$OLD_LIBS
750fi
751
752dnl Set flags if INCLUDE_PATH or LIB_PATH are set
753if test "z$OPENSSL_FOUND" = "zyes" -a "z$OPENSSL_INCLUDE_PATH" != "z" ; then
754    OPENSSL_CFLAGS="$OPENSSL_CFLAGS -I$OPENSSL_INCLUDE_PATH -I$OPENSSL_INCLUDE_PATH/openssl"
755fi
756if test "z$OPENSSL_FOUND" = "zyes" -a "z$OPENSSL_LIB_PATH" != "z" ; then
757    if test -f "$OPENSSL_LIB_PATH/$OPENSSL_LIB_SHARED_MARKER" ; then
758        if test "z$with_gnu_ld" = "zyes" ; then
759            OPENSSL_LIBS="$OPENSSL_LIBS -Wl,-rpath-link -Wl,$OPENSSL_LIB_PATH"
760        fi
761    fi
762    OPENSSL_LIBS="$OPENSSL_LIBS -L$OPENSSL_LIB_PATH $OPENSSL_LIBS_LIST $OPENSSL_EXTRA_LIBS"
763fi
764
765dnl Check the OpenSSL version; if you change this code then you probably want to
766dnl change include/xmlsec/openssl/crypto.h as well.
767AC_MSG_CHECKING(for openssl library >= $OPENSSL_MIN_VERSION)
768if test "z$OPENSSL_FOUND" = "zyes" ; then
769    OLD_CPPFLAGS=$CPPFLAGS
770    CPPFLAGS="$CPPFLAGS $OPENSSL_CFLAGS"
771    if test "z$OPENSSL_VERSION" = "z" ; then
772        AC_EGREP_CPP(greater-than-minvers, [
773            #include <openssl/opensslv.h>
774            #if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L
775            greater-than-minvers
776            #endif
777        ],[
778            OPENSSL_VERSION="1.0.0 (LibreSSL < 2.7)"
779        ],[
780            OPENSSL_VERSION=""
781        ])
782    fi
783
784    if test "z$OPENSSL_VERSION" = "z" ; then
785        AC_EGREP_CPP(greater-than-minvers, [
786            #include <openssl/opensslv.h>
787            #if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L
788            greater-than-minvers
789            #endif
790        ],[
791            OPENSSL_VERSION="1.1.0 (LibreSSL >= 2.7)"
792        ],[
793            OPENSSL_VERSION=""
794        ])
795    fi
796
797    if test "z$OPENSSL_VERSION" = "z" ; then
798        AC_EGREP_CPP(greater-than-minvers, [
799            #include <openssl/opensslv.h>
800            #include <openssl/crypto.h>
801            #if OPENSSL_VERSION_NUMBER >= 0x10100000L
802            #ifdef OPENSSL_IS_BORINGSSL
803            greater-than-minvers
804            #endif
805            #endif
806        ],[
807            OPENSSL_VERSION="1.1.0 (BoringSSL)"
808            enable_ripemd160=no
809            enable_dsa=no
810        ],[
811            OPENSSL_VERSION=""
812        ])
813    fi
814
815    if test "z$OPENSSL_VERSION" = "z" ; then
816        AC_EGREP_CPP(greater-than-minvers, [
817            #include <openssl/opensslv.h>
818            #if OPENSSL_VERSION_NUMBER >= 0x10100000L
819            greater-than-minvers
820            #endif
821        ],[
822            OPENSSL_VERSION="1.1.0"
823        ],[
824            OPENSSL_VERSION=""
825        ])
826    fi
827
828    if test "z$OPENSSL_VERSION" = "z" ; then
829        AC_EGREP_CPP(greater-than-minvers, [
830            #include <openssl/opensslv.h>
831            #if OPENSSL_VERSION_NUMBER >= 0x10000000L
832            greater-than-minvers
833            #endif
834        ],[
835            OPENSSL_VERSION="1.0.0"
836        ],[
837            OPENSSL_VERSION=""
838        ])
839    fi
840    CPPFLAGS=$OLD_CPPFLAGS
841
842    if test "z$OPENSSL_VERSION" != "z" ; then
843        OPENSSL_FOUND=yes
844    else
845        OPENSSL_FOUND=no
846    fi
847fi
848if test "z$OPENSSL_FOUND" = "zyes" ; then
849    AC_MSG_RESULT([yes (openssl version '$OPENSSL_VERSION')])
850else
851    AC_MSG_RESULT([$OPENSSL_FOUND])
852fi
853
854dnl Finally set all the flags
855if test "z$OPENSSL_FOUND" = "zyes" ; then
856    XMLSEC_NO_OPENSSL="0"
857    OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_CRYPTO_OPENSSL=1"
858    XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST openssl"
859else
860    XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST openssl"
861fi
862
863AM_CONDITIONAL(XMLSEC_NO_OPENSSL, test "z$XMLSEC_NO_OPENSSL" = "z1")
864AC_SUBST(XMLSEC_NO_OPENSSL)
865AC_SUBST(OPENSSL_CFLAGS)
866AC_SUBST(OPENSSL_LIBS)
867AC_SUBST(OPENSSL_CRYPTO_LIB)
868AC_SUBST(OPENSSL_MIN_VERSION)
869
870dnl ==========================================================================
871dnl See if we can find NSS and NSPR
872dnl Allow the use of:
873dnl   1.  Mozilla style distribution where all mozilla components (NSS, NSPR
874dnl       are just 2 of over 100 components) are under one directory.
875dnl       options: [--with-mozilla-ver=<VERSION>]
876dnl
877dnl       Using the version number, various directories are searched
878dnl       for NSS & NSPR
879dnl
880dnl                      AND / OR
881dnl
882dnl   2.  separate NSS & NSPR distributions
883dnl       options: [--with-nss=<PFX>] [--with-nspr=<PFX>]
884dnl
885dnl   2 overrides 1
886dnl
887dnl ==========================================================================
888NSS_MIN_VERSION="3.11.1"
889NSPR_MIN_VERSION="4.4.1"
890SEAMONKEY_MIN_VERSION="1.0"
891MOZILLA_MIN_VERSION="1.4"
892NSS_CRYPTO_LIB="$XMLSEC_PACKAGE-nss"
893NSPR_PACKAGE=mozilla-nspr
894NSS_PACKAGE=mozilla-nss
895NSPR_INCLUDE_MARKER="nspr/nspr.h"
896NSPR_LIB_MARKER="libnspr4$shrext"
897NSPR_LIBS_LIST="-lnspr4 -lplds4 -lplc4"
898NSS_INCLUDE_MARKER="nss/nss.h"
899NSS_LIB_MARKER="libnss3$shrext"
900NSS_LIBS_LIST="-lnss3 -lsmime3"
901
902XMLSEC_NO_NSS="1"
903NSPR_INCLUDE_PATH=
904NSPR_LIB_PATH=
905NSS_INCLUDE_PATH=
906NSS_LIB_PATH=
907NSS_FOUND="no"
908NSPR_FOUND="no"
909AC_ARG_WITH([nss], [AC_HELP_STRING([--with-nss@<:@=PFX@:>@], [nss location])])
910AC_ARG_WITH([nspr], [AC_HELP_STRING([--with-nspr@<:@=PFX@:>@], [nspr location (needed for NSS)])])
911AC_ARG_WITH([seamonkey_ver], [AC_HELP_STRING([--with-seamonkey-ver@<:@=VER@:>@], [mozilla version (alt to --with-nss, --with-nspr)])])
912AC_ARG_WITH([mozilla_ver], [AC_HELP_STRING([--with-mozilla-ver@<:@=VER@:>@], [mozilla version (alt to --with-nss, --with-nspr)])])
913
914dnl Priority 0: Check if library is disabled
915if test "z$with_nss" = "zno" -o "z$with_nspr" = "zno" ; then
916    NSS_FOUND="disabled"
917    NSPR_FOUND="disabled"
918fi
919
920dnl Priority 1: User specifies the path to installation
921if test "z$NSPR_FOUND" = "zno" -a "z$with_nspr" != "z" -a "z$with_nspr" != "zyes" ; then
922    AC_MSG_CHECKING(for nspr library installation in "$with_nspr" folder)
923    if test -f "$with_nspr/include/$NSPR_INCLUDE_MARKER" -a -f "$with_nspr/lib/$NSPR_LIB_MARKER" ; then
924        NSPR_INCLUDE_PATH="$with_nspr/include"
925        NSPR_LIB_PATH="$with_nspr/lib"
926        NSPR_FOUND="yes"
927        AC_MSG_RESULT([yes])
928    else
929        AC_MSG_ERROR([not found: "$with_nspr/include/$NSPR_INCLUDE_MARKER" and/or "$with_nspr/lib/$NSPR_LIB_MARKER" files don't exist), typo?])
930    fi
931fi
932if test "z$NSS_FOUND" = "zno" -a "z$with_nss" != "z" -a "z$with_nss" != "zyes" ; then
933    AC_MSG_CHECKING(for nss library installation in "$with_nss" folder)
934    if test -f "$with_nss/include/$NSS_INCLUDE_MARKER" -a -f "$with_nss/lib/$NSS_LIB_MARKER" ; then
935        NSS_INCLUDE_PATH="$with_nss/include"
936        NSS_LIB_PATH="$with_nss/lib"
937        NSS_FOUND="yes"
938        AC_MSG_RESULT([yes])
939    else
940        AC_MSG_ERROR([not found: "$with_nss/include/$NSS_INCLUDE_MARKER" and/or "$with_nss/lib/$NSS_LIB_MARKER" files don't exist), typo?])
941    fi
942fi
943
944dnl Priority 2: User sets both CFLAGS and LIBS flags
945if test "z$NSPR_FOUND" = "zno" -a  "z$NSPR_CFLAGS" != "z" -a "z$NSPR_LIBS" != "z" ; then
946    NSPR_FOUND="yes"
947fi
948if test "z$NSS_FOUND" = "zno" -a  "z$NSS_CFLAGS" != "z" -a "z$NSS_LIBS" != "z" ; then
949    NSS_FOUND="yes"
950fi
951
952dnl Priority 3: Guess with pkg_config
953dnl
954dnl Mozilla's NSS/NSPR are distributed under different names in different distribution,
955dnl we are going to try all options:
956dnl     seamonkey-nspr and seamonkey-nss
957dnl     mozilla-nspr and mozilla-nss
958dnl     xulrunner-nspr and xulrunner-nss
959dnl     nspr and nss
960if test "z$NSPR_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" -a "z$with_mozilla_ver" = "z" -a "z$with_seamonkey_ver" ; then
961    if test "z$NSPR_FOUND" = "zno" ; then
962        PKG_CHECK_MODULES(NSPR, seamonkey-nspr >= $NSPR_MIN_VERSION,
963           [NSPR_FOUND=yes NSPR_PACKAGE=seamonkey-nspr],
964           [NSPR_FOUND=no])
965    fi
966    if test "z$NSPR_FOUND" = "zno" ; then
967        PKG_CHECK_MODULES(NSPR, mozilla-nspr >= $MOZILLA_MIN_VERSION,
968           [NSPR_FOUND=yes NSPR_PACKAGE=mozilla-nspr],
969           [NSPR_FOUND=no])
970    fi
971    if test "z$NSPR_FOUND" = "zno" ; then
972        PKG_CHECK_MODULES(NSPR, xulrunner-nspr >= $NSPR_MIN_VERSION,
973           [NSPR_FOUND=yes NSPR_PACKAGE=xulrunner-nspr],
974           [NSPR_FOUND=no])
975    fi
976    if test "z$NSPR_FOUND" = "zno" ; then
977        PKG_CHECK_MODULES(NSPR, nspr >= $NSPR_MIN_VERSION,
978           [NSPR_FOUND=yes NSPR_PACKAGE=nspr],
979           [NSPR_FOUND=no])
980    fi
981fi
982if test "z$NSS_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" -a "z$with_mozilla_ver" = "z" -a "z$with_seamonkey_ver" ; then
983    if test "z$NSS_FOUND" = "zno" ; then
984        PKG_CHECK_MODULES(NSS, seamonkey-nss >= $SEAMONKEY_MIN_VERSION,
985    	   [NSS_FOUND=yes NSS_PACKAGE=seamonkey-nss],
986	       [NSS_FOUND=no])
987    fi
988    if test "z$NSS_FOUND" = "zno" ; then
989        PKG_CHECK_MODULES(NSS, mozilla-nss >= $MOZILLA_MIN_VERSION,
990    	   [NSS_FOUND=yes NSS_PACKAGE=mozilla-nss],
991	       [NSS_FOUND=no])
992    fi
993    if test "z$NSS_FOUND" = "zno" ; then
994        PKG_CHECK_MODULES(NSS, xulrunner-nss >= $NSS_MIN_VERSION,
995    	   [NSS_FOUND=yes NSS_PACKAGE=xulrunner-nss],
996	       [NSS_FOUND=no])
997    fi
998    if test "z$NSS_FOUND" = "zno" ; then
999        PKG_CHECK_MODULES(NSS, nss >= $NSS_MIN_VERSION,
1000    	   [NSS_FOUND=yes NSS_PACKAGE=nss],
1001	       [NSS_FOUND=no])
1002    fi
1003fi
1004
1005dnl Priority 4: Guess using a list of folders using mozilla/seamonkey version hints (if any)
1006if test "z$with_seamonkey_ver" != "z" ; then
1007    NSS_MOZILLA_NAME=seamonkey-$with_seamonkey_ver
1008elif test "z$with_mozilla_ver" != "z" ; then
1009    NSS_MOZILLA_NAME=mozilla-$with_mozilla_ver
1010else
1011    NSS_MOZILLA_NAME=mozilla-$MOZILLA_MIN_VERSION
1012fi
1013NSS_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/include/mozilla /usr/local/include/mozilla /usr/include/$NSS_MOZILLA_NAME /usr/local/include/$NSS_MOZILLA_NAME"
1014NSS_LIB_DIR="$COMMON_LIB_DIR /usr/lib/$NSS_MOZILLA_NAME /usr/local/lib/$NSS_MOZILLA_NAME"
1015if test "z$NSPR_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
1016    AC_MSG_CHECKING(for nspr library installation in the typical folders)
1017    if test "z$NSPR_INCLUDE_PATH" = "z" ; then
1018        AX_FIND_FOLDER(NSPR_INCLUDE_PATH, $NSPR_INCLUDE_MARKER, $NSS_INCLUDE_DIR)
1019    fi
1020    if test "z$NSPR_LIB_PATH" = "z" ; then
1021        AX_FIND_FOLDER(NSPR_LIB_PATH, $NSPR_LIB_MARKER, $NSS_LIB_DIR)
1022    fi
1023    if test "z$NSPR_INCLUDE_PATH" != "z" -a "z$NSPR_LIB_PATH" != "z" ; then
1024        NSPR_FOUND=yes
1025        AC_MSG_RESULT([yes ("-I$NSPR_INCLUDE_PATH -L$NSPR_LIB_PATH")])
1026    else
1027        AC_MSG_RESULT([not found])
1028    fi
1029fi
1030if test "z$NSS_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
1031    AC_MSG_CHECKING(for nss library installation in the typical folders)
1032    if test "z$NSS_INCLUDE_PATH" = "z" ; then
1033        AX_FIND_FOLDER(NSS_INCLUDE_PATH, $NSS_INCLUDE_MARKER, $NSS_INCLUDE_DIR)
1034    fi
1035    if test "z$NSS_LIB_PATH" = "z" ; then
1036        AX_FIND_FOLDER(NSS_LIB_PATH, $NSS_LIB_MARKER, $NSS_LIB_DIR)
1037    fi
1038    if test "z$NSS_INCLUDE_PATH" != "z" -a "z$NSS_LIB_PATH" != "z" ; then
1039        NSS_FOUND=yes
1040        AC_MSG_RESULT([yes ("-I$NSS_INCLUDE_PATH -L$NSS_LIB_PATH")])
1041    else
1042        AC_MSG_RESULT([not found])
1043    fi
1044fi
1045
1046dnl Priority 5 (NSPR): Just try to compile/link and hope for the best
1047if test "z$NSPR_FOUND" = "zno" ; then
1048    AC_MSG_CHECKING(for nspr library installation)
1049    OLD_CPPFLAGS=$CPPFLAGS
1050    CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS"
1051    OLD_LIBS=$LIBS
1052    LIBS="$LIBS $NSPR_LIBS $NSPR_LIBS_LIST"
1053    AC_LINK_IFELSE([
1054        AC_LANG_PROGRAM([[
1055            #include <stdio.h>
1056            #include <nspr/nspr.h>
1057        ]],[[
1058            int main () { printf("v=%s\n", PR_GetVersion()); return(0); }
1059        ]])
1060    ],[
1061        NSPR_FOUND=yes
1062        NSPR_LIBS="$NSPR_LIBS $NSPR_LIBS_LIST"
1063        AC_MSG_RESULT([yes])
1064    ],[
1065        NSPR_FOUND=no
1066        AC_MSG_RESULT([not found])
1067    ])
1068    CPPFLAGS=$OLD_CPPFLAGS
1069    LIBS=$OLD_LIBS
1070fi
1071
1072dnl NSRP: Set flags if INCLUDE_PATH or LIB_PATH are set (need to do it before we try to find NSS)
1073if test "z$NSPR_FOUND" = "zyes" -a "z$NSPR_INCLUDE_PATH" != "z" ; then
1074    NSPR_CFLAGS="$NSPR_CFLAGS -I$NSPR_INCLUDE_PATH -I$NSPR_INCLUDE_PATH/nspr"
1075fi
1076if test "z$NSPR_FOUND" = "zyes" -a "z$NSPR_LIB_PATH" != "z" ; then
1077    if test "z$with_gnu_ld" = "zyes" ; then
1078        NSPR_LIBS="$NSPR_LIBS -Wl,-rpath-link -Wl,$NSPR_LIB_PATH"
1079    fi
1080    NSPR_LIBS="$NSPR_LIBS -L$NSPR_LIB_PATH/lib $NSPR_LIBS_LIST"
1081fi
1082
1083dnl Priority 5 (NSS): Just try to compile/link and hope for the best
1084if test "z$NSS_FOUND" = "zno" ; then
1085    AC_MSG_CHECKING(for nss library installation)
1086    OLD_CPPFLAGS=$CPPFLAGS
1087    CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS $NSS_CFLAGS"
1088    OLD_LIBS=$LIBS
1089    LIBS="$LIBS $NSS_LIBS $NSPR_LIBS $NSS_LIBS_LIST"
1090    AC_LINK_IFELSE([
1091        AC_LANG_PROGRAM([[
1092            #include <stdio.h>
1093            #include <nss/nss.h>
1094        ]],[[
1095            int main () { printf("v=%s\n", NSS_GetVersion()); return(0); }
1096        ]])
1097    ],[
1098        NSS_FOUND=yes
1099        NSS_LIBS="$NSS_LIBS $NSS_LIBS_LIST"
1100        AC_MSG_RESULT([yes])
1101    ],[
1102        NSS_FOUND=no
1103        AC_MSG_RESULT([not found])
1104    ])
1105    CPPFLAGS=$OLD_CPPFLAGS
1106    LIBS=$OLD_LIBS
1107fi
1108
1109dnl NSS: Set flags if INCLUDE_PATH or LIB_PATH are set
1110if test "z$NSS_FOUND" = "zyes" -a "z$NSS_INCLUDE_PATH" != "z" ; then
1111    NSS_CFLAGS="$NSS_CFLAGS -I$NSS_INCLUDE_PATH -I$NSS_INCLUDE_PATH/nss"
1112fi
1113if test "z$NSS_FOUND" = "zyes" -a "z$NSS_LIB_PATH" != "z" ; then
1114    if test "z$with_gnu_ld" = "zyes" ; then
1115        NSS_LIBS="$NSS_LIBS -Wl,-rpath-link -Wl,$NSS_LIB_PATH"
1116    fi
1117    NSS_LIBS="$NSS_LIBS -L$NSS_LIB_PATH/lib $NSS_LIBS_LIST"
1118fi
1119
1120dnl Check NSS and NSPR versions
1121AC_MSG_CHECKING(for nspr library >= $NSPR_MIN_VERSION)
1122if test "z$NSPR_FOUND" = "zyes" ; then
1123    minvers=`echo $NSPR_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 100 + $2) * 100 + $3;}'`
1124    OLD_CPPFLAGS=$CPPFLAGS
1125    CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS"
1126    AC_EGREP_CPP(greater-than-minvers, [
1127        #include <prinit.h>
1128        #if ((PR_VMAJOR * 100 + PR_VMINOR) * 100 + PR_VPATCH) >= $minvers
1129        greater-than-minvers
1130        #endif
1131    ],[
1132        NSPR_FOUND=yes
1133    ],[
1134        NSPR_FOUND=no
1135    ])
1136    CPPFLAGS="$OLD_CPPFLAGS"
1137fi
1138AC_MSG_RESULT([$NSPR_FOUND])
1139
1140AC_MSG_CHECKING(for nss library >= $NSS_MIN_VERSION)
1141if test "z$NSS_FOUND" = "zyes" ; then
1142    minvers=`echo $NSS_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 100 + $2) * 100 + $3;}'`
1143    OLD_CPPFLAGS=$CPPFLAGS
1144    CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS $NSS_CFLAGS"
1145    AC_EGREP_CPP(greater-than-minvers, [
1146        #include <nss.h>
1147        #if ((NSS_VMAJOR * 100 + NSS_VMINOR) * 100 + NSS_VPATCH) >= $minvers
1148        greater-than-minvers
1149        #endif
1150    ],[
1151        NSS_FOUND=yes
1152    ],[
1153        NSS_FOUND=no
1154    ])
1155    CPPFLAGS="$OLD_CPPFLAGS"
1156fi
1157AC_MSG_RESULT([$NSS_FOUND])
1158
1159dnl Check that we have found both NSS and NSPR
1160if test "z$NSPR_FOUND" = "zyes" -a "z$NSS_FOUND" = "zyes" ; then
1161    NSS_CFLAGS="$NSS_CFLAGS $NSPR_CFLAGS"
1162    NSS_LIBS="$NSS_LIBS $NSPR_LIBS"
1163elif test "z$NSPR_FOUND" != "zyes" -a "z$NSS_FOUND" = "zyes" ; then
1164    NSS_FOUND="no"
1165    AC_MSG_RESULT([NSPR library is required for NSS, ignoring NSS library we have found])
1166fi
1167
1168dnl Finally set all the flags
1169if test "z$NSS_FOUND" = "zyes" ; then
1170    XMLSEC_NO_NSS="0"
1171    NSS_CFLAGS="$NSS_CFLAGS -DXMLSEC_CRYPTO_NSS=1"
1172    XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST nss"
1173else
1174    XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST nss"
1175fi
1176
1177AM_CONDITIONAL(XMLSEC_NO_NSS, test "z$XMLSEC_NO_NSS" = "z1")
1178AC_SUBST(XMLSEC_NO_NSS)
1179AC_SUBST(NSPR_PACKAGE)
1180AC_SUBST(NSS_PACKAGE)
1181AC_SUBST(NSS_CFLAGS)
1182AC_SUBST(NSS_LIBS)
1183AC_SUBST(NSS_CRYPTO_LIB)
1184AC_SUBST(NSS_MIN_VERSION)
1185AC_SUBST(NSPR_MIN_VERSION)
1186AC_SUBST(MOZILLA_MIN_VERSION)
1187
1188dnl ==========================================================================
1189dnl See if we can find GCrypt
1190dnl ==========================================================================
1191GCRYPT_MIN_VERSION="1.4.0"
1192GCRYPT_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/local/gcrypt/include"
1193GCRYPT_LIB_DIR="$COMMON_LIB_DIR /usr/local/gcrypt/lib"
1194GCRYPT_CONFIG="libgcrypt-config"
1195GCRYPT_INCLUDE_MARKER="gcrypt.h"
1196GCRYPT_LIB_MARKER="libgcrypt$shrext"
1197GCRYPT_CRYPTO_LIB="$XMLSEC_PACKAGE-gcrypt"
1198GCRYPT_LIBS_LIST="-lgcrypt"
1199
1200XMLSEC_NO_GCRYPT="1"
1201GCRYPT_VERSION=
1202GCRYPT_INCLUDE_PATH=
1203GCRYPT_LIB_PATH=
1204GCRYPT_FOUND="no"
1205AC_ARG_WITH([gcrypt], [AC_HELP_STRING([--with-gcrypt@<:@=PFX@:>@], [gcrypt location])])
1206
1207dnl Priority 0: Check if library is not needed
1208if test "z$with_gcrypt" = "zno" ; then
1209    GCRYPT_FOUND="disabled"
1210fi
1211
1212dnl Priority 1: User specifies the path to installation
1213if test "z$GCRYPT_FOUND" = "zno" -a "z$with_gcrypt" != "z" -a "z$with_gcrypt" != "zyes" ; then
1214    AC_MSG_CHECKING(for libgcrypt library installation in "$with_gcrypt" folder)
1215    if test "z$ENABLE_CUSTOM_CONFIGS" = "zyes" -a -f "$with_gcrypt/bin/$GCRYPT_CONFIG" ; then
1216        GCRYPT_CONFIG_PATH="$with_gcrypt/bin/$GCRYPT_CONFIG"
1217        GCRYPT_FOUND="yes"
1218        AC_MSG_RESULT([yes])
1219    elif test -f "$with_gcrypt/include/$GCRYPT_INCLUDE_MARKER" -a -f "$with_gcrypt/lib/$GCRYPT_LIB_MARKER" ; then
1220        GCRYPT_INCLUDE_PATH="$with_gcrypt/include"
1221        GCRYPT_LIB_PATH="$with_gcrypt/lib"
1222        GCRYPT_FOUND="yes"
1223        AC_MSG_RESULT([yes])
1224    else
1225        AC_MSG_ERROR([not found: "$with_gcrypt/bin/$GCRYPT_CONFIG" tool, or "$with_gcrypt/include/$GCRYPT_INCLUDE_MARKER" and/or "$with_gcrypt/lib/$GCRYPT_LIB_MARKER" files don't exist), typo?])
1226    fi
1227fi
1228
1229dnl Priority 2: User sets both CFLAGS and LIBS flags
1230if test "z$GCRYPT_FOUND" = "zno" -a  "z$GCRYPT_CFLAGS" != "z" -a "z$GCRYPT_LIBS" != "z" ; then
1231    GCRYPT_FOUND="yes"
1232fi
1233
1234dnl Priority 3: Guess with pkg_config
1235if test "z$GCRYPT_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
1236    if test "z$GCRYPT_FOUND" = "zno" ; then
1237        PKG_CHECK_MODULES(GCRYPT, gcrypt >= $GCRYPT_MIN_VERSION,
1238            [GCRYPT_FOUND=yes],
1239            [GCRYPT_FOUND=no])
1240    fi
1241    if test "z$GCRYPT_FOUND" = "zno" ; then
1242        PKG_CHECK_MODULES(GCRYPT, libgcrypt20 >= $GCRYPT_MIN_VERSION,
1243            [GCRYPT_FOUND=yes],
1244            [GCRYPT_FOUND=no])
1245    fi
1246    if test "z$GCRYPT_FOUND" = "zno" ; then
1247        PKG_CHECK_MODULES(GCRYPT, libgcrypt11 >= $GCRYPT_MIN_VERSION,
1248            [GCRYPT_FOUND=yes],
1249            [GCRYPT_FOUND=no])
1250    fi
1251    if test "z$GCRYPT_FOUND" = "zno" ; then
1252        PKG_CHECK_MODULES(GCRYPT, libgcrypt >= $GCRYPT_MIN_VERSION,
1253            [GCRYPT_FOUND=yes],
1254            [GCRYPT_FOUND=no])
1255    fi
1256fi
1257
1258dnl Priority 4: Guess the config tool location
1259if test "z$GCRYPT_FOUND" = "zno" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
1260    AC_PATH_PROG(GCRYPT_CONFIG_PATH, [$GCRYPT_CONFIG], [], [$PATH])
1261    if test "z$GCRYPT_CONFIG_PATH" != "z" ; then
1262        GCRYPT_FOUND="yes"
1263    fi
1264fi
1265
1266dnl Priority 5: Guess using a list of folders.
1267if test "z$GCRYPT_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
1268    AC_MSG_CHECKING(for libgcrypt library installation in the typical folders)
1269    if test "z$GCRYPT_INCLUDE_PATH" = "z" ; then
1270        AX_FIND_FOLDER(GCRYPT_INCLUDE_PATH, $GCRYPT_INCLUDE_MARKER, $GCRYPT_INCLUDE_DIR)
1271    fi
1272    if test "z$GCRYPT_LIB_PATH" = "z" ; then
1273        AX_FIND_FOLDER(GCRYPT_LIB_PATH, $GCRYPT_LIB_MARKER, $GCRYPT_LIB_DIR)
1274    fi
1275    if test "z$GCRYPT_INCLUDE_PATH" != "z" -a "z$GCRYPT_LIB_PATH" != "z" ; then
1276        GCRYPT_FOUND="yes"
1277        AC_MSG_RESULT([yes ("-I$GCRYPT_INCLUDE_PATH -L$GCRYPT_LIB_PATH")])
1278    else
1279        AC_MSG_RESULT([not found])
1280    fi
1281fi
1282
1283dnl Priority 6: Just try to compile/link and hope for the best
1284if test "z$GCRYPT_FOUND" = "zno" ; then
1285    AC_MSG_CHECKING(for gcrypt library installation)
1286    OLD_CPPFLAGS=$CPPFLAGS
1287    CPPFLAGS="$CPPFLAGS $GCRYPT_CFLAGS"
1288    OLD_LIBS=$LIBS
1289    LIBS="$LIBS $GCRYPT_LIBS $GCRYPT_LIBS_LIST"
1290    AC_LINK_IFELSE([
1291        AC_LANG_PROGRAM([[
1292            #include <gcrypt.h>
1293        ]],[[
1294            int main () { printf("v=%s\n", gcry_check_version("0")); return(0); }
1295        ]])
1296    ],[
1297        GCRYPT_FOUND=yes
1298        GCRYPT_LIBS="$GCRYPT_LIBS $GCRYPT_LIBS_LIST"
1299        AC_MSG_RESULT([yes])
1300    ],[
1301        GCRYPT_FOUND=no
1302        AC_MSG_RESULT([not found])
1303    ])
1304    CPPFLAGS=$OLD_CPPFLAGS
1305    LIBS=$OLD_LIBS
1306fi
1307
1308dnl Set CFLAGS/LIBS flags
1309if test "z$GCRYPT_FOUND" = "zyes" ; then
1310    if test "z$GCRYPT_CONFIG_PATH" != "z" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
1311        dnl Get the values using config tool (overwrite CFLAGS/LIBS!)
1312        if test "z$GCRYPT_CFLAGS" = "z" ; then
1313            GCRYPT_CFLAGS="`$GCRYPT_CONFIG_PATH --cflags`"
1314        fi
1315        if test "z$GCRYPT_LIBS" = "z"; then
1316            GCRYPT_LIBS="`$GCRYPT_CONFIG_PATH --libs`"
1317        fi
1318        GCRYPT_CONFIG=$GCRYPT_CONFIG_PATH
1319        GCRYPT_FOUND="yes"
1320    else
1321        dnl Set flags if INCLUDE_PATH or LIB_PATH are set (do NOT overwrite CFLAGS/LIBS!)
1322        if test "z$GCRYPT_INCLUDE_PATH" != "z" ; then
1323            GCRYPT_CFLAGS="$GCRYPT_CFLAGS -I$GCRYPT_INCLUDE_PATH"
1324        fi
1325        if test "z$GCRYPT_LIB_PATH" != "z" ; then
1326            if test "z$with_gnu_ld" = "zyes" ; then
1327                GCRYPT_LIBS="$GCRYPT_LIBS -Wl,-rpath-link -Wl,$GCRYPT_LIB_PATH"
1328            fi
1329            GCRYPT_LIBS="$GCRYPT_LIBS -L$GCRYPT_LIB_PATH $GCRYPT_LIBS_LIST"
1330        fi
1331    fi
1332fi
1333
1334dnl Verify the version
1335AC_MSG_CHECKING(for libgcrypt library >= $GCRYPT_MIN_VERSION)
1336if test "z$GCRYPT_FOUND" = "zyes" ; then
1337    OLD_CPPFLAGS=$CPPFLAGS
1338    CPPFLAGS="$CPPFLAGS $GCRYPT_CFLAGS"
1339    dnl gcrypt uses hex digits for version number
1340    minvers=`echo $GCRYPT_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 256 + $2) * 256 + $3;}'`
1341    AC_EGREP_CPP(greater-than-minvers, [
1342        #include <gcrypt.h>
1343        #if GCRYPT_VERSION_NUMBER >= $minvers
1344        greater-than-minvers
1345        #endif
1346    ],[
1347        GCRYPT_FOUND=yes
1348    ], [
1349        GCRYPT_FOUND=no
1350    ])
1351    CPPFLAGS=$OLD_CPPFLAGS
1352fi
1353AC_MSG_RESULT([$GCRYPT_FOUND])
1354
1355dnl Finally set variables
1356if test "z$GCRYPT_FOUND" = "zyes" ; then
1357    XMLSEC_NO_GCRYPT="0"
1358    GCRYPT_CFLAGS="$GCRYPT_CFLAGS -DXMLSEC_CRYPTO_GCRYPT=1"
1359    XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST gcrypt"
1360else
1361    XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST gcrypt"
1362fi
1363
1364AM_CONDITIONAL(XMLSEC_NO_GCRYPT, test "z$XMLSEC_NO_GCRYPT" = "z1")
1365AC_SUBST(XMLSEC_NO_GCRYPT)
1366AC_SUBST(GCRYPT_CFLAGS)
1367AC_SUBST(GCRYPT_LIBS)
1368AC_SUBST(GCRYPT_CRYPTO_LIB)
1369AC_SUBST(GCRYPT_MIN_VERSION)
1370
1371dnl ==========================================================================
1372dnl See if we can find GnuTLS
1373dnl ==========================================================================
1374GNUTLS_MIN_VERSION="2.8.0"
1375GNUTLS_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/local/gnutls/include"
1376GNUTLS_LIB_DIR="$COMMON_LIB_DIR /usr/local/gnutls/lib"
1377GNUTLS_INCLUDE_MARKER="gnutls/gnutls.h"
1378GNUTLS_LIB_MARKER="libgnutls$shrext"
1379GNUTLS_CRYPTO_LIB="$XMLSEC_PACKAGE-gnutls"
1380GNUTLS_LIBS_LIST="-lgnutls"
1381
1382XMLSEC_NO_GNUTLS="1"
1383GNUTLS_INCLUDE_PATH=
1384GNUTLS_LIB_PATH=
1385GNUTLS_FOUND="no"
1386AC_ARG_WITH([gnutls], [AC_HELP_STRING([--with-gnutls@<:@=PFX@:>@], [gnutls location])])
1387
1388dnl Priority 0: Check if library is not needed
1389if test "z$with_gnutls" = "zno" ; then
1390    GNUTLS_FOUND="disabled"
1391fi
1392
1393dnl Priority 1: User specifies the path to installation
1394if test "z$GNUTLS_FOUND" = "zno" -a "z$with_gnutls" != "z" -a "z$with_gnutls" != "zyes" ; then
1395    AC_MSG_CHECKING(for libgnutls library installation in "$with_gnutls" folder)
1396    if test -f "$with_gnutls/include/$GNUTLS_INCLUDE_MARKER" -a -f "$with_gnutls/lib/$GNUTLS_LIB_MARKER" ; then
1397        GNUTLS_INCLUDE_PATH="$with_gnutls/include"
1398        GNUTLS_LIB_PATH="$with_gnutls/lib"
1399        GNUTLS_FOUND="yes"
1400        AC_MSG_RESULT([yes])
1401    else
1402        AC_MSG_ERROR([not found: "$with_gnutls/bin/$GNUTLS_CONFIG" tool, or "$with_gnutls/include/$GNUTLS_INCLUDE_MARKER" and/or "$with_gnutls/lib/$GNUTLS_LIB_MARKER" files don't exist), typo?])
1403    fi
1404fi
1405
1406dnl Priority 2: User sets both CFLAGS and LIBS flags
1407if test "z$GNUTLS_FOUND" = "zno" -a  "z$GNUTLS_CFLAGS" != "z" -a "z$GNUTLS_LIBS" != "z" ; then
1408    GNUTLS_FOUND="yes"
1409fi
1410
1411dnl Priority 3: Guess with pkg_config
1412if test "z$GNUTLS_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
1413    if test "z$GNUTLS_FOUND" = "zno" ; then
1414        PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_MIN_VERSION,
1415            [GNUTLS_FOUND=yes],
1416            [GNUTLS_FOUND=no])
1417    fi
1418    if test "z$GNUTLS_FOUND" = "zno" ; then
1419        PKG_CHECK_MODULES(GNUTLS, libgnutls >= $GNUTLS_MIN_VERSION,
1420            [GNUTLS_FOUND=yes],
1421            [GNUTLS_FOUND=no])
1422    fi
1423fi
1424
1425dnl Priority 4: Guess using a list of folders.
1426if test "z$GNUTLS_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
1427    AC_MSG_CHECKING(for libgnutls library installation in the typical folders)
1428    if test "z$GNUTLS_INCLUDE_PATH" = "z" ; then
1429        AX_FIND_FOLDER(GNUTLS_INCLUDE_PATH, $GNUTLS_INCLUDE_MARKER, $GNUTLS_INCLUDE_DIR)
1430    fi
1431    if test "z$GNUTLS_LIB_PATH" = "z" ; then
1432        AX_FIND_FOLDER(GNUTLS_LIB_PATH, $GNUTLS_LIB_MARKER, $GNUTLS_LIB_DIR)
1433    fi
1434    if test "z$GNUTLS_INCLUDE_PATH" != "z" -a "z$GNUTLS_LIB_PATH" != "z" ; then
1435        GNUTLS_FOUND="yes"
1436        AC_MSG_RESULT([yes ("-I$GNUTLS_INCLUDE_PATH -L$GNUTLS_LIB_PATH")])
1437    else
1438        AC_MSG_RESULT([not found])
1439    fi
1440fi
1441
1442dnl Priority 5: Just try to compile/link and hope for the best
1443if test "z$GNUTLS_FOUND" = "zno" ; then
1444    AC_MSG_CHECKING(for gnutls library installation)
1445    OLD_CPPFLAGS=$CPPFLAGS
1446    CPPFLAGS="$CPPFLAGS $GCRYPT_CFLAGS $GNUTLS_CFLAGS"
1447    OLD_LIBS=$LIBS
1448    LIBS="$LIBS $GNUTLS_LIBS $GCRYPT_LIBS $GNUTLS_LIBS_LIST"
1449    AC_LINK_IFELSE([
1450        AC_LANG_PROGRAM([[
1451            #include <gnutls/gnutls.h>
1452        ]],[[
1453            int main () { gnutls_global_init(); return(0); }
1454        ]])
1455    ],[
1456        GNUTLS_FOUND=yes
1457        GNUTLS_LIBS="$GNUTLS_LIBS $GNUTLS_LIBS_LIST"
1458        AC_MSG_RESULT([yes])
1459    ],[
1460        GNUTLS_FOUND=no
1461        AC_MSG_RESULT([not found])
1462    ])
1463    CPPFLAGS=$OLD_CPPFLAGS
1464    LIBS=$OLD_LIBS
1465fi
1466
1467dnl Set CFLAGS/LIBS flags
1468if test "z$GNUTLS_FOUND" = "zyes" ; then
1469    dnl Set flags if INCLUDE_PATH or LIB_PATH are set (do NOT overwrite CFLAGS/LIBS!)
1470    if test "z$GNUTLS_INCLUDE_PATH" != "z" ; then
1471        GNUTLS_CFLAGS="$GNUTLS_CFLAGS -I$GNUTLS_INCLUDE_PATH"
1472    fi
1473    if test "z$GNUTLS_LIB_PATH" != "z" ; then
1474        if test "z$with_gnu_ld" = "zyes" ; then
1475            GNUTLS_LIBS="$GNUTLS_LIBS -Wl,-rpath-link -Wl,$GNUTLS_LIB_PATH"
1476        fi
1477        GNUTLS_LIBS="$GNUTLS_LIBS -L$GNUTLS_LIB_PATH $GNUTLS_LIBS_LIST"
1478    fi
1479fi
1480
1481dnl Verify the version
1482AC_MSG_CHECKING(for libgnutls library >= $GNUTLS_MIN_VERSION)
1483if test "z$GNUTLS_FOUND" = "zyes" ; then
1484    OLD_CPPFLAGS=$CPPFLAGS
1485    CPPFLAGS="$CPPFLAGS $GNUTLS_CFLAGS"
1486    dnl gnutls uses hex digits for version number
1487    minvers=`echo $GNUTLS_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 256 + $2) * 256 + $3;}'`
1488    AC_EGREP_CPP(greater-than-minvers, [
1489        #include <gnutls/gnutls.h>
1490        #if GNUTLS_VERSION_NUMBER >= $minvers
1491        greater-than-minvers
1492        #endif
1493    ],[
1494        GNUTLS_FOUND=yes
1495    ],[
1496        GNUTLS_FOUND=no
1497    ])
1498    CPPFLAGS=$OLD_CPPFLAGS
1499fi
1500AC_MSG_RESULT([$GNUTLS_FOUND])
1501
1502dnl Check that we have found gcrypt
1503if test "z$GNUTLS_FOUND" = "zyes" -a "z$GCRYPT_FOUND" != "zyes" ; then
1504    GNUTLS_FOUND="no"
1505    AC_MSG_RESULT([xmlsec-gnutls library requires xmlsec-gcrypt library which is disabled or missing, ignoring libgnutls library we have found])
1506fi
1507
1508dnl Finally set all the flags
1509if test "z$GNUTLS_FOUND" = "zyes" ; then
1510    XMLSEC_NO_GNUTLS="0"
1511    GNUTLS_CFLAGS="$GNUTLS_CFLAGS -DXMLSEC_CRYPTO_GNUTLS=1"
1512    XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST gnutls"
1513else
1514    XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST gnutls"
1515fi
1516
1517AM_CONDITIONAL(XMLSEC_NO_GNUTLS, test "z$XMLSEC_NO_GNUTLS" = "z1")
1518AC_SUBST(XMLSEC_NO_GNUTLS)
1519AC_SUBST(GNUTLS_CFLAGS)
1520AC_SUBST(GNUTLS_LIBS)
1521AC_SUBST(GNUTLS_CRYPTO_LIB)
1522AC_SUBST(GNUTLS_MIN_VERSION)
1523
1524
1525dnl ==========================================================================
1526dnl See if we can find MSCrypto
1527dnl ==========================================================================
1528MSCRYPTO_CRYPTO_LIB="$XMLSEC_PACKAGE-mscrypto"
1529case $host in
1530*-w64-mingw*)
1531    MSCRYPTO_XMLSEC_DEFINES=
1532    MSCRYPTO_LIBS_LIST="-lcrypt32"
1533    ;;
1534*-*-mingw*)
1535    dnl use own def-file and header as mingw.org crypt32
1536    dnl is limited (library and header)
1537    MSCRYPTO_XMLSEC_DEFINES="-DXMLSEC_CUSTOM_CRYPT32=1"
1538    MSCRYPTO_LIBS_LIST="-Wl,$(srcdir)/mingw-crypt32.def"
1539    ;;
1540*)
1541    MSCRYPTO_XMLSEC_DEFINES=
1542    MSCRYPTO_LIBS_LIST="-lcrypt32"
1543    ;;
1544esac
1545
1546XMLSEC_NO_MSCRYPTO="1"
1547MSCRYPTO_FOUND="no"
1548AC_ARG_ENABLE([mscrypto], [AC_HELP_STRING([--enable-mscrypto], [enable mscrypto (no)])])
1549
1550dnl Priority 0: Check if library is not needed
1551if test "z$enable_mscrypto" = "zno" ; then
1552    MSCRYPTO_FOUND="disabled"
1553fi
1554
1555dnl Priority 1: User sets both CFLAGS and LIBS flags
1556if test "z$MSCRYPTO_FOUND" = "zno" -a "z$MSCRYPTO_CFLAGS" != "z" -a "z$MSCRYPTO_LIBS" != "z" ; then
1557    MSCRYPTO_FOUND=yes
1558fi
1559
1560dnl Priority 2: Just try to compile/link and hope for the best
1561if test "z$MSCRYPTO_FOUND" = "zno" ; then
1562    AC_MSG_CHECKING(for mscrypto)
1563    OLD_CPPFLAGS=$CPPFLAGS
1564    CPPFLAGS="$CPPFLAGS $MSCRYPTO_CFLAGS"
1565    OLD_LIBS=$LIBS
1566    LIBS="$LIBS $MSCRYPTO_LIBS $MSCRYPTO_LIBS_LIST"
1567    AC_LINK_IFELSE([
1568        AC_LANG_PROGRAM([[
1569            #include <windows.h>
1570            #include <wincrypt.h>
1571        ]],[[
1572            int main () { CertOpenStore(0,0,0,0,0);; return(0); }
1573        ]])
1574    ],[
1575        MSCRYPTO_FOUND=yes
1576        AC_MSG_RESULT([yes])
1577    ],[
1578        MSCRYPTO_FOUND=no
1579        AC_MSG_RESULT([not found])
1580    ])
1581    CPPFLAGS=$OLD_CPPFLAGS
1582    LIBS=$OLD_LIBS
1583fi
1584
1585dnl Set CFLAGS/LIBS flags, do not change CFLAGS/LIBS if both are set
1586if test "z$MSCRYPTO_FOUND" = "zyes" ; then
1587    if test "z$MSCRYPTO_CFLAGS" = "z" -o "z$MSCRYPTO_LIBS" = "z" ; then
1588        XMLSEC_DEFINES="$XMLSEC_DEFINES $MSCRYPTO_XMLSEC_DEFINES"
1589        MSCRYPTO_LIBS="$MSCRYPTO_LIBS $MSCRYPTO_LIBS_LIST"
1590    fi
1591fi
1592
1593dnl Finally set all the flags
1594if test "z$MSCRYPTO_FOUND" = "zyes" ; then
1595    XMLSEC_NO_MSCRYPTO="0"
1596    MSCRYPTO_CFLAGS="$MSCRYPTO_CFLAGS -DXMLSEC_CRYPTO_MSCRYPTO=1"
1597    XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST mscrypto"
1598else
1599    XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST mscrypto"
1600fi
1601
1602AM_CONDITIONAL(XMLSEC_NO_MSCRYPTO, [test "z$XMLSEC_NO_MSCRYPTO" = "z1"])
1603AC_SUBST(XMLSEC_NO_MSCRYPTO)
1604AC_SUBST(MSCRYPTO_CFLAGS)
1605AC_SUBST(MSCRYPTO_LIBS)
1606AC_SUBST(MSCRYPTO_CRYPTO_LIB)
1607
1608
1609dnl ==========================================================================
1610dnl See if we can find MSCng
1611dnl ==========================================================================
1612MSCNG_CRYPTO_LIB="$XMLSEC_PACKAGE-mscng"
1613dnl This is tested on w64-mingw only so far.
1614MSCNG_XMLSEC_DEFINES=
1615MSCNG_LIBS_LIST="-lcrypt32 -lbcrypt -lncrypt"
1616
1617XMLSEC_NO_MSCNG="1"
1618MSCNG_FOUND="no"
1619AC_ARG_ENABLE([mscng], [AC_HELP_STRING([--enable-mscng], [enable mscng (no)])])
1620
1621dnl Priority 0: Check if library is not needed
1622if test "z$enable_mscng" = "zno" ; then
1623    MSCNG_FOUND="disabled"
1624fi
1625
1626dnl Priority 1: User sets both CFLAGS and LIBS flags
1627if test "z$MSCNG_FOUND" = "zno" -a "z$MSCNG_CFLAGS" != "z" -a "z$MSCNG_LIBS" != "z" ; then
1628    MSCNG_FOUND=yes
1629fi
1630
1631dnl Priority 2: Just try to compile/link and hope for the best
1632if test "z$MSCNG_FOUND" = "zno" ; then
1633    AC_MSG_CHECKING(for mscng)
1634    OLD_CPPFLAGS=$CPPFLAGS
1635    CPPFLAGS="$CPPFLAGS $MSCNG_CFLAGS"
1636    OLD_LIBS=$LIBS
1637    LIBS="$LIBS $MSCNG_LIBS $MSCNG_LIBS_LIST"
1638    AC_LINK_IFELSE([
1639        AC_LANG_PROGRAM([[
1640            #include <windows.h>
1641            #include <wincrypt.h>
1642        ]],[[
1643            int main () {
1644                BCRYPT_ALG_HANDLE hAlg;
1645                BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_SHA256_ALGORITHM, NULL, 0);
1646                return(0);
1647            }
1648        ]])
1649    ],[
1650        MSCNG_FOUND=yes
1651        AC_MSG_RESULT([yes])
1652    ],[
1653        MSCNG_FOUND=no
1654        AC_MSG_RESULT([not found])
1655    ])
1656    CPPFLAGS=$OLD_CPPFLAGS
1657    LIBS=$OLD_LIBS
1658fi
1659
1660dnl Set CFLAGS/LIBS flags, do not change CFLAGS/LIBS if both are set
1661if test "z$MSCNG_FOUND" = "zyes" ; then
1662    if test "z$MSCNG_CFLAGS" = "z" -o "z$MSCNG_LIBS" = "z" ; then
1663        XMLSEC_DEFINES="$XMLSEC_DEFINES $MSCNG_XMLSEC_DEFINES"
1664        MSCNG_LIBS="$MSCNG_LIBS $MSCNG_LIBS_LIST"
1665    fi
1666fi
1667
1668dnl Finally set all the flags
1669if test "z$MSCNG_FOUND" = "zyes" ; then
1670    XMLSEC_NO_MSCNG="0"
1671    MSCNG_CFLAGS="$MSCNG_CFLAGS -DXMLSEC_CRYPTO_MSCNG=1"
1672    XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST mscng"
1673else
1674    XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST mscng"
1675fi
1676
1677AM_CONDITIONAL(XMLSEC_NO_MSCNG, [test "z$XMLSEC_NO_MSCNG" = "z1"])
1678AC_SUBST(XMLSEC_NO_MSCNG)
1679AC_SUBST(MSCNG_CFLAGS)
1680AC_SUBST(MSCNG_LIBS)
1681AC_SUBST(MSCNG_CRYPTO_LIB)
1682
1683
1684dnl ==========================================================================
1685dnl Figure out the default crypt - the first crypto library wins
1686dnl ==========================================================================
1687XMLSEC_DEFAULT_CRYPTO=""
1688XMLSEC_CRYPTO_LIB=""
1689XMLSEC_CRYPTO_CFLAGS=""
1690XMLSEC_CRYPTO_LIBS=""
1691AC_MSG_CHECKING(for default crypto library)
1692AC_ARG_WITH([default_crypto], [AC_HELP_STRING([--with-default-crypto=name], [default crypto name])])
1693
1694# check the argument
1695case "z$with_default_crypto" in
1696    'zmscrypto')
1697        if test "z$XMLSEC_NO_MSCRYPTO" != "z1" ; then
1698            XMLSEC_DEFAULT_CRYPTO="mscrypto"
1699        else
1700            AC_MSG_ERROR('$with_default_crypto' is specified as default crypto library but it is not configured or found)
1701        fi
1702        ;;
1703    'zmscng')
1704        if test "z$XMLSEC_NO_MSCNG" != "z1" ; then
1705            XMLSEC_DEFAULT_CRYPTO="mscng"
1706        else
1707            AC_MSG_ERROR('$with_default_crypto' is specified as default crypto library but it is not configured or found)
1708        fi
1709        ;;
1710    'zopenssl')
1711        if test "z$XMLSEC_NO_OPENSSL" != "z1" ; then
1712            XMLSEC_DEFAULT_CRYPTO="openssl"
1713        else
1714            AC_MSG_ERROR('$with_default_crypto' is specified as default crypto library but it is not configured or found)
1715        fi
1716        ;;
1717    'znss')
1718        if test "z$XMLSEC_NO_NSS" != "z1" ; then
1719            XMLSEC_DEFAULT_CRYPTO="nss"
1720        else
1721            AC_MSG_ERROR('$with_default_crypto' is specified as default crypto library but it is not configured or found)
1722        fi
1723        ;;
1724    'zgnutls')
1725        if test "z$XMLSEC_NO_GNUTLS" != "z1" ; then
1726            XMLSEC_DEFAULT_CRYPTO="gnutls"
1727        else
1728            AC_MSG_ERROR('$with_default_crypto' is specified as default crypto library but it is not configured or found)
1729        fi
1730        ;;
1731    'zgcrypt')
1732        if test "z$XMLSEC_NO_GCRYPT" != "z1" ; then
1733            XMLSEC_DEFAULT_CRYPTO="gcrypt"
1734        else
1735            AC_MSG_ERROR('$with_default_crypto' is specified as default crypto library but it is not configured or found)
1736        fi
1737        ;;
1738    'z')
1739        dnl The first crypto library wins
1740        if test "z$XMLSEC_NO_MSCRYPTO" != "z1" ; then
1741            XMLSEC_DEFAULT_CRYPTO="mscrypto"
1742        elif test "z$XMLSEC_NO_MSCNG" != "z1" ; then
1743            XMLSEC_DEFAULT_CRYPTO="mscng"
1744        elif test "z$XMLSEC_NO_OPENSSL" != "z1" ; then
1745            XMLSEC_DEFAULT_CRYPTO="openssl"
1746        elif test "z$XMLSEC_NO_NSS" != "z1" ; then
1747            XMLSEC_DEFAULT_CRYPTO="nss"
1748        elif test "z$XMLSEC_NO_GNUTLS" != "z1" ; then
1749            XMLSEC_DEFAULT_CRYPTO="gnutls"
1750        elif test "z$XMLSEC_NO_GCRYPT" != "z1" ; then
1751            XMLSEC_DEFAULT_CRYPTO="gcrypt"
1752        else
1753            AC_MSG_ERROR(At least one crypto library should exist for $XMLSEC_PACKAGE)
1754        fi
1755        ;;
1756    *)
1757        AC_MSG_ERROR(The value '$with_default_crypto' is not a recongnized crypto library name)
1758        ;;
1759esac
1760
1761dnl Set the flags for default crypto lib
1762case "$XMLSEC_DEFAULT_CRYPTO" in
1763    'mscrypto')
1764        XMLSEC_CRYPTO_LIB="$MSCRYPTO_CRYPTO_LIB"
1765        XMLSEC_CRYPTO_CFLAGS="$MSCRYPTO_CFLAGS"
1766        XMLSEC_CRYPTO_LIBS="$MSCRYPTO_LIBS"
1767        ;;
1768    'mscng')
1769        XMLSEC_CRYPTO_LIB="$MSCNG_CRYPTO_LIB"
1770        XMLSEC_CRYPTO_CFLAGS="$MSCNG_CFLAGS"
1771        XMLSEC_CRYPTO_LIBS="$MSCNG_LIBS"
1772        ;;
1773    'openssl')
1774        XMLSEC_CRYPTO_LIB="$OPENSSL_CRYPTO_LIB"
1775        XMLSEC_CRYPTO_CFLAGS="$OPENSSL_CFLAGS"
1776        XMLSEC_CRYPTO_LIBS="$OPENSSL_LIBS"
1777        ;;
1778    'nss')
1779        XMLSEC_CRYPTO_LIB="$NSS_CRYPTO_LIB"
1780        XMLSEC_CRYPTO_CFLAGS="$NSS_CFLAGS"
1781        XMLSEC_CRYPTO_LIBS="$NSS_LIBS"
1782        ;;
1783    'gnutls')
1784        XMLSEC_CRYPTO_LIB="$GNUTLS_CRYPTO_LIB"
1785        XMLSEC_CRYPTO_CFLAGS="$GNUTLS_CFLAGS"
1786        XMLSEC_CRYPTO_LIBS="$GNUTLS_LIBS"
1787        ;;
1788    'gcrypt')
1789        XMLSEC_CRYPTO_LIB="$GCRYPT_CRYPTO_LIB"
1790        XMLSEC_CRYPTO_CFLAGS="$GCRYPT_CFLAGS"
1791        XMLSEC_CRYPTO_LIBS="$GCRYPT_LIBS"
1792        ;;
1793    *)
1794        AC_MSG_ERROR(The value \"$XMLSEC_DEFAULT_CRYPTO\" is not a recongnized crypto library name)
1795        ;;
1796esac
1797AC_MSG_RESULT([yes ("$XMLSEC_DEFAULT_CRYPTO")])
1798
1799dnl ==========================================================================
1800dnl Do we need to use Unicode (Windows build only)
1801dnl ==========================================================================
1802if test "z$build_windows" = "zyes" ; then
1803    AC_MSG_CHECKING(for Unicode support)
1804    AC_ARG_ENABLE([unicode], [AC_HELP_STRING([--enable-unicode], [enable Unicode support on Windows (yes)])])
1805    if test "z$enable_unicode" = "zyes" ; then
1806        XMLSEC_DEFINES="$XMLSEC_DEFINES -DUNICODE=1"
1807        AC_MSG_RESULT([yes])
1808    else
1809        AC_MSG_RESULT([no])
1810    fi
1811fi
1812
1813dnl ==========================================================================
1814dnl See do we need MD5 support
1815dnl ==========================================================================
1816AC_MSG_CHECKING(for MD5 support)
1817AC_ARG_ENABLE([md5], [AC_HELP_STRING([--enable-md5], [enable MD5 support (yes)])])
1818if test "z$enable_md5" = "zno" ; then
1819    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_MD5=1"
1820    XMLSEC_NO_MD5="1"
1821    AC_MSG_RESULT([disabled])
1822else
1823    XMLSEC_NO_MD5="0"
1824    AC_MSG_RESULT([yes])
1825fi
1826AM_CONDITIONAL(XMLSEC_NO_MD5, test "z$XMLSEC_NO_MD5" = "z1")
1827AC_SUBST(XMLSEC_NO_MD5)
1828
1829dnl ==========================================================================
1830dnl See do we need RIPEMD-160 support
1831dnl ==========================================================================
1832AC_MSG_CHECKING(for RIPEMD-160 support)
1833AC_ARG_ENABLE([ripemd160], [AC_HELP_STRING([--enable-ripemd160], [enable RIPEMD-160 support (yes)])])
1834if test "z$enable_ripemd160" = "zno" ; then
1835    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_RIPEMD160=1"
1836    XMLSEC_NO_RIPEMD160="1"
1837    AC_MSG_RESULT([disabled])
1838else
1839    XMLSEC_NO_RIPEMD160="0"
1840    AC_MSG_RESULT([yes])
1841fi
1842AM_CONDITIONAL(XMLSEC_NO_RIPEMD160, test "z$XMLSEC_NO_RIPEMD160" = "z1")
1843AC_SUBST(XMLSEC_NO_RIPEMD160)
1844
1845dnl ==========================================================================
1846dnl See do we need SHA1 support
1847dnl ==========================================================================
1848AC_MSG_CHECKING(for SHA1 support)
1849AC_ARG_ENABLE([sha1], [AC_HELP_STRING([--enable-sha1], [enable SHA1 support (yes)])])
1850if test "z$enable_sha1" = "zno" ; then
1851    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA1=1"
1852    XMLSEC_NO_SHA1="1"
1853    AC_MSG_RESULT([disabled])
1854else
1855    XMLSEC_NO_SHA1="0"
1856    AC_MSG_RESULT([yes])
1857fi
1858AM_CONDITIONAL(XMLSEC_NO_SHA1, test "z$XMLSEC_NO_SHA1" = "z1")
1859AC_SUBST(XMLSEC_NO_SHA1)
1860
1861dnl ==========================================================================
1862dnl See do we need SHA224 support
1863dnl ==========================================================================
1864AC_MSG_CHECKING(for SHA224 support)
1865AC_ARG_ENABLE([sha224], [AC_HELP_STRING([--enable-sha224], [enable SHA224 support (yes)])])
1866if test "z$enable_sha224" = "zno" ; then
1867    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA224=1"
1868    XMLSEC_NO_SHA224="1"
1869    AC_MSG_RESULT([disabled])
1870else
1871    XMLSEC_NO_SHA224="0"
1872    AC_MSG_RESULT([yes])
1873fi
1874AM_CONDITIONAL(XMLSEC_NO_SHA224, test "z$XMLSEC_NO_SHA224" = "z1")
1875AC_SUBST(XMLSEC_NO_SHA224)
1876
1877dnl ==========================================================================
1878dnl See do we need SHA256 support
1879dnl ==========================================================================
1880AC_MSG_CHECKING(for SHA256 support)
1881AC_ARG_ENABLE([sha256], [AC_HELP_STRING([--enable-sha256], [enable SHA256 support (yes)])])
1882if test "z$enable_sha256" = "zno" ; then
1883    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA256=1"
1884    XMLSEC_NO_SHA256="1"
1885    AC_MSG_RESULT([disabled])
1886else
1887    XMLSEC_NO_SHA256="0"
1888    AC_MSG_RESULT([yes])
1889fi
1890AM_CONDITIONAL(XMLSEC_NO_SHA256, test "z$XMLSEC_NO_SHA256" = "z1")
1891AC_SUBST(XMLSEC_NO_SHA256)
1892
1893dnl ==========================================================================
1894dnl See do we need SHA384 support
1895dnl ==========================================================================
1896AC_MSG_CHECKING(for SHA384 support)
1897AC_ARG_ENABLE([sha384], [AC_HELP_STRING([--enable-sha384], [enable SHA384 support (yes)])])
1898if test "z$enable_sha384" = "zno" ; then
1899    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA384=1"
1900    XMLSEC_NO_SHA384="1"
1901    AC_MSG_RESULT([disabled])
1902else
1903    XMLSEC_NO_SHA384="0"
1904    AC_MSG_RESULT([yes])
1905fi
1906AM_CONDITIONAL(XMLSEC_NO_SHA384, test "z$XMLSEC_NO_SHA384" = "z1")
1907AC_SUBST(XMLSEC_NO_SHA384)
1908
1909dnl ==========================================================================
1910dnl See do we need SHA512 support
1911dnl ==========================================================================
1912AC_MSG_CHECKING(for SHA512 support)
1913AC_ARG_ENABLE([sha512], [AC_HELP_STRING([--enable-sha512], [enable SHA512 support (yes)])])
1914if test "z$enable_sha512" = "zno" ; then
1915    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA512=1"
1916    XMLSEC_NO_SHA512="1"
1917    AC_MSG_RESULT([disabled])
1918else
1919    XMLSEC_NO_SHA512="0"
1920    AC_MSG_RESULT([yes])
1921fi
1922AM_CONDITIONAL(XMLSEC_NO_SHA512, test "z$XMLSEC_NO_SHA512" = "z1")
1923AC_SUBST(XMLSEC_NO_SHA512)
1924
1925
1926dnl ==========================================================================
1927dnl See do we need HMAC support
1928dnl ==========================================================================
1929AC_MSG_CHECKING(for HMAC support)
1930AC_ARG_ENABLE([hmac], [AC_HELP_STRING([--enable-hmac], [enable HMAC support (yes)])])
1931if test "z$enable_hmac" = "zno" ; then
1932    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_HMAC=1"
1933    XMLSEC_NO_HMAC="1"
1934    AC_MSG_RESULT([disabled])
1935else
1936    XMLSEC_NO_HMAC="0"
1937    AC_MSG_RESULT([yes])
1938fi
1939AM_CONDITIONAL(XMLSEC_NO_HMAC, test "z$XMLSEC_NO_HMAC" = "z1")
1940AC_SUBST(XMLSEC_NO_HMAC)
1941
1942dnl ==========================================================================
1943dnl See do we need DSA support
1944dnl ==========================================================================
1945AC_MSG_CHECKING(for DSA support)
1946AC_ARG_ENABLE([dsa], [AC_HELP_STRING([--enable-dsa], [enable DSA support (yes)])])
1947if test "z$enable_dsa" = "zno" ; then
1948    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_DSA=1"
1949    XMLSEC_NO_DSA="1"
1950    AC_MSG_RESULT([disabled])
1951else
1952    XMLSEC_NO_DSA="0"
1953    AC_MSG_RESULT([yes])
1954fi
1955AM_CONDITIONAL(XMLSEC_NO_DSA, test "z$XMLSEC_NO_DSA" = "z1")
1956AC_SUBST(XMLSEC_NO_DSA)
1957
1958dnl ==========================================================================
1959dnl See do we need RSA support
1960dnl ==========================================================================
1961AC_MSG_CHECKING(for RSA support)
1962AC_ARG_ENABLE([rsa], [AC_HELP_STRING([--enable-rsa], [enable RSA support (yes)])])
1963if test "z$enable_rsa" = "zno" ; then
1964    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_RSA=1"
1965    XMLSEC_NO_RSA="1"
1966    AC_MSG_RESULT([disabled])
1967else
1968    XMLSEC_NO_RSA="0"
1969    AC_MSG_RESULT([yes])
1970fi
1971AM_CONDITIONAL(XMLSEC_NO_RSA, test "z$XMLSEC_NO_RSA" = "z1")
1972AC_SUBST(XMLSEC_NO_RSA)
1973
1974dnl ==========================================================================
1975dnl See do we need x509 support
1976dnl ==========================================================================
1977AC_MSG_CHECKING(for x509 support)
1978AC_ARG_ENABLE([x509], [AC_HELP_STRING([--enable-x509], [enable x509 support (yes)])])
1979if test "z$enable_x509" = "zno" ; then
1980    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_X509=1"
1981    XMLSEC_NO_X509="1"
1982    AC_MSG_RESULT([disabled])
1983else
1984    XMLSEC_NO_X509="0"
1985    AC_MSG_RESULT([yes])
1986fi
1987AM_CONDITIONAL(XMLSEC_NO_X509, test "z$XMLSEC_NO_X509" = "z1")
1988AC_SUBST(XMLSEC_NO_X509)
1989
1990dnl ==========================================================================
1991dnl See do we need DES support
1992dnl ==========================================================================
1993AC_MSG_CHECKING(for DES support)
1994AC_ARG_ENABLE([des], [AC_HELP_STRING([--enable-des], [enable DES support (yes)])])
1995if test "z$enable_des" = "zno" ; then
1996    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_DES=1"
1997    XMLSEC_NO_DES="1"
1998    AC_MSG_RESULT([disabled])
1999else
2000    XMLSEC_NO_DES="0"
2001    AC_MSG_RESULT([yes])
2002fi
2003AM_CONDITIONAL(XMLSEC_NO_DES, test "z$XMLSEC_NO_DES" = "z1")
2004AC_SUBST(XMLSEC_NO_DES)
2005
2006dnl ==========================================================================
2007dnl See do we need AES support
2008dnl ==========================================================================
2009AC_MSG_CHECKING(for AES support)
2010AC_ARG_ENABLE([aes], [AC_HELP_STRING([--enable-aes], [enable AES support])])
2011if test "z$enable_aes" = "zno" ; then
2012    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_AES=1"
2013    XMLSEC_NO_AES="1"
2014    AC_MSG_RESULT([disabled])
2015else
2016    XMLSEC_NO_AES="0"
2017    AC_MSG_RESULT([yes])
2018fi
2019AM_CONDITIONAL(XMLSEC_NO_AES, test "z$XMLSEC_NO_AES" = "z1")
2020AC_SUBST(XMLSEC_NO_AES)
2021
2022dnl ==========================================================================
2023dnl See do we need GOST support
2024dnl ==========================================================================
2025AC_MSG_CHECKING(for GOST support)
2026AC_ARG_ENABLE([gost], [AC_HELP_STRING([--enable-gost], [enable GOST support (no)])])
2027if test "z$enable_gost" != "zyes" ; then
2028    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_GOST=1"
2029    XMLSEC_NO_GOST="1"
2030    AC_MSG_RESULT([disabled])
2031else
2032    XMLSEC_NO_GOST="0"
2033    AC_MSG_RESULT([yes])
2034fi
2035AM_CONDITIONAL(XMLSEC_NO_GOST, test "z$XMLSEC_NO_GOST" = "z1")
2036AC_SUBST(XMLSEC_NO_GOST)
2037
2038
2039dnl ==========================================================================
2040dnl See do we need GOST2012 support
2041dnl ==========================================================================
2042AC_MSG_CHECKING(for EXPERMIENTAL GOST2012 support)
2043AC_ARG_ENABLE([gost2012], [AC_HELP_STRING([--enable-gost2012], [enable EXPERMIENTAL GOST2012 support (no)])])
2044if test "z$enable_gost2012" != "zyes" ; then
2045    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_GOST2012=1"
2046    XMLSEC_NO_GOST2012="1"
2047    AC_MSG_RESULT([disabled])
2048else
2049    XMLSEC_NO_GOST2012="0"
2050    AC_MSG_RESULT([yes])
2051fi
2052AM_CONDITIONAL(XMLSEC_NO_GOST2012, test "z$XMLSEC_NO_GOST2012" = "z1")
2053AC_SUBST(XMLSEC_NO_GOST2012)
2054
2055
2056dnl ==========================================================================
2057dnl See do we need XMLDSig support
2058dnl ==========================================================================
2059AC_MSG_CHECKING(for XMLDSig support)
2060AC_ARG_ENABLE([xmldsig], [AC_HELP_STRING([--enable-xmldsig], [enable XMLDSig support (yes)])])
2061if test "z$enable_xmldsig" = "zno" ; then
2062    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_XMLDSIG=1"
2063    XMLSEC_NO_XMLDSIG="1"
2064    AC_MSG_RESULT([disabled])
2065else
2066    XMLSEC_NO_XMLDSIG="0"
2067    AC_MSG_RESULT([yes])
2068fi
2069AM_CONDITIONAL(XMLSEC_NO_XMLDSIG, test "z$XMLSEC_NO_XMLDSIG" = "z1")
2070AC_SUBST(XMLSEC_NO_XMLDSIG)
2071
2072dnl ==========================================================================
2073dnl See do we need XMLEnc support
2074dnl ==========================================================================
2075AC_MSG_CHECKING(for XMLEnc support)
2076AC_ARG_ENABLE([xmlenc], [AC_HELP_STRING([--enable-xmlenc], [enable XMLEnc support (yes)])])
2077if test "z$enable_xmlenc" = "zno" ; then
2078    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_XMLENC=1"
2079    XMLSEC_NO_XMLENC="1"
2080    AC_MSG_RESULT([disabled])
2081else
2082    XMLSEC_NO_XMLENC="0"
2083    AC_MSG_RESULT([yes])
2084fi
2085AM_CONDITIONAL(XMLSEC_NO_XMLENC, test "z$XMLSEC_NO_XMLENC" = "z1")
2086AC_SUBST(XMLSEC_NO_XMLENC)
2087
2088dnl ==========================================================================
2089dnl See do we need soap support (deprecated)
2090dnl ==========================================================================
2091AC_MSG_CHECKING(for soap support)
2092AC_ARG_ENABLE([soap], [AC_HELP_STRING([--enable-soap], [enable soap support (no)])])
2093if test "z$enable_soap" = "zyes" ; then
2094    XMLSEC_ENABLE_SOAP="1"
2095    AC_MSG_RESULT([yes])
2096else
2097    XMLSEC_ENABLE_SOAP="0"
2098    AC_MSG_RESULT([disabled])
2099fi
2100AM_CONDITIONAL(XMLSEC_ENABLE_SOAP, test "z$XMLSEC_ENABLE_SOAP" = "z1")
2101
2102dnl ==========================================================================
2103dnl See do we need mans
2104dnl ==========================================================================
2105AC_MSG_CHECKING(for mans)
2106AC_ARG_ENABLE([mans], [AC_HELP_STRING([--enable-mans], [enable manual pages (yes)])])
2107if test "z$enable_mans" = "zno" ; then
2108    XMLSEC_MANS="0"
2109    AC_MSG_RESULT([disabled])
2110else
2111    XMLSEC_MANS="1"
2112    AC_MSG_RESULT([yes])
2113fi
2114AM_CONDITIONAL(XMLSEC_MANS, test "z$XMLSEC_MANS" = "z1")
2115AC_SUBST(XMLSEC_MANS)
2116
2117dnl ==========================================================================
2118dnl See do we need docs
2119dnl ==========================================================================
2120AC_MSG_CHECKING(for docs)
2121AC_ARG_ENABLE([docs], [AC_HELP_STRING([--enable-docs], [enable documentation (yes)])])
2122if test "z$enable_docs" = "zno" ; then
2123    XMLSEC_DOCS="0"
2124    AC_MSG_RESULT([disabled])
2125else
2126    XMLSEC_DOCS="1"
2127    AC_MSG_RESULT([yes])
2128fi
2129AM_CONDITIONAL(XMLSEC_DOCS, test "z$XMLSEC_DOCS" = "z1")
2130AC_SUBST(XMLSEC_DOCS)
2131
2132dnl ==========================================================================
2133dnl See if we need apps
2134dnl ==========================================================================
2135AC_MSG_CHECKING(for apps)
2136AC_ARG_ENABLE([apps], [AC_HELP_STRING([--enable-apps], [enable applications (yes)])])
2137if test "z$enable_apps" = "zno" ; then
2138    XMLSEC_APPS="0"
2139    AC_MSG_RESULT([disabled])
2140else
2141    XMLSEC_APPS="1"
2142    AC_MSG_RESULT([yes])
2143fi
2144AM_CONDITIONAL(XMLSEC_APPS, test "z$XMLSEC_APPS" = "z1")
2145AC_SUBST(XMLSEC_APPS)
2146
2147dnl ==========================================================================
2148dnl Static linking (implies enable_crypto_dl="no")
2149dnl ==========================================================================
2150XMLSEC_STATIC_BINARIES=""
2151AC_MSG_CHECKING(for static linking)
2152AC_ARG_ENABLE([static_linking], [AC_HELP_STRING([--enable-static-linking], [enable static linking (no)])])
2153if test "z$enable_static_linking" = "zyes" ; then
2154    XMLSEC_STATIC_BINARIES="-static"
2155    XMLSEC_APP_DEFINES="$XMLSEC_APP_DEFINES -DXMLSEC_STATIC=1"
2156    enable_crypto_dl="no"
2157    AC_MSG_RESULT([yes])
2158else
2159    AC_MSG_RESULT([disabled])
2160fi
2161AC_SUBST(XMLSEC_STATIC_BINARIES)
2162
2163dnl ==========================================================================
2164dnl check if we need dynamic loading support
2165dnl ==========================================================================
2166XMLSEC_DL_INCLUDES=""
2167XMLSEC_DL_LIBS=""
2168AC_ARG_ENABLE([crypto_dl], [AC_HELP_STRING([--enable-crypto-dl], [enable dynamic loading support for xmlsec-crypto libraries (yes)])])
2169if test "z$enable_crypto_dl" = "zno" ; then
2170    AC_MSG_CHECKING(for xmlsec-crypto dynamic loading support)
2171    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_CRYPTO_DYNAMIC_LOADING=1"
2172    XMLSEC_NO_CRYPTO_DYNAMIC_LOADING="1"
2173    AC_MSG_RESULT([disabled])
2174else
2175    AC_CHECK_HEADER([ltdl.h], [
2176       XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_DL_LIBLTDL=1"
2177       AC_CHECK_LIB(
2178    	    [ltdl],
2179    	    [lt_dlopenext],
2180    	    [LIBLTDL=-lltdl],
2181    	    [LIBLTDL=]
2182        )
2183    ], [
2184        LIBLTDL=
2185    ])
2186
2187    AC_MSG_CHECKING(for xmlsec-crypto dynamic loading support)
2188    if test "z$LIBLTDL" != "z" ; then
2189       XMLSEC_DL_INCLUDES="$INCLTDL"
2190       XMLSEC_DL_LIBS="$LIBLTDL"
2191       XMLSEC_NO_CRYPTO_DYNAMIC_LOADING="0"
2192	   AC_MSG_RESULT([yes])
2193    else
2194	   AC_MSG_ERROR([libltdl is required for xmlsec-crypto dynamic loading])
2195    fi
2196fi
2197AM_CONDITIONAL(XMLSEC_NO_CRYPTO_DYNAMIC_LOADING, test "z$XMLSEC_NO_CRYPTO_DYNAMIC_LOADING" = "z1")
2198AC_SUBST(XMLSEC_NO_CRYPTO_DYNAMIC_LOADING)
2199AC_SUBST(XMLSEC_DL_INCLUDES)
2200AC_SUBST(XMLSEC_DL_LIBS)
2201
2202dnl ==========================================================================
2203dnl check if we need dynamic loading in the xmlsec apps
2204dnl ==========================================================================
2205AC_MSG_CHECKING(for xmlsec-crypto dynamic loading support in command line tool)
2206AC_ARG_ENABLE([apps_crypto_dl], [AC_HELP_STRING([--enable-apps-crypto-dl], [ enable dynamic loading support for xmlsec-crypto libraries in xmlsec command line tool (yes)])])
2207if test "z$enable_apps_crypto_dl" = "z" ; then
2208    enable_apps_crypto_dl="$enable_crypto_dl"
2209fi
2210if test "z$enable_apps_crypto_dl" = "zno" ; then
2211    XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING="1"
2212    AC_MSG_RESULT([disabled])
2213elif test "z$enable_crypto_dl" = "zno" ; then
2214    AC_MSG_RESULT([disabled])
2215    AC_MSG_ERROR(xmlsec-crypto libraries dynamic loading support in xmlsec command line tool is requested but no dynamic loading in xmlsec itself is disabled)
2216else
2217    XMLSEC_APP_DEFINES="$XMLSEC_APP_DEFINES -DXMLSEC_CRYPTO_DYNAMIC_LOADING=1"
2218    XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING="0"
2219    AC_MSG_RESULT([yes])
2220fi
2221AM_CONDITIONAL(XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING,
2222    test "z$XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING" = "z1")
2223AC_SUBST(XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING)
2224
2225dnl ==========================================================================
2226dnl Where do we want to install docs
2227dnl ==========================================================================
2228AC_MSG_CHECKING(for docs folder)
2229AC_ARG_WITH([html-dir], [AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs])])
2230if test "z$with_html_dir" != "z" ; then
2231    XMLSEC_DOCDIR="$with_html_dir"
2232elif test "z$htmldir" != "z" ; then
2233    XMLSEC_DOCDIR='$(htmldir)'
2234else
2235    XMLSEC_DOCDIR='$(datadir)/doc/xmlsec1'
2236fi
2237
2238AC_MSG_RESULT([$XMLSEC_DOCDIR])
2239AC_SUBST(XMLSEC_DOCDIR)
2240
2241dnl ==========================================================================
2242dnl See do we need Simple Keys Manager
2243dnl ==========================================================================
2244AC_MSG_CHECKING(for Simple Keys Manager testing)
2245AC_ARG_ENABLE([skm], [AC_HELP_STRING([--enable-skm], [enable Simple Keys Manager testing (yes)])])
2246if test "z$enable_skm" = "zno" ; then
2247    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SKM_TEST=1"
2248    AC_MSG_RESULT([disabled])
2249else
2250    AC_MSG_RESULT([yes])
2251fi
2252
2253dnl ==========================================================================
2254dnl See do we need templates tests
2255dnl ==========================================================================
2256AC_MSG_CHECKING(for templates testing)
2257AC_ARG_ENABLE([tmpl_tests], [AC_HELP_STRING([--enable-tmpl-tests], [enable templates testing in xmlsec utility (yes)])])
2258if test "z$enable_tmpl_tests" = "zyes" ; then
2259    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_TMPL_TEST=1"
2260    AC_MSG_RESULT([disabled])
2261else
2262    AC_MSG_RESULT([yes])
2263fi
2264
2265dnl ==========================================================================
2266dnl Debug
2267dnl ==========================================================================
2268AC_MSG_CHECKING(for debugging)
2269AC_ARG_ENABLE([debugging], [AC_HELP_STRING([--enable-debugging], [enable debugging compilation flags (no)])])
2270if test "z$enable_debugging" = "zyes" ; then
2271    CFLAGS="$CFLAGS -g"
2272    AC_MSG_RESULT([yes])
2273else
2274    AC_MSG_RESULT([disabled])
2275fi
2276
2277dnl ==========================================================================
2278dnl Warnings as errors
2279dnl ==========================================================================
2280AC_MSG_CHECKING(for warnings as errors)
2281AC_ARG_ENABLE([werror], [AC_HELP_STRING([--enable-werror], [handle warnings as errors (no)])])
2282if test "z$enable_werror" = "zyes" ; then
2283    CFLAGS="$CFLAGS -Werror"
2284    AC_MSG_RESULT([yes])
2285else
2286    AC_MSG_RESULT([disabled])
2287fi
2288
2289dnl ==========================================================================
2290dnl Profiling
2291dnl ==========================================================================
2292AC_MSG_CHECKING(for profiling)
2293AC_ARG_ENABLE([profiling], [AC_HELP_STRING([--enable-profiling], [enable profiling compilation flags (no)])])
2294if test "z$enable_profiling" = "zyes" ; then
2295    CFLAGS="$CFLAGS -pg"
2296    AC_MSG_RESULT([yes])
2297else
2298    AC_MSG_RESULT([disabled])
2299fi
2300
2301dnl ==========================================================================
2302dnl Pedantic compilation
2303dnl ==========================================================================
2304AC_MSG_CHECKING(for pedantic)
2305AC_ARG_ENABLE([pedantic], [AC_HELP_STRING([--enable-pedantic], [enable pedantic compilation flags (no)])])
2306if test "z$enable_pedantic" = "zyes" ; then
2307    dnl CFLAGS="$CFLAGS -pedantic -Wall -std=c99 -W -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wredundant-decls"
2308    CFLAGS="$CFLAGS -O -pedantic -Wall -std=c99 -fno-inline -W -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wmissing-prototypes -Wnested-externs -Wredundant-decls"
2309    AC_MSG_RESULT([yes])
2310else
2311    AC_MSG_RESULT([disabled])
2312fi
2313
2314dnl ==========================================================================
2315dnl Final steps: xmlsec config
2316dnl ==========================================================================
2317XMLSEC_CORE_CFLAGS="$XMLSEC_DEFINES -I${includedir}/xmlsec1  $XMLSEC_DL_INCLUDES"
2318XMLSEC_CORE_LIBS="-lxmlsec1 $XMLSEC_DL_LIBS "
2319AC_SUBST(XMLSEC_CORE_CFLAGS)
2320AC_SUBST(XMLSEC_CORE_LIBS)
2321
2322dnl used in xmlsecConf.sh*
2323XMLSEC_LIBDIR="${libdir}"
2324AC_SUBST(XMLSEC_LIBDIR)
2325
2326XMLSEC_OPENSSL_CFLAGS="$XMLSEC_CORE_CFLAGS $OPENSSL_CFLAGS"
2327XMLSEC_OPENSSL_LIBS="-L${libdir} -l$OPENSSL_CRYPTO_LIB $XMLSEC_CORE_LIBS $OPENSSL_LIBS"
2328AC_SUBST(XMLSEC_OPENSSL_CFLAGS)
2329AC_SUBST(XMLSEC_OPENSSL_LIBS)
2330
2331XMLSEC_GCRYPT_CFLAGS="$XMLSEC_CORE_CFLAGS $GCRYPT_CFLAGS"
2332XMLSEC_GCRYPT_LIBS="-L${libdir} -l$GCRYPT_CRYPTO_LIB $XMLSEC_CORE_LIBS $GCRYPT_LIBS"
2333AC_SUBST(XMLSEC_GCRYPT_CFLAGS)
2334AC_SUBST(XMLSEC_GCRYPT_LIBS)
2335
2336# xmlsec-gnutls is using xmlsec-gcrypt
2337XMLSEC_GNUTLS_CFLAGS="$XMLSEC_CORE_CFLAGS $GNUTLS_CFLAGS"
2338XMLSEC_GNUTLS_LIBS="-L${libdir} -l$GNUTLS_CRYPTO_LIB -l$GCRYPT_CRYPTO_LIB $XMLSEC_CORE_LIBS $GNUTLS_LIBS"
2339AC_SUBST(XMLSEC_GNUTLS_CFLAGS)
2340AC_SUBST(XMLSEC_GNUTLS_LIBS)
2341
2342XMLSEC_NSS_CFLAGS="$XMLSEC_CORE_CFLAGS $NSS_CFLAGS"
2343XMLSEC_NSS_LIBS="-L${libdir} -l$NSS_CRYPTO_LIB $XMLSEC_CORE_LIBS $NSS_LIBS"
2344AC_SUBST(XMLSEC_NSS_CFLAGS)
2345AC_SUBST(XMLSEC_NSS_LIBS)
2346
2347dnl No we will not generate pkg-config file for mscrypto !
2348dnl XMLSEC_MSCRYPTO_CFLAGS="$XMLSEC_CORE_CFLAGS $MSCRYPTO_CFLAGS"
2349dnl XMLSEC_MSCRYPTO_LIBS="-L${libdir} -l$MSCRYPTO_CRYPTO_LIB $XMLSEC_CORE_LIBS $MSCRYPTO_LIBS";;
2350dnl AC_SUBST(XMLSEC_MSCRYPTO_CFLAGS)
2351dnl AC_SUBST(XMLSEC_MSCRYPTO_LIBS)
2352
2353dnl No we will not generate pkg-config file for mscng.
2354dnl XMLSEC_MSCNG_CFLAGS="$XMLSEC_CORE_CFLAGS $MSCNG_CFLAGS"
2355dnl XMLSEC_MSCNG_LIBS="-L${libdir} -l$MSCNG_CRYPTO_LIB $XMLSEC_CORE_LIBS $MSCNG_LIBS";;
2356dnl AC_SUBST(XMLSEC_MSCNG_CFLAGS)
2357dnl AC_SUBST(XMLSEC_MSCNG_LIBS)
2358
2359XMLSEC_CFLAGS="$XMLSEC_CORE_CFLAGS $LIBXML_CFLAGS $LIBXSLT_CFLAGS $XMLSEC_CRYPTO_CFLAGS"
2360XMLSEC_LIBS="-L${libdir} -l$XMLSEC_CRYPTO_LIB $XMLSEC_CORE_LIBS $LIBXML_LIBS $LIBXSLT_LIBS $XMLSEC_CRYPTO_LIBS"
2361AC_SUBST(XMLSEC_CFLAGS)
2362AC_SUBST(XMLSEC_LIBS)
2363
2364AC_SUBST(XMLSEC_DEFINES)
2365AC_SUBST(XMLSEC_APP_DEFINES)
2366AC_SUBST(CFLAGS)
2367AC_SUBST(CPPFLAGS)
2368AC_SUBST(LDFLAGS)
2369AC_SUBST(XMLSEC_EXTRA_LDFLAGS)
2370AC_SUBST(XMLSEC_CRYPTO_EXTRA_LDFLAGS)
2371
2372AC_SUBST(XMLSEC_DEFAULT_CRYPTO)
2373AC_SUBST(XMLSEC_CRYPTO_LIST)
2374AC_SUBST(XMLSEC_CRYPTO_DISABLED_LIST)
2375AC_SUBST(XMLSEC_CRYPTO_LIB)
2376AC_SUBST(XMLSEC_CRYPTO_CFLAGS)
2377AC_SUBST(XMLSEC_CRYPTO_LIBS)
2378
2379XMLSEC_CRYPTO_PC_FILES_LIST=""
2380for i in $XMLSEC_CRYPTO_LIST ; do
2381    dnl skip pkg-config file for mscrypto/mscng
2382    test x$i = xmscrypto && continue
2383    test x$i = xmscng && continue
2384    XMLSEC_CRYPTO_PC_FILES_LIST="$XMLSEC_CRYPTO_PC_FILES_LIST $XMLSEC_PACKAGE-$i.pc"
2385done
2386AC_SUBST(XMLSEC_CRYPTO_PC_FILES_LIST)
2387
2388dnl ==========================================================================
2389dnl Writing result files
2390dnl ==========================================================================
2391if test "z$XMLSEC_NO_OPENSSL" != "z1" ; then
2392AC_CONFIG_FILES([include/xmlsec/openssl/Makefile src/openssl/Makefile])
2393fi
2394
2395if test "z$XMLSEC_NO_GNUTLS" != "z1" ; then
2396AC_CONFIG_FILES([include/xmlsec/gnutls/Makefile src/gnutls/Makefile])
2397fi
2398
2399if test "z$XMLSEC_NO_GCRYPT" != "z1" ; then
2400AC_CONFIG_FILES([include/xmlsec/gcrypt/Makefile src/gcrypt/Makefile])
2401fi
2402
2403if test "z$XMLSEC_NO_NSS" != "z1" ; then
2404AC_CONFIG_FILES([include/xmlsec/nss/Makefile src/nss/Makefile])
2405fi
2406
2407if test "z$XMLSEC_NO_MSCRYPTO" != "z1" ; then
2408AC_CONFIG_FILES([include/xmlsec/mscrypto/Makefile src/mscrypto/Makefile])
2409fi
2410
2411if test "z$XMLSEC_NO_MSCNG" != "z1" ; then
2412AC_CONFIG_FILES([include/xmlsec/mscng/Makefile src/mscng/Makefile])
2413fi
2414
2415if test "z$XMLSEC_NO_CRYPTO_DYNAMIC_LOADING" = "z1" ; then
2416(rm -f xmlsec1.pc && $LN_S xmlsec1-$XMLSEC_DEFAULT_CRYPTO.pc xmlsec1.pc)
2417else
2418AC_CONFIG_FILES([xmlsec1.pc:xmlsec.pc.in])
2419fi
2420
2421AC_CONFIG_FILES([
2422include/xmlsec/version.h
2423Makefile
2424include/Makefile
2425include/xmlsec/Makefile
2426src/Makefile
2427apps/Makefile
2428docs/Makefile
2429docs/api/Makefile
2430man/Makefile
2431
2432xmlsec1-openssl.pc:xmlsec-openssl.pc.in
2433xmlsec1-gnutls.pc:xmlsec-gnutls.pc.in
2434xmlsec1-gcrypt.pc:xmlsec-gcrypt.pc.in
2435xmlsec1-nss.pc:xmlsec-nss.pc.in
2436xmlsec1.spec:xmlsec.spec.in
2437])
2438AC_CONFIG_FILES([xmlsec1Conf.sh:xmlsecConf.sh.in], [chmod +x xmlsec1Conf.sh])
2439AC_CONFIG_FILES([xmlsec1-config:xmlsec-config.in], [chmod +x xmlsec1-config])
2440AC_OUTPUT
2441
2442