• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1dnl
2dnl GSSAPI/Kerberos library detection for CUPS.
3dnl
4dnl Copyright © 2020-2024 by OpenPrinting.
5dnl Copyright @ 2007-2017 by Apple Inc.
6dnl Copyright @ 2006-2007 by Easy Software Products.
7dnl
8dnl This file contains Kerberos support code, copyright 2006 by
9dnl Jelmer Vernooij.
10dnl
11dnl Licensed under Apache License v2.0.  See the file "LICENSE" for more
12dnl information.
13dnl
14
15AC_ARG_ENABLE([gssapi], AS_HELP_STRING([--enable-gssapi], [enable (deprecated) GSSAPI/Kerberos support]))
16
17LIBGSSAPI=""
18AC_SUBST([LIBGSSAPI])
19
20AS_IF([test x$enable_gssapi = xyes], [
21    AC_PATH_TOOL([KRB5CONFIG], [krb5-config])
22    AS_CASE(["$host_os_name"], [darwin*], [
23	# macOS weak-links to the Kerberos framework...
24	AC_DEFINE([HAVE_GSSAPI], [1], [Is GSSAPI available?])
25	LIBGSSAPI="-weak_framework Kerberos"
26	AC_MSG_CHECKING([for GSS framework])
27	AS_IF([test -d /System/Library/Frameworks/GSS.framework], [
28	    AC_MSG_RESULT([yes])
29	    LIBGSSAPI="$LIBGSSAPI -weak_framework GSS"
30	], [
31	    AC_MSG_RESULT([no])
32	])
33    ], [sunos* | solaris*], [
34	# Solaris has a non-standard krb5-config, don't use it!
35	SAVELIBS="$LIBS"
36	AC_CHECK_LIB([gss], [gss_display_status], [
37	    AC_DEFINE([HAVE_GSSAPI], [1], [Is GSSAPI available?])
38	    AS_IF([test "x$KRB5CONFIG" != x], [
39		CFLAGS="$($KRB5CONFIG --cflags) $CFLAGS"
40		CPPFLAGS="$($KRB5CONFIG --cflags) $CPPFLAGS"
41		LIBGSSAPI="-lgss $($KRB5CONFIG --libs)"
42	    ], [
43	        LIBGSSAPI="-lgss"
44	    ])
45	], [
46	    AC_MSG_ERROR([--enable-gssapi specified but GSSAPI library cannot be found.])
47	])
48	LIBS="$SAVELIBS"
49    ], [*], [
50	# Other platforms just ask for GSSAPI
51	AS_IF([test "x$KRB5CONFIG" = x], [
52	    AC_MSG_ERROR([--enable-gssapi specified but krb5-config cannot be found.])
53	], [
54	    AC_DEFINE([HAVE_GSSAPI], [1], [Is GSSAPI available?])
55	    CFLAGS="$($KRB5CONFIG --cflags gssapi) $CFLAGS"
56	    CPPFLAGS="$($KRB5CONFIG --cflags gssapi) $CPPFLAGS"
57	    LIBGSSAPI="$($KRB5CONFIG --libs gssapi)"
58	])
59    ])
60
61    AC_CHECK_HEADER([krb5.h], [AC_DEFINE([HAVE_KRB5_H], [1], [Have <krb5.h> header?])])
62    AS_IF([test -d /System/Library/Frameworks/GSS.framework], [
63	AC_CHECK_HEADER([GSS/gssapi.h], [AC_DEFINE([HAVE_GSS_GSSAPI_H], [1], [Have <GSS/gssapi.h> header?])])
64	AC_CHECK_HEADER([GSS/gssapi_generic.h], [AC_DEFINE([HAVE_GSS_GSSAPI_GENERIC_H], [1], [Have <GSS/gssapi_generic.h> header?])])
65	AC_CHECK_HEADER([GSS/gssapi_spi.h], [AC_DEFINE([HAVE_GSS_GSSAPI_SPI_H], [1], [Have <GSS/gssapi_spi.h> header?])])
66    ], [
67	AC_CHECK_HEADER([gssapi.h], [AC_DEFINE([HAVE_GSSAPI_H], [1], [Have <gssapi.h> header?])])
68	AC_CHECK_HEADER([gssapi/gssapi.h], [AC_DEFINE([HAVE_GSSAPI_GSSAPI_H], [1], [Have <gssapi/gssapi.h> header?])])
69    ])
70
71    SAVELIBS="$LIBS"
72    LIBS="$LIBS $LIBGSSAPI"
73    PKGCONFIG_LIBS_STATIC="$PKGCONFIG_LIBS_STATIC $LIBGSSAPI"
74
75    AC_CHECK_FUNC([__ApplePrivate_gss_acquire_cred_ex_f], [
76	AC_DEFINE([HAVE_GSS_ACQUIRE_CRED_EX_F], [1], [Have __ApplePrivate_gss_acquire_cred_ex_f function?])
77    ])
78
79    AC_MSG_CHECKING([for GSS_C_NT_HOSTBASED_SERVICE])
80    AS_IF([test x$ac_cv_header_gssapi_gssapi_h = xyes], [
81	AC_COMPILE_IFELSE([
82	    AC_LANG_PROGRAM([[#include <gssapi/gssapi.h>]], [[
83	        gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE;
84	    ]])
85	], [
86	    AC_DEFINE([HAVE_GSS_C_NT_HOSTBASED_SERVICE], [1], [Have GSS_C_NT_HOSTBASED_SERVICE?])
87	    AC_MSG_RESULT([yes])
88	], [
89	    AC_MSG_RESULT([no])
90	])
91    ], [test x$ac_cv_header_gss_gssapi_h = xyes], [
92        AC_COMPILE_IFELSE([
93            AC_LANG_PROGRAM([[#include <GSS/gssapi.h>]], [[
94	        gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE;
95	    ]])
96	], [
97	    AC_DEFINE([HAVE_GSS_C_NT_HOSTBASED_SERVICE], [1], [Have GSS_C_NT_HOSTBASED_SERVICE?])
98	    AC_MSG_RESULT([yes])
99	], [
100	    AC_MSG_RESULT([no])
101	])
102    ], [
103        AC_COMPILE_IFELSE([
104            AC_LANG_PROGRAM([[#include <gssapi.h>]], [[
105	        gss_OID foo = GSS_C_NT_HOSTBASED_SERVICE;
106	    ]])
107	], [
108	    AC_DEFINE([HAVE_GSS_C_NT_HOSTBASED_SERVICE], [1], [Have GSS_C_NT_HOSTBASED_SERVICE?])
109	    AC_MSG_RESULT([yes])
110	], [
111	    AC_MSG_RESULT([no])
112	])
113    ])
114
115    LIBS="$SAVELIBS"
116])
117
118dnl Default GSS service name...
119AC_ARG_WITH([gssservicename], AS_HELP_STRING([--with-gssservicename], [set default gss service name]), [
120    default_gssservicename="$withval"
121], [
122    default_gssservicename="default"
123])
124
125AS_IF([test x$default_gssservicename != xno], [
126    AS_IF([test "x$default_gssservicename" = "xdefault"], [
127	CUPS_DEFAULT_GSSSERVICENAME="host"
128    ], [
129	CUPS_DEFAULT_GSSSERVICENAME="$default_gssservicename"
130    ])
131], [
132    CUPS_DEFAULT_GSSSERVICENAME=""
133])
134
135AC_SUBST([CUPS_DEFAULT_GSSSERVICENAME])
136AC_DEFINE_UNQUOTED([CUPS_DEFAULT_GSSSERVICENAME], ["$CUPS_DEFAULT_GSSSERVICENAME"], [Default GSSServiceName value.])
137