|
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
|