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