Blame configure

Packit b513ef
#! /bin/sh
Packit b513ef
# $Id$
Packit b513ef
# ----------------------------------------------------------------------
Packit b513ef
#
Packit b513ef
Packit b513ef
# Some functions
Packit b513ef
Packit b513ef
#set -x
Packit b513ef
Packit b513ef
version="1.8.0"
Packit b513ef
Packit b513ef
# Remember the old IFS value:
Packit b513ef
oldifs="$IFS"
Packit b513ef
Packit b513ef
Packit b513ef
in_path () {
Packit b513ef
    # Does $1 exist in $PATH?
Packit b513ef
    IFS=":"
Packit b513ef
    for d in $PATH; do
Packit b513ef
	if test -x "$d/$1"; then
Packit b513ef
	    IFS="$oldifs"
Packit b513ef
	    return 0
Packit b513ef
	fi
Packit b513ef
    done
Packit b513ef
    IFS="$oldifs"
Packit b513ef
    return 1
Packit b513ef
#--- The following is not portable enough:
Packit b513ef
#    if test -x `type -p ls`; then
Packit b513ef
#	# type -p works!
Packit b513ef
#        type -p $1 >/dev/null
Packit b513ef
#    else
Packit b513ef
#        # use 'which' instead
Packit b513ef
#        p=`which $1`
Packit b513ef
#	test -x "$p"
Packit b513ef
#    fi
Packit b513ef
}
Packit b513ef
Packit b513ef
Packit b513ef
get_path () {
Packit b513ef
    IFS=":"
Packit b513ef
    for d in $PATH; do
Packit b513ef
	if test -x "$d/$1"; then
Packit b513ef
	    IFS="$oldifs"
Packit b513ef
	    echo "$d/$1"
Packit b513ef
	    return
Packit b513ef
	fi
Packit b513ef
    done
Packit b513ef
    IFS="$oldifs"
Packit b513ef
#--- The following is not portable enough:
Packit b513ef
#    if test -x `type -p ls`; then
Packit b513ef
#	# type -p works!
Packit b513ef
#        type -p $1
Packit b513ef
#    else
Packit b513ef
#        # use 'which' instead
Packit b513ef
#        p=`which $1`
Packit b513ef
#	test -x "$p" && echo $p
Packit b513ef
#    fi
Packit b513ef
}
Packit b513ef
Packit b513ef
Packit b513ef
get_stdlib () {
Packit b513ef
    # Older versions of ocamlc do not accept -where, so there is a fallback
Packit b513ef
    # method:
Packit b513ef
    ocamlc -where 2>/dev/null | tr -d '\015' || {
Packit b513ef
	ocamlc -v | sed -n -e "/Standard library directory/s/.*: \(.*\)/\1/p"; }
Packit b513ef
}
Packit b513ef
Packit b513ef
Packit b513ef
get_lib () {
Packit b513ef
    # $1: name of a library to search for
Packit b513ef
    # $2...: places to test
Packit b513ef
    libname="$1"
Packit b513ef
    while [ "$#" != "0" ]; do
Packit b513ef
	if [ -f "$1/lib${libname}.so" -o -f "$1/lib${libname}.a" ]; then
Packit b513ef
	    echo "$1"
Packit b513ef
	    return 0
Packit b513ef
	fi
Packit b513ef
	shift
Packit b513ef
    done
Packit b513ef
    return 1
Packit b513ef
}
Packit b513ef
Packit b513ef
Packit b513ef
get_lib_file () {
Packit b513ef
    # $1: name of library without "lib" and suffix
Packit b513ef
    # $2: directory
Packit b513ef
    # returns full path of library
Packit b513ef
    if [ -f "$2/lib$1.so" ]; then
Packit b513ef
	echo "$2/lib$1.so"
Packit b513ef
    elif [ -f "$2/lib$1.a" ]; then
Packit b513ef
	echo "$2/lib$1.a"
Packit b513ef
    else
Packit b513ef
	echo ""
Packit b513ef
    fi
Packit b513ef
}
Packit b513ef
Packit b513ef
Packit b513ef
cygpath_to_unix () {
Packit b513ef
    v=$1
Packit b513ef
    eval "p=\"\$$v\""
Packit b513ef
    p="`cygpath -w -s \"$p\"`"
Packit b513ef
    p="`cygpath -u \"$p\"`"
Packit b513ef
    eval "$v=\"$p\""
Packit b513ef
}
Packit b513ef
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Here the main program begins:
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Interpret the command line
Packit b513ef
Packit b513ef
ocamlfind_bin=""
Packit b513ef
ocamlfind_man=""
Packit b513ef
ocaml_sitelib=""
Packit b513ef
ocamlfind_config=""
Packit b513ef
with_toolbox=0
Packit b513ef
with_topfind=1
Packit b513ef
with_camlp4=1
Packit b513ef
custom=-custom
Packit b513ef
system=""
Packit b513ef
sh=""
Packit b513ef
Packit b513ef
while [ "$#" != "0" ]; do
Packit b513ef
    case "$1" in
