Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / external / rra-c-util / m4 / krb5-config.m4
1 dnl Use krb5-config to get link paths for Kerberos libraries.
2 dnl
3 dnl Provides one macro, RRA_KRB5_CONFIG, which attempts to get compiler and
4 dnl linker flags for a library via krb5-config and sets the appropriate shell
5 dnl variables. Defines the Autoconf variable PATH_KRB5_CONFIG, which can be
6 dnl used to find the default path to krb5-config.
7 dnl
8 dnl Depends on RRA_ENABLE_REDUCED_DEPENDS.
9 dnl
10 dnl The canonical version of this file is maintained in the rra-c-util
11 dnl package, available at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
12 dnl
13 dnl Written by Russ Allbery <rra@stanford.edu>
14 dnl Copyright 2011, 2012
15 dnl The Board of Trustees of the Leland Stanford Junior University
16 dnl
17 dnl This file is free software; the authors give unlimited permission to copy
18 dnl and/or distribute it, with or without modifications, as long as this
19 dnl notice is preserved.
20
21 dnl Check for krb5-config in the user's path and set PATH_KRB5_CONFIG. This
22 dnl is moved into a separate macro so that it can be loaded via AC_REQUIRE,
23 dnl meaning it will only be run once even if we link with multiple krb5-config
24 dnl libraries.
25 AC_DEFUN([_RRA_KRB5_CONFIG_PATH],
26 [AC_ARG_VAR([PATH_KRB5_CONFIG], [Path to krb5-config])
27 AC_PATH_PROG([PATH_KRB5_CONFIG], [krb5-config], [],
28 [${PATH}:/usr/kerberos/bin])])
29
30 dnl Check whether the --deps flag is supported by krb5-config. Takes the path
31 dnl to krb5-config to use. Note that this path is not embedded in the cache
32 dnl variable, so this macro implicitly assumes that we will always use the
33 dnl same krb5-config program.
34 AC_DEFUN([_RRA_KRB5_CONFIG_DEPS],
35 [AC_REQUIRE([_RRA_KRB5_CONFIG_PATH])
36 AC_CACHE_CHECK([for --deps support in krb5-config],
37 [rra_cv_krb5_config_deps],
38 [AS_IF(["$1" 2>&1 | grep deps >/dev/null 2>&1],
39 [rra_cv_krb5_config_deps=yes],
40 [rra_cv_krb5_config_deps=no])])])
41
42 dnl Obtain the library flags for a particular library using krb5-config.
43 dnl Takes the path to the krb5-config program to use, the argument to
44 dnl krb5-config to use, and the variable prefix under which to store the
45 dnl library flags.
46 AC_DEFUN([_RRA_KRB5_CONFIG_LIBS],
47 [AC_REQUIRE([_RRA_KRB5_CONFIG_PATH])
48 AC_REQUIRE([RRA_ENABLE_REDUCED_DEPENDS])
49 _RRA_KRB5_CONFIG_DEPS([$1])
50 AS_IF([test x"$rra_reduced_depends" = xfalse \
51 && test x"$rra_cv_krb5_config_deps" = xyes],
52 [$3[]_LIBS=`"$1" --deps --libs $2 2>/dev/null`],
53 [$3[]_LIBS=`"$1" --libs $2 2>/dev/null`])])
54
55 dnl Attempt to find the flags for a library using krb5-config. Takes the
56 dnl following arguments (in order):
57 dnl
58 dnl 1. The root directory for the library in question, generally from an
59 dnl Autoconf --with flag. Used by preference as the path to krb5-config.
60 dnl
61 dnl 2. The argument to krb5-config to retrieve flags for this particular
62 dnl library.
63 dnl
64 dnl 3. The variable prefix to use when setting CPPFLAGS and LIBS variables
65 dnl based on the result of krb5-config.
66 dnl
67 dnl 4. Further actions to take if krb5-config was found and supported that
68 dnl library type.
69 dnl
70 dnl 5. Further actions to take if krb5-config could not be used to get flags
71 dnl for that library type.
72 dnl
73 dnl Special-case a krb5-config argument of krb5 and run krb5-config without an
74 dnl argument if that option was requested and not supported. Old versions of
75 dnl krb5-config didn't take an argument to specify the library type, but
76 dnl always returned the flags for libkrb5.
77 AC_DEFUN([RRA_KRB5_CONFIG],
78 [AC_REQUIRE([_RRA_KRB5_CONFIG_PATH])
79 rra_krb5_config_$3=
80 rra_krb5_config_$3[]_ok=
81 AS_IF([test x"$1" != x && test -x "$1/bin/krb5-config"],
82 [rra_krb5_config_$3="$1/bin/krb5-config"],
83 [rra_krb5_config_$3="$PATH_KRB5_CONFIG"])
84 AS_IF([test x"$rra_krb5_config_$3" != x && test -x "$rra_krb5_config_$3"],
85 [AC_CACHE_CHECK([for $2 support in krb5-config], [rra_cv_lib_$3[]_config],
86 [AS_IF(["$rra_krb5_config_$3" 2>&1 | grep $2 >/dev/null 2>&1],
87 [rra_cv_lib_$3[]_config=yes],
88 [rra_cv_lib_$3[]_config=no])])
89 AS_IF([test "$rra_cv_lib_$3[]_config" = yes],
90 [$3[]_CPPFLAGS=`"$rra_krb5_config_$3" --cflags $2 2>/dev/null`
91 _RRA_KRB5_CONFIG_LIBS([$rra_krb5_config_$3], [$2], [$3])
92 rra_krb5_config_$3[]_ok=yes],
93 [AS_IF([test x"$2" = xkrb5],
94 [$3[]_CPPFLAGS=`"$rra_krb5_config_$3" --cflags 2>/dev/null`
95 $3[]_LIBS=`"$rra_krb5_config_$3" --libs $2 2>/dev/null`
96 rra_krb5_config_$3[]_ok=yes])])])
97 AS_IF([test x"$rra_krb5_config_$3[]_ok" = xyes],
98 [$3[]_CPPFLAGS=`echo "$$3[]_CPPFLAGS" | sed 's%-I/usr/include %%'`
99 $3[]_CPPFLAGS=`echo "$$3[]_CPPFLAGS" | sed 's%-I/usr/include$%%'`
100 $4],
101 [$5])])