]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-gssapi.m4
License change: Apache License, Version 2.0.
[thirdparty/cups.git] / config-scripts / cups-gssapi.m4
1 dnl
2 dnl GSSAPI/Kerberos library detection for CUPS.
3 dnl
4 dnl Copyright 2007-2017 by Apple Inc.
5 dnl Copyright 2006-2007 by Easy Software Products.
6 dnl
7 dnl This file contains Kerberos support code, copyright 2006 by
8 dnl Jelmer Vernooij.
9 dnl
10 dnl Licensed under Apache License v2.0. See the file "LICENSE" for more information.
11 dnl
12
13 AC_ARG_ENABLE(gssapi, [ --disable-gssapi disable GSSAPI support])
14
15 LIBGSSAPI=""
16 AC_SUBST(LIBGSSAPI)
17
18 if test x$enable_gssapi != xno; then
19 AC_PATH_TOOL(KRB5CONFIG, krb5-config)
20 if test "x$KRB5CONFIG" != x; then
21 case "$host_os_name" in
22 darwin)
23 # macOS weak-links to the Kerberos framework...
24 LIBGSSAPI="-weak_framework Kerberos"
25 AC_MSG_CHECKING(for GSS framework)
26 if test -d /System/Library/Frameworks/GSS.framework; then
27 AC_MSG_RESULT(yes)
28 LIBGSSAPI="$LIBGSSAPI -weak_framework GSS"
29 else
30 AC_MSG_RESULT(no)
31 fi
32 ;;
33 sunos*)
34 # Solaris has a non-standard krb5-config, don't use it!
35 AC_CHECK_LIB(gss, gss_display_status,
36 AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
37 CFLAGS="`$KRB5CONFIG --cflags` $CFLAGS"
38 CPPFLAGS="`$KRB5CONFIG --cflags` $CPPFLAGS"
39 LIBGSSAPI="-lgss `$KRB5CONFIG --libs`")
40 ;;
41 *)
42 # Other platforms just ask for GSSAPI
43 CFLAGS="`$KRB5CONFIG --cflags gssapi` $CFLAGS"
44 CPPFLAGS="`$KRB5CONFIG --cflags gssapi` $CPPFLAGS"
45 LIBGSSAPI="`$KRB5CONFIG --libs gssapi`"
46 ;;
47 esac
48 AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
49 else
50 # Check for vendor-specific implementations...
51 case "$host_os_name" in
52 hp-ux*)
53 AC_CHECK_LIB(gss, gss_display_status,
54 AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
55 LIBGSSAPI="-lgss -lgssapi_krb5")
56 ;;
57 sunos*)
58 AC_CHECK_LIB(gss, gss_display_status,
59 AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
60 LIBGSSAPI="-lgss")
61 ;;
62 esac
63 fi
64
65 if test "x$LIBGSSAPI" != x; then
66 AC_CHECK_HEADER(krb5.h, AC_DEFINE(HAVE_KRB5_H))
67 if test -d /System/Library/Frameworks/GSS.framework; then
68 AC_CHECK_HEADER(GSS/gssapi.h, AC_DEFINE(HAVE_GSS_GSSAPI_H))
69 AC_CHECK_HEADER(GSS/gssapi_generic.h, AC_DEFINE(HAVE_GSS_GSSAPI_GENERIC_H))
70 AC_CHECK_HEADER(GSS/gssapi_spi.h, AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H))
71 else
72 AC_CHECK_HEADER(gssapi.h, AC_DEFINE(HAVE_GSSAPI_H))
73 AC_CHECK_HEADER(gssapi/gssapi.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_H))
74 fi
75
76 SAVELIBS="$LIBS"
77 LIBS="$LIBS $LIBGSSAPI"
78
79 AC_CHECK_FUNC(__ApplePrivate_gss_acquire_cred_ex_f,
80 AC_DEFINE(HAVE_GSS_ACQUIRE_CRED_EX_F))
81
82 AC_MSG_CHECKING(for GSS_C_NT_HOSTBASED_SERVICE)
83 if test x$ac_cv_header_gssapi_gssapi_h = xyes; then
84 AC_TRY_COMPILE([ #include <gssapi/gssapi.h> ],
85 [ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ],
86 AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE)
87 AC_MSG_RESULT(yes),
88 AC_MSG_RESULT(no))
89 elif test x$ac_cv_header_gss_gssapi_h = xyes; then
90 AC_TRY_COMPILE([ #include <GSS/gssapi.h> ],
91 [ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ],
92 AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE)
93 AC_MSG_RESULT(yes),
94 AC_MSG_RESULT(no))
95 else
96 AC_TRY_COMPILE([ #include <gssapi.h> ],
97 [ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ],
98 AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE)
99 AC_MSG_RESULT(yes),
100 AC_MSG_RESULT(no))
101 fi
102
103 LIBS="$SAVELIBS"
104 fi
105 fi
106
107 dnl Default GSS service name...
108 AC_ARG_WITH(gssservicename, [ --with-gssservicename set default gss service name],
109 default_gssservicename="$withval",
110 default_gssservicename="default")
111
112 if test x$default_gssservicename != xno; then
113 if test "x$default_gssservicename" = "xdefault"; then
114 CUPS_DEFAULT_GSSSERVICENAME="host"
115 else
116 CUPS_DEFAULT_GSSSERVICENAME="$default_gssservicename"
117 fi
118 else
119 CUPS_DEFAULT_GSSSERVICENAME=""
120 fi
121
122 AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
123 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")