Fixes for Heimdal (macOS) builds from Stefan.
[mech_eap.git] / acinclude.m4
1 dnl Based on the one from the Boinc project by Reinhard
2
3 AC_DEFUN([AX_CHECK_WINDOWS],
4 [AC_MSG_CHECKING(for windows)
5 target_windows="no"
6 AC_CHECK_HEADER(windows.h,[target_windows="yes"],[target_windows="no"])
7 AC_MSG_RESULT($target_windows)
8 AM_CONDITIONAL(TARGET_WINDOWS,test "x$target_windows" = "xyes")
9 ])dnl
10
11 AC_DEFUN([AX_CHECK_KRB5],
12 [AC_MSG_CHECKING(for GSS-API and Kerberos implementation)
13 KRB5_DIR=
14 found_krb5="no"
15 AC_ARG_WITH(krb5,
16     AC_HELP_STRING([--with-krb5],
17        [Use krb5 (in specified installation directory)]),
18     [check_krb5_dir="$withval"],
19     [check_krb5_dir=])
20 for dir in $check_krb5_dir $prefix /usr/local /usr ; do
21    krb5dir="$dir"
22    if test -x "$dir/bin/krb5-config"; then
23      found_krb5="yes";
24      if test "x$target_windows" = "xyes"; then
25         KRB5_CFLAGS=-I"$check_krb5_dir/include";
26         KRB5_LDFLAGS="-L$check_krb5_dir/lib/";
27         KRB5_LIBS="-lkrb5_32 -lgssapi32";
28         COMPILE_ET="$check_krb5_dir/bin/compile_et";
29         AC_MSG_RESULT([yes])
30      else
31         KRB5_CFLAGS=`$dir/bin/krb5-config gssapi --cflags`;
32         KRB5_LDFLAGS="-L$dir/lib";
33         KRB5_LIBS=`$dir/bin/krb5-config gssapi --libs`
34 AC_MSG_RESULT([yes])
35         AC_PATH_PROG(COMPILE_ET, [compile_et], [compile_et], [$dir/bin$PATH_SEPARATOr])
36      fi
37      break;
38    fi
39 done
40 if test x_$found_krb5 != x_yes; then
41    AC_MSG_RESULT($found_krb5)
42    AC_MSG_ERROR([
43 ----------------------------------------------------------------------
44   Cannot find GSS-API/Kerberos libraries.
45
46   Please install MIT or Heimdal or specify installation directory with
47   --with-krb5=(dir).
48 ----------------------------------------------------------------------
49 ])
50 else
51         printf "Kerberos found in $krb5dir\n";
52         AC_SUBST(KRB5_CFLAGS)
53         AC_SUBST(KRB5_LDFLAGS)
54         AC_SUBST(KRB5_LIBS)
55         AC_SUBST(COMPILE_ET)
56         AC_CHECK_LIB(krb5, GSS_C_NT_COMPOSITE_EXPORT, [AC_DEFINE_UNQUOTED([HAVE_GSS_C_NT_COMPOSITE_EXPORT], 1, [Define if GSS-API library supports recent naming extensions draft])], [], "$KRB5_LIBS")
57         AC_CHECK_LIB(krb5, gss_inquire_attrs_for_mech, [AC_DEFINE_UNQUOTED([HAVE_GSS_INQUIRE_ATTRS_FOR_MECH], 1, [Define if GSS-API library supports RFC 5587])], [], "$KRB5_LIBS")
58         AC_CHECK_LIB(krb5, gss_krb5_import_cred, [AC_DEFINE_UNQUOTED([HAVE_GSS_KRB5_IMPORT_CRED], 1, [Define if GSS-API library supports gss_krb5_import_cred])], [], "$KRB5_LIBS")
59   AC_CHECK_LIB(krb5, heimdal_version, [AC_DEFINE_UNQUOTED([HAVE_HEIMDAL_VERSION], 1, [Define if building against Heimdal Kerberos implementation])  heimdal=yes], [heimdal=no], "$KRB5_LIBS")
60   AM_CONDITIONAL(HEIMDAL, test "x$heimdal" != "xno")
61   AC_CHECK_TYPE(gss_const_name_t, [AC_DEFINE([MECHEAP_GSS_CONST_NAME_T_IS_POINTER], 1, [Define if gss_const_name_t is a pointer. Broken krb5 10.x headers define it as a struct.])], [], [[#include <gssapi/gssapi.h>"]])
62 fi
63 ])dnl
64
65 AC_DEFUN([AX_CHECK_EAP],
66 [AC_MSG_CHECKING(for EAP implementation)
67 EAP_DIR=
68 found_eap="no"
69 AC_ARG_WITH(eap,
70     AC_HELP_STRING([--with-eap],
71        [Use eap (in specified installation directory)]),
72     [check_eap_dir="$withval"],
73     [check_eap_dir=])
74 for dir in $check_eap_dir $prefix /usr /usr/local ../libeap ; do
75    eapdir="$dir"
76    if test -f "$dir/src/eap_peer/eap.h"; then
77      found_eap="yes";
78      EAP_DIR="${eapdir}"
79      EAP_CFLAGS="-I$eapdir/src/common -I$eapdir/src -I$eapdir/src/utils";
80      break;
81    fi
82 done
83 AC_MSG_RESULT($found_eap)
84 if test x_$found_eap != x_yes; then
85    AC_MSG_ERROR([
86 ----------------------------------------------------------------------
87   Cannot find EAP libraries.
88
89   Please install wpa_supplicant or specify installation directory with
90   --with-eap=(dir).
91 ----------------------------------------------------------------------
92 ])
93 else
94         printf "EAP found in $eapdir\n";
95         EAP_CFLAGS="$EAP_CFLAGS \
96 -DEAP_TLS \
97 -DEAP_PEAP \
98 -DEAP_TTLS \
99 -DEAP_MD5 \
100 -DEAP_MSCHAPv2 \
101 -DEAP_GTC \
102 -DEAP_OTP \
103 -DEAP_LEAP \
104 -DEAP_PSK \
105 -DEAP_PAX \
106 -DEAP_SAKE \
107 -DEAP_GPSK \
108 -DEAP_GPSK_SHA256 \
109 -DEAP_SERVER_IDENTITY \
110 -DEAP_SERVER_TLS \
111 -DEAP_SERVER_PEAP \
112 -DEAP_SERVER_TTLS \
113 -DEAP_SERVER_MD5 \
114 -DEAP_SERVER_MSCHAPV2 \
115 -DEAP_SERVER_GTC \
116 -DEAP_SERVER_PSK \
117 -DEAP_SERVER_PAX \
118 -DEAP_SERVER_SAKE \
119 -DEAP_SERVER_GPSK \
120 -DEAP_SERVER_GPSK_SHA256 \
121 -DIEEE8021X_EAPOL";
122         EAP_LIBS="-leap -lutils -lcrypto -ltls -lssl";
123         EAP_LDFLAGS="-L$eapdir/eap_example -L$eapdir/src/utils -L$eapdir/src/crypto -L$eapdir/src/tls";
124         AC_SUBST(EAP_CFLAGS)
125         AC_SUBST(EAP_LDFLAGS)
126         AC_SUBST(EAP_LIBS)
127 fi
128 ])dnl
129
130 AC_DEFUN([AX_CHECK_SHIBSP],
131 [AC_MSG_CHECKING(for Shibboleth implementation)
132 SHIBSP_DIR=
133 found_shibsp="no"
134 AC_ARG_WITH(shibsp,
135     AC_HELP_STRING([--with-shibsp],
136        [Use shibspboleth (in specified installation directory)]),
137     [check_shibsp_dir="$withval"],
138     [check_shibsp_dir=])
139 for dir in $check_shibsp_dir $prefix /usr /usr/local ; do
140    shibspdir="$dir"
141    if test -f "$dir/include/shibsp/SPConfig.h"; then
142      found_shibsp="yes";
143      SHIBSP_DIR="${shibspdir}"
144      SHIBSP_CXXFLAGS="-I$shibspdir/include";
145      break;
146    fi
147 done
148 AC_MSG_RESULT($found_shibsp)
149 if test x_$found_shibsp != x_yes; then
150    AC_MSG_ERROR([
151 ----------------------------------------------------------------------
152   Cannot find Shibboleth libraries.
153
154   Please install Shibboleth or specify installation directory with
155   --with-shibsp=(dir).
156 ----------------------------------------------------------------------
157 ])
158 else
159         printf "Shibboleth found in $shibspdir\n";
160         SHIBSP_LIBS="-lshibsp -lsaml -lxml-security-c -lxmltooling -lxerces-c";
161         SHIBSP_LDFLAGS="-L$shibspdir/lib";
162         AC_SUBST(SHIBSP_CXXFLAGS)
163         AC_SUBST(SHIBSP_LDFLAGS)
164         AC_SUBST(SHIBSP_LIBS)
165         AC_DEFINE_UNQUOTED([HAVE_SHIBSP], 1, [Define is Shibboleth SP is available])
166 fi
167 ])dnl
168
169 AC_DEFUN([AX_CHECK_SHIBRESOLVER],
170 [AC_MSG_CHECKING(for Shibboleth resolver implementation)
171 SHIBRESOLVER_DIR=
172 found_shibresolver="no"
173 AC_ARG_WITH(shibresolver,
174     AC_HELP_STRING([--with-shibresolver],
175        [Use Shibboleth resolver (in specified installation directory)]),
176     [check_shibresolver_dir="$withval"],
177     [check_shibresolver_dir=])
178 if test x_$check_shibresolver_dir != x_no; then
179 for dir in $check_shibresolver_dir $prefix /usr /usr/local ; do
180    shibresolverdir="$dir"
181    if test -f "$dir/include/shibresolver/resolver.h"; then
182      found_shibresolver="yes";
183      SHIBRESOLVER_DIR="${shibresolverdir}"
184      SHIBRESOLVER_CXXFLAGS="-I$shibresolverdir/include";
185      break;
186    fi
187 done
188 fi
189 AC_MSG_RESULT($found_shibresolver)
190 if test x_$check_shibresolver_dir != x_no; then
191 if test x_$found_shibresolver != x_yes; then
192    AC_MSG_WARN([
193 ----------------------------------------------------------------------
194   Cannot find Shibboleth resolver libraries, building without
195   Shibboleth support.
196
197   Please install Shibboleth or specify installation directory with
198   --with-shibresolver=(dir).
199 ----------------------------------------------------------------------
200 ])
201 else
202         printf "Shibboleth resolver found in $shibresolverdir\n";
203         SHIBRESOLVER_LIBS="-lshibresolver";
204         SHIBRESOLVER_LDFLAGS="-L$shibresolverdir/lib";
205         AC_SUBST(SHIBRESOLVER_CXXFLAGS)
206         AC_SUBST(SHIBRESOLVER_LDFLAGS)
207         AC_SUBST(SHIBRESOLVER_LIBS)
208         AC_DEFINE_UNQUOTED([HAVE_SHIBRESOLVER], 1, [Define is Shibboleth resolver is available])
209 fi
210 fi
211 ])dnl
212
213 AC_DEFUN([AX_CHECK_OPENSAML],
214 [AC_MSG_CHECKING(for OpenSAML implementation)
215 OPENSAML_DIR=
216 found_opensaml="no"
217 AC_ARG_WITH(opensaml,
218     AC_HELP_STRING([--with-opensaml],
219        [Use OpenSAML (in specified installation directory)]),
220     [check_opensaml_dir="$withval"],
221     [check_opensaml_dir=])
222 if test x_$check_opensaml_dir != x_no; then
223 for dir in $check_opensaml_dir $prefix /usr /usr/local ; do
224    opensamldir="$dir"
225    if test -f "$dir/include/saml/Assertion.h"; then
226      found_opensaml="yes";
227      OPENSAML_DIR="${opensamldir}"
228      OPENSAML_CXXFLAGS="-I$opensamldir/include";
229      break;
230    fi
231 done
232 fi
233 AC_MSG_RESULT($found_opensaml)
234 if test x_$check_opensaml_dir != x_no; then
235 if test x_$found_opensaml != x_yes; then
236    AC_MSG_WARN([
237 ----------------------------------------------------------------------
238   Cannot find OpenSAML libraries, building without OpenSAML support.
239
240   Please install OpenSAML or specify installation directory with
241   --with-opensaml=(dir).
242 ----------------------------------------------------------------------
243 ])
244 else
245         printf "OpenSAML found in $opensamldir\n";
246         OPENSAML_LIBS="-lsaml -lxml-security-c -lxmltooling -lxerces-c";
247         OPENSAML_LDFLAGS="-L$opensamldir/lib";
248         AC_SUBST(OPENSAML_CXXFLAGS)
249         AC_SUBST(OPENSAML_LDFLAGS)
250         AC_SUBST(OPENSAML_LIBS)
251         AC_DEFINE_UNQUOTED([HAVE_OPENSAML], 1, [Define is OpenSAML is available])
252 fi
253 fi
254 ])dnl
255
256 AC_DEFUN([AX_CHECK_OPENSSL],
257 [AC_MSG_CHECKING(for OpenSSL)
258 OPENSSL_DIR=
259 found_openssl="no"
260 AC_ARG_WITH(openssl,
261     AC_HELP_STRING([--with-openssl],
262        [Use OpenSSL (in specified installation directory)]),
263     [check_openssl_dir="$withval"],
264     [check_openssl_dir=])
265 for dir in $check_openssl_dir $prefix /usr /usr/local ; do
266    openssldir="$dir"
267    if test -f "$dir/include/openssl/opensslv.h"; then
268      found_openssl="yes";
269      OPENSSL_DIR="${openssldir}"
270      OPENSSL_CFLAGS="-I$openssldir/include";
271      break;
272    fi
273 done
274 AC_MSG_RESULT($found_openssl)
275 if test x_$found_openssl != x_yes; then
276    AC_MSG_ERROR([
277 ----------------------------------------------------------------------
278   Cannot find OpenSSL libraries.
279
280   Please install libssl or specify installation directory with
281   --with-openssl=(dir).
282 ----------------------------------------------------------------------
283 ])
284 else
285         printf "OpenSSL found in $openssldir\n";
286         OPENSSL_LIBS="-lssl -lcrypto";
287         OPENSSL_LDFLAGS="-L$openssldir/lib";
288         AC_SUBST(OPENSSL_CFLAGS)
289         AC_SUBST(OPENSSL_LDFLAGS)
290         AC_SUBST(OPENSSL_LIBS)
291 fi
292 ])dnl
293
294 AC_DEFUN([AX_CHECK_RADSEC],
295 [AC_MSG_CHECKING(for radsec)
296 RADSEC_DIR=
297 found_radsec="no"
298 AC_ARG_WITH(radsec,
299     AC_HELP_STRING([--with-radsec],
300        [Use radsec (in specified installation directory)]),
301     [check_radsec_dir="$withval"],
302     [check_radsec_dir=])
303 for dir in $check_radsec_dir $prefix /usr /usr/local ; do
304    radsecdir="$dir"
305    if test -f "$dir/include/radsec/radsec.h"; then
306      found_radsec="yes";
307      RADSEC_DIR="${radsecdir}"
308      RADSEC_CFLAGS="-I$radsecdir/include";
309      break;
310    fi
311 done
312 AC_MSG_RESULT($found_radsec)
313 if test x_$found_radsec != x_yes; then
314    AC_MSG_ERROR([
315 ----------------------------------------------------------------------
316   Cannot find radsec libraries.
317
318   Please install libradsec or specify installation directory with
319   --with-radsec=(dir).
320 ----------------------------------------------------------------------
321 ])
322 else
323         printf "radsec found in $radsecdir\n";
324         RADSEC_LIBS="-lradsec";
325         RADSEC_LDFLAGS="-L$radsecdir/lib";
326         AC_SUBST(RADSEC_CFLAGS)
327         AC_SUBST(RADSEC_LDFLAGS)
328         AC_SUBST(RADSEC_LIBS)
329 fi
330 ])dnl
331
332 AC_DEFUN([AX_CHECK_JANSSON],
333 [AC_MSG_CHECKING(for jansson)
334 JANSSON_DIR=
335 found_jansson="no"
336 AC_ARG_WITH(jansson,
337     AC_HELP_STRING([--with-jansson],
338        [Use jansson (in specified installation directory)]),
339     [check_jansson_dir="$withval"],
340     [check_jansson_dir=])
341 for dir in $check_jansson_dir $prefix /usr /usr/local ; do
342    janssondir="$dir"
343    if test -f "$dir/include/jansson.h"; then
344      found_jansson="yes";
345      JANSSON_DIR="${janssondir}"
346      JANSSON_CFLAGS="-I$janssondir/include";
347      break;
348    fi
349 done
350 AC_MSG_RESULT($found_jansson)
351 if test x_$found_jansson != x_yes; then
352    AC_MSG_ERROR([
353 ----------------------------------------------------------------------
354   Cannot find jansson libraries.
355
356   Please install libjansson or specify installation directory with
357   --with-jansson=(dir).
358 ----------------------------------------------------------------------
359 ])
360 else
361         printf "jansson found in $janssondir\n";
362         JANSSON_LIBS="-ljansson";
363         JANSSON_LDFLAGS="-L$janssondir/lib";
364         AC_SUBST(JANSSON_CFLAGS)
365         AC_SUBST(JANSSON_LDFLAGS)
366         AC_SUBST(JANSSON_LIBS)
367 fi
368 ])dnl
369
370 AC_DEFUN([AX_CHECK_LIBMOONSHOT],
371 [AC_MSG_CHECKING(for Moonshot identity selector implementation)
372 LIBMOONSHOT_DIR=
373 LIBMOONSHOT_CFLAGS=
374 LIBMOONSHOT_LDFLAGS=
375 LIBMOONSHOT_LIBS=
376 found_libmoonshot="no"
377 AC_ARG_WITH(libmoonshot,
378     AC_HELP_STRING([--with-libmoonshot],
379        [Use libmoonshot (in specified installation directory)]),
380     [check_libmoonshot_dir="$withval"],
381     [check_libmoonshot_dir=])
382 for dir in $check_libmoonshot_dir $prefix /usr /usr/local ; do
383    libmoonshotdir="$dir"
384    if test -f "$dir/include/libmoonshot.h"; then
385      found_libmoonshot="yes";
386      LIBMOONSHOT_DIR="${libmoonshotdir}"
387      LIBMOONSHOT_CFLAGS="-I$libmoonshotdir/include";
388      break;
389    fi
390 done
391 AC_MSG_RESULT($found_libmoonshot)
392 if test x_$found_libmoonshot = x_yes; then
393     printf "libmoonshot found in $libmoonshotdir\n";
394     LIBMOONSHOT_LIBS="-lmoonshot";
395     LIBMOONSHOT_LDFLAGS="-L$libmoonshot/lib";
396     AC_CHECK_LIB(moonshot, moonshot_get_identity, [AC_DEFINE_UNQUOTED([HAVE_MOONSHOT_GET_IDENTITY], 1, [Define if Moonshot identity selector is available])], [], "$LIBMOONSHOT_LIBS")
397 fi
398     AC_SUBST(LIBMOONSHOT_CFLAGS)
399     AC_SUBST(LIBMOONSHOT_LDFLAGS)
400     AC_SUBST(LIBMOONSHOT_LIBS)
401     AM_CONDITIONAL(LIBMOONSHOT, test "x$found_libmoonshot" != "xno")
402 ])dnl
403