Packit b513ef
        -bindir) ocamlfind_bin=$2
Packit b513ef
	         shift 2
Packit b513ef
		 ;;
Packit b513ef
        -mandir) ocamlfind_man=$2
Packit b513ef
	         shift 2
Packit b513ef
		 ;;
Packit b513ef
        -sitelib) ocaml_sitelib=$2
Packit b513ef
	          shift 2
Packit b513ef
		  ;;
Packit b513ef
        -config) ocamlfind_config=$2
Packit b513ef
	         shift 2
Packit b513ef
		 ;;
Packit b513ef
        -no-custom) custom=
Packit b513ef
                shift
Packit b513ef
                ;;
Packit b513ef
	-cygpath) system=mingw
Packit b513ef
	         shift
Packit b513ef
		 ;;
Packit b513ef
	-system) system=$2
Packit b513ef
	         shift 2
Packit b513ef
		 ;;
Packit b513ef
	-with-toolbox) with_toolbox=1
Packit b513ef
	         shift
Packit b513ef
		 ;;
Packit b513ef
	-no-topfind) with_topfind=0
Packit b513ef
	         shift
Packit b513ef
		 ;;
Packit b513ef
	-no-camlp4) with_camlp4=0
Packit b513ef
	         shift
Packit b513ef
	         ;;
Packit b513ef
	-version)
Packit b513ef
	         echo "$version"
Packit b513ef
		 exit 0
Packit b513ef
		 ;;
Packit b513ef
        -h|-help|--help) echo "usage: configure [options]" 1>&2
Packit b513ef
		  echo "  -bindir path         where binaries are installed" 1>&2
Packit b513ef
		  echo "  -mandir path         where manual pages are installed" 1>&2
Packit b513ef
		  echo "  -sitelib path        set the location of the site-specific packages" 1>&2
Packit b513ef
                  echo "  -config path         set the location of the configuration file" 1>&2
Packit b513ef
                  echo "  -no-custom           don't link in custom runtime mode" 1>&2
Packit b513ef
		  echo "  -system <systype>    override system type (esp. mingw and win32)" 1>&2
Packit b513ef
		  echo "  -with-toolbox        also build the toolbox" 1>&2
Packit b513ef
		  echo "  -no-topfind          don't install topfind script into stdlib directory" 1>&2
Packit b513ef
		  echo "  -no-camlp4           don't install the camlp4 META file" 1>&2
Packit b513ef
		  exit
Packit b513ef
		  ;;
Packit b513ef
         *)       echo "configure: run 'configure -h' to get help" 1>&2
Packit b513ef
		  exit 1
Packit b513ef
		  ;;
Packit b513ef
    esac
Packit b513ef
done
Packit b513ef
Packit b513ef
echo "Welcome to findlib version $version"
Packit b513ef
echo "Configuring core..."
Packit b513ef
Packit b513ef
Packit b513ef
#######################################################################
Packit b513ef
# inspect the system
Packit b513ef
Packit b513ef
# Some standard Unix tools must be available:
Packit b513ef
Packit b513ef
for tool in sed awk ocaml ocamlc uname rm make cat m4 dirname basename; do
Packit b513ef
    if in_path $tool; then true; else
Packit b513ef
	echo "configure: $tool not in PATH; this is required" 1>&2
Packit b513ef
	exit 1
Packit b513ef
    fi
Packit b513ef
done
Packit b513ef
Packit b513ef
lib_suffix=`ocamlc -config 2>/dev/null|tr -d '\015'|sed -n -e 's/^ext_lib: //p'`
Packit b513ef
Packit b513ef
# Check for Cygwin:
Packit b513ef
Packit b513ef
exec_suffix=
Packit b513ef
pure_mingw="no"
Packit b513ef
mingw_lib=
Packit b513ef
case `uname` in
Packit b513ef
  CYGWIN*)
Packit b513ef
    exec_suffix=.exe
