1# GnuTLS LIBGNUTLS_CHECK_CONFIG ([DEFAULT-ACTION])
2# ----------------------------------------------------------
3# Derived from libssh2.m4 written by
4#    Alexander Vladishev                      Oct-26-2009
5#    Dmitry Borovikov                         Feb-13-2010
6#
7# Checks for GnuTLS library libgnutls.  DEFAULT-ACTION is the string
8# yes or no to specify whether to default to --with-gnutls or
9# --without-gnutls. If not supplied, DEFAULT-ACTION is no.
10#
11# This macro #defines HAVE_GNUTLS if a required header files are
12# found, and sets @GNUTLS_LDFLAGS@, @GNUTLS_CFLAGS@ and @GNUTLS_LIBS@
13# to the necessary values.
14#
15# Users may override the detected values by doing something like:
16# GNUTLS_LIBS="-lgnutls" GNUTLS_CFLAGS="-I/usr/myinclude" ./configure
17#
18# This macro is distributed in the hope that it will be useful,
19# but WITHOUT ANY WARRANTY; without even the implied warranty of
20# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21
22AC_DEFUN([LIBGNUTLS_TRY_LINK],
23[
24AC_TRY_LINK(
25[
26#include <gnutls/gnutls.h>
27],
28[
29	gnutls_global_init();
30],
31found_gnutls="yes",)
32])dnl
33
34AC_DEFUN([LIBGNUTLS_ACCEPT_VERSION],
35[
36	# Zabbix minimal supported version of libgnutls:
37	minimal_gnutls_version_major=3
38	minimal_gnutls_version_minor=1
39	minimal_gnutls_version_patch=18
40
41	# get version
42	found_gnutls_version_major=`cat $1 | $EGREP \#define.*GNUTLS_VERSION_MAJOR | $AWK '{print @S|@3;}'`
43	found_gnutls_version_minor=`cat $1 | $EGREP \#define.*GNUTLS_VERSION_MINOR | $AWK '{print @S|@3;}'`
44	found_gnutls_version_patch=`cat $1 | $EGREP \#define.*GNUTLS_VERSION_PATCH | $AWK '{print @S|@3;}'`
45
46	if test $((found_gnutls_version_major)) -gt $((minimal_gnutls_version_major)); then
47		accept_gnutls_version="yes"
48	elif test $((found_gnutls_version_major)) -lt $((minimal_gnutls_version_major)); then
49		accept_gnutls_version="no"
50	elif test $((found_gnutls_version_minor)) -gt $((minimal_gnutls_version_minor)); then
51		accept_gnutls_version="yes"
52	elif test $((found_gnutls_version_minor)) -lt $((minimal_gnutls_version_minor)); then
53		accept_gnutls_version="no"
54	elif test $((found_gnutls_version_patch)) -ge $((minimal_gnutls_version_patch)); then
55		accept_gnutls_version="yes"
56	else
57		accept_gnutls_version="no"
58	fi;
59])dnl
60
61AC_DEFUN([LIBGNUTLS_CHECK_CONFIG],
62[
63  AC_ARG_WITH(gnutls,[
64If you want to use encryption provided by GnuTLS library:
65AC_HELP_STRING([--with-gnutls@<:@=DIR@:>@],[use GnuTLS package @<:@default=no@:>@, DIR is the libgnutls install directory.])],
66    [
67	if test "$withval" = "no"; then
68	    want_gnutls="no"
69	    _libgnutls_dir="no"
70	elif test "$withval" = "yes"; then
71	    want_gnutls="yes"
72	    _libgnutls_dir="no"
73	else
74	    want_gnutls="yes"
75	    _libgnutls_dir=$withval
76	fi
77	accept_gnutls_version="no"
78    ],[want_gnutls=ifelse([$1],,[no],[$1])]
79  )
80
81  if test "x$want_gnutls" = "xyes"; then
82     AC_MSG_CHECKING(for GnuTLS support)
83     if test "x$_libgnutls_dir" = "xno"; then
84       if test -f /usr/local/include/gnutls/gnutls.h; then
85         GNUTLS_CFLAGS=-I/usr/local/include
86         GNUTLS_LDFLAGS=-L/usr/local/lib
87         GNUTLS_LIBS="-lgnutls"
88         found_gnutls="yes"
89         LIBGNUTLS_ACCEPT_VERSION([/usr/local/include/gnutls/gnutls.h])
90       elif test -f /usr/include/gnutls/gnutls.h; then
91         GNUTLS_CFLAGS=-I/usr/include
92         GNUTLS_LDFLAGS=-L/usr/lib
93         GNUTLS_LIBS="-lgnutls"
94         found_gnutls="yes"
95         LIBGNUTLS_ACCEPT_VERSION([/usr/include/gnutls/gnutls.h])
96       else #libraries are not found in default directories
97         found_gnutls="no"
98         AC_MSG_RESULT(no)
99       fi
100     else
101       if test -f $_libgnutls_dir/include/gnutls/gnutls.h; then
102         GNUTLS_CFLAGS=-I$_libgnutls_dir/include
103         GNUTLS_LDFLAGS=-L$_libgnutls_dir/lib
104         GNUTLS_LIBS="-lgnutls"
105         found_gnutls="yes"
106         LIBGNUTLS_ACCEPT_VERSION([$_libgnutls_dir/include/gnutls/gnutls.h])
107       else
108         found_gnutls="no"
109         AC_MSG_RESULT(no)
110       fi
111     fi
112  fi
113
114  if test "x$found_gnutls" = "xyes"; then
115    am_save_cflags="$CFLAGS"
116    am_save_ldflags="$LDFLAGS"
117    am_save_libs="$LIBS"
118
119    CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
120    LDFLAGS="$LDFLAGS $GNUTLS_LDFLAGS"
121    LIBS="$LIBS $GNUTLS_LIBS"
122
123    found_gnutls="no"
124    LIBGNUTLS_TRY_LINK([no])
125
126    CFLAGS="$am_save_cflags"
127    LDFLAGS="$am_save_ldflags"
128    LIBS="$am_save_libs"
129
130    if test "x$found_gnutls" = "xyes"; then
131      AC_DEFINE([HAVE_GNUTLS], 1, [Define to 1 if you have the 'libgnutls' library (-lgnutls)])
132      AC_MSG_RESULT(yes)
133    else
134      AC_MSG_RESULT(no)
135      GNUTLS_CFLAGS=""
136      GNUTLS_LDFLAGS=""
137      GNUTLS_LIBS=""
138    fi
139  fi
140
141  AC_SUBST(GNUTLS_CFLAGS)
142  AC_SUBST(GNUTLS_LDFLAGS)
143  AC_SUBST(GNUTLS_LIBS)
144
145])dnl
146