Blame configure

Packit bd2e5d
#! /bin/sh
Packit bd2e5d
Packit bd2e5d
#########################################################################
Packit bd2e5d
#                                                                       #
Packit bd2e5d
#                                 OCaml                                 #
Packit bd2e5d
#                                                                       #
Packit bd2e5d
#            Xavier Leroy, projet Cristal, INRIA Rocquencourt           #
Packit bd2e5d
#                                                                       #
Packit bd2e5d
#   Copyright 1999 Institut National de Recherche en Informatique et    #
Packit bd2e5d
#   en Automatique.  All rights reserved.  This file is distributed     #
Packit bd2e5d
#   under the terms of the GNU Library General Public License, with     #
Packit bd2e5d
#   the special exception on linking described in file LICENSE.         #
Packit bd2e5d
#                                                                       #
Packit bd2e5d
#########################################################################
Packit bd2e5d
Packit bd2e5d
configure_options="$*"
Packit bd2e5d
where=''
Packit bd2e5d
installbindir=''
Packit bd2e5d
installdir=''
Packit bd2e5d
tk_defs=''
Packit bd2e5d
tk_libs=''
Packit bd2e5d
tk_x11=yes
Packit bd2e5d
use_findlib=no
Packit bd2e5d
verbose=no
Packit bd2e5d
optcomps=no
Packit bd2e5d
Packit bd2e5d
# The inf(), wrn(), err() functions below can be used to provide a consistent
Packit bd2e5d
# way to notify the user. The notification is always given to the stdout
Packit bd2e5d
# descriptor.
Packit bd2e5d
inf() {
Packit bd2e5d
  printf "%b\n" "$*" 1>&3
Packit bd2e5d
}
Packit bd2e5d
Packit bd2e5d
wrn() {
Packit bd2e5d
  printf "[WARNING] %b\n" "$*" 1>&3
Packit bd2e5d
}
Packit bd2e5d
Packit bd2e5d
err() {
Packit bd2e5d
  printf "[ERROR!]%b\n" "$*" 1>&3
Packit bd2e5d
  exit 2
Packit bd2e5d
}
Packit bd2e5d
Packit bd2e5d
exec 3>&1
Packit bd2e5d
Packit bd2e5d
# Parse command-line arguments
Packit bd2e5d
Packit bd2e5d
if echo "$configure_options" | grep -q -e '--\?[a-zA-Z0-9-]\+='; then
Packit bd2e5d
  err "Arguments to this script look like '-libdir /foo/bar', not '-libdir=/foo/bar' (note the '=')."
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
while : ; do
Packit bd2e5d
  case "$1" in
Packit bd2e5d
    "") break;;
Packit bd2e5d
    -installbindir|--installbindir)
Packit bd2e5d
        installbindir=$2; shift;;
Packit bd2e5d
    -installdir|--installdir)
Packit bd2e5d
        installdir=$2; shift;;
Packit bd2e5d
    -libdir|--libdir)
Packit bd2e5d
        where=$2; shift;;
Packit bd2e5d
    -tkdefs*|--tkdefs*)
Packit bd2e5d
        tk_defs=$2; shift;;
Packit bd2e5d
    -tklibs*|--tklibs*)
Packit bd2e5d
        tk_libs=$2; shift;;
Packit bd2e5d
    -tk-no-x11|--tk-no-x11)
Packit bd2e5d
        tk_x11=no;;
Packit bd2e5d
    -use-findlib|--use-findlib)
Packit bd2e5d
        use_findlib=yes;;
Packit bd2e5d
    -verbose|--verbose)
Packit bd2e5d
        verbose=yes;;
Packit bd2e5d
    *) err "Unknown option \"$1\".";;
Packit bd2e5d
  esac
Packit bd2e5d
  shift
Packit bd2e5d
done
Packit bd2e5d
Packit bd2e5d
export verbose
Packit bd2e5d
Packit bd2e5d
# Where to install
Packit bd2e5d
Packit bd2e5d
if test -n "$where"; then :
Packit bd2e5d
elif test $use_findlib = yes; then
Packit bd2e5d
  where=`ocamlfind printconf stdlib`
Packit bd2e5d
else
Packit bd2e5d
  where=`ocamlc -where 2> /dev/null || echo '/usr/local/lib/ocaml'`
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
if test -n "$installdir" ; then :
Packit bd2e5d
elif test "$use_findlib" = yes; then
Packit bd2e5d
  installdir="`ocamlfind printconf destdir`/labltk"