Packit b513ef
    echo "Cygwin build environment found; using .exe as suffix for binaries"
Packit b513ef
    ;;
Packit b513ef
  MSYS_NT*)
Packit b513ef
    exec_suffix=.exe
Packit b513ef
    echo "MSYS_NT build environment found; using .exe as suffix for binaries"
Packit b513ef
    ;;
Packit b513ef
  MINGW*)
Packit b513ef
    exec_suffix=.exe
Packit b513ef
    pure_mingw="yes"
Packit b513ef
    echo "MinGW build environment found; using .exe as suffix for binaries"
Packit b513ef
    mingw_lib=`get_path gcc`
Packit b513ef
    mingw_lib=`dirname "$mingw_lib"`/../lib
Packit b513ef
    ;;
Packit b513ef
  *)
Packit b513ef
    true ;;
Packit b513ef
esac
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Is the target Win32?
Packit b513ef
Packit b513ef
use_cygpath=0
Packit b513ef
# Whether we have to translate Unix paths to/from Windows paths.
Packit b513ef
Packit b513ef
if [ -z "$system" ]; then
Packit b513ef
    system=`ocamlc -config 2>/dev/null|tr -d '\015'|sed -n -e 's/^system: //p'`
Packit b513ef
    # This may be
Packit b513ef
    # - mingw or mingw64
Packit b513ef
    # - win32
Packit b513ef
    # - win64
Packit b513ef
    # - cygwin
Packit b513ef
    # - some other string means Unix
Packit b513ef
    # - empty means ocamlc does not support -config
Packit b513ef
fi
Packit b513ef
Packit b513ef
case "$system" in
Packit b513ef
    mingw|mingw64)
Packit b513ef
	if [ "$pure_mingw" = "no" ];  then
Packit b513ef
	    # CYGWIN
Packit b513ef
	    use_cygpath=1
Packit b513ef
	fi
Packit b513ef
	;;
Packit b513ef
    win32) use_cygpath=1;;
Packit b513ef
    win64) use_cygpath=1;;
Packit b513ef
esac
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# check for presence of /bin/sh
Packit b513ef
Packit b513ef
if [ ! -f /bin/sh ]; then
Packit b513ef
    sh=sh
Packit b513ef
fi
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Find out standard library location
Packit b513ef
Packit b513ef
ocaml_core_stdlib=`get_stdlib`
Packit b513ef
if [ ! -d "$ocaml_core_stdlib" ]; then
Packit b513ef
   echo "configure: cannot determine ocaml's standard library directory" 1>&2
Packit b513ef
    exit 1
Packit b513ef
fi
Packit b513ef
Packit b513ef
if [ ${use_cygpath} -gt 0 ]; then
Packit b513ef
    cygpath_to_unix ocaml_core_stdlib
Packit b513ef
    # This makes ocaml_core_stdlib a Unix-type path
Packit b513ef
fi
Packit b513ef
Packit b513ef
# Set site-lib directory:
Packit b513ef
Packit b513ef
if [ -z "$ocaml_sitelib" ]; then
Packit b513ef
    case "$ocaml_core_stdlib" in
