#! /bin/sh # Env: # GSSAPI_CFLAGS # GSSAPI_LIBS have_gssapi=0 stdlib=`ocamlc -where` rm -f config.h config.sh config.mk ulimit -c 0 # no coredumps compiler="ocamlc -custom" if ocamlopt; then compiler=ocamlopt; fi log="config.log" rm -f $log touch $log out="config.h" rm -f $out touch $out mkdir -p testdir ###################################################################### # Programs linked with ocamlc have more libraries linked in by default. # Because of this, we use ocamlopt if available. call_ocamlc () { echo '$' $compiler -ccopt "$GSSAPI_CFLAGS" -cclib "$GSSAPI_LIBS" "$@" >>$log ( cd testdir; $compiler -ccopt "$GSSAPI_CFLAGS" -cclib "$GSSAPI_LIBS" "$@" ) >>$log 2>&1 return $? } check_fun() { macro="$1" fun="$2" } ###################################################################### check_gssapi() { fun=gss_init_sec_context echo "# FUN $fun" >> $log cat <<EOF >testdir/main.ml external test : unit -> unit = "do_test" let () = test() EOF cat <<EOF >testdir/test.c #ifdef __APPLE__ #include <GSS/gssapi.h> #else #include <gssapi.h> #endif #include "caml/mlvalues.h" value do_test (value dummy) { (void) & $fun; return 0; } EOF if call_ocamlc -o test test.c main.ml; then have_gssapi=1 variant="INCLUDE_GSSAPI" else have_gssapi=0 fi } check_shishi() { fun=gss_init_sec_context echo "# FUN $fun" >> $log cat <<EOF >testdir/main.ml let () = () EOF cat <<EOF >testdir/test.c #include <gss.h> int main (int argc, char *argv[], char *envp[]) { (void) & $fun; return 0; } EOF if call_ocamlc -o test test.c main.ml; then have_gssapi=1 variant="INCLUDE_GSS" else have_gssapi=0 fi } printf "Checking for GSSAPI/Kerberos... " if [ -n "$GSSAPI_LIBS" -o -n "$GSSAPI_CFLAGS" ]; then check_gssapi if [ $have_gssapi -eq 0 ]; then check_shishi fi else case `uname -s` in Darwin) GSSAPI_LIBS="-framework GSS" GSSAPI_CFLAGS="" check_gssapi ;; *) for lib in -lgssglue -lgssapi_krb5 -lgssapi; do GSSAPI_LIBS="$lib" check_gssapi if [ $have_gssapi -gt 0 ]; then break; fi done if [ $have_gssapi -eq 0 ]; then GSSAPI_LIBS="-lgss" check_shishi fi esac fi if [ $have_gssapi -gt 0 ]; then echo "found ($GSSAPI_LIBS)" else echo "not found" exit 1 fi if [ $have_gssapi -gt 0 ]; then # The vars in config.sh are picked up by reconfigure echo "GSSAPI_CFLAGS='$GSSAPI_CFLAGS'" >>config.sh echo "GSSAPI_LIBS='$GSSAPI_LIBS'" >>config.sh echo "GSSAPI_VARIANT=$variant" >>config.sh # The vars in config.mk are appended to Makefile.conf echo "# GSSAPI" >> config.mk echo "NETGSS_CFLAGS = $GSSAPI_CFLAGS" >>config.mk echo "NETGSS_LINK_OPTIONS = $GSSAPI_LIBS" >> config.mk echo "NETGSS_VARIANT = $variant" >>config.mk ./reconfigure fi