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