Packit b513ef
	/opt/*)		ocaml_sitelib=`dirname "${ocaml_core_stdlib}"`/site-lib
Packit b513ef
			;;
Packit b513ef
	*)		ocaml_sitelib="${ocaml_core_stdlib}/site-lib"
Packit b513ef
			;;
Packit b513ef
    esac
Packit b513ef
fi
Packit b513ef
Packit b513ef
# Find out the directory where ocamlc is:
Packit b513ef
Packit b513ef
ocamlc=`get_path ocamlc`
Packit b513ef
ocaml_core_bin=`dirname "${ocamlc}"`
Packit b513ef
Packit b513ef
# Set the directory of ocamlfind:
Packit b513ef
Packit b513ef
test -n "$ocamlfind_bin" || ocamlfind_bin="$ocaml_core_bin"
Packit b513ef
Packit b513ef
# Find the directory for the manual:
Packit b513ef
Packit b513ef
# Fallback:
Packit b513ef
ocaml_core_man=/usr/local/man
Packit b513ef
Packit b513ef
d="$ocaml_core_bin"
Packit b513ef
while [ "$d" != '/' ]; do
Packit b513ef
    f=0
Packit b513ef
    if [ -d "$d/man/man1" ]; then
Packit b513ef
	if [ -f "$d/man/man1/ocamlc.1" -o \
Packit b513ef
	     -f "$d/man/man1/ocamlc.1.gz" -o \
Packit b513ef
	     -f "$d/man/man1/ocamlc.1.Z" ]; then
Packit b513ef
	     f=1
Packit b513ef
	fi
Packit b513ef
    else
Packit b513ef
	if [ -d "$d/man/mann" ]; then
Packit b513ef
	    if [ -f "$d/man/mann/ocamlc.n" -o \
Packit b513ef
		 -f "$d/man/mann/ocamlc.n.gz" -o \
Packit b513ef
		 -f "$d/man/mann/ocamlc.n.Z" ]; then
Packit b513ef
		f=1
Packit b513ef
	    fi
Packit b513ef
	fi
Packit b513ef
    fi
Packit b513ef
    if [ "$f" = "1" ]; then
Packit b513ef
	ocaml_core_man="$d/man"
Packit b513ef
	d="/"
Packit b513ef
    else
Packit b513ef
	d=`dirname "$d"`
Packit b513ef
    fi
Packit b513ef
done
Packit b513ef
Packit b513ef
# Set the directory for ocamlfind's manuals:
Packit b513ef
Packit b513ef
test -n "$ocamlfind_man" || ocamlfind_man="$ocaml_core_man"
Packit b513ef
Packit b513ef
# Guess the right directory for the configuration file:
Packit b513ef
Packit b513ef
if [ -z "${ocamlfind_config}" ]; then
Packit b513ef
    d="$ocaml_core_bin"
Packit b513ef
    case "$d" in
Packit b513ef
        */bin)
Packit b513ef
            if [ -f `dirname "$d"`/lib/findlib.conf ]; then
Packit b513ef
	        ocamlfind_config=`dirname "$d"`/lib/findlib.conf
Packit b513ef
            else
Packit b513ef
	        ocamlfind_config=`dirname "$d"`/etc/findlib.conf
Packit b513ef
            fi
Packit b513ef
	    ;;
Packit b513ef
	*)
Packit b513ef
	    ocamlfind_config=/usr/local/etc/findlib.conf
Packit b513ef
	    # Fallback value
Packit b513ef
	    ;;
Packit b513ef
    esac
Packit b513ef
fi
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# do we have #remove_directory?
Packit b513ef
Packit b513ef
echo "Checking for #remove_directory..."
Packit b513ef
have_remdir=1
Packit b513ef
ocaml itest-aux/remdir.ml >/dev/null 2>/dev/null || have_remdir=0
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Test the threading model
Packit b513ef
Packit b513ef
echo "Testing threading model..."
Packit b513ef
Packit b513ef
if ocamlc -vmthread >/dev/null 2>/dev/null; then
Packit b513ef
    :
Packit b513ef
else
Packit b513ef
    echo "The -vmthread switch is not supported: Your ocaml version is too old!"
Packit b513ef
    exit 1
Packit b513ef
fi
Packit b513ef
Packit b513ef
if ocamlc -config >/dev/null 2>/dev/null; then
Packit b513ef
    # Good. ocamlc tells us the threading model.
Packit b513ef
    if ocamlc -config | grep 'systhread_supported: true'; then
Packit b513ef
	ocaml_threads="posix"
Packit b513ef
    else
Packit b513ef
	ocaml_threads="vm"
Packit b513ef
    fi
Packit b513ef
else
Packit b513ef
    # Old ocamlc do not have -config.
Packit b513ef
    rm -f itest-aux/simple
Packit b513ef
    ocamlc -w a -custom -thread -o itest-aux/simple unix.cma threads.cma itest-aux/simple_threads.ml \
Packit b513ef
	>itest-aux/err.out 2>&1
Packit b513ef
    output=`cat itest-aux/err.out`
Packit b513ef
Packit b513ef
    if [ -z "$output" ]; then
Packit b513ef
	ocaml_threads="posix"
Packit b513ef
    else
Packit b513ef
	ocaml_threads="vm"
Packit b513ef
    fi