Packit bd2e5d
else
Packit bd2e5d
  installdir='$(LIBDIR)/labltk'
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
if test -z "$installbindir"; then
Packit bd2e5d
  installbindir='$(BINDIR)'
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
# Sanity checks
Packit bd2e5d
Packit bd2e5d
case "$where" in
Packit bd2e5d
  /*) ;;
Packit bd2e5d
   *) err "The ocaml library directory must be absolute.";;
Packit bd2e5d
esac
Packit bd2e5d
case "$installdir" in
Packit bd2e5d
  /*|'$'*) ;;
Packit bd2e5d
   *) err "The installation directory must be absolute.";;
Packit bd2e5d
esac
Packit bd2e5d
case "$installbindir" in
Packit bd2e5d
  /*|'$'*) ;;
Packit bd2e5d
   *) err "The binary installation directory must be absolute.";;
Packit bd2e5d
esac
Packit bd2e5d
Packit bd2e5d
# Generate the files
Packit bd2e5d
Packit bd2e5d
cd config/auto-aux
Packit bd2e5d
rm -f Makefile
Packit bd2e5d
touch Makefile
Packit bd2e5d
Packit bd2e5d
# Write options to Makefile
Packit bd2e5d
Packit bd2e5d
echo "# generated by ./configure $configure_options" >> Makefile
Packit bd2e5d
Packit bd2e5d
# Include OCaml configuration
Packit bd2e5d
Packit bd2e5d
echo "include $where/Makefile.config" >> Makefile
Packit bd2e5d
Packit bd2e5d
# Where to install
Packit bd2e5d
Packit bd2e5d
echo "USE_FINDLIB=$use_findlib" >> Makefile
Packit bd2e5d
echo "INSTALLDIR=$installdir" >> Makefile
Packit bd2e5d
echo "INSTALLBINDIR=$installbindir" >> Makefile
Packit bd2e5d
Packit bd2e5d
# Which compiler to use
Packit bd2e5d
Packit bd2e5d
ocamlc_where=`ocamlc -where 2> /dev/null`
Packit bd2e5d
ocamlc_ver=`ocamlc -version 2> /dev/null`
Packit bd2e5d
ocamlc_opt_ver=`ocamlc.opt -version 2> /dev/null`
Packit bd2e5d
ocamlopt_ver=`$ocamlopt -version 2> /dev/null`
Packit bd2e5d
ocamlopt_opt_ver=`$ocamlopt.opt -version 2> /dev/null`
Packit bd2e5d
if test x"$where" = x"$ocamlc_where" \
Packit bd2e5d
  && test -n "$ocamlc_opt_ver" && test x"$ocamlc_opt_ver" = x"$ocamlc_ver" \
Packit bd2e5d
  && (test -z "$ocamlopt_ver" || test x"$ocamlopt_ver" = x"$ocamlopt_opt_ver")
Packit bd2e5d
then
Packit bd2e5d
  optcomps=yes
Packit bd2e5d
  echo "OPT=.opt" >> Makefile
Packit bd2e5d
else
Packit bd2e5d
  echo "OPT=" >> Makefile
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
# Look for tcl/tk
Packit bd2e5d
Packit bd2e5d
inf "Configuring LablTk..."
Packit bd2e5d
Packit bd2e5d
if test $tk_x11 = no; then
Packit bd2e5d
  has_tk=true
Packit bd2e5d
else
Packit bd2e5d
  tk_x11_include=`cat $where/Makefile.config | grep '^X11_INCLUDES=' | sed -e 's/^X11_INCLUDES=//'`
Packit bd2e5d
  tk_x11_libs=`cat $where/Makefile.config | grep '^X11_LIBS=' | sed -e 's/^X11_LIBS=//'`
Packit bd2e5d
  has_tk=true
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
cc=`cat $where/Makefile.config | grep '^CC=' | sed -e 's/^CC=//'`
Packit bd2e5d
cclibs=`cat $where/Makefile.config | grep '^NATIVECCLIBS=' | sed -e 's/^NATIVECCLIBS=//'`
Packit bd2e5d
export cc cclibs
Packit bd2e5d
Packit bd2e5d
if test $has_tk = true; then
Packit bd2e5d
  tcl_version=''
Packit bd2e5d
  tcl_version=`sh ./runtest $tk_defs $tk_x11_include tclversion.c`
Packit bd2e5d
  for tk_incs in \
Packit bd2e5d
    "-I/usr/local/include" \
Packit bd2e5d
    "-I/opt/local/include" \
Packit bd2e5d
    "-I/sw/include" \
Packit bd2e5d
    "-I/usr/pkg/include" \
Packit bd2e5d
    "-I/usr/include" \
Packit bd2e5d
    "-I/usr/local/include/tcl8.6 -I/usr/local/include/tk8.6" \
Packit bd2e5d
    "-I/usr/include/tcl8.6 -I/usr/include/tk8.6" \
Packit bd2e5d
    "-I/usr/local/include/tcl8.5 -I/usr/local/include/tk8.5" \
Packit bd2e5d
    "-I/usr/include/tcl8.5 -I/usr/include/tk8.5" \
Packit bd2e5d
    "-I/usr/local/include/tcl8.4 -I/usr/local/include/tk8.4" \
Packit bd2e5d
    "-I/usr/include/tcl8.4 -I/usr/include/tk8.4" \
Packit bd2e5d
    "-I/usr/local/include/tcl8.3 -I/usr/local/include/tk8.3" \
Packit bd2e5d
    "-I/usr/include/tcl8.3 -I/usr/include/tk8.3" \
Packit bd2e5d
    "-I/usr/local/include/tcl8.2 -I/usr/local/include/tk8.2" \
Packit bd2e5d
    "-I/usr/include/tcl8.2 -I/usr/include/tk8.2"
Packit bd2e5d
  do if test -z "$tcl_version"; then
Packit bd2e5d
    tk_defs="$tk_incs"
Packit bd2e5d
    tcl_version=`sh ./runtest $tk_defs $tk_x11_include tclversion.c`
Packit bd2e5d
  fi; done
Packit bd2e5d
  if test -n "$tcl_version" && test "x$tcl_version" != "xnone"; then
Packit bd2e5d
    inf "tcl.h and tk.h version $tcl_version found with \"$tk_defs\"."
Packit bd2e5d
    case $tcl_version in
Packit bd2e5d
    8.6) tclmaj=8 tclmin=6 tkmaj=8 tkmin=6 ;;
Packit bd2e5d
    8.5) tclmaj=8 tclmin=5 tkmaj=8 tkmin=5 ;;
Packit bd2e5d
    8.4) tclmaj=8 tclmin=4 tkmaj=8 tkmin=4 ;;
Packit bd2e5d
    8.3) tclmaj=8 tclmin=3 tkmaj=8 tkmin=3 ;;
Packit bd2e5d
    8.2) tclmaj=8 tclmin=2 tkmaj=8 tkmin=2 ;;
Packit bd2e5d
    8.1) tclmaj=8 tclmin=1 tkmaj=8 tkmin=1 ;;
Packit bd2e5d
    8.0) tclmaj=8 tclmin=0 tkmaj=8 tkmin=0 ;;
Packit bd2e5d
    7.6) tclmaj=7 tclmin=6 tkmaj=4 tkmin=2 ;;
Packit bd2e5d
    7.5) tclmaj=7 tclmin=5 tkmaj=4 tkmin=1 ;;
Packit bd2e5d
    *) wrn "This version is not known." ; has_tk=false ;;
Packit bd2e5d
    esac
Packit bd2e5d
  else
Packit bd2e5d
    inf "tcl.h and/or tk.h not found."
Packit bd2e5d
    has_tk=false
Packit bd2e5d
  fi
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
system=`cat $where/Makefile.config | grep '^SYSTEM=' | sed -e 's/^SYSTEM=//'`
Packit bd2e5d
Packit bd2e5d
if test $has_tk = true && test -z "$tk_libs"; then
Packit bd2e5d
  tklibdir=""
Packit bd2e5d
  if test -n "$tk_defs"; then
Packit bd2e5d
    tkinclude="$tk_defs"
Packit bd2e5d
  else
Packit bd2e5d
    tkinclude="$tk_x11_include"
Packit bd2e5d
  fi  
Packit bd2e5d
  case "$tkinclude" in
Packit bd2e5d
  -I/opt/local/include*) tklibdir="/opt/local/lib" ;;
Packit bd2e5d
  -I/usr/local/include*) tklibdir="/usr/local/lib" ;;
Packit bd2e5d
  -I/sw/include*) tklibdir="/sw/lib" ;;
Packit bd2e5d
  -I/usr/pkg/include*) tklibdir="/usr/pkg/lib" ;;
Packit bd2e5d
  esac
Packit bd2e5d
  if test -n "$tklibdir"; then
Packit bd2e5d
    case "$system" in
Packit bd2e5d
    *bsd*) tk_libs="-R$tklibdir -L$tklibdir" ;;
Packit bd2e5d
    *) tk_libs="-L$tklibdir" ;;
Packit bd2e5d
    esac
Packit bd2e5d
  else
Packit bd2e5d
    tk
Packit bd2e5d
  fi
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
tkauxlibs="$cclibs"
Packit bd2e5d
if test $has_tk = true; then
Packit bd2e5d
  if test -n "$tk_libs" && \
Packit bd2e5d
     sh ./hasgot $tk_libs $tk_x11_libs $tkauxlibs Tcl_DoOneEvent
Packit bd2e5d
  then tk_libs="$tk_libs $dllib"
Packit bd2e5d
  elif sh ./hasgot $tk_libs -ltcl$tclmaj.$tclmin $tkauxlibs Tcl_DoOneEvent
Packit bd2e5d
  then
Packit bd2e5d
    tk_libs="$tk_libs -ltk$tkmaj.$tkmin -ltcl$tclmaj.$tclmin $dllib"
Packit bd2e5d
  elif sh ./hasgot $tk_libs -ltcl$tclmaj$tclmin $tkauxlibs Tcl_DoOneEvent
Packit bd2e5d
  then
Packit bd2e5d
    tk_libs="$tk_libs -ltk$tkmaj$tkmin -ltcl$tclmaj$tclmin $dllib"
Packit bd2e5d
  elif test -z "$tk_libs" && tk_libs=-L/usr/local/lib && \
Packit bd2e5d
    sh ./hasgot $tk_libs -ltcl$tclmaj.$tclmin $tkauxlibs Tcl_DoOneEvent
Packit bd2e5d
  then
Packit bd2e5d
    tk_libs="$tk_libs -ltk$tkmaj.$tkmin -ltcl$tclmaj.$tclmin $dllib"
Packit bd2e5d
  elif sh ./hasgot $tk_libs -ltcl$tclmaj$tclmin $tkauxlibs Tcl_DoOneEvent
Packit bd2e5d
  then
Packit bd2e5d
    tk_libs="$tk_libs -ltk$tkmaj$tkmin -ltcl$tclmaj$tclmin $dllib"
Packit bd2e5d
  else
Packit bd2e5d
    inf "Tcl library not found."
Packit bd2e5d
    has_tk=false
Packit bd2e5d
  fi
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
if test $has_tk = true; then
Packit bd2e5d
  if sh ./hasgot $tk_libs $tk_x11_libs $tkauxlibs Tk_SetGrid; then
Packit bd2e5d
    inf "Tcl/Tk libraries found."
Packit bd2e5d
  else
Packit bd2e5d
    has_tk=false
Packit bd2e5d
    for tklibdir in "/usr/local/lib" "/opt/local/lib" "/sw/lib" "/usr/pkg/lib";
Packit bd2e5d
    do
Packit bd2e5d
      if test $found = no &&
Packit bd2e5d
         sh ./hasgot -L$tklibdir $tk_libs $tk_x11_libs $tkauxlibs Tk_SetGrid
Packit bd2e5d
      then
Packit bd2e5d
        has_tk=true
Packit bd2e5d
        case "$system" in
Packit bd2e5d
        *bsd*) tk_libs="-R$tklibdir -L$tklibdir $tk_libs";;
Packit bd2e5d
        *) tk_libs="-L$tklibdir $tk_libs";;
Packit bd2e5d
        esac
Packit bd2e5d
      fi
Packit bd2e5d
    done
Packit bd2e5d
    if test $has_tk = true; then
Packit bd2e5d
      inf "Tcl/Tk libraries found."
Packit bd2e5d
    else
Packit bd2e5d
      inf "Tcl library found."
Packit bd2e5d
      wrn "Tk library not found."
Packit bd2e5d
    fi
Packit bd2e5d
  fi
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
if test $has_tk = true; then
Packit bd2e5d
  if test $tk_x11 = yes; then
Packit bd2e5d
    echo "TK_DEFS=$tk_defs "'$(X11_INCLUDES)' >> Makefile
Packit bd2e5d
    echo "TK_LINK=$tk_libs "'$(X11_LINK)' >> Makefile
Packit bd2e5d
  else
Packit bd2e5d
    echo "TK_DEFS=$tk_defs" >> Makefile
Packit bd2e5d
    echo "TK_LINK=$tk_libs" >> Makefile
Packit bd2e5d
  fi
Packit bd2e5d
  otherlibraries="$otherlibraries labltk"
Packit bd2e5d
else
Packit bd2e5d
  echo "TK_DEFS=" >> Makefile
Packit bd2e5d
  echo "TK_LINK=" >> Makefile
Packit bd2e5d
fi
Packit bd2e5d
Packit bd2e5d
mv Makefile ..
Packit bd2e5d
Packit bd2e5d
# Print a summary
Packit bd2e5d
Packit bd2e5d
inf
Packit bd2e5d
inf "** Configuration summary **"
Packit bd2e5d
inf
Packit bd2e5d
if test $has_tk = true; then
Packit bd2e5d
inf "Configuration for the \"labltk\" library:"
Packit bd2e5d
inf "        use tcl/tk version ....... $tcl_version"
Packit bd2e5d
inf "        options for compiling .... $tk_defs $tk_x11_include"
Packit bd2e5d
inf "        options for linking ...... $tk_libs $tk_x11_libs"
Packit bd2e5d
inf "        use native compilers ..... $optcomps"
Packit bd2e5d
else
Packit bd2e5d
inf "The \"labltk\" library: not supported"
Packit bd2e5d
fi