]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-gssapi.m4
Save work; public accessors for more stuff, continue transition away from private
[thirdparty/cups.git] / config-scripts / cups-gssapi.m4
1 dnl
2 dnl "$Id$"
3 dnl
4 dnl GSSAPI/Kerberos library detection for CUPS.
5 dnl
6 dnl Copyright 2007-2013 by Apple Inc.
7 dnl Copyright 2006-2007 by Easy Software Products.
8 dnl
9 dnl This file contains Kerberos support code, copyright 2006 by
10 dnl Jelmer Vernooij.
11 dnl
12 dnl These coded instructions, statements, and computer programs are the
13 dnl property of Apple Inc. and are protected by Federal copyright
14 dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
15 dnl which should have been included with this file. If this file is
16 dnl file is missing or damaged, see the license at "http://www.cups.org/".
17 dnl
18
19 AC_ARG_ENABLE(gssapi, [ --disable-gssapi disable GSSAPI support])
20
21 LIBGSSAPI=""
22 AC_SUBST(LIBGSSAPI)
23
24 if test x$enable_gssapi != xno; then
25 AC_PATH_PROG(KRB5CONFIG, krb5-config)
26 if test "x$KRB5CONFIG" != x; then
27 case "$uname" in
28 Darwin)
29 # OS X weak-links to the Kerberos framework...
30 LIBGSSAPI="-weak_framework Kerberos"
31 AC_MSG_CHECKING(for GSS framework)
32 if test -d /System/Library/Frameworks/GSS.framework; then
33 AC_MSG_RESULT(yes)
34 LIBGSSAPI="$LIBGSSAPI -weak_framework GSS"
35 else
36 AC_MSG_RESULT(no)
37 fi
38 ;;
39 SunOS*)
40 # Solaris has a non-standard krb5-config, don't use it!
41 AC_CHECK_LIB(gss, gss_display_status,
42 AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
43 CFLAGS="`$KRB5CONFIG --cflags` $CFLAGS"
44 CPPFLAGS="`$KRB5CONFIG --cflags` $CPPFLAGS"
45 LIBGSSAPI="-lgss `$KRB5CONFIG --libs`")
46 ;;
47 *)
48 # Other platforms just ask for GSSAPI
49 CFLAGS="`$KRB5CONFIG --cflags gssapi` $CFLAGS"
50 CPPFLAGS="`$KRB5CONFIG --cflags gssapi` $CPPFLAGS"
51 LIBGSSAPI="`$KRB5CONFIG --libs gssapi`"
52 ;;
53 esac
54 AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
55 else
56 # Check for vendor-specific implementations...
57 case "$uname" in
58 HP-UX*)
59 AC_CHECK_LIB(gss, gss_display_status,
60 AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
61 LIBGSSAPI="-lgss -lgssapi_krb5")
62 ;;
63 SunOS*)
64 AC_CHECK_LIB(gss, gss_display_status,
65 AC_DEFINE(HAVE_GSSAPI, 1, [Whether GSSAPI is available])
66 LIBGSSAPI="-lgss")
67 ;;
68 esac
69 fi
70
71 if test "x$LIBGSSAPI" != x; then
72 AC_CHECK_HEADER(krb5.h, AC_DEFINE(HAVE_KRB5_H))
73 if test -d /System/Library/Frameworks/GSS.framework; then
74 AC_CHECK_HEADER(GSS/gssapi.h, AC_DEFINE(HAVE_GSS_GSSAPI_H))
75 AC_CHECK_HEADER(GSS/gssapi_generic.h, AC_DEFINE(HAVE_GSS_GSSAPI_GENERIC_H))
76 AC_CHECK_HEADER(GSS/gssapi_spi.h, AC_DEFINE(HAVE_GSS_GSSAPI_SPI_H))
77 else
78 AC_CHECK_HEADER(gssapi.h, AC_DEFINE(HAVE_GSSAPI_H))
79 AC_CHECK_HEADER(gssapi/gssapi.h, AC_DEFINE(HAVE_GSSAPI_GSSAPI_H))
80 fi
81
82 SAVELIBS="$LIBS"
83 LIBS="$LIBS $LIBGSSAPI"
84
85 AC_CHECK_FUNC(__ApplePrivate_gss_acquire_cred_ex_f,
86 AC_DEFINE(HAVE_GSS_ACQUIRE_CRED_EX_F))
87
88 AC_MSG_CHECKING(for GSS_C_NT_HOSTBASED_SERVICE)
89 if test x$ac_cv_header_gssapi_gssapi_h = xyes; then
90 AC_TRY_COMPILE([ #include <gssapi/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 elif test x$ac_cv_header_gss_gssapi_h = xyes; then
96 AC_TRY_COMPILE([ #include <GSS/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 else
102 AC_TRY_COMPILE([ #include <gssapi.h> ],
103 [ gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE; ],
104 AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE)
105 AC_MSG_RESULT(yes),
106 AC_MSG_RESULT(no))
107 fi
108
109 LIBS="$SAVELIBS"
110 fi
111 fi
112
113 dnl Default GSS service name...
114 AC_ARG_WITH(gssservicename, [ --with-gssservicename set default gss service name],
115 default_gssservicename="$withval",
116 default_gssservicename="default")
117
118 if test x$default_gssservicename != xno; then
119 if test "x$default_gssservicename" = "xdefault"; then
120 CUPS_DEFAULT_GSSSERVICENAME="host"
121 else
122 CUPS_DEFAULT_GSSSERVICENAME="$default_gssservicename"
123 fi
124 else
125 CUPS_DEFAULT_GSSSERVICENAME=""
126 fi
127
128 AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
129 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
130
131 dnl
132 dnl End of "$Id$".
133 dnl