Packit b513ef
fi
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Does this version of OCaml support autolinking?
Packit b513ef
Packit b513ef
# Works for O'Caml >= 3.00 on. Because findlib can only be compiled
Packit b513ef
# with these O'Caml versions, we can safely assume that autolinking
Packit b513ef
# is enabled.
Packit b513ef
Packit b513ef
ocaml_autolink="true"
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Does this version of OCaml support DLLs?
Packit b513ef
Packit b513ef
echo "Testing DLLs..."
Packit b513ef
Packit b513ef
have_dlls="yes"
Packit b513ef
Packit b513ef
ocaml unix.cma itest-aux/simple.ml >/dev/null || have_dlls="no"
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Does this version of OCaml support extension points?
Packit b513ef
Packit b513ef
echo "Testing whether ppxopt can be supported..."
Packit b513ef
Packit b513ef
with_ppxopt=1
Packit b513ef
enable_topfind_ppxopt=true
Packit b513ef
Packit b513ef
ocaml -I +compiler-libs itest-aux/ppx.ml >/dev/null || {
Packit b513ef
    with_ppxopt=0
Packit b513ef
    enable_topfind_ppxopt=false
Packit b513ef
}
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Check for -opaque
Packit b513ef
Packit b513ef
echo "Checking for ocamlc -opaque..."
Packit b513ef
Packit b513ef
opaque="-opaque"
Packit b513ef
ocamlc -opaque >/dev/null 2>/dev/null || opaque=""
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Configure libraries
Packit b513ef
Packit b513ef
echo "Configuring libraries..."
Packit b513ef
Packit b513ef
# Check whether Bigarray is present.
Packit b513ef
Packit b513ef
lbigarray=bigarray
Packit b513ef
# always
Packit b513ef
Packit b513ef
# Dynlink check.
Packit b513ef
Packit b513ef
have_natdynlink=0
Packit b513ef
natdynlink=""
Packit b513ef
camlp4_dynlink=""
Packit b513ef
if [ -f "${ocaml_core_stdlib}/dynlink.cmxa" ]; then
Packit b513ef
    have_natdynlink=1
Packit b513ef
    natdynlink="archive(native) = \"dynlink.cmxa\""
Packit b513ef
    camlp4_dynlink="dynlink"
Packit b513ef
    echo "native dynlink: found"
Packit b513ef
else
Packit b513ef
    natdynlink="archive(native) = \"\""
Packit b513ef
    echo "native dynlink: not found"
Packit b513ef
fi
Packit b513ef
Packit b513ef
# Check whether labltk is present.
Packit b513ef
Packit b513ef
if [ -f "${ocaml_core_stdlib}/labltk/labltk.cma" ]; then
Packit b513ef
    llabltk=labltk
Packit b513ef
    echo "labltk: found"
Packit b513ef
else
Packit b513ef
    llabltk=''
Packit b513ef
    echo "labltk: not present"
Packit b513ef
    if [ $with_toolbox -gt 0 ]; then
Packit b513ef
	echo "Sorry, toolbox requires labltk - omitting toolbox."
Packit b513ef
    fi
Packit b513ef
    with_toolbox=0
Packit b513ef
fi
Packit b513ef
Packit b513ef
# Check whether ocamlbuild is present
Packit b513ef
Packit b513ef
if [ -f "${ocaml_core_stdlib}/ocamlbuild/ocamlbuildlib.cma" ]; then
Packit b513ef
    lobuild=ocamlbuild
Packit b513ef
    echo "ocamlbuild: found"
Packit b513ef
else
Packit b513ef
    lobuild=""
Packit b513ef
    echo "ocamlbuild: not present"
Packit b513ef
fi
Packit b513ef
Packit b513ef
# Check on camlp4:
Packit b513ef
Packit b513ef
if [ $with_camlp4 -eq 0 ]; then
Packit b513ef
    lcamlp4=''
Packit b513ef
    echo "camlp4: disabled"
Packit b513ef
else if in_path camlp4; then
Packit b513ef
    camlp4_dir=`camlp4 -where | tr -d '\015'`
Packit b513ef
    if [ ${use_cygpath} -gt 0 ]; then
Packit b513ef
	camlp4_dir=`echo x | env USE_CYGPATH=1 tools/patch x "$camlp4_dir"`
Packit b513ef
        # This makes camlp4_dir a windows path
Packit b513ef
    elif [ "${pure_mingw}" = "yes" ]; then
Packit b513ef
	# Must double the backslahes
Packit b513ef
	camlp4_dir="$(echo "${camlp4_dir}" | sed -e 's;\\;\\\\;g')"
Packit b513ef
    fi
Packit b513ef
    camlp4_version=`camlp4 -v 2>&1`
Packit b513ef
    if [ "$have_dlls" = "yes" ]; then
Packit b513ef
	camlp4_cmd="camlp4"
Packit b513ef
    else
Packit b513ef
	camlp4_cmd="safe_camlp4"
Packit b513ef
    fi
Packit b513ef
    # Check whether 3.09 or 3.10 style:
Packit b513ef
    if camlp4 -loaded-modules >/dev/null 2>/dev/null; then
Packit b513ef
	camlp4style=310
Packit b513ef
    else
Packit b513ef
	camlp4style=309
Packit b513ef
    fi
Packit b513ef
    lcamlp4="camlp4"
Packit b513ef
    rm -rf "site-lib-src/camlp4"
Packit b513ef
    mkdir "site-lib-src/camlp4"
Packit b513ef
    cp "site-lib-src/camlp4.$camlp4style/META.in" "site-lib-src/camlp4/"
Packit b513ef
    echo "camlp4: using $camlp4_cmd, style $camlp4style"
Packit b513ef
else
Packit b513ef
    lcamlp4=''
Packit b513ef
    with_camlp4=0
Packit b513ef
    echo "camlp4: not present (normal since OCaml-4.02)"
Packit b513ef
fi
Packit b513ef
fi
Packit b513ef
Packit b513ef
# compiler-libs?
Packit b513ef
if [ -d "${ocaml_core_stdlib}/compiler-libs" ]; then
Packit b513ef
    echo "compiler-libs: found"
Packit b513ef
    lcomplibs="compiler-libs"
Packit b513ef
else
Packit b513ef
    echo "compiler-libs: not present"
Packit b513ef
    lcomplibs=""
Packit b513ef
fi
Packit b513ef
Packit b513ef
# dbm?
Packit b513ef
Packit b513ef
if [ -f "${ocaml_sitelib}/dbm/META" ]; then
Packit b513ef
    echo "dbm: package already present"
Packit b513ef
    ldbm=""
Packit b513ef
elif [ -f "${ocaml_core_stdlib}/dbm.cmi" ]; then
Packit b513ef
    echo "dbm: found"
Packit b513ef
    ldbm="dbm"
Packit b513ef
else
Packit b513ef
    echo "dbm: not present (normal since OCaml-4.00)"
Packit b513ef
    ldbm=""
Packit b513ef
fi
Packit b513ef
Packit b513ef
# num?
Packit b513ef
Packit b513ef
if [ -f "${ocaml_sitelib}/num/META" ]; then
Packit b513ef
    echo "num: package already present"
Packit b513ef
    lnum=""
Packit b513ef
    numtop=""
Packit b513ef
elif [ -f "${ocaml_core_stdlib}/num.cmi" ]; then
Packit b513ef
    echo "num: found but not as package"
Packit b513ef
    lnum="num num-top"
Packit b513ef
    numtop="num-top"
Packit b513ef
else
Packit b513ef
    echo "num: not present (normal since OCaml-4.06)"
Packit b513ef
    lnum=""
Packit b513ef
    numtop=""
Packit b513ef
fi
Packit b513ef
Packit b513ef
# bytes?
Packit b513ef
Packit b513ef
if [ -f "${ocaml_core_stdlib}/bytes.cmi" -o \
Packit b513ef
     -f "${ocaml_core_stdlib}/stdlib__bytes.cmi" ]; then
Packit b513ef
    echo "bytes: found, installing fake library"
Packit b513ef
    lbytes="bytes"
Packit b513ef
    cbytes=0
Packit b513ef
else
Packit b513ef
    echo "bytes: not found, installing compat library"
Packit b513ef
    lbytes=""
Packit b513ef
    cbytes=1
Packit b513ef
fi
Packit b513ef
Packit b513ef
# spacetime?
Packit b513ef
Packit b513ef
if [ -f "${ocaml_core_stdlib}/raw_spacetime_lib.cmxa" ]; then
Packit b513ef
    echo "spacetime: found"
Packit b513ef
    lspacetime="raw_spacetime"
Packit b513ef
else
Packit b513ef
    echo "spacetime: not found"
Packit b513ef
    lspacetime=""
Packit b513ef
fi
Packit b513ef
Packit b513ef
# graphics?
Packit b513ef
Packit b513ef
if [ -f "${ocaml_core_stdlib}/graphics.cmi" ]; then
Packit b513ef
    echo "graphics: found"
Packit b513ef
    lgraphics="graphics"
Packit b513ef
else
Packit b513ef
    echo "graphics: not found"
Packit b513ef
    lgraphics=""
Packit b513ef
fi
Packit b513ef
Packit b513ef
Packit b513ef
# Generate the META files now.
Packit b513ef
Packit b513ef
l="$ldbm dynlink $lgraphics $lnum str threads unix stdlib bigarray ocamldoc $llabltk $lcamlp4 $lobuild $lcomplibs $lbytes $lspacetime"
Packit b513ef
Packit b513ef
for dir in site-lib-src/*; do
Packit b513ef
    # We do not really know if $dir is a directory.
Packit b513ef
    rm -f $dir/META
Packit b513ef
done
Packit b513ef
Packit b513ef
for lib in $l; do
Packit b513ef
    if=""
Packit b513ef
    if [ -f site-lib-src/$lib/interfaces.out ]; then
Packit b513ef
	if=`cat site-lib-src/$lib/interfaces.out`
Packit b513ef
    fi
Packit b513ef
    m4 -Dos=$os \
Packit b513ef
	"-Dtype_of_threads=${ocaml_threads}" \
Packit b513ef
	"-Dcamlp4_dir=${camlp4_dir}" \
Packit b513ef
	"-Dcamlp4_version=${camlp4_version}" \
Packit b513ef
	"-Dcamlp4_cmd=${camlp4_cmd}" \
Packit b513ef
	"-Dcamlp4_dynlink=${camlp4_dynlink}" \
Packit b513ef
	"-Dinterfaces=${if}" \
Packit b513ef
	"-Dfindlib_version=${version}" \
Packit b513ef
	"-Dnatdynlink=${natdynlink}" \
Packit b513ef
	site-lib-src/$lib/META.in >site-lib-src/$lib/META
Packit b513ef
    echo "Configuration for $lib written to site-lib-src/$lib/META"
Packit b513ef
done
Packit b513ef
Packit b513ef
for part in `cd src; echo *`; do
Packit b513ef
    if [ -f "src/$part/META.in" ]; then
Packit b513ef
	sed -e "s/@VERSION@/$version/g" src/$part/META.in >src/$part/META
Packit b513ef
    fi
Packit b513ef
done
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
Packit b513ef
printf "Detecting compiler arguments: "
Packit b513ef
Packit b513ef
( cd tools/extract_args && make ) >ocargs.log 2>&1
Packit b513ef
if [ "$?" -eq 0 ]; then
Packit b513ef
    printf "(extractor built) "
Packit b513ef
    tools/extract_args/extract_args -o src/findlib/ocaml_args.ml ocamlc ocamlcp ocamloptp ocamlmklib ocamlmktop ocamlopt ocamldep ocamldoc >>ocargs.log 2>&1
Packit b513ef
    # ocamlbrowser does not work!
Packit b513ef
    if [ $? -eq 0 ]; then
Packit b513ef
	echo "ok"
Packit b513ef
    else
Packit b513ef
	echo "FAILED (see the file ocargs.log for details)"
Packit b513ef
	exit 1
Packit b513ef
    fi
Packit b513ef
else
Packit b513ef
    echo "FAILED (see the file ocargs.log for details)"
Packit b513ef
    exit 1
Packit b513ef
fi
Packit b513ef
Packit b513ef
######################################################################
Packit b513ef
# Write Makefile.config
Packit b513ef
Packit b513ef
parts="findlib"
Packit b513ef
if [ $with_toolbox -gt 0 ]; then
Packit b513ef
    parts="$parts findlib-toolbox"
Packit b513ef
fi
Packit b513ef
if [ $cbytes -gt 0 ]; then
Packit b513ef
    parts="$parts bytes"
Packit b513ef
fi
Packit b513ef
Packit b513ef
echo "# Makefile.config written by configure" >Makefile.config
Packit b513ef
echo "OCAML_CORE_STDLIB=${ocaml_core_stdlib}" >>Makefile.config
Packit b513ef
echo "OCAML_CORE_BIN=${ocaml_core_bin}" >>Makefile.config
Packit b513ef
echo "OCAML_CORE_MAN=${ocaml_core_man}" >>Makefile.config
Packit b513ef
echo "OCAML_SITELIB=${ocaml_sitelib}" >>Makefile.config
Packit b513ef
echo "OCAML_THREADS=${ocaml_threads}" >>Makefile.config
Packit b513ef
echo "OCAMLFIND_BIN=${ocamlfind_bin}" >>Makefile.config
Packit b513ef
echo "OCAMLFIND_MAN=${ocamlfind_man}" >>Makefile.config
Packit b513ef
echo "OCAMLFIND_CONF=${ocamlfind_config}" >>Makefile.config
Packit b513ef
echo "OCAML_AUTOLINK=${ocaml_autolink}" >>Makefile.config
Packit b513ef
echo "OCAML_REMOVE_DIRECTORY=${have_remdir}" >>Makefile.config
Packit b513ef
echo "EXEC_SUFFIX=${exec_suffix}" >>Makefile.config
Packit b513ef
echo "LIB_SUFFIX=${lib_suffix}" >>Makefile.config
Packit b513ef
echo "CUSTOM=${custom}" >>Makefile.config
Packit b513ef
echo "PARTS=${parts}" >>Makefile.config
Packit b513ef
echo "INSTALL_TOPFIND=${with_topfind}" >>Makefile.config
Packit b513ef
echo "INSTALL_CAMLP4=${with_camlp4}" >>Makefile.config
Packit b513ef
echo "USE_CYGPATH=${use_cygpath}" >>Makefile.config
Packit b513ef
echo "HAVE_NATDYNLINK=${have_natdynlink}" >>Makefile.config
Packit b513ef
echo "VERSION=${version}" >>Makefile.config
Packit b513ef
echo "ENABLE_TOPFIND_PPXOPT=${enable_topfind_ppxopt}" >>Makefile.config
Packit b513ef
echo "SYSTEM=${system}" >>Makefile.config
Packit b513ef
echo "NUMTOP=${numtop}" >>Makefile.config
Packit b513ef
echo "SH=${sh}" >>Makefile.config
Packit b513ef
if [ "$mingw_lib" != "" ]; then
Packit b513ef
    echo "OCAMLC_FLAGS=-I \"${mingw_lib}\"" >>Makefile.config
Packit b513ef
    echo "OCAMLOPT_FLAGS=-I \"${mingw_lib}\"" >>Makefile.config
Packit b513ef
fi
Packit b513ef
echo "OPAQUE=${opaque}" >>Makefile.config
Packit b513ef
Packit b513ef
# All OK
Packit b513ef
Packit b513ef
echo
Packit b513ef
echo "About the OCAML core installation:"
Packit b513ef
echo "    Standard library:      ${ocaml_core_stdlib}"
Packit b513ef
echo "    Binaries:              ${ocaml_core_bin}"
Packit b513ef
echo "    Manual pages:          ${ocaml_core_man}"
Packit b513ef
echo "    Multi-threading type:  ${ocaml_threads}"
Packit b513ef
echo "The directory of site-specific packages will be"
Packit b513ef
echo "    site-lib:              ${ocaml_sitelib}"
Packit b513ef
echo "The configuration file is written to:"
Packit b513ef
echo "    findlib config file:   ${ocamlfind_config}"
Packit b513ef
echo "Software will be installed:"
Packit b513ef
echo "    Libraries:             in <site-lib>/findlib"
Packit b513ef
echo "    Binaries:              ${ocamlfind_bin}"
Packit b513ef
echo "    Manual pages:          ${ocamlfind_man}"
Packit b513ef
if [ $with_topfind -gt 0 ]; then
Packit b513ef
    echo "    topfind script:        ${ocaml_core_stdlib}"
Packit b513ef
else
Packit b513ef
    echo "    topfind script:        omitted"
Packit b513ef
fi
Packit b513ef
Packit b513ef
if [ $with_ppxopt -gt 0 ]; then
Packit b513ef
    echo "Topfind ppxopt support:    yes"
Packit b513ef
else
Packit b513ef
    echo "Topfind ppxopt support:    no"
Packit b513ef
fi
Packit b513ef
Packit b513ef
if [ $with_toolbox -gt 0 ]; then
Packit b513ef
    echo "Toolbox:                   yes"
Packit b513ef
else
Packit b513ef
    echo "Toolbox:                   no"
Packit b513ef
fi
Packit b513ef
Packit b513ef
if [ -z "$custom" ]; then
Packit b513ef
    echo "Link custom runtime:       no"
Packit b513ef
else
Packit b513ef
    echo "Link custom runtime:       yes"
Packit b513ef
fi
Packit b513ef
Packit b513ef
if [ $cbytes -gt 0 ]; then
Packit b513ef
    echo "Need bytes compatibility:  yes"
Packit b513ef
else
Packit b513ef
    echo "Need bytes compatibility:  no"
Packit b513ef
fi
Packit b513ef
Packit b513ef
echo
Packit b513ef
echo "Configuration has been written to Makefile.config"
Packit b513ef
echo
Packit b513ef
echo "You can now do 'make all', and optionally 'make opt', to build ocamlfind."