1996-02-13 08:29:09 -08:00
#! /bin/sh
1999-12-09 10:53:52 -08:00
#########################################################################
# #
2011-07-27 07:17:02 -07:00
# OCaml #
1999-12-09 10:53:52 -08:00
# #
# Xavier Leroy, projet Cristal, INRIA Rocquencourt #
# #
# Copyright 1999 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
2001-12-07 05:41:02 -08:00
# under the terms of the GNU Library General Public License, with #
# the special exception on linking described in file LICENSE. #
1999-12-09 10:53:52 -08:00
# #
#########################################################################
1996-02-13 08:29:09 -08:00
2001-07-14 09:54:17 -07:00
configure_options="$*"
1999-03-10 01:51:16 -08:00
prefix=/usr/local
bindir=''
libdir=''
mandir=''
1996-02-13 08:29:09 -08:00
manext=1
host_type=unknown
2013-06-30 04:41:40 -07:00
target_type=""
2000-12-12 02:26:02 -08:00
ccoption=''
2007-10-30 05:37:16 -07:00
asoption=''
asppoption=''
1996-02-13 08:29:09 -08:00
cclibs=''
2000-10-27 08:18:24 -07:00
curseslibs=''
1998-03-13 11:59:11 -08:00
mathlib='-lm'
2001-08-28 07:47:48 -07:00
dllib=''
1996-06-19 02:43:01 -07:00
x11_include_dir=''
x11_lib_dir=''
2012-02-07 04:43:34 -08:00
graph_wanted=yes
2003-09-12 00:36:15 -07:00
pthread_wanted=yes
2002-11-15 08:36:39 -08:00
dl_defs=''
1999-11-30 08:07:38 -08:00
verbose=no
2013-07-28 08:52:14 -07:00
with_curses=yes
2011-03-17 09:18:05 -07:00
debugruntime=noruntimed
2013-07-28 08:52:14 -07:00
with_sharedlibs=yes
2004-05-17 10:10:00 -07:00
gcc_warnings="-Wall"
2006-08-18 07:52:19 -07:00
partialld="ld -r"
2013-07-28 08:52:14 -07:00
with_camlp4=camlp4
with_debugger=ocamldebugger
2013-07-28 08:52:17 -07:00
with_ocamldoc=ocamldoc
with_ocamlbuild=ocamlbuild
2013-06-03 11:03:59 -07:00
with_frame_pointers=false
2013-06-30 05:42:23 -07:00
TOOLPREF=""
2013-09-04 08:12:37 -07:00
with_cfi=true
1999-12-09 10:53:52 -08:00
2001-12-07 06:23:01 -08:00
# Try to turn internationalization off, can cause config.guess to malfunction!
unset LANG
2006-04-16 16:28:22 -07:00
unset LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME
2001-12-07 06:23:01 -08:00
2003-08-20 08:10:58 -07:00
# Turn off some MacOS X debugging stuff, same reason
unset RC_TRACE_ARCHIVES RC_TRACE_DYLIBS RC_TRACE_PREBINDING_DISABLED
2013-06-27 12:10:08 -07:00
# The inf(), wrn(), err() functions below can be used to provide a consistent
# way to notify the user. The notification is always given to the stdout
# descriptor.
#
# Their output is redirected to a file-descriptor "3" which is then redirected
# to fd 1 at the level of the whole configure script. This is done to not
# conflict with how values are returned from functions in shell script.
# Consider the following where "It works!" would be mixed with "42".
# do_foo() {
# if some_command; then
# inf "It works!"
# echo "42"
# fi
# }
inf() {
printf "%b\n" "$*" 1>&3
}
wrn() {
printf "[WARNING] %b\n" "$*" 1>&3
}
err() {
printf "[ERROR!]%b\n" "$*" 1>&3
exit 2
}
exec 3>&1
1996-02-13 08:29:09 -08:00
# Parse command-line arguments
2013-06-27 12:28:27 -07:00
if echo "$configure_options" | grep -q -e '--\?[a-zA-Z0-9-]\+='; then
err "Arguments to this script look like '-prefix /foo/bar', not '-prefix=/foo/bar' (note the '=')."
fi
1996-02-13 08:29:09 -08:00
while : ; do
case "$1" in
"") break;;
1999-03-10 01:51:16 -08:00
-prefix|--prefix)
prefix=$2; shift;;
1997-10-24 08:49:12 -07:00
-bindir|--bindir)
bindir=$2; shift;;
-libdir|--libdir)
libdir=$2; shift;;
-mandir|--mandir)
2002-04-24 02:26:32 -07:00
case "$2" in
*/man[1-9ln])
mandir=`echo $2 | sed -e 's|^\(.*\)/man.$|\1|'`
manext=`echo $2 | sed -e 's/^.*\(.\)$/\1/'`;;
*)
mandir=$2
manext=1;;
esac
1997-10-24 08:49:12 -07:00
shift;;
-host*|--host*)
host_type=$2; shift;;
2013-06-30 04:41:40 -07:00
-target*|--target*)
target_type=$2; shift;;
1997-10-24 08:49:12 -07:00
-cc*)
2000-12-12 02:26:02 -08:00
ccoption="$2"; shift;;
2007-10-30 05:37:16 -07:00
-as)
asoption="$2"; shift;;
-aspp)
asppoption="$2"; shift;;
1997-10-24 08:49:12 -07:00
-lib*)
2000-10-27 08:18:24 -07:00
cclibs="$2 $cclibs"; shift;;
2012-02-07 04:43:34 -08:00
-no-curses|--no-curses)
2013-07-28 08:52:14 -07:00
with_curses=no;;
2012-02-07 04:43:34 -08:00
-no-shared-libs|--no-shared-libs)
2013-07-28 08:52:14 -07:00
with_sharedlibs=no;;
1997-10-24 08:49:12 -07:00
-x11include*|--x11include*)
x11_include_dir=$2; shift;;
-x11lib*|--x11lib*)
x11_lib_dir=$2; shift;;
2012-02-07 04:43:34 -08:00
-no-graph|--no-graph) graph_wanted=no;;
1997-11-10 10:20:48 -08:00
-with-pthread*|--with-pthread*)
2003-07-17 01:38:28 -07:00
;; # Ignored for backward compatibility
2003-09-12 00:36:15 -07:00
-no-pthread*|--no-pthread*)
pthread_wanted=no;;
2010-01-20 08:26:46 -08:00
-partialld|--partialld)
partialld="$2"; shift;;
2002-11-15 08:36:39 -08:00
-dldefs*|--dldefs*)
dl_defs="$2"; shift;;
-dllibs*|--dllibs*)
dllib="$2"; shift;;
1999-11-30 08:07:38 -08:00
-verbose|--verbose)
2000-01-07 07:50:42 -08:00
verbose=yes;;
2011-03-17 09:18:05 -07:00
-with-debug-runtime|--with-debug-runtime)
debugruntime=runtimed;;
2012-01-23 07:18:22 -08:00
-no-camlp4|--no-camlp4)
2013-07-28 08:52:14 -07:00
with_camlp4="";;
-no-debugger|--no-debugger)
with_debugger="";;
2013-07-28 08:52:17 -07:00
-no-ocamldoc|--no-ocamldoc)
with_ocamldoc="";;
-no-ocamlbuild|--no-ocamlbuild)
with_ocamlbuild="";;
2013-06-03 11:03:59 -07:00
-with-frame-pointers|--with-frame-pointers)
with_frame_pointers=true;;
2013-09-04 08:12:37 -07:00
-no-cfi|--no-cfi)
with_cfi=false;;
2013-06-27 12:10:08 -07:00
*) err "Unknown option \"$1\".";;
1996-02-13 08:29:09 -08:00
esac
shift
done
1997-10-24 08:49:12 -07:00
# Sanity checks
1999-03-10 01:51:16 -08:00
case "$prefix" in
/*) ;;
2013-06-27 12:10:08 -07:00
*) err "The -prefix directory must be absolute.";;
1999-03-10 01:51:16 -08:00
esac
1997-10-24 08:49:12 -07:00
case "$bindir" in
/*) ;;
1999-03-10 01:51:16 -08:00
"") ;;
2012-01-26 05:02:51 -08:00
'$(PREFIX)/'*) ;;
2013-06-27 12:10:08 -07:00
*) err 'The -bindir directory must be absolute or relative to $(PREFIX).';;
1997-10-24 08:49:12 -07:00
esac
case "$libdir" in
/*) ;;
1999-03-10 01:51:16 -08:00
"") ;;
2012-01-26 05:02:51 -08:00
'$(PREFIX)/'*) ;;
2013-06-27 12:10:08 -07:00
*) err 'The -libdir directory must be absolute or relative to $(PREFIX).';;
1997-10-24 08:49:12 -07:00
esac
case "$mandir" in
/*) ;;
1999-03-10 01:51:16 -08:00
"") ;;
2012-01-26 05:02:51 -08:00
'$(PREFIX)/'*) ;;
2013-06-27 12:10:08 -07:00
*) err 'The -mandir directory must be absolute or relative to $(PREFIX).';;
1997-10-24 08:49:12 -07:00
esac
2013-07-28 08:52:17 -07:00
if test -n "$with_camlp4" -a -z "$with_ocamlbuild"; then
err "Camlp4 is enabled but not ocamlbuild; building camlp4 is not possible without building ocamlbuild."
fi
1996-02-13 08:29:09 -08:00
# Generate the files
cd config/auto-aux
rm -f s.h m.h Makefile
touch s.h m.h Makefile
2001-02-21 19:37:29 -08:00
# Write options to Makefile
echo "# generated by ./configure $configure_options" >> Makefile
1996-02-13 08:29:09 -08:00
# Where to install
1999-03-10 01:51:16 -08:00
echo "PREFIX=$prefix" >> Makefile
case "$bindir" in
"") echo 'BINDIR=$(PREFIX)/bin' >> Makefile
bindir="$prefix/bin";;
*) echo "BINDIR=$bindir" >> Makefile;;
esac
case "$libdir" in
"") echo 'LIBDIR=$(PREFIX)/lib/ocaml' >> Makefile
libdir="$prefix/lib/ocaml";;
*) echo "LIBDIR=$libdir" >> Makefile;;
esac
2002-06-27 04:36:02 -07:00
echo 'STUBLIBDIR=$(LIBDIR)/stublibs' >> Makefile
1999-03-10 01:51:16 -08:00
case "$mandir" in
2002-04-24 02:26:32 -07:00
"") echo 'MANDIR=$(PREFIX)/man' >> Makefile
mandir="$prefix/man";;
1999-03-10 01:51:16 -08:00
*) echo "MANDIR=$mandir" >> Makefile;;
esac
1996-02-13 08:29:09 -08:00
echo "MANEXT=$manext" >> Makefile
# Determine the system type
1996-02-25 06:45:47 -08:00
if test "$host_type" = "unknown"; then
2001-06-25 07:40:07 -07:00
if host_type=`../gnu/config.guess`; then :; else
2013-06-27 12:10:08 -07:00
err "Cannot guess host type. You must specify one with the -host option."
1996-02-25 06:45:47 -08:00
fi
fi
2001-06-25 07:40:07 -07:00
if host=`../gnu/config.sub $host_type`; then :; else
2013-06-27 12:10:08 -07:00
err "Please specify the correct host type with the -host option"
1996-02-25 06:45:47 -08:00
fi
2013-06-30 04:41:40 -07:00
inf "Configuring for host $host ..."
if test -n "$target_type"; then
target="$target_type"
2013-06-30 05:42:23 -07:00
TOOLPREF="${target}-"
2013-06-30 04:41:40 -07:00
else
target="$host"
fi
inf "Configuring for target $target ..."
1996-02-13 08:29:09 -08:00
# Do we have gcc?
2000-12-12 02:26:02 -08:00
if test -z "$ccoption"; then
2013-06-30 05:42:23 -07:00
if sh ./searchpath "${TOOLPREF}gcc"; then
cc="${TOOLPREF}gcc"
1996-02-13 08:29:09 -08:00
else
2013-06-30 05:42:23 -07:00
if test x"$host" = x"$target"; then
cc="cc"
else
err "No cross-compiler found for ${target}.\n" \
"It should be named ${TOOLPREF}gcc and be in the PATH."
fi
1996-02-13 08:29:09 -08:00
fi
2000-12-12 02:26:02 -08:00
else
cc="$ccoption"
1996-02-13 08:29:09 -08:00
fi
2013-06-30 05:42:23 -07:00
inf "Using compiler $cc."
1997-03-21 02:44:35 -08:00
# Check for buggy versions of GCC
2013-06-30 05:42:23 -07:00
# These checks are not done for cross-compilation (yet at least) because after
# 15 years, I doubt someone will try to use an experimental (2.96) or
# known-unstable (2.7.2.1) version for cross-compilation.
1997-03-21 02:44:35 -08:00
2002-03-11 02:12:43 -08:00
buggycc="no"
2013-06-30 04:41:40 -07:00
case "$target,$cc" in
1997-08-22 01:52:38 -07:00
i[3456]86-*-*,gcc*)
1997-03-21 02:44:35 -08:00
case `$cc --version` in
1997-08-22 01:52:38 -07:00
2.7.2.1) cat <<'EOF'
WARNING: you are using gcc version 2.7.2.1 on an Intel x86 processor.
This version of gcc is known to generate incorrect code for the
2011-04-26 05:16:50 -07:00
OCaml runtime system on some Intel x86 machines. (The symptom
1997-08-22 01:52:38 -07:00
is a crash of boot/ocamlc when compiling stdlib/pervasives.mli.)
In particular, the version of gcc 2.7.2.1 that comes with
Linux RedHat 4.x / Intel is affected by this problem.
Other Linux distributions might also be affected.
If you are using one of these configurations, you are strongly advised
2002-03-11 02:12:43 -08:00
to use another version of gcc, such as 2.95, which are
2011-04-26 05:16:50 -07:00
known to work well with OCaml.
1997-08-22 01:52:38 -07:00
Press <enter> to proceed or <interrupt> to stop.
EOF
1997-03-21 02:44:35 -08:00
read reply;;
2002-03-11 02:12:43 -08:00
2.96*) cat <<'EOF'
WARNING: you are using gcc version 2.96 on an Intel x86 processor.
Certain patched versions of gcc 2.96 are known to generate incorrect
2011-04-26 05:16:50 -07:00
code for the OCaml runtime system. (The symptom is a segmentation
2002-05-25 01:33:26 -07:00
violation on boot/ocamlc.) Those incorrectly patched versions can be found
2002-03-11 02:12:43 -08:00
in RedHat 7.2 and Mandrake 8.0 and 8.1; other Linux distributions
might also be affected. (See bug #57760 on bugzilla.redhat.com)
2003-07-22 00:41:31 -07:00
Auto-configuration will now select gcc compiler flags that work around
the problem. Still, if you observe segmentation faults while running
ocamlc or ocamlopt, you are advised to try another version of gcc,
such as 2.95.3 or 3.2.
2002-03-11 02:12:43 -08:00
EOF
buggycc="gcc.2.96";;
2002-11-15 08:36:39 -08:00
esac;;
1997-03-21 02:44:35 -08:00
esac
1997-03-11 01:25:23 -08:00
# Configure the bytecode compiler
1996-02-13 08:29:09 -08:00
1997-03-11 01:25:23 -08:00
bytecc="$cc"
2007-11-15 05:21:15 -08:00
mkexe="\$(BYTECC)"
2012-07-26 12:21:54 -07:00
mkexedebugflag="-g"
1997-03-11 01:25:23 -08:00
bytecccompopts=""
bytecclinkopts=""
2007-11-06 07:16:56 -08:00
dllccompopts=""
2000-08-10 07:41:24 -07:00
ostype="Unix"
2000-08-10 02:58:08 -07:00
exe=""
2007-11-15 05:21:15 -08:00
iflexdir=""
2013-06-30 05:42:23 -07:00
SO=".so"
TOOLCHAIN="cc"
1996-02-13 08:29:09 -08:00
2013-06-30 04:41:40 -07:00
case "$bytecc,$target" in
1997-05-13 07:02:58 -07:00
cc,*-*-nextstep*)
1997-03-11 01:25:23 -08:00
# GNU C extensions disabled, but __GNUC__ still defined!
1999-12-09 10:53:52 -08:00
bytecccompopts="-fno-defer-pop $gcc_warnings -U__GNUC__ -posix"
1997-03-11 01:25:23 -08:00
bytecclinkopts="-posix";;
2001-12-04 02:54:14 -08:00
*,*-*-rhapsody*)
1998-03-13 11:59:11 -08:00
# Almost the same as NeXTStep
1999-12-09 10:53:52 -08:00
bytecccompopts="-fno-defer-pop $gcc_warnings -DSHRINKED_GNUC"
1998-03-13 11:59:11 -08:00
mathlib="";;
2001-12-04 02:54:14 -08:00
*,*-*-darwin*)
2012-03-27 07:32:28 -07:00
bytecccompopts="-fno-defer-pop $gcc_warnings"
2006-06-29 02:45:10 -07:00
mathlib=""
2013-03-22 10:57:53 -07:00
mkexe="$mkexe -Wl,-no_compact_unwind"
2006-08-18 07:52:19 -07:00
# Tell gcc that we can use 32-bit code addresses for threaded code
2008-12-03 10:09:09 -08:00
# unless we are compiled for a shared library (-fPIC option)
echo "#ifndef __PIC__" >> m.h
echo "# define ARCH_CODE32" >> m.h
echo "#endif" >> m.h;;
1999-05-18 11:46:17 -07:00
*,*-*-beos*)
1999-12-09 10:53:52 -08:00
bytecccompopts="-fno-defer-pop $gcc_warnings"
1999-05-18 11:46:17 -07:00
# No -lm library
mathlib="";;
2013-06-30 05:42:23 -07:00
*gcc,alpha*-*-osf*)
1999-12-09 10:53:52 -08:00
bytecccompopts="-fno-defer-pop $gcc_warnings"
2000-07-27 04:12:54 -07:00
if cc="$bytecc" sh ./hasgot -mieee; then
bytecccompopts="-mieee $bytecccompopts";
fi
2000-03-10 06:30:16 -08:00
# Put code and static data in lower 4GB
bytecclinkopts="-Wl,-T,12000000 -Wl,-D,14000000"
# Tell gcc that we can use 32-bit code addresses for threaded code
echo "#define ARCH_CODE32" >> m.h;;
2001-07-02 04:35:04 -07:00
cc,alpha*-*-osf*)
2000-07-27 04:03:20 -07:00
bytecccompopts="-std1 -ieee";;
2013-06-30 05:42:23 -07:00
*gcc*,alpha*-*-linux*)
2001-11-23 06:55:25 -08:00
if cc="$bytecc" sh ./hasgot -mieee; then
bytecccompopts="-mieee $bytecccompopts";
fi;;
1997-03-21 02:44:35 -08:00
cc,mips-*-irix6*)
1999-03-09 02:02:40 -08:00
# Add -n32 flag to ensure compatibility with native-code compiler
bytecccompopts="-n32"
1997-03-11 01:25:23 -08:00
# Turn off warning "unused library"
1999-03-09 02:02:40 -08:00
bytecclinkopts="-n32 -Wl,-woff,84";;
1997-03-21 02:44:35 -08:00
cc*,mips-*-irix6*)
1997-12-02 05:04:03 -08:00
# (For those who want to force "cc -64")
1997-03-11 01:25:23 -08:00
# Turn off warning "unused library"
bytecclinkopts="-Wl,-woff,84";;
2001-06-25 07:40:07 -07:00
*,alpha*-*-unicos*)
1998-06-23 09:47:02 -07:00
# For the Cray T3E
bytecccompopts="-DUMK";;
2013-06-30 05:42:23 -07:00
*gcc*,powerpc-*-aix*)
2000-03-17 08:45:18 -08:00
# Avoid name-space pollution by requiring Unix98-conformant includes
bytecccompopts="-fno-defer-pop $gcc_warnings -D_XOPEN_SOURCE=500";;
2004-08-20 10:04:35 -07:00
*,powerpc-*-aix*)
2000-03-17 08:45:18 -08:00
bytecccompopts="-D_XOPEN_SOURCE=500";;
2013-06-30 05:42:23 -07:00
*gcc*,*-*-cygwin*)
2000-08-10 02:58:08 -07:00
bytecccompopts="-fno-defer-pop $gcc_warnings -U_WIN32"
2011-03-17 15:34:52 -07:00
dllccompopts="-U_WIN32 -DCAML_DLL"
2013-07-28 08:52:14 -07:00
if test $with_sharedlibs = yes; then
2012-03-23 08:22:13 -07:00
flexlink="flexlink -chain cygwin -merge-manifest -stack 16777216"
2010-01-20 08:26:46 -08:00
flexdir=`$flexlink -where | dos2unix`
if test -z "$flexdir"; then
2013-06-27 12:10:08 -07:00
wrn "flexlink not found: native shared libraries won't be available."
2013-07-28 08:52:14 -07:00
with_sharedlibs=no
2010-01-20 08:26:46 -08:00
else
iflexdir="-I\"$flexdir\""
mkexe="$flexlink -exe"
2012-07-26 12:21:54 -07:00
mkexedebugflag="-link -g"
2010-01-20 08:26:46 -08:00
fi
2009-05-20 04:52:42 -07:00
fi
2000-08-10 02:58:08 -07:00
exe=".exe"
ostype="Cygwin";;
2013-06-30 05:42:23 -07:00
*gcc*,*-*-mingw*)
bytecccompopts="-fno-defer-pop $gcc_warnings"
dllccompopt="-DCAML_DLL"
2013-07-28 08:52:14 -07:00
if test $with_sharedlibs = yes; then
2013-06-30 05:42:23 -07:00
case "$target" in
i686-*-*) flexlink_chain="mingw";;
x86_64-*-*) flexlink_chain="mingw64";;
esac
flexlink="flexlink -chain $flexlink_chain -merge-manifest -stack 16777216"
flexdir=`$flexlink -where`
if test -z "$flexdir"; then
wrn "flexlink not found: native shared libraries won't be available."
2013-07-28 08:52:14 -07:00
with_sharedlibs=no
2013-06-30 05:42:23 -07:00
else
iflexdir="-I\"$flexdir\""
mkexe="$flexlink -exe"
mkexedebugflag="-link -g"
fi
fi
exe=".exe"
ostype="Win32"
TOOLCHAIN="mingw"
SO=".dll"
;;
*gcc*,x86_64-*-linux*)
2003-06-30 01:28:48 -07:00
bytecccompopts="-fno-defer-pop $gcc_warnings"
# Tell gcc that we can use 32-bit code addresses for threaded code
2006-01-04 08:55:50 -08:00
# unless we are compiled for a shared library (-fPIC option)
echo "#ifndef __PIC__" >> m.h
echo "# define ARCH_CODE32" >> m.h
echo "#endif" >> m.h;;
2013-06-30 05:42:23 -07:00
*gcc*)
2000-03-17 08:45:18 -08:00
bytecccompopts="-fno-defer-pop $gcc_warnings";;
1997-03-11 01:25:23 -08:00
esac
# Configure compiler to use in further tests
2001-08-03 05:35:49 -07:00
cc="$bytecc -O $bytecclinkopts"
1999-11-30 08:07:38 -08:00
export cc cclibs verbose
1996-02-13 08:29:09 -08:00
1997-09-02 05:55:01 -07:00
# Check C compiler
sh ./runtest ansi.c
case $? in
2013-06-27 12:10:08 -07:00
0) inf "The C compiler is ANSI-compliant." ;;
1) err "The C compiler $cc is not ANSI-compliant.\n" \
"You need an ANSI C compiler to build OCaml.";;
2013-06-30 05:42:23 -07:00
*)
if test x"$host" != x"$target"; then
wrn "Unable to compile the test program.\n" \
"This failure is expected for cross-compilation:\n" \
"we will assume the C compiler is ANSI-compliant."
else
err "Unable to compile the test program.\n" \
"Make sure the C compiler $cc is properly installed."
fi;;
1997-09-02 05:55:01 -07:00
esac
2013-06-30 04:41:39 -07:00
# Determine which ocamlrun executable to use; for cross-compilation, a native
# "ocamlrun" executable must be available on the system.
if test x"$target" != x"$host"; then
if ! sh ./searchpath ocamlrun; then
2013-09-19 17:22:38 -07:00
err "Cross-compilation requires an ocaml runtime environment (the ocamlrun binary). Moreover, its version must be the same as the one you're trying to build (`cut -f1 -d+ < ../../VERSION`)."
2013-06-30 04:41:39 -07:00
else
2013-09-19 17:22:38 -07:00
# Make sure the version of the system ocaml and the version of these
# sources match. Don't compare "+devXX" on purpose as it would be too
# annoying during development and people using SVN are expected to know
# what they're doing and how to handle basic issues.
ocaml_system_version=`ocamlc -version | cut -f1 -d+`
2013-06-30 04:41:39 -07:00
ocaml_source_version=`sed -n '1 s/\([0-9\.]\+\).*/\1/ p' < ../../VERSION`
if test x"$ocaml_system_version" != x"$ocaml_source_version"; then
2013-09-19 17:22:38 -07:00
err "The system OCaml toolchain is $ocaml_system_version but these sources are $ocaml_source_version.\nBuilding a cross-compiler requires versions to match."
2013-06-30 04:41:39 -07:00
else
2013-09-19 17:22:38 -07:00
camlrun="ocamlrun"
2013-06-30 04:41:39 -07:00
fi
fi
else
2013-09-19 17:22:38 -07:00
rootdir=`cd ../.. && pwd`
camlrun=$rootdir/boot/ocamlrun
2013-06-30 04:41:39 -07:00
fi
1996-02-13 08:29:09 -08:00
# Check the sizes of data types
2013-06-30 05:42:23 -07:00
# OCaml needs a 32 or 64bit architectue and a 32-bit integer type.
1996-02-13 08:29:09 -08:00
2013-06-27 12:10:08 -07:00
inf "Checking the sizes of integers and pointers..."
2013-06-27 14:09:25 -07:00
ret=`sh ./runtest sizes.c`
2013-06-30 05:42:23 -07:00
if test "$?" -eq 0; then
set $ret
case "$2,$3" in
4,4) inf "OK, this is a regular 32 bit architecture."
echo "#undef ARCH_SIXTYFOUR" >> m.h
arch64=false;;
*,8) inf "Wow! A 64 bit architecture!"
echo "#define ARCH_SIXTYFOUR" >> m.h
arch64=true
if test $1 != 4 && test $2 != 4 && test $4 != 4; then
err "Sorry, we can't find a 32-bit integer type\n" \
"(sizeof(short) = $4, sizeof(int) = $1, sizeof(long) = $2)\n" \
"OCaml won't run on this architecture."
fi;;
*,*) err "This architecture seems to be neither 32 bits nor 64 bits.\n" \
"OCaml won't run on this architecture.";;
esac
else
# For cross-compilation, runtest always fails: add special handling.
case "$target" in
i686-*-mingw*) inf "OK, this is a regular 32 bit architecture."
echo "#undef ARCH_SIXTYFOUR" >> m.h
set 4 4 4 2
arch64=false;;
x86_64-*-mingw*) inf "Wow! A 64 bit architecture!"
echo "#define ARCH_SIXTYFOUR" >> m.h
set 4 4 8 2
arch64=true;;
*) err "Since datatype sizes cannot be guessed when cross-compiling,\n" \
"a hardcoded list is used but your architecture isn't known yet.\n" \
"You need to determine the sizes yourself.\n" \
"Please submit a bug report in order to expand the list." ;;
esac
1998-06-23 06:39:54 -07:00
fi
echo "#define SIZEOF_INT $1" >> m.h
echo "#define SIZEOF_LONG $2" >> m.h
2005-09-22 07:21:50 -07:00
echo "#define SIZEOF_PTR $3" >> m.h
1998-06-23 06:39:54 -07:00
echo "#define SIZEOF_SHORT $4" >> m.h
1996-02-13 08:29:09 -08:00
2000-02-14 05:23:00 -08:00
if test $2 = 8; then
2000-02-11 07:47:09 -08:00
echo "#define ARCH_INT64_TYPE long" >> m.h
echo "#define ARCH_UINT64_TYPE unsigned long" >> m.h
echo '#define ARCH_INT64_PRINTF_FORMAT "l"' >> m.h
2002-05-25 01:33:26 -07:00
int64_native=true
2000-02-11 07:47:09 -08:00
else
2000-02-11 04:03:31 -08:00
sh ./runtest longlong.c
case $? in
2013-06-27 12:10:08 -07:00
0) inf "64-bit \"long long\" integer type found (printf with \"%ll\")."
2000-02-11 07:47:09 -08:00
echo "#define ARCH_INT64_TYPE long long" >> m.h
echo "#define ARCH_UINT64_TYPE unsigned long long" >> m.h
2000-03-10 09:36:31 -08:00
echo '#define ARCH_INT64_PRINTF_FORMAT "ll"' >> m.h
2002-05-25 01:33:26 -07:00
int64_native=true;;
2013-06-27 12:10:08 -07:00
1) inf "64-bit \"long long\" integer type found (printf with \"%q\")."
2001-03-07 07:34:00 -08:00
echo "#define ARCH_INT64_TYPE long long" >> m.h
echo "#define ARCH_UINT64_TYPE unsigned long long" >> m.h
echo '#define ARCH_INT64_PRINTF_FORMAT "q"' >> m.h
2002-05-25 01:33:26 -07:00
int64_native=true;;
2013-06-27 12:10:08 -07:00
2) inf "64-bit \"long long\" integer type found (but no printf)."
2002-05-25 01:33:26 -07:00
echo "#define ARCH_INT64_TYPE long long" >> m.h
echo "#define ARCH_UINT64_TYPE unsigned long long" >> m.h
echo '#undef ARCH_INT64_PRINTF_FORMAT' >> m.h
int64_native=true;;
2013-06-30 05:42:23 -07:00
*)
case "$target" in
*-*-mingw*)
inf "No suitable 64-bit integer type found, will use software emulation."
echo "#define ARCH_INT64_TYPE long long" >> m.h
echo "#define ARCH_UINT64_TYPE unsigned long long" >> m.h
echo '#define ARCH_INT64_PRINTF_FORMAT "I64"' >> m.h
int64_native=true;;
*)
wrn "No suitable 64-bit integer type found, will use software emulation."
echo "#undef ARCH_INT64_TYPE" >> m.h
echo "#undef ARCH_UINT64_TYPE" >> m.h
echo '#undef ARCH_INT64_PRINTF_FORMAT' >> m.h
int64_native=false;;
esac;;
2000-02-11 04:03:31 -08:00
esac
fi
2005-09-24 02:19:09 -07:00
if test $3 = 8 && test $int64_native = false; then
2013-06-27 12:10:08 -07:00
err "This architecture has 64-bit pointers but no 64-bit integer type.\n" \
"OCaml won't run on this architecture."
2005-09-24 02:19:09 -07:00
fi
1996-02-13 08:29:09 -08:00
# Determine endianness
1997-04-11 07:27:45 -07:00
sh ./runtest endian.c
1996-02-13 08:29:09 -08:00
case $? in
2013-06-27 12:10:08 -07:00
0) inf "This is a big-endian architecture."
1996-07-01 05:43:28 -07:00
echo "#define ARCH_BIG_ENDIAN" >> m.h;;
2013-06-27 12:10:08 -07:00
1) inf "This is a little-endian architecture."
1996-07-01 05:43:28 -07:00
echo "#undef ARCH_BIG_ENDIAN" >> m.h;;
2013-06-27 12:10:08 -07:00
2) err "This architecture seems to be neither big endian nor little endian.\n" \
"OCaml won't run on this architecture.";;
2013-06-30 05:42:23 -07:00
*) case $target in
*-*-mingw*) inf "This is a little-endian architecture."
echo "#undef ARCH_BIG_ENDIAN" >> m.h;;
*) wrn "Something went wrong during endianness determination.\n" \
"You will have to figure out endianness yourself (option ARCH_BIG_ENDIAN in m.h).";;
esac;;
1996-02-13 08:29:09 -08:00
esac
# Determine alignment constraints
2013-06-30 04:41:40 -07:00
case "$target" in
2011-07-20 02:17:07 -07:00
sparc*-*-*|hppa*-*-*|arm*-*-*|mips*-*-*)
2003-03-10 09:04:00 -08:00
# On Sparc V9 with certain versions of gcc, determination of double
2003-10-21 06:17:06 -07:00
# alignment is not reliable (PR#1521), hence force it.
# Same goes for hppa.
2010-08-02 07:37:22 -07:00
# PR#5088 suggests same problem on ARM.
2011-07-20 02:17:07 -07:00
# PR#5280 reports same problem on MIPS.
2004-06-12 07:50:52 -07:00
# But there's a knack (PR#2572):
2006-04-16 16:28:22 -07:00
# if we're in 64-bit mode (sizeof(long) == 8),
2004-06-12 07:50:52 -07:00
# we must not doubleword-align floats...
if test $2 = 8; then
2013-06-27 12:10:08 -07:00
inf "Doubles can be word-aligned."
2004-06-12 07:50:52 -07:00
echo "#undef ARCH_ALIGN_DOUBLE" >> m.h
else
2013-06-27 12:10:08 -07:00
inf "Doubles must be doubleword-aligned."
2004-06-12 07:50:52 -07:00
echo "#define ARCH_ALIGN_DOUBLE" >> m.h
fi;;
2003-03-10 09:04:00 -08:00
*)
sh ./runtest dblalign.c
case $? in
2013-06-27 12:10:08 -07:00
0) inf "Doubles can be word-aligned."
2003-03-10 09:04:00 -08:00
echo "#undef ARCH_ALIGN_DOUBLE" >> m.h;;
2013-06-27 12:10:08 -07:00
1) inf "Doubles must be doubleword-aligned."
2003-03-10 09:04:00 -08:00
echo "#define ARCH_ALIGN_DOUBLE" >> m.h;;
2013-06-30 05:42:23 -07:00
*) case "$target" in
*-*-mingw*) inf "Doubles can be word-aligned."
echo "#undef ARCH_ALIGN_DOUBLE" >> m.h;;
*) wrn "Something went wrong during alignment determination for doubles.\n" \
"We will assume alignment constraints over doubles.\n" \
"That's a safe bet: OCaml will work even if\n" \
"this architecture actually has no alignment constraints."
echo "#define ARCH_ALIGN_DOUBLE" >> m.h;;
esac;;
2003-03-10 09:04:00 -08:00
esac;;
1996-02-13 08:29:09 -08:00
esac
2002-05-25 01:33:26 -07:00
if $int64_native; then
2013-06-30 04:41:40 -07:00
case "$target" in
2011-07-20 02:17:07 -07:00
# PR#5088: autodetection is unreliable on ARM. PR#5280: also on MIPS.
sparc*-*-*|hppa*-*-*|arm*-*-*|mips*-*-*)
2004-06-12 07:50:52 -07:00
if test $2 = 8; then
2013-06-27 12:10:08 -07:00
inf "64-bit integers can be word-aligned."
2004-06-12 07:50:52 -07:00
echo "#undef ARCH_ALIGN_INT64" >> m.h
else
2013-06-27 12:10:08 -07:00
inf "64-bit integers must be doubleword-aligned."
2004-06-12 07:50:52 -07:00
echo "#define ARCH_ALIGN_INT64" >> m.h
fi;;
2013-06-30 05:42:23 -07:00
*-*-mingw*) true;; # Nothing is in config/m-nt.h so don't add anything.
2004-05-16 02:09:23 -07:00
*)
sh ./runtest int64align.c
case $? in
2013-06-27 12:10:08 -07:00
0) inf "64-bit integers can be word-aligned."
2004-05-16 02:09:23 -07:00
echo "#undef ARCH_ALIGN_INT64" >> m.h;;
2013-06-27 12:10:08 -07:00
1) inf "64-bit integers must be doubleword-aligned."
2004-05-16 02:09:23 -07:00
echo "#define ARCH_ALIGN_INT64" >> m.h;;
2013-09-04 08:12:37 -07:00
*) wrn "Something went wrong during alignment determination for\n" \
"64-bit integers. I'm going to assume this architecture has\n" \
"alignment constraints. That's a safe bet: OCaml will work\n" \
"even if this architecture has actually no alignment\n" \
"constraints." \
echo "#define ARCH_ALIGN_INT64" >> m.h;;
2004-05-16 02:09:23 -07:00
esac
2000-03-10 09:36:31 -08:00
esac
2002-05-25 01:33:26 -07:00
else
echo "#undef ARCH_ALIGN_INT64" >> m.h
2000-03-10 09:36:31 -08:00
fi
2001-11-27 02:17:36 -08:00
# Check semantics of division and modulus
sh ./runtest divmod.c
case $? in
2013-09-04 08:12:37 -07:00
0) inf "Native division and modulus have round-towards-zero semantics," \
"will use them."
2001-11-27 02:17:36 -08:00
echo "#undef NONSTANDARD_DIV_MOD" >> m.h;;
2013-09-04 08:12:37 -07:00
1) inf "Native division and modulus do not have round-towards-zero"
"semantics, will use software emulation."
2001-11-27 02:17:36 -08:00
echo "#define NONSTANDARD_DIV_MOD" >> m.h;;
2013-06-30 05:42:23 -07:00
*) case $target in
2013-09-04 08:12:37 -07:00
*-*-mingw*) inf "Native division and modulus have round-towards-zero" \
"semantics, will use them."
2013-06-30 05:42:23 -07:00
echo "#undef NONSTANDARD_DIV_MOD" >> m.h;;
2013-09-04 08:12:37 -07:00
*) wrn "Something went wrong while checking native division and modulus"\
"please report it at http://http://caml.inria.fr/mantis/"
2013-06-30 05:42:23 -07:00
echo "#define NONSTANDARD_DIV_MOD" >> m.h;;
esac;;
2001-11-27 02:17:36 -08:00
esac
2001-08-28 07:47:48 -07:00
# Shared library support
shared_libraries_supported=false
2002-11-15 08:36:39 -08:00
dl_needs_underscore=false
2001-08-28 07:47:48 -07:00
sharedcccompopts=''
mksharedlib=''
byteccrpath=''
2001-10-30 01:32:32 -08:00
mksharedlibrpath=''
2007-11-06 07:16:56 -08:00
natdynlinkopts=""
2001-08-28 07:47:48 -07:00
2013-07-28 08:52:14 -07:00
if test $with_sharedlibs = "yes"; then
2013-06-30 04:41:40 -07:00
case "$target" in
2007-11-06 07:16:56 -08:00
*-*-cygwin*)
2007-11-15 05:21:15 -08:00
mksharedlib="$flexlink"
2007-11-15 07:18:28 -08:00
mkmaindll="$flexlink -maindll"
2007-11-06 07:16:56 -08:00
shared_libraries_supported=true;;
2013-06-30 05:42:23 -07:00
*-*-mingw*)
mksharedlib="$flexlink"
mkmaindll="$flexlink -maindll"
shared_libraries_supported=true;;
2013-09-04 08:12:37 -07:00
*-*-linux-gnu|*-*-linux|*-*-freebsd[3-9]*|*-*-freebsd[1-9][0-9]*|*-*-openbsd*|*-*-netbsd*|*-*-gnu*)
2001-08-28 07:47:48 -07:00
sharedcccompopts="-fPIC"
2007-11-15 05:21:15 -08:00
mksharedlib="$bytecc -shared"
2001-08-28 07:47:48 -07:00
bytecclinkopts="$bytecclinkopts -Wl,-E"
byteccrpath="-Wl,-rpath,"
2001-10-30 01:32:32 -08:00
mksharedlibrpath="-Wl,-rpath,"
2007-11-06 07:16:56 -08:00
natdynlinkopts="-Wl,-E"
2001-08-28 07:47:48 -07:00
shared_libraries_supported=true;;
alpha*-*-osf*)
case "$bytecc" in
2013-06-30 05:42:23 -07:00
*gcc*)
2004-04-18 01:59:03 -07:00
sharedcccompopts="-fPIC"
2007-11-15 05:21:15 -08:00
mksharedlib="$bytecc -shared"
2004-04-18 01:59:03 -07:00
byteccrpath="-Wl,-rpath,"
mksharedlibrpath="-Wl,-rpath,"
shared_libraries_supported=true;;
cc*)
sharedcccompopts=""
2007-11-15 05:21:15 -08:00
mksharedlib="ld -shared -expect_unresolved '*'"
2004-04-18 01:59:03 -07:00
byteccrpath="-Wl,-rpath,"
mksharedlibrpath="-rpath "
shared_libraries_supported=true;;
esac;;
2001-09-05 03:44:19 -07:00
*-*-solaris2*)
2001-08-28 07:47:48 -07:00
case "$bytecc" in
2013-06-30 05:42:23 -07:00
*gcc*)
2001-08-28 07:47:48 -07:00
sharedcccompopts="-fPIC"
2001-10-25 04:31:12 -07:00
if sh ./solaris-ld; then
2007-11-15 05:21:15 -08:00
mksharedlib="$bytecc -shared"
2001-12-20 16:26:38 -08:00
byteccrpath="-R"
2001-10-30 01:32:32 -08:00
mksharedlibrpath="-R"
2001-09-05 03:44:19 -07:00
else
2007-11-15 05:21:15 -08:00
mksharedlib="$bytecc -shared"
2001-10-25 04:31:12 -07:00
bytecclinkopts="$bytecclinkopts -Wl,-E"
2008-04-15 23:50:31 -07:00
natdynlinkopts="-Wl,-E"
2001-10-25 04:31:12 -07:00
byteccrpath="-Wl,-rpath,"
2001-12-20 16:26:38 -08:00
mksharedlibrpath="-Wl,-rpath,"
2001-10-25 04:31:12 -07:00
fi
2002-07-23 07:12:03 -07:00
shared_libraries_supported=true;;
2001-08-28 07:47:48 -07:00
*)
sharedcccompopts="-KPIC"
2001-12-20 16:26:38 -08:00
byteccrpath="-R"
mksharedlibrpath="-R"
2007-11-15 05:21:15 -08:00
mksharedlib="/usr/ccs/bin/ld -G"
2002-07-23 07:12:03 -07:00
shared_libraries_supported=true;;
2001-08-28 07:47:48 -07:00
esac;;
2002-05-25 01:33:26 -07:00
mips*-*-irix[56]*)
2001-08-28 07:47:48 -07:00
case "$bytecc" in
cc*) sharedcccompopts="";;
2013-06-30 05:42:23 -07:00
*gcc*) sharedcccompopts="-fPIC";;
2001-08-28 07:47:48 -07:00
esac
2007-11-15 05:21:15 -08:00
mksharedlib="ld -shared -rdata_shared"
2001-08-28 07:47:48 -07:00
byteccrpath="-Wl,-rpath,"
2001-10-30 01:32:32 -08:00
mksharedlibrpath="-rpath "
2001-08-28 07:47:48 -07:00
shared_libraries_supported=true;;
2011-08-04 07:31:34 -07:00
i[3456]86-*-darwin[89].*)
2008-12-03 10:09:09 -08:00
mksharedlib="$bytecc -bundle -flat_namespace -undefined suppress -read_only_relocs suppress"
2007-11-12 09:26:00 -08:00
bytecccompopts="$dl_defs $bytecccompopts"
dl_needs_underscore=false
shared_libraries_supported=true;;
2006-08-30 02:40:56 -07:00
*-apple-darwin*)
2013-03-22 10:57:53 -07:00
mksharedlib="$bytecc -bundle -flat_namespace -undefined suppress -Wl,-no_compact_unwind"
2003-01-09 04:01:51 -08:00
bytecccompopts="$dl_defs $bytecccompopts"
2007-11-12 09:26:00 -08:00
dl_needs_underscore=false
2003-01-09 04:01:51 -08:00
shared_libraries_supported=true;;
2007-11-10 04:29:28 -08:00
m88k-*-openbsd*)
shared_libraries_supported=false;;
vax-*-openbsd*)
shared_libraries_supported=false;;
*-*-openbsd*)
sharedcccompopts="-fPIC"
2007-11-15 05:21:15 -08:00
mksharedlib="$bytecc -shared"
2007-11-10 04:29:28 -08:00
bytecclinkopts="$bytecclinkopts -Wl,-E"
2008-04-15 23:50:31 -07:00
natdynlinkopts="-Wl,-E"
2007-11-10 04:29:28 -08:00
byteccrpath="-Wl,-rpath,"
mksharedlibrpath="-Wl,-rpath,"
shared_libraries_supported=true;;
2001-08-28 07:47:48 -07:00
esac
fi
2007-11-15 07:18:28 -08:00
if test -z "$mkmaindll"; then
mkmaindll=$mksharedlib
fi
2010-05-25 04:10:59 -07:00
# Configure native dynlink
natdynlink=false
2013-07-28 08:52:14 -07:00
if test $with_sharedlibs = "yes"; then
2013-06-30 04:41:40 -07:00
case "$target" in
2010-05-25 04:10:59 -07:00
*-*-cygwin*) natdynlink=true;;
2013-07-28 08:52:18 -07:00
*-*-mingw*) natdynlink=true;;
2010-05-25 04:10:59 -07:00
i[3456]86-*-linux*) natdynlink=true;;
2012-06-26 09:01:05 -07:00
i[3456]86-*-gnu*) natdynlink=true;;
2010-05-25 04:10:59 -07:00
x86_64-*-linux*) natdynlink=true;;
2011-08-04 07:31:34 -07:00
i[3456]86-*-darwin[89].*) natdynlink=true;;
i[3456]86-*-darwin*)
2010-05-28 04:40:00 -07:00
if test $arch64 == true; then
natdynlink=true
fi;;
2012-01-23 07:44:01 -08:00
x86_64-*-darwin*) natdynlink=true;;
2012-06-26 09:01:05 -07:00
powerpc*-*-linux*) natdynlink=true;;
sparc*-*-linux*) natdynlink=true;;
2010-05-31 03:09:32 -07:00
i686-*-kfreebsd*) natdynlink=true;;
x86_64-*-kfreebsd*) natdynlink=true;;
2011-03-17 15:34:52 -07:00
i[345]86-*-freebsd*) natdynlink=true;;
x86_64-*-freebsd*) natdynlink=true;;
i[345]86-*-openbsd*) natdynlink=true;;
x86_64-*-openbsd*) natdynlink=true;;
i[345]86-*-netbsd*) natdynlink=true;;
x86_64-*-netbsd*) natdynlink=true;;
2010-05-31 03:09:32 -07:00
i386-*-gnu0.3) natdynlink=true;;
2012-02-04 02:15:24 -08:00
arm*-*-linux*) natdynlink=true;;
2013-07-18 09:09:20 -07:00
aarch64-*-linux*) natdynlink=true;;
2010-05-25 04:10:59 -07:00
esac
fi
2010-05-25 03:00:39 -07:00
if test $natdynlink = "true"; then
cmxs="cmxs"
else
cmxs="cmxa"
fi
2010-05-25 04:10:59 -07:00
1996-02-13 08:29:09 -08:00
# Configure the native-code compiler
arch=none
model=default
system=unknown
2013-06-30 04:41:40 -07:00
case "$target" in
2003-01-03 08:02:12 -08:00
sparc*-*-solaris2.*) arch=sparc; system=solaris;;
sparc*-*-*bsd*) arch=sparc; system=bsd;;
sparc*-*-linux*) arch=sparc; system=linux;;
2006-04-16 16:28:22 -07:00
sparc*-*-gnu*) arch=sparc; system=gnu;;
2010-05-25 04:12:48 -07:00
i[3456]86-*-linux*) arch=i386; system=linux_`sh ./runtest elf.c`;;
1999-10-14 06:34:17 -07:00
i[3456]86-*-*bsd*) arch=i386; system=bsd_`sh ./runtest elf.c`;;
1996-02-13 08:29:09 -08:00
i[3456]86-*-nextstep*) arch=i386; system=nextstep;;
2009-05-20 04:52:42 -07:00
i[3456]86-*-solaris*) if $arch64; then
arch=amd64; system=solaris
else
arch=i386; system=solaris
fi;;
1999-05-18 11:46:17 -07:00
i[3456]86-*-beos*) arch=i386; system=beos;;
2000-08-10 02:58:08 -07:00
i[3456]86-*-cygwin*) arch=i386; system=cygwin;;
2008-12-03 10:09:09 -08:00
i[3456]86-*-darwin*) if $arch64; then
arch=amd64; system=macosx
else
arch=i386; system=macosx
fi;;
2006-04-16 16:28:22 -07:00
i[3456]86-*-gnu*) arch=i386; system=gnu;;
2013-06-30 05:42:23 -07:00
i[3456]86-*-mingw*) arch=i386; system=mingw;;
2008-01-11 08:13:18 -08:00
powerpc*-*-linux*) arch=power; model=ppc; system=elf;;
2006-09-20 10:44:05 -07:00
powerpc-*-netbsd*) arch=power; model=ppc; system=elf;;
2013-06-24 01:17:30 -07:00
powerpc-*-openbsd*) arch=power; model=ppc; system=bsd_elf;;
1998-03-13 11:59:11 -08:00
powerpc-*-rhapsody*) arch=power; model=ppc; system=rhapsody;;
2006-05-31 01:16:34 -07:00
powerpc-*-darwin*) arch=power; system=rhapsody
2013-09-04 08:12:37 -07:00
if $arch64;then model=ppc64;else model=ppc;fi;;
2012-10-23 23:20:45 -07:00
armv6*-*-linux-gnueabihf) arch=arm; model=armv6; system=linux_eabihf;;
2012-02-04 02:15:24 -08:00
arm*-*-linux-gnueabihf) arch=arm; system=linux_eabihf;;
armv7*-*-linux-gnueabi) arch=arm; model=armv7; system=linux_eabi;;
armv6t2*-*-linux-gnueabi) arch=arm; model=armv6t2; system=linux_eabi;;
armv6*-*-linux-gnueabi) arch=arm; model=armv6; system=linux_eabi;;
armv5te*-*-linux-gnueabi) arch=arm; model=armv5te; system=linux_eabi;;
armv5*-*-linux-gnueabi) arch=arm; model=armv5; system=linux_eabi;;
arm*-*-linux-gnueabi) arch=arm; system=linux_eabi;;
2003-06-30 01:28:48 -07:00
x86_64-*-linux*) arch=amd64; system=linux;;
2006-04-16 16:28:22 -07:00
x86_64-*-gnu*) arch=amd64; system=gnu;;
2004-05-16 02:09:23 -07:00
x86_64-*-freebsd*) arch=amd64; system=freebsd;;
2005-11-08 06:00:23 -08:00
x86_64-*-netbsd*) arch=amd64; system=netbsd;;
2004-07-13 05:19:15 -07:00
x86_64-*-openbsd*) arch=amd64; system=openbsd;;
2012-01-23 07:18:22 -08:00
x86_64-*-darwin*) arch=amd64; system=macosx;;
2013-06-30 05:42:23 -07:00
x86_64-*-mingw*) arch=amd64; system=mingw;;
2013-07-18 09:09:20 -07:00
aarch64-*-linux*) arch=arm64; system=linux;;
1996-02-13 08:29:09 -08:00
esac
2008-01-11 08:13:18 -08:00
# Some platforms exist both in 32-bit and 64-bit variants, not distinguished
2013-06-30 04:41:40 -07:00
# by $target. Turn off native code compilation on platforms where 64-bit mode
2008-01-11 08:13:18 -08:00
# is not supported. (PR#4441)
if $arch64; then
case "$arch,$model" in
2011-12-17 03:21:24 -08:00
sparc,default|power,ppc)
2008-01-11 08:13:18 -08:00
arch=none; model=default; system=unknown;;
esac
fi
2000-12-12 02:26:02 -08:00
if test -z "$ccoption"; then
2011-12-17 03:21:24 -08:00
nativecc="$bytecc"
2000-12-12 02:26:02 -08:00
else
nativecc="$ccoption"
fi
1996-02-13 08:29:09 -08:00
1997-02-03 06:41:42 -08:00
nativecccompopts=''
nativecclinkopts=''
2013-03-22 10:57:53 -07:00
# FIXME the naming of nativecclinkopts is broken: these are options for
# ld (for shared libs), not for cc
2001-08-28 07:47:48 -07:00
nativeccrpath="$byteccrpath"
1997-02-03 06:41:42 -08:00
2013-06-30 04:41:40 -07:00
case "$arch,$nativecc,$system,$target" in
2000-02-10 00:42:47 -08:00
*,*,nextstep,*) nativecccompopts="$gcc_warnings -U__GNUC__ -posix"
nativecclinkopts="-posix";;
2004-07-13 05:19:15 -07:00
*,*,rhapsody,*darwin[1-5].*)
nativecccompopts="$gcc_warnings -DSHRINKED_GNUC";;
2006-08-18 07:52:19 -07:00
*,*,rhapsody,*) nativecccompopts="$gcc_warnings -DDARWIN_VERSION_6 $dl_defs"
if $arch64; then partialld="ld -r -arch ppc64"; fi;;
2000-08-10 02:58:08 -07:00
*,gcc*,cygwin,*) nativecccompopts="$gcc_warnings -U_WIN32";;
2008-12-03 10:09:09 -08:00
amd64,gcc*,macosx,*) partialld="ld -r -arch x86_64";;
2009-05-20 04:52:42 -07:00
amd64,gcc*,solaris,*) partialld="ld -r -m elf_x86_64";;
2000-02-10 00:42:47 -08:00
*,gcc*,*,*) nativecccompopts="$gcc_warnings";;
1996-02-13 08:29:09 -08:00
esac
1998-08-06 07:25:24 -07:00
asppprofflags='-DPROFILING'
1996-09-18 06:24:56 -07:00
2013-06-27 12:46:02 -07:00
case "$arch,$system" in
amd64,macosx) if ./searchpath clang; then
2013-01-13 06:22:14 -08:00
as='clang -arch x86_64 -c'
aspp='clang -arch x86_64 -c'
else
2013-06-30 05:42:23 -07:00
as="${TOOLPREF}as -arch x86_64"
aspp="${TOOLPREF}gcc -arch x86_64 -c"
2013-01-13 06:22:14 -08:00
fi;;
2013-06-30 05:42:23 -07:00
amd64,solaris) as="${TOOLPREF}as --64"
aspp="${TOOLPREF}gcc -m64 -c";;
i386,solaris) as="${TOOLPREF}as"
aspp="/usr/ccs/bin/${TOOLPREF}as -P";;
power,elf) as="${TOOLPREF}as -u -m ppc"
aspp="${TOOLPREF}gcc -c";;
power,rhapsody) as="${TOOLPREF}as -arch $model"
2013-06-30 04:03:01 -07:00
aspp="$bytecc -c";;
2013-06-30 05:42:23 -07:00
sparc,solaris) as="${TOOLPREF}as"
2013-06-30 04:03:01 -07:00
case "$cc" in
2013-06-30 05:42:23 -07:00
*gcc*) aspp="${TOOLPREF}gcc -c";;
*) aspp="${TOOLPREF}as -P";;
2013-06-30 04:03:01 -07:00
esac;;
2013-09-04 08:12:37 -07:00
amd64,*|arm,*|arm64,*|i386,*|power,bsd*|sparc,*)
2013-06-30 05:42:23 -07:00
as="${TOOLPREF}as"
aspp="${TOOLPREF}gcc -c";;
1996-02-13 08:29:09 -08:00
esac
2007-10-30 05:37:16 -07:00
if test -n "$asoption"; then as="$asoption"; fi
if test -n "$asppoption"; then aspp="$asppoption"; fi
2002-12-02 04:31:19 -08:00
cc_profile='-pg'
2013-06-27 12:46:02 -07:00
case "$arch,$system" in
i386,linux_elf) profiling='prof';;
i386,gnu) profiling='prof';;
i386,bsd_elf) profiling='prof';;
amd64,macosx) profiling='prof';;
i386,macosx) profiling='prof';;
sparc,solaris)
2002-12-02 04:31:19 -08:00
profiling='prof'
case "$nativecc" in gcc*) ;; *) cc_profile='-xpg';; esac;;
2013-06-27 12:46:02 -07:00
amd64,linux) profiling='prof';;
amd64,gnu) profiling='prof';;
arm,linux*) profiling='prof';;
1998-11-06 07:39:18 -08:00
*) profiling='noprof';;
esac
1996-02-13 08:29:09 -08:00
# Where is ranlib?
2013-06-30 05:42:23 -07:00
if sh ./searchpath ${TOOLPREF}ranlib; then
2013-06-27 12:10:08 -07:00
inf "ranlib found"
2013-06-30 05:42:23 -07:00
echo "RANLIB=${TOOLPREF}ranlib" >> Makefile
echo "RANLIBCMD=${TOOLPREF}ranlib" >> Makefile
1996-02-13 08:29:09 -08:00
else
2013-06-27 12:10:08 -07:00
inf "ranlib not used"
2013-06-30 05:42:23 -07:00
echo "RANLIB=${TOOLPREF}ar rs" >> Makefile
1996-11-07 02:54:28 -08:00
echo "RANLIBCMD=" >> Makefile
1996-02-13 08:29:09 -08:00
fi
2013-06-30 05:42:23 -07:00
echo "ARCMD=${TOOLPREF}ar" >> Makefile
2012-01-16 01:05:37 -08:00
2013-06-30 05:42:23 -07:00
# Write the OS type (Unix or Cygwin)
echo "#define OCAML_OS_TYPE \"$ostype\"" >> s.h
echo "#define OCAML_STDLIB_DIR \"$libdir\"" >> s.h
2012-01-16 01:05:37 -08:00
1996-02-13 08:29:09 -08:00
# Do #! scripts work?
2003-07-16 07:22:26 -07:00
if (SHELL=/bin/sh; export SHELL; (./sharpbang || ./sharpbang2) >/dev/null); then
2013-06-27 12:10:08 -07:00
inf "#! appears to work in shell scripts."
2013-06-30 04:41:40 -07:00
case "$target" in
1998-10-29 07:54:13 -08:00
*-*-sunos*|*-*-unicos*)
2013-06-30 04:03:01 -07:00
wrn "We won't use it, though, because under SunOS and Unicos it breaks " \
2013-06-27 12:10:08 -07:00
"on pathnames longer than 30 characters"
1998-04-14 07:48:34 -07:00
echo "SHARPBANGSCRIPTS=false" >> Makefile;;
2000-08-10 02:58:08 -07:00
*-*-cygwin*)
2013-06-30 04:03:01 -07:00
wrn "We won't use it, though, because of conflicts with .exe extension " \
2013-06-27 12:10:08 -07:00
"under Cygwin"
2000-08-10 02:58:08 -07:00
echo "SHARPBANGSCRIPTS=false" >> Makefile;;
2013-06-30 05:42:23 -07:00
*-*-mingw*)
inf "We won't use it, though, because it's on the target platform it would be used and windows doesn't support it."
echo "SHARPBANGSCRIPTS=false" >> Makefile;;
2000-08-10 02:58:08 -07:00
*)
echo "SHARPBANGSCRIPTS=true" >> Makefile;;
1997-08-22 01:52:38 -07:00
esac
1996-02-13 08:29:09 -08:00
else
2013-06-27 12:10:08 -07:00
inf "No support for #! in shell scripts"
1996-02-13 08:29:09 -08:00
echo "SHARPBANGSCRIPTS=false" >> Makefile
fi
2002-03-15 06:38:37 -08:00
# Use 64-bit file offset if possible
bytecccompopts="$bytecccompopts -D_FILE_OFFSET_BITS=64"
nativecccompopts="$nativecccompopts -D_FILE_OFFSET_BITS=64"
1996-02-13 08:29:09 -08:00
# Check the semantics of signal handlers
1997-04-11 07:27:45 -07:00
if sh ./hasgot sigaction sigprocmask; then
2013-06-27 12:10:08 -07:00
inf "POSIX signal handling found."
1999-11-16 01:49:12 -08:00
echo "#define POSIX_SIGNALS" >> s.h
1996-02-13 08:29:09 -08:00
else
1997-04-11 07:27:45 -07:00
if sh ./runtest signals.c; then
2013-06-27 12:10:08 -07:00
inf "Signals have the BSD semantics."
1996-02-21 02:49:46 -08:00
echo "#define BSD_SIGNALS" >> s.h
else
2013-06-27 12:10:08 -07:00
inf "Signals have the System V semantics."
1996-02-21 02:49:46 -08:00
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot sigsetmask; then
2013-06-27 12:10:08 -07:00
inf "sigsetmask() found"
1996-02-21 02:49:46 -08:00
echo "#define HAS_SIGSETMASK" >> s.h
fi
1996-02-13 08:29:09 -08:00
fi
2009-04-01 09:08:37 -07:00
# For the Pervasives module
2011-06-04 01:55:55 -07:00
if sh ./hasgot2 -i math.h $mathlib expm1 log1p hypot copysign; then
2013-06-27 12:10:08 -07:00
inf "expm1(), log1p(), hypot(), copysign() found."
2011-06-04 01:55:55 -07:00
echo "#define HAS_C99_FLOAT_OPS" >> s.h
2009-04-01 09:08:37 -07:00
fi
# For the Sys module
1996-02-13 08:29:09 -08:00
2006-01-04 08:55:50 -08:00
if sh ./hasgot getrusage; then
2013-06-27 12:10:08 -07:00
inf "getrusage() found."
2006-01-04 08:55:50 -08:00
echo "#define HAS_GETRUSAGE" >> s.h
fi
1998-02-24 02:43:14 -08:00
if sh ./hasgot times; then
2013-06-27 12:10:08 -07:00
inf "times() found."
1998-02-24 02:43:14 -08:00
echo "#define HAS_TIMES" >> s.h
fi
1996-02-13 08:29:09 -08:00
# For the terminfo module
2013-07-28 08:52:14 -07:00
if test "$with_curses" = "yes"; then
2001-07-02 05:10:31 -07:00
for libs in "" "-lcurses" "-ltermcap" "-lcurses -ltermcap" "-lncurses"; do
2000-10-27 08:18:24 -07:00
if sh ./hasgot $libs tgetent tgetstr tgetnum tputs; then
2013-06-27 12:10:08 -07:00
inf "termcap functions found (with libraries '$libs')"
2000-10-27 08:18:24 -07:00
echo "#define HAS_TERMCAP" >> s.h
curseslibs="${libs}"
break
fi
done
fi
1996-02-13 08:29:09 -08:00
1996-04-01 07:22:44 -08:00
# Configuration for the libraries
2013-06-30 05:58:34 -07:00
case "$system" in
mingw) unix_or_win32="win32"; unixlib="win32unix"; graphlib="win32graph";;
*) unix_or_win32="unix"; unixlib="unix"; graphlib="graph";;
esac
echo "UNIX_OR_WIN32=$unix_or_win32" >> Makefile
echo "UNIXLIB=$unixlib" >> Makefile
echo "GRAPHLIB=$graphlib" >> Makefile
otherlibraries="$unixlib str num dynlink bigarray"
1996-04-01 07:22:44 -08:00
1996-02-13 08:29:09 -08:00
# For the Unix library
1997-02-23 08:29:36 -08:00
has_sockets=no
1997-04-11 07:27:45 -07:00
if sh ./hasgot socket socketpair bind listen accept connect; then
2013-06-27 12:10:08 -07:00
inf "You have BSD sockets."
1996-02-13 08:29:09 -08:00
echo "#define HAS_SOCKETS" >> s.h
1997-02-23 08:29:36 -08:00
has_sockets=yes
1997-04-11 07:27:45 -07:00
elif sh ./hasgot -lnsl -lsocket socket socketpair bind listen accept connect; then
2013-06-27 12:10:08 -07:00
inf "You have BSD sockets (with libraries '-lnsl -lsocket')"
1996-02-13 08:29:09 -08:00
cclibs="$cclibs -lnsl -lsocket"
echo "#define HAS_SOCKETS" >> s.h
1997-02-23 08:29:36 -08:00
has_sockets=yes
2013-06-30 05:42:24 -07:00
else
case "$target" in
*-*-mingw*)
inf "You have BSD sockets (with libraries '-lws2_32')"
cclibs="$cclibs -lws2_32"
echo "#define HAS_SOCKETS" >> s.h
has_sockets=yes ;;
*) ;;
esac
1996-02-13 08:29:09 -08:00
fi
1999-12-17 04:42:16 -08:00
if sh ./hasgot -i sys/socket.h -t socklen_t; then
2013-06-27 12:10:08 -07:00
inf "socklen_t is defined in <sys/socket.h>"
1999-12-17 04:42:16 -08:00
echo "#define HAS_SOCKLEN_T" >> s.h
fi
2001-06-19 03:01:57 -07:00
if sh ./hasgot inet_aton; then
2013-06-27 12:10:08 -07:00
inf "inet_aton() found."
2001-06-19 03:01:57 -07:00
echo "#define HAS_INET_ATON" >> s.h
fi
2004-04-09 08:25:19 -07:00
if sh ./hasgot -i sys/types.h -i sys/socket.h -i netinet/in.h \
-t 'struct sockaddr_in6' \
2004-04-09 06:25:23 -07:00
&& sh ./hasgot getaddrinfo getnameinfo inet_pton inet_ntop; then
2013-06-27 12:10:08 -07:00
inf "IPv6 is supported."
2004-04-09 06:25:23 -07:00
echo "#define HAS_IPV6" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot -i unistd.h; then
2013-06-27 12:10:08 -07:00
inf "unistd.h found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_UNISTD" >> s.h
fi
2002-03-02 01:16:39 -08:00
if sh ./hasgot -i sys/types.h -t off_t; then
2013-06-27 12:10:08 -07:00
inf "off_t is defined in <sys/types.h>"
2002-03-02 01:16:39 -08:00
echo "#define HAS_OFF_T" >> s.h
fi
2000-02-29 08:15:40 -08:00
if sh ./hasgot -i sys/types.h -i dirent.h; then
2013-06-27 12:10:08 -07:00
inf "dirent.h found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_DIRENT" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot rewinddir; then
2013-06-27 12:10:08 -07:00
inf "rewinddir() found."
1996-06-25 02:27:34 -07:00
echo "#define HAS_REWINDDIR" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot lockf; then
2013-06-27 12:10:08 -07:00
inf "lockf() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_LOCKF" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot mkfifo; then
2013-06-27 12:10:08 -07:00
inf "mkfifo() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_MKFIFO" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot getcwd; then
2013-06-27 12:10:08 -07:00
inf "getcwd() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_GETCWD" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot getwd; then
2013-06-27 12:10:08 -07:00
inf "getwd() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_GETWD" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot getpriority setpriority; then
2013-06-27 12:10:08 -07:00
inf "getpriority() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_GETPRIORITY" >> s.h
fi
2000-02-29 08:15:40 -08:00
if sh ./hasgot -i sys/types.h -i utime.h && sh ./hasgot utime; then
2013-06-27 12:10:08 -07:00
inf "utime() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_UTIME" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot utimes; then
2013-06-27 12:10:08 -07:00
inf "utimes() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_UTIMES" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot dup2; then
2013-06-27 12:10:08 -07:00
inf "dup2() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_DUP2" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot fchmod fchown; then
2013-06-27 12:10:08 -07:00
inf "fchmod() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_FCHMOD" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot truncate ftruncate; then
2013-06-27 12:10:08 -07:00
inf "truncate() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_TRUNCATE" >> s.h
fi
2000-08-08 05:37:53 -07:00
select_include=''
if sh ./hasgot -i sys/types.h -i sys/select.h; then
2013-06-27 12:10:08 -07:00
inf "sys/select.h found."
2000-08-08 05:37:53 -07:00
echo "#define HAS_SYS_SELECT_H" >> s.h
select_include='-i sys/select.h'
fi
1997-02-23 08:29:36 -08:00
has_select=no
2000-08-08 05:37:53 -07:00
if sh ./hasgot select && \
sh ./hasgot -i sys/types.h $select_include -t fd_set ; then
2013-06-27 12:10:08 -07:00
inf "select() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_SELECT" >> s.h
1996-04-03 02:01:15 -08:00
has_select=yes
1996-02-13 08:29:09 -08:00
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot symlink readlink lstat; then
2013-06-27 12:10:08 -07:00
inf "symlink() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_SYMLINK" >> s.h
fi
1997-02-23 08:29:36 -08:00
has_wait=no
1997-04-11 07:27:45 -07:00
if sh ./hasgot waitpid; then
2013-06-27 12:10:08 -07:00
inf "waitpid() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_WAITPID" >> s.h
1996-06-25 02:27:34 -07:00
has_wait=yes
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot wait4; then
2013-06-27 12:10:08 -07:00
inf "wait4() found."
1996-06-25 02:27:34 -07:00
echo "#define HAS_WAIT4" >> s.h
has_wait=yes
1996-02-13 08:29:09 -08:00
fi
2000-02-29 08:15:40 -08:00
if sh ./hasgot -i limits.h && sh ./runtest getgroups.c; then
2013-06-27 12:10:08 -07:00
inf "getgroups() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_GETGROUPS" >> s.h
fi
2009-04-01 09:50:10 -07:00
if sh ./hasgot -i limits.h -i grp.h && sh ./runtest setgroups.c; then
2013-06-27 12:10:08 -07:00
inf "setgroups() found."
2009-04-01 09:50:10 -07:00
echo "#define HAS_SETGROUPS" >> s.h
fi
if sh ./hasgot -i limits.h -i grp.h && sh ./runtest initgroups.c; then
2013-06-27 12:10:08 -07:00
inf "initgroups() found."
2009-04-01 09:50:10 -07:00
echo "#define HAS_INITGROUPS" >> s.h
fi
2000-04-05 11:30:22 -07:00
if sh ./hasgot -i termios.h &&
1997-04-11 07:27:45 -07:00
sh ./hasgot tcgetattr tcsetattr tcsendbreak tcflush tcflow; then
2013-06-27 12:10:08 -07:00
inf "POSIX termios found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_TERMIOS" >> s.h
fi
2011-12-17 03:21:24 -08:00
if sh ./runtest async_io.c; then
2013-06-27 12:10:08 -07:00
inf "Asynchronous I/O are supported."
1996-02-13 08:29:09 -08:00
echo "#define HAS_ASYNC_IO" >> s.h
fi
1997-02-23 08:29:36 -08:00
has_setitimer=no
1997-04-11 07:27:45 -07:00
if sh ./hasgot setitimer; then
2013-06-27 12:10:08 -07:00
inf "setitimer() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_SETITIMER" >> s.h
1996-04-03 02:01:15 -08:00
has_setitimer="yes"
1996-02-13 08:29:09 -08:00
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot gethostname; then
2013-06-27 12:10:08 -07:00
inf "gethostname() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_GETHOSTNAME" >> s.h
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot -i sys/utsname.h && sh ./hasgot uname; then
2013-06-27 12:10:08 -07:00
inf "uname() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_UNAME" >> s.h
fi
1997-02-23 08:29:36 -08:00
has_gettimeofday=no
1997-04-11 07:27:45 -07:00
if sh ./hasgot gettimeofday; then
2013-06-27 12:10:08 -07:00
inf "gettimeofday() found."
1996-02-13 08:29:09 -08:00
echo "#define HAS_GETTIMEOFDAY" >> s.h
1996-04-03 02:01:15 -08:00
has_gettimeofday="yes"
1996-02-13 08:29:09 -08:00
fi
1997-04-11 07:27:45 -07:00
if sh ./hasgot mktime; then
2013-06-27 12:10:08 -07:00
inf "mktime() found."
1996-06-24 09:35:58 -07:00
echo "#define HAS_MKTIME" >> s.h
fi
2013-07-01 14:33:22 -07:00
case "$target" in
*-*-cygwin*) ;; # setsid emulation under Cygwin breaks the debugger
*) if sh ./hasgot setsid; then
inf "setsid() found."
echo "#define HAS_SETSID" >> s.h
fi;;
esac
1997-02-14 08:29:10 -08:00
1998-04-30 06:38:50 -07:00
if sh ./hasgot putenv; then
2013-06-27 12:10:08 -07:00
inf "putenv() found."
1998-04-30 06:38:50 -07:00
echo "#define HAS_PUTENV" >> s.h
fi
1999-05-15 08:05:54 -07:00
if sh ./hasgot -i locale.h && sh ./hasgot setlocale; then
2013-06-27 12:10:08 -07:00
inf "setlocale() and <locale.h> found."
1999-05-15 08:05:54 -07:00
echo "#define HAS_LOCALE" >> s.h
fi
2007-11-12 09:26:00 -08:00
if sh ./hasgot $dllib dlopen; then
2013-06-27 12:10:08 -07:00
inf "dlopen() found."
2003-01-09 00:42:13 -08:00
elif sh ./hasgot $dllib -ldl dlopen; then
2013-06-27 12:10:08 -07:00
inf "dlopen() found in -ldl."
2002-11-15 08:36:39 -08:00
dllib="$dllib -ldl"
2003-01-09 04:01:51 -08:00
else
2013-06-30 05:42:23 -07:00
case "$target" in
*-*-mingw*) ;;
*) shared_libraries_supported=false
esac
2003-01-09 04:01:51 -08:00
fi
if $shared_libraries_supported; then
2013-06-27 12:10:08 -07:00
inf "Dynamic loading of shared libraries is supported."
2003-01-09 04:01:51 -08:00
echo "#define SUPPORT_DYNAMIC_LINKING" >> s.h
if $dl_needs_underscore; then
echo '#define DL_NEEDS_UNDERSCORE' >>s.h
fi
1999-11-30 08:07:38 -08:00
fi
2000-02-29 08:15:40 -08:00
if sh ./hasgot -i sys/types.h -i sys/mman.h && sh ./hasgot mmap munmap; then
2013-06-27 12:10:08 -07:00
inf "mmap() found."
2000-02-25 05:43:57 -08:00
echo "#define HAS_MMAP" >> s.h
fi
2012-04-04 05:12:02 -07:00
if sh ./hasgot pwrite; then
2013-06-27 12:10:08 -07:00
inf "pwrite() found"
2012-04-04 05:12:02 -07:00
echo "#define HAS_PWRITE" >> s.h
fi
2002-05-04 02:58:01 -07:00
nargs=none
2002-05-06 01:29:52 -07:00
for i in 5 6; do
2002-05-04 02:58:01 -07:00
if sh ./trycompile -DNUM_ARGS=${i} gethostbyname.c; then nargs=$i; break; fi
done
if test $nargs != "none"; then
2013-06-27 12:10:08 -07:00
inf "gethostbyname_r() found (with ${nargs} arguments)."
2002-05-04 02:58:01 -07:00
echo "#define HAS_GETHOSTBYNAME_R $nargs" >> s.h
fi
nargs=none
2002-05-06 01:29:52 -07:00
for i in 7 8; do
2002-05-04 02:58:01 -07:00
if sh ./trycompile -DNUM_ARGS=${i} gethostbyaddr.c; then nargs=$i; break; fi
done
if test $nargs != "none"; then
2013-06-27 12:10:08 -07:00
inf "gethostbyaddr_r() found (with ${nargs} arguments)."
2002-05-04 02:58:01 -07:00
echo "#define HAS_GETHOSTBYADDR_R $nargs" >> s.h
fi
1997-02-23 08:29:36 -08:00
# Determine if the debugger is supported
2013-07-28 08:52:14 -07:00
if test -n "$with_debugger"; then
if test "$has_sockets" = "yes"; then
inf "Replay debugger supported."
with_debugger="ocamldebugger"
else
inf "No replay debugger (missing system calls)"
with_debugger=""
fi
1997-02-23 08:29:36 -08:00
fi
2001-08-08 01:30:26 -07:00
# Determine if system stack overflows can be detected
2003-05-23 02:15:34 -07:00
case "$arch,$system" in
2012-02-17 02:43:50 -08:00
i386,linux_elf|amd64,linux|power,rhapsody|amd64,macosx|i386,macosx)
2013-06-27 12:10:08 -07:00
inf "System stack overflow can be detected."
2003-09-25 01:17:13 -07:00
echo "#define HAS_STACK_OVERFLOW_DETECTION" >> s.h;;
2003-05-02 05:48:55 -07:00
*)
2013-06-27 12:10:08 -07:00
inf "Cannot detect system stack overflow.";;
2003-05-02 05:48:55 -07:00
esac
2009-03-16 07:36:51 -07:00
# Determine the target architecture for the "num" library
2008-12-03 10:09:09 -08:00
case "$arch" in
i386) bng_arch=ia32
if sh ./trycompile ia32sse2.c
then bng_asm_level=2
else bng_asm_level=1
fi;;
power) bng_arch=ppc; bng_asm_level=1;;
amd64) bng_arch=amd64; bng_asm_level=1;;
2013-07-18 09:09:20 -07:00
arm64) bng_arch=arm64; bng_asm_level=1;;
2008-12-03 10:09:09 -08:00
*) bng_arch=generic; bng_asm_level=0;;
1996-02-13 08:29:09 -08:00
esac
2003-10-24 02:18:01 -07:00
echo "BNG_ARCH=$bng_arch" >> Makefile
echo "BNG_ASM_LEVEL=$bng_asm_level" >> Makefile
1996-02-13 08:29:09 -08:00
2003-07-17 01:38:28 -07:00
# Determine if the POSIX threads library is supported
1996-04-03 02:01:15 -08:00
2005-05-09 06:39:17 -07:00
systhread_support=false
2003-09-12 00:36:15 -07:00
if test "$pthread_wanted" = "yes"; then
2013-06-30 04:41:40 -07:00
case "$target" in
2007-10-08 07:19:34 -07:00
*-*-solaris*) pthread_link="-lpthread -lposix4"
pthread_caml_link="-cclib -lpthread -cclib -lposix4";;
*-*-freebsd*) pthread_link="-pthread"
pthread_caml_link="-cclib -pthread";;
*-*-openbsd*) pthread_link="-pthread"
pthread_caml_link="-cclib -pthread";;
*) pthread_link="-lpthread"
pthread_caml_link="-cclib -lpthread";;
2000-03-09 01:08:58 -08:00
esac
2004-07-13 05:19:15 -07:00
if ./hasgot -i pthread.h $pthread_link pthread_self; then
2013-06-27 12:10:08 -07:00
inf "POSIX threads library supported."
2005-05-09 06:39:17 -07:00
systhread_support=true
2004-07-13 05:19:15 -07:00
otherlibraries="$otherlibraries systhreads"
bytecccompopts="$bytecccompopts -D_REENTRANT"
nativecccompopts="$nativecccompopts -D_REENTRANT"
2013-06-30 04:41:40 -07:00
case "$target" in
2004-07-13 05:19:15 -07:00
*-*-freebsd*)
bytecccompopts="$bytecccompopts -D_THREAD_SAFE"
nativecccompopts="$nativecccompopts -D_THREAD_SAFE";;
*-*-openbsd*)
bytecccompopts="$bytecccompopts -pthread"
asppflags="$asppflags -pthread"
nativecccompopts="$nativecccompopts -pthread";;
esac
2013-06-27 12:10:08 -07:00
inf "Options for linking with POSIX threads: $pthread_link"
2004-07-13 05:19:15 -07:00
if sh ./hasgot $pthread_link sigwait; then
2013-06-27 12:10:08 -07:00
inf "sigwait() found"
2004-07-13 05:19:15 -07:00
echo "#define HAS_SIGWAIT" >> s.h
fi
else
2013-06-27 12:10:08 -07:00
inf "POSIX threads not found."
2004-07-13 05:19:15 -07:00
pthread_link=""
2003-07-29 08:35:12 -07:00
fi
2007-02-07 02:31:36 -08:00
else
pthread_link=""
2003-09-12 00:36:15 -07:00
fi
2007-10-08 07:19:34 -07:00
echo "PTHREAD_LINK=$pthread_caml_link" >> Makefile
2003-07-17 01:38:28 -07:00
# Determine if the bytecode thread library is supported
if test "$has_select" = "yes" \
1996-04-03 02:01:15 -08:00
&& test "$has_setitimer" = "yes" \
1996-06-25 02:27:34 -07:00
&& test "$has_gettimeofday" = "yes" \
&& test "$has_wait" = "yes"; then
2013-06-27 12:10:08 -07:00
inf "Bytecode threads library supported."
1996-04-03 02:01:15 -08:00
otherlibraries="$otherlibraries threads"
else
2013-06-27 12:10:08 -07:00
inf "Bytecode threads library not supported (missing system calls)"
1996-04-03 02:01:15 -08:00
fi
1996-02-13 08:29:09 -08:00
# Determine the location of X include files and libraries
2012-02-01 13:30:35 -08:00
# If the user specified -x11include and/or -x11lib, these settings
# are used. Otherwise, we check whether there is pkg-config, and take
# the flags from there. Otherwise, we search the location.
1996-02-13 08:29:09 -08:00
x11_include="not found"
1996-04-02 00:40:00 -08:00
x11_link="not found"
1996-02-13 08:29:09 -08:00
2012-02-01 13:30:35 -08:00
if test -z "$x11_include_dir" -a -z "$x11_lib_dir"; then
if pkg-config --exists x11 2>/dev/null; then
x11_include=`pkg-config --cflags x11`
x11_link=`pkg-config --libs x11`
fi
fi
if test "$x11_include" = "not found"; then
for dir in \
2001-10-30 05:40:42 -08:00
$x11_include_dir \
\
2009-07-20 04:51:50 -07:00
/usr/X11R7/include \
/usr/include/X11R7 \
/usr/local/X11R7/include \
/usr/local/include/X11R7 \
/opt/X11R7/include \
\
2001-10-30 05:40:42 -08:00
/usr/X11R6/include \
/usr/include/X11R6 \
/usr/local/X11R6/include \
/usr/local/include/X11R6 \
/opt/X11R6/include \
\
/usr/X11/include \
/usr/include/X11 \
/usr/local/X11/include \
/usr/local/include/X11 \
/opt/X11/include \
\
/usr/X11R5/include \
/usr/include/X11R5 \
/usr/local/X11R5/include \
/usr/local/include/X11R5 \
/usr/local/x11r5/include \
/opt/X11R5/include \
\
/usr/X11R4/include \
/usr/include/X11R4 \
/usr/local/X11R4/include \
/usr/local/include/X11R4 \
\
/usr/X386/include \
/usr/x386/include \
/usr/XFree86/include/X11 \
\
/usr/include \
/usr/local/include \
/usr/unsupported/include \
/usr/athena/include \
/usr/lpp/Xamples/include \
\
/usr/openwin/include \
/usr/openwin/share/include \
; \
2012-02-01 13:30:35 -08:00
do
if test -f $dir/X11/X.h; then
x11_include_dir=$dir
x11_include="-I$dir"
break
fi
done
1996-02-13 08:29:09 -08:00
2012-02-01 13:30:35 -08:00
if test "$x11_include" = "not found"; then
x11_try_lib_dir=''
else
x11_try_lib_dir=`echo $x11_include_dir | sed -e 's|include|lib|'`
fi
2001-10-30 05:40:42 -08:00
2012-02-01 13:30:35 -08:00
for dir in \
2001-10-30 05:40:42 -08:00
$x11_lib_dir \
$x11_try_lib_dir \
\
2005-04-17 01:22:59 -07:00
/usr/X11R6/lib64 \
2001-10-30 05:40:42 -08:00
/usr/X11R6/lib \
/usr/lib/X11R6 \
/usr/local/X11R6/lib \
/usr/local/lib/X11R6 \
/opt/X11R6/lib \
\
/usr/X11/lib \
/usr/lib/X11 \
/usr/local/X11/lib \
/usr/local/lib/X11 \
/opt/X11/lib \
\
/usr/X11R5/lib \
/usr/lib/X11R5 \
/usr/local/X11R5/lib \
/usr/local/lib/X11R5 \
/usr/local/x11r5/lib \
/opt/X11R5/lib \
\
/usr/X11R4/lib \
/usr/lib/X11R4 \
/usr/local/X11R4/lib \
/usr/local/lib/X11R4 \
\
/usr/X386/lib \
/usr/x386/lib \
/usr/XFree86/lib/X11 \
\
2008-01-11 08:13:18 -08:00
/usr/lib64 \
2001-10-30 05:40:42 -08:00
/usr/lib \
/usr/local/lib \
/usr/unsupported/lib \
/usr/athena/lib \
/usr/lpp/Xamples/lib \
2002-07-23 07:12:03 -07:00
/lib/usr/lib/X11 \
2001-10-30 05:40:42 -08:00
\
/usr/openwin/lib \
2012-03-08 11:52:03 -08:00
/usr/openwin/share/lib \
\
/usr/lib/i386-linux-gnu \
/usr/lib/x86_64-linux-gnu \
2001-10-30 05:40:42 -08:00
; \
2012-02-01 13:30:35 -08:00
do
if test -f $dir/libX11.a || \
test -f $dir/libX11.so || \
test -f $dir/libX11.dll.a || \
test -f $dir/libX11.dylib || \
test -f $dir/libX11.sa; then
if test $dir = /usr/lib; then
x11_link="-lX11"
else
x11_libs="-L$dir"
2013-06-30 04:41:40 -07:00
case "$target" in
2012-02-01 13:30:35 -08:00
*-kfreebsd*-gnu) x11_link="-L$dir -lX11";;
*-*-*bsd*) x11_link="-R$dir -L$dir -lX11";;
*) x11_link="-L$dir -lX11";;
esac
fi
break
1999-11-30 08:07:38 -08:00
fi
2012-02-01 13:30:35 -08:00
done
fi
if test "x11_include" != "not found"; then
if test "$x11_include" = "-I/usr/include"; then
x11_include=""
1996-02-13 08:29:09 -08:00
fi
2012-02-01 13:30:35 -08:00
if ./hasgot $x11_include $x11_link -i X11/Xlib.h XrmInitialize; then
2013-06-27 12:10:08 -07:00
inf "X11 works"
2012-02-01 13:30:35 -08:00
else
2013-06-27 12:10:08 -07:00
wrn "Cannot compile X11 program."
2012-02-01 13:30:35 -08:00
x11_include="not found"
fi
fi
1996-02-13 08:29:09 -08:00
2012-02-07 04:43:34 -08:00
has_graph=false
1996-04-02 00:40:00 -08:00
if test "$x11_include" = "not found" || test "$x11_link" = "not found"
1996-02-13 08:29:09 -08:00
then
2013-06-27 12:10:08 -07:00
wrn 'X11 not found, the "graph" library will not be supported.'
2012-02-07 04:43:34 -08:00
x11_include="not found"
x11_link="not found"
1996-04-01 07:22:44 -08:00
else
2013-06-27 12:10:08 -07:00
inf "Options for compiling for X11: $x11_include"
inf "Options for linking with X11: $x11_link"
2012-02-07 04:43:34 -08:00
if test "$graph_wanted" = yes
then
has_graph=true
otherlibraries="$otherlibraries graph"
fi
1996-04-01 07:22:44 -08:00
fi
2007-02-07 02:31:36 -08:00
echo "X11_INCLUDES=$x11_include" >> Makefile
echo "X11_LINK=$x11_link" >> Makefile
1996-04-01 07:22:44 -08:00
2010-05-19 04:29:38 -07:00
# Look for BFD library
2010-08-02 07:37:22 -07:00
if ./hasgot -i bfd.h && \
./hasgot -lbfd -ldl -liberty -lz bfd_openr; then
2013-06-27 12:10:08 -07:00
inf "BFD library found."
2010-05-19 04:29:38 -07:00
echo "#define HAS_LIBBFD" >> s.h
2010-08-02 07:37:22 -07:00
echo "LIBBFD_LINK=-lbfd -ldl -liberty -lz" >> Makefile
2010-05-19 04:29:38 -07:00
else
2013-06-27 12:10:08 -07:00
wrn "BFD library not found, 'objinfo' will be unable to display info on .cmxs files."
2010-05-19 04:29:38 -07:00
echo "LIBBFD_LINK=" >> Makefile
fi
2012-02-21 09:41:02 -08:00
# Check whether assembler supports CFI directives
asm_cfi_supported=false
2012-06-17 01:17:43 -07:00
export as aspp
2012-02-21 09:41:02 -08:00
2013-09-04 08:12:37 -07:00
if ! $with_cfi; then
echo "CFI support: disabled by command-line option -no-cfi"
elif sh ./tryassemble cfi.S; then
2012-02-21 09:41:02 -08:00
echo "#define ASM_CFI_SUPPORTED" >> m.h
asm_cfi_supported=true
2013-06-27 12:10:08 -07:00
inf "Assembler supports CFI"
2012-06-17 01:17:43 -07:00
else
2013-06-27 12:10:08 -07:00
inf "Assembler does not support CFI"
2012-02-21 09:41:02 -08:00
fi
2013-06-03 11:03:59 -07:00
if test "$with_frame_pointers" = "true"; then
2013-06-30 04:41:40 -07:00
case "$target,$cc" in
2013-06-20 09:26:19 -07:00
x86_64-*-linux*,gcc*)
nativecccompopts="$nativecccompopts -g -fno-omit-frame-pointer"
bytecccompopts="$bytecccompopts -g -fno-omit-frame-pointer"
nativecclinkopts="$nativecclinkopts -g"
echo "#define WITH_FRAME_POINTERS" >> m.h
;;
2013-06-27 12:10:08 -07:00
*) err "Unsupported architecture with frame pointers";;
2013-06-11 04:58:44 -07:00
esac
2013-06-03 11:03:59 -07:00
fi
2002-03-11 02:12:43 -08:00
# Final twiddling of compiler options to work around known bugs
nativeccprofopts="$nativecccompopts"
case "$buggycc" in
gcc.2.96)
bytecccompopts="$bytecccompopts -fomit-frame-pointer"
nativecccompopts="$nativecccompopts -fomit-frame-pointer";;
esac
1996-02-13 08:29:09 -08:00
# Finish generated files
1998-03-13 11:59:11 -08:00
cclibs="$cclibs $mathlib"
1998-02-26 04:46:56 -08:00
echo "BYTECC=$bytecc" >> Makefile
echo "BYTECCCOMPOPTS=$bytecccompopts" >> Makefile
echo "BYTECCLINKOPTS=$bytecclinkopts" >> Makefile
2001-10-24 06:08:53 -07:00
echo "BYTECCLIBS=$cclibs $dllib $curseslibs $pthread_link" >> Makefile
2001-08-28 07:47:48 -07:00
echo "BYTECCRPATH=$byteccrpath" >> Makefile
2000-08-10 02:58:08 -07:00
echo "EXE=$exe" >> Makefile
2001-08-28 07:47:48 -07:00
echo "SUPPORTS_SHARED_LIBRARIES=$shared_libraries_supported" >> Makefile
echo "SHAREDCCCOMPOPTS=$sharedcccompopts" >> Makefile
2001-10-30 01:32:32 -08:00
echo "MKSHAREDLIBRPATH=$mksharedlibrpath" >> Makefile
2007-11-06 07:16:56 -08:00
echo "NATDYNLINKOPTS=$natdynlinkopts" >> Makefile
2007-02-07 02:31:36 -08:00
cat >> Makefile <<EOF
SYSLIB=-l\$(1)
2007-02-08 06:41:57 -08:00
#ml let syslib x = "-l"^x;;
2007-02-07 02:31:36 -08:00
### How to build a static library
MKLIB=ar rc \$(1) \$(2); ranlib \$(1)
#ml let mklib out files opts = Printf.sprintf "ar rc %s %s %s; ranlib %s" out opts files out;;
EOF
1998-02-26 04:46:56 -08:00
echo "ARCH=$arch" >> Makefile
echo "MODEL=$model" >> Makefile
echo "SYSTEM=$system" >> Makefile
echo "NATIVECC=$nativecc" >> Makefile
echo "NATIVECCCOMPOPTS=$nativecccompopts" >> Makefile
2002-03-11 02:12:43 -08:00
echo "NATIVECCPROFOPTS=$nativeccprofopts" >> Makefile
1998-02-26 04:46:56 -08:00
echo "NATIVECCLINKOPTS=$nativecclinkopts" >> Makefile
2001-08-28 07:47:48 -07:00
echo "NATIVECCRPATH=$nativeccrpath" >> Makefile
2002-06-03 07:22:12 -07:00
echo "NATIVECCLIBS=$cclibs $dllib" >> Makefile
2007-10-30 05:37:16 -07:00
echo "ASM=$as" >> Makefile
1998-02-26 04:46:56 -08:00
echo "ASPP=$aspp" >> Makefile
1998-08-06 07:25:24 -07:00
echo "ASPPPROFFLAGS=$asppprofflags" >> Makefile
1998-11-06 07:39:18 -08:00
echo "PROFILING=$profiling" >> Makefile
1999-11-30 08:07:38 -08:00
echo "DYNLINKOPTS=$dllib" >> Makefile
1996-04-01 07:22:44 -08:00
echo "OTHERLIBRARIES=$otherlibraries" >> Makefile
2002-12-02 04:31:19 -08:00
echo "CC_PROFILE=$cc_profile" >> Makefile
2007-02-07 02:31:36 -08:00
echo "SYSTHREAD_SUPPORT=$systhread_support" >> Makefile
echo "PARTIALLD=$partialld" >> Makefile
2010-01-19 06:56:22 -08:00
echo "PACKLD=\$(PARTIALLD) \$(NATIVECCLINKOPTS) -o " \
| sed -e 's/ $/\\ /' >> Makefile
2007-11-06 07:16:56 -08:00
echo "DLLCCCOMPOPTS=$dllccompopts" >> Makefile
2007-11-15 05:21:15 -08:00
echo "IFLEXDIR=$iflexdir" >> Makefile
2007-02-07 02:31:36 -08:00
echo "O=o" >> Makefile
echo "A=a" >> Makefile
2013-06-30 05:42:23 -07:00
echo "SO=$SO" >> Makefile
2007-02-07 02:31:36 -08:00
echo "EXT_OBJ=.o" >> Makefile
echo "EXT_ASM=.s" >> Makefile
echo "EXT_LIB=.a" >> Makefile
2013-06-30 05:42:23 -07:00
echo "EXT_DLL=$SO" >> Makefile
2007-02-07 02:31:36 -08:00
echo "EXTRALIBS=" >> Makefile
echo "CCOMPTYPE=cc" >> Makefile
2013-06-30 05:42:23 -07:00
echo "TOOLCHAIN=$TOOLCHAIN" >> Makefile
2010-05-25 03:00:39 -07:00
echo "NATDYNLINK=$natdynlink" >> Makefile
2007-11-06 07:16:56 -08:00
echo "CMXS=$cmxs" >> Makefile
2007-11-15 05:21:15 -08:00
echo "MKEXE=$mkexe" >> Makefile
2012-07-26 12:21:54 -07:00
echo "MKEXEDEBUGFLAG=$mkexedebugflag" >> Makefile
2007-11-15 05:21:15 -08:00
echo "MKDLL=$mksharedlib" >> Makefile
2007-11-15 07:18:28 -08:00
echo "MKMAINDLL=$mkmaindll" >> Makefile
2011-03-17 09:18:05 -07:00
echo "RUNTIMED=${debugruntime}" >>Makefile
2013-07-28 08:52:14 -07:00
echo "WITH_CAMLP4=${with_camlp4}" >>Makefile
echo "WITH_DEBUGGER=${with_debugger}" >>Makefile
2013-07-28 08:52:17 -07:00
echo "WITH_OCAMLDOC=${with_ocamldoc}" >>Makefile
echo "WITH_OCAMLBUILD=${with_ocamlbuild}" >>Makefile
2012-02-21 09:41:02 -08:00
echo "ASM_CFI_SUPPORTED=$asm_cfi_supported" >> Makefile
2013-06-03 11:03:59 -07:00
echo "WITH_FRAME_POINTERS=$with_frame_pointers" >> Makefile
2013-07-01 14:33:21 -07:00
echo "TARGET=$target" >> Makefile
echo "HOST=$host" >> Makefile
2013-05-06 11:01:34 -07:00
if [ "$ostype" = Cygwin ]; then
echo "DIFF=diff -q --strip-trailing-cr" >>Makefile
fi
2013-09-19 17:22:38 -07:00
cat >> Makefile << EOF
ROOTDIR=$rootdir
CAMLRUN=${camlrun}\$(EXE)
OCAMLRUN=\$(CAMLRUN)
CAMLC_BIN_BOOT = \$(CAMLRUN) \$(ROOTDIR)/boot/ocamlc
CAMLC_BIN_BYTE = \$(CAMLRUN) \$(ROOTDIR)/ocamlc
CAMLC_BIN_OPT = \$(ROOTDIR)/ocamlc.opt
CAMLOPT_BIN_BYTE = \$(CAMLRUN) \$(ROOTDIR)/ocamlopt
CAMLOPT_BIN_OPT = \$(ROOTDIR)/ocamlopt.opt
CAMLC_BIN = @ . \$(ROOTDIR)/config/ocamlcomp; PS4=""; set -x; \$\${CAMLC_BIN}
CAMLOPT_BIN = @ . \$(ROOTDIR)/config/ocamlcomp; PS4=""; set -x; \$\${CAMLOPT_BIN}
CAMLC_BIN_CMD_TO_EVAL = . \$(ROOTDIR)/config/ocamlcomp; echo \$\${CAMLC_BIN}
CAMLOPT_BIN_CMD_TO_EVAL = . \$(ROOTDIR)/config/ocamlcomp; echo \$\${CAMLOPT_BIN}
EOF
1996-02-13 08:29:09 -08:00
rm -f tst hasgot.c
rm -f ../m.h ../s.h ../Makefile
mv m.h s.h Makefile ..
1996-04-01 07:22:44 -08:00
2013-09-19 17:22:38 -07:00
rm -f ../ocamlcomp
2013-09-21 05:02:49 -07:00
cd .. && make -f Makefile.switch-compiler disable COMPILER="CAMLC" VARIANT="BYTE"
2013-09-19 17:22:38 -07:00
1996-04-01 07:22:44 -08:00
# Print a summary
2013-06-27 12:10:08 -07:00
inf
inf "** Configuration summary **"
inf
inf "Directories where OCaml will be installed:"
inf " binaries.................. $bindir"
inf " standard library.......... $libdir"
inf " manual pages.............. $mandir (with extension .$manext)"
inf "Configuration for the bytecode compiler:"
inf " C compiler used........... $bytecc"
inf " options for compiling..... $bytecccompopts"
inf " options for linking....... $bytecclinkopts $cclibs $dllib $curseslibs $pthread_link"
2001-08-28 07:47:48 -07:00
if $shared_libraries_supported; then
2013-06-27 12:10:08 -07:00
inf " shared libraries are supported"
inf " options for compiling..... $sharedcccompopts $bytecccompopts"
inf " command for building...... $mksharedlib -o lib.so $mksharedlibrpath/a/path objs"
2001-08-28 07:47:48 -07:00
else
2013-06-27 12:10:08 -07:00
inf " shared libraries not supported"
2001-08-28 07:47:48 -07:00
fi
1996-04-01 07:22:44 -08:00
2013-06-27 12:10:08 -07:00
inf "Configuration for the native-code compiler:"
1996-04-01 07:22:44 -08:00
if test "$arch" = "none"; then
2013-06-27 12:10:08 -07:00
inf " (not supported on this platform)"
1996-04-01 07:22:44 -08:00
else
if test "$model" = "default"; then
2013-06-27 12:10:08 -07:00
inf " hardware architecture..... $arch"
1996-04-01 07:22:44 -08:00
else
2013-06-27 12:10:08 -07:00
inf " hardware architecture..... $arch ($model)"
1996-04-01 07:22:44 -08:00
fi
if test "$system" = "unknown"; then : ; else
2013-06-27 12:10:08 -07:00
inf " OS variant................ $system"
1996-04-01 07:22:44 -08:00
fi
2013-06-27 12:10:08 -07:00
inf " C compiler used........... $nativecc"
inf " options for compiling..... $nativecccompopts"
inf " options for linking....... $nativecclinkopts $cclibs"
inf " assembler ................ $as"
inf " preprocessed assembler ... $aspp"
2012-02-21 09:41:02 -08:00
if test "$asm_cfi_supported" = "true"; then
2013-06-27 12:10:08 -07:00
inf " assembler supports CFI ... yes"
2012-02-21 09:41:02 -08:00
else
2013-06-27 12:10:08 -07:00
inf " assembler supports CFI ... no"
2012-02-21 09:41:02 -08:00
fi
2013-06-03 11:03:59 -07:00
if test "$with_frame_pointers" = "true"; then
2013-06-27 12:10:08 -07:00
inf " with frame pointers....... yes"
2013-06-03 11:03:59 -07:00
else
2013-06-27 12:10:08 -07:00
inf " with frame pointers....... no"
2013-06-03 11:03:59 -07:00
fi
2010-05-25 03:00:39 -07:00
echo " native dynlink ........... $natdynlink"
2013-06-27 12:10:08 -07:00
inf " native dynlink ........... $natdynlink"
1998-11-06 07:39:18 -08:00
if test "$profiling" = "prof"; then
2013-06-27 12:10:08 -07:00
inf " profiling with gprof ..... supported"
1998-11-06 07:39:18 -08:00
else
2013-06-27 12:10:08 -07:00
inf " profiling with gprof ..... not supported"
1998-11-06 07:39:18 -08:00
fi
1996-04-01 07:22:44 -08:00
fi
2013-07-28 08:52:14 -07:00
if test "$with_debugger" = "ocamldebugger"; then
2013-06-27 12:10:08 -07:00
inf "Source-level replay debugger: supported"
1997-02-23 08:29:36 -08:00
else
2013-06-27 12:10:08 -07:00
inf "Source-level replay debugger: not supported"
1997-02-23 08:29:36 -08:00
fi
2011-03-17 09:18:05 -07:00
if test "$debugruntime" = "runtimed"; then
2013-06-27 12:10:08 -07:00
inf "Debug runtime will be compiled and installed"
2011-03-17 09:18:05 -07:00
fi
2013-06-27 12:10:08 -07:00
inf "Additional libraries supported:"
inf " $otherlibraries"
1996-04-01 07:22:44 -08:00
2013-06-27 12:10:08 -07:00
inf "Configuration for the \"num\" library:"
inf " target architecture ...... $bng_arch (asm level $bng_asm_level)"
1996-04-03 02:01:15 -08:00
2012-02-07 04:43:34 -08:00
if $has_graph; then
2013-06-27 12:10:08 -07:00
inf "Configuration for the \"graph\" library:"
inf " options for compiling .... $x11_include"
inf " options for linking ...... $x11_link"
2012-02-07 04:43:34 -08:00
else
2013-06-27 12:10:08 -07:00
inf "The \"graph\" library: not supported"
1996-04-01 07:22:44 -08:00
fi
2013-06-27 12:10:08 -07:00
inf
inf "** OCaml configuration completed successfully **"
inf
2012-02-09 10:41:53 -08:00
if test ! -z "$MACOSX_DEPLOYMENT_TARGET"; then
2013-06-27 12:10:08 -07:00
wrn "The environment variable MACOSX_DEPLOYMENT_TARGET is set.\n" \
"This will probably prevent compiling the OCaml system."
2012-02-09 10:41:53 -08:00
fi