Adding testing CLI client (based off the Heimdal testing sample)
[mod_auth_kerb.cvs/.git] / configure.in
1 AC_REVISION($Revision$)
2 AC_PREREQ(2.57)
3 AC_INIT(mod_auth_gssapi, 0.1, modauthkerb-developers@lists.sourceforge.net)
4 AC_CONFIG_SRCDIR([mod_auth_gssapi.c])
5 AC_CONFIG_HEADER([config.h])
6
7 # Checks for programs.
8 AC_PROG_CC
9 AC_PROG_MAKE_SET
10
11 # Checks for header files.
12 AC_HEADER_STDC
13 AC_CHECK_HEADERS([limits.h netdb.h stddef.h stdlib.h string.h unistd.h])
14
15 # Checks for typedefs, structures, and compiler characteristics.
16 #AC_C_CONST
17 AC_TYPE_SIZE_T
18 AC_STRUCT_TM
19
20 #
21 # GSS-API enviroment
22 #
23 SPNEGO_SRCS=""
24
25 AC_ARG_WITH(gss,
26   AC_HELP_STRING([--with-gss=dir],[use gss in dir]),
27   [ with_gss="$withval" ])
28 if test "x$with_gss" = "xyes" ; then
29   with_gss=""
30 fi
31
32 ac_save_CPPFLAGS="$CPPFLAGS"
33 ac_save_LDFLAGS="$LDFLAGS"
34 ac_save_LIBS="$LIBS"
35    
36 if test -z "$GSS_CPPFLAGS"; then
37    TMP_GSS_CPPFLAGS=""
38    if test -n "with_gss"; then
39       TMP_GSS_CPPFLAGS="-I$with_gss/include"
40    fi
41    CPPFLAGS="$CPPFLAGS $TMP_GSS_CPPFLAGS"
42    AC_CHECK_HEADERS(gssapi.h, 
43                     [ GSS_CPPFLAGS="$TMP_GSS_CPPFLAGS" ])
44    if test -z "$GSS_CPPFLAGS"; then
45       AC_CHECK_HEADERS(gssapi/gssapi.h, 
46                        [ GSS_CPPFLAGS="$TMP_GSS_CPPFLAGS" ])
47    fi
48    CPPFLAGS="$ac_save_CPPFLAGS" 
49 fi
50
51 #if test "x$with_gss"="x"; then
52 #      tmp_lf_inc=""
53 #   else
54 #      tmp_lf_inc="-L"
55 #fi
56 if test -z "$GSS_LDFLAGS"; then
57    TMP_GSS_LDFLAGS=""
58    if test -n "$with_gss"; then
59 # XXX think about lib64, etc
60       TMP_GSS_LDFLAGS="-L $with_gss/lib"
61    fi
62 fi
63 LIBS="$LIBS $TMP_GSS_LDFLAGS"
64 AC_CHECK_LIB(
65         [gssapi_krb5], gss_accept_sec_context,
66         [found_gssapi=yes
67                 LIBS="-lgssapi_krb5 $LIBS"],
68         [AC_CHECK_LIB(gssapi, gss_accept_sec_context, [ found_gssapi=yes
69                 LIBS="$LIBS -lgssapi"],
70                 [LIBS="$ac_save_LIBS"])])
71 if test -z "$found_gssapi"; then
72    AC_MSG_ERROR([failed to find a GSS-API library])
73 fi
74
75 # If SPNEGO is supported by the gssapi libraries, we shouln't build our support.
76 # SPNEGO is supported as of Heimdal 0.7, and MIT 1.5.
77 gssapi_supports_spnego=""
78 AC_MSG_CHECKING(whether the GSSAPI libraries support SPNEGO)
79
80 ac_save_CFLAGS="$CFLAGS"
81 CFLAGS="$GSS_CPPFLAGS"
82
83 ac_save_LDFLAGS=$LDFLAGS
84 LDFLAGS="$GSS_LDFLAGS"
85 # to make sure the testing binary can be launched:
86 if test -n "$with_gss"; then
87    LDFLAGS="$LDFLAGS -Wl,-rpath -Wl,$with_gss/lib"
88 fi
89      AC_TRY_RUN([
90 #include <string.h>
91 #include <gssapi.h>
92 int main(int argc, char** argv)
93 {
94        OM_uint32 major_status, minor_status;
95        gss_OID_set mech_set;
96        gss_OID_desc spnego_oid_desc = {6, (void *)"\x2b\x06\x01\x05\x05\x02"};
97        int SPNEGO = 0;
98                                                                                
99        major_status = gss_indicate_mechs(&minor_status, &mech_set);
100        if (GSS_ERROR(major_status))
101                return 1;
102        else {
103                unsigned int i;
104                for (i=0; i < mech_set->count && !SPNEGO; i++) {
105                        gss_OID tmp_oid = &mech_set->elements[i];
106                       if (tmp_oid->length == spnego_oid_desc.length &&
107                            !memcmp(tmp_oid->elements, spnego_oid_desc.elements, 
108                                    tmp_oid->length)) {
109                                SPNEGO = 1;
110                                break;
111                        }
112                }
113                gss_release_oid_set(&minor_status, &mech_set);
114                return (!SPNEGO);
115        }
116 }],
117      [ if test $? -eq 0; then 
118          AC_MSG_RESULT(yes)
119          AC_DEFINE(GSSAPI_SUPPORTS_SPNEGO,1,[GSS-API implementation has its own SPNEGO])
120          gssapi_supports_spnego=yes 
121        else
122          AC_MSG_RESULT(no)
123        fi],
124      [ AC_MSG_RESULT(no)]
125      )
126
127 CFLAGS="$ac_save_CFLAGS"
128 LDFLAGS="$ac_save_LDFLAGS"
129
130 if test -z "$gssapi_supports_spnego"; then
131    SPNEGO_SRCS="\
132                 spnegokrb5/asn1_MechType.c         \
133                 spnegokrb5/asn1_MechTypeList.c     \
134                 spnegokrb5/asn1_ContextFlags.c     \
135                 spnegokrb5/asn1_NegTokenInit.c     \
136                 spnegokrb5/asn1_NegTokenTarg.c     \
137                 spnegokrb5/der_get.c               \
138                 spnegokrb5/der_put.c               \
139                 spnegokrb5/der_free.c              \
140                 spnegokrb5/der_length.c            \
141                 spnegokrb5/der_copy.c              \
142                 spnegokrb5/timegm.c                \
143                 spnegokrb5/init_sec_context.c      \
144                 spnegokrb5/accept_sec_context.c    \
145                 spnegokrb5/encapsulate.c           \
146                 spnegokrb5/decapsulate.c           \
147                 spnegokrb5/external.c"
148 fi
149 AC_SUBST(GSS_CPPFLAGS)
150 AC_SUBST(GSS_LDFLAGS)
151 AC_SUBST(SPNEGO_SRCS)
152
153 #
154 # Apache enviroment
155 #
156 AC_ARG_WITH(apache,
157   AC_HELP_STRING([--with-apache=dir],[use apache in dir]),
158   [ with_apache="$withval" ])
159
160 AC_PATH_PROG([APXS], [apxs], [], [$with_apache/bin:$with_apache/sbin:$PATH])
161 if test -z "$APXS"; then
162    AC_PATH_PROG([APXS], [apxs2], [], [$with_apache/bin:$with_apache/sbin:$PATH])
163    if test -z "$APXS"; then
164       AC_MSG_ERROR([failed to find apache apxs executable])
165    fi
166 fi
167 AC_SUBST(APXS)
168
169 AC_CONFIG_FILES([Makefile])
170
171 AC_OUTPUT