1999-11-17 10:59:06 -08:00
#########################################################################
# #
2011-07-27 07:17:02 -07:00
# OCaml #
1999-11-17 10:59:06 -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 #
# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
1996-02-21 02:49:46 -08:00
# The main Makefile
2015-10-23 06:49:59 -07:00
i n c l u d e M a k e f i l e . s h a r e d
2002-11-22 07:10:40 -08:00
2001-12-03 02:13:14 -08:00
# For users who don't read the INSTALL file
defaultentry :
2015-09-22 01:32:46 -07:00
@echo "Please refer to the installation instructions in file README.win32.adoc."
2001-12-03 02:13:14 -08:00
2016-01-02 06:49:08 -08:00
FLEXDLL_SUBMODULE_PRESENT := $( wildcard flexdll/Makefile)
BOOT_FLEXLINK_CMD = $( if $( FLEXDLL_SUBMODULE_PRESENT) ,FLEXLINK_CMD= "../boot/ocamlrun ../flexdll/flexlink.exe" )
CAMLOPT := $( if $( FLEXDLL_SUBMODULE_PRESENT) ,OCAML_FLEXLINK= "boot/ocamlrun flexdll/flexlink.exe" ) $( CAMLOPT)
2016-01-02 01:52:59 -08:00
# FlexDLL sources missing error messages
# Different git mechanism displayed depending on whether this source tree came
# from a git clone or a source tarball.
# Displayed in all cases
flexdll-common-err :
@echo In order to bootstrap FlexDLL, you need to place the sources in flexdll
2016-01-02 00:37:20 -08:00
@echo This can either be done by downloading a source tarball from
@echo \ http://alain.frisch.fr/flexdll.html
2016-01-02 01:52:59 -08:00
flexdll/Makefile : $( if $ ( wildcard flexdll /Makefile ) ,,$ ( if $ ( wildcard .git ) ,flexdll -common -err ,flexdll -repo ) )
@echo or by checking out the flexdll submodule with
@echo \ git submodule update --init
@false
flexdll-repo : flexdll -common -err
2016-01-02 00:37:20 -08:00
@echo or by cloning the git repository
@echo \ git clone https://github.com/alainfrisch/flexdll.git
@echo
@false
2016-01-02 06:49:08 -08:00
# Bootstrapping FlexDLL - leaves a bytecode image of flexlink.exe in flexdll/
2016-01-02 00:37:20 -08:00
flexdll : flexdll /Makefile
cd byterun ; $( MAKEREC) BOOTSTRAPPING_FLEXLINK = yes ocamlrun$( EXE)
cp byterun/ocamlrun.exe boot/ocamlrun.exe
cd stdlib ; $( MAKEREC) COMPILER = ../boot/ocamlc stdlib.cma std_exit.cmo
cd stdlib ; cp stdlib.cma std_exit.cmo *.cmi ../boot
cd flexdll ; $( MAKECMD) MSVC_DETECT = 0 TOOLCHAIN = $( TOOLCHAIN) TOOLPREF = $( TOOLPREF) CHAINS = $( FLEXDLL_CHAIN) NATDYNLINK = false OCAMLOPT = "../boot/ocamlrun ../boot/ocamlc -I ../boot" flexlink.exe support
cd byterun ; $( MAKEREC) clean
$( MAKEREC) partialclean
2016-01-02 06:49:08 -08:00
flexlink.opt :
cd flexdll ; \
mv flexlink.exe flexlink ; \
$( MAKECMD) OCAML_FLEXLINK = "../boot/ocamlrun ./flexlink" MSVC_DETECT = 0 TOOLCHAIN = $( TOOLCHAIN) TOOLPREF = $( TOOLPREF) OCAMLOPT = "../ocamlopt.opt -I ../stdlib" flexlink.exe ; \
mv flexlink.exe flexlink.opt ; \
mv flexlink flexlink.exe
2016-01-02 01:28:37 -08:00
1996-02-21 02:49:46 -08:00
# Recompile the system using the bootstrap compiler
2012-04-04 05:56:49 -07:00
all : runtime ocamlc ocamllex ocamlyacc ocamltools library ocaml \
2013-11-21 08:23:28 -08:00
otherlibraries $( OCAMLBUILDBYTE) $( WITH_DEBUGGER) \
2013-07-28 08:52:17 -07:00
$( WITH_OCAMLDOC)
1996-02-21 02:49:46 -08:00
1996-04-30 07:53:58 -07:00
# The compilation of ocaml will fail if the runtime has changed.
1996-02-21 02:49:46 -08:00
# Never mind, just do make bootstrap to reach fixpoint again.
# Compile everything the first time
1997-02-16 05:36:42 -08:00
world : coldstart all
1996-02-21 02:49:46 -08:00
2014-04-04 10:32:35 -07:00
# Core bootstrapping cycle
coreboot :
1996-02-21 02:49:46 -08:00
# Save the original bootstrap compiler
$( MAKEREC) backup
# Promote the new compiler but keep the old runtime
2014-04-04 10:32:35 -07:00
# This compiler runs on boot/ocamlrun and produces bytecode for
# byterun/ocamlrun
1996-02-21 02:49:46 -08:00
$( MAKEREC) promote-cross
2002-06-07 02:49:45 -07:00
# Rebuild ocamlc and ocamllex (run on byterun/ocamlrun)
1997-02-16 05:36:42 -08:00
$( MAKEREC) partialclean
2007-10-08 07:19:34 -07:00
$( MAKEREC) ocamlc ocamllex ocamltools
2002-06-07 02:49:45 -07:00
# Rebuild the library (using byterun/ocamlrun ./ocamlc)
1996-02-21 02:49:46 -08:00
$( MAKEREC) library-cross
# Promote the new compiler and the new runtime
$( MAKEREC) promote
2014-04-04 10:32:35 -07:00
# Rebuild the core system
1997-02-16 05:36:42 -08:00
$( MAKEREC) partialclean
2014-04-04 10:32:35 -07:00
$( MAKEREC) core
1996-02-21 02:49:46 -08:00
# Check if fixpoint reached
$( MAKEREC) compare
2014-04-04 10:32:35 -07:00
# Do a complete bootstrapping cycle
bootstrap :
$( MAKEREC) coreboot
$( MAKEREC) all
$( MAKEREC) compare
1996-05-07 06:08:11 -07:00
LIBFILES = stdlib.cma std_exit.cmo *.cmi camlheader
1996-02-21 02:49:46 -08:00
# Start up the system from the distribution compiler
coldstart :
2016-01-02 06:49:08 -08:00
cd byterun ; $( MAKEREC) $( BOOT_FLEXLINK_CMD) all
2002-06-07 02:49:45 -07:00
cp byterun/ocamlrun.exe boot/ocamlrun.exe
2016-01-02 06:49:08 -08:00
cd yacc ; $( MAKEREC) $( BOOT_FLEXLINK_CMD) all
2002-06-07 02:49:45 -07:00
cp yacc/ocamlyacc.exe boot/ocamlyacc.exe
2016-01-02 06:49:08 -08:00
cd stdlib ; $( MAKEREC) $( BOOT_FLEXLINK_CMD) COMPILER = ../boot/ocamlc all
2002-06-07 02:49:45 -07:00
cd stdlib ; cp $( LIBFILES) ../boot
1996-02-21 02:49:46 -08:00
2000-04-05 11:30:22 -07:00
# Build the core system: the minimum needed to make depend and bootstrap
2014-04-04 10:32:35 -07:00
core : runtime ocamlc ocamllex ocamlyacc ocamltools library
2000-04-05 11:30:22 -07:00
1996-02-21 02:49:46 -08:00
# Save the current bootstrap compiler
2002-06-07 02:49:45 -07:00
MAXSAVED = boot/Saved/Saved.prev/Saved.prev/Saved.prev/Saved.prev/Saved.prev
1996-02-21 02:49:46 -08:00
backup :
2002-06-07 06:31:21 -07:00
mkdir -p boot/Saved
if test -d $( MAXSAVED) ; then rm -r $( MAXSAVED) ; fi
2002-06-07 02:49:45 -07:00
mv boot/Saved boot/Saved.prev
mkdir boot/Saved
mv boot/Saved.prev boot/Saved/Saved.prev
cp boot/ocamlrun.exe boot/Saved/ocamlrun.exe
2007-10-08 07:19:34 -07:00
cd boot ; mv ocamlc ocamllex ocamldep ocamlyacc.exe Saved
2002-06-07 02:49:45 -07:00
cd boot ; cp $( LIBFILES) Saved
1996-02-21 02:49:46 -08:00
# Promote the newly compiled system to the rank of cross compiler
# (Runs on the old runtime, produces code for the new runtime)
promote-cross :
2015-12-09 01:45:31 -08:00
$( CAMLRUN) tools/stripdebug ocamlc boot/ocamlc
$( CAMLRUN) tools/stripdebug lex/ocamllex boot/ocamllex
2002-06-07 02:49:45 -07:00
cp yacc/ocamlyacc.exe boot/ocamlyacc.exe
2015-12-09 01:45:31 -08:00
$( CAMLRUN) tools/stripdebug tools/ocamldep boot/ocamldep
2002-06-07 02:49:45 -07:00
cd stdlib ; cp $( LIBFILES) ../boot
1996-02-21 02:49:46 -08:00
# Promote the newly compiled system to the rank of bootstrap compiler
# (Runs on the new runtime, produces code for the new runtime)
promote : promote -cross
2002-06-07 02:49:45 -07:00
cp byterun/ocamlrun.exe boot/ocamlrun.exe
1996-02-21 02:49:46 -08:00
# Restore the saved bootstrap compiler if a problem arises
restore :
2002-06-07 02:49:45 -07:00
cd boot/Saved ; mv * ..
rmdir boot/Saved
mv boot/Saved.prev boot/Saved
1996-02-21 02:49:46 -08:00
# Check if fixpoint reached
compare :
2015-12-09 01:45:31 -08:00
@if $( CAMLRUN) tools/cmpbyt boot/ocamlc ocamlc \
&& $( CAMLRUN) tools/cmpbyt boot/ocamllex lex/ocamllex \
&& $( CAMLRUN) tools/cmpbyt boot/ocamldep tools/ocamldep; \
then echo "Fixpoint reached, bootstrap succeeded." ; \
else echo "Fixpoint not reached, try one more bootstrapping cycle." ; \
fi
1996-02-21 02:49:46 -08:00
# Remove old bootstrap compilers
cleanboot :
2002-06-07 02:49:45 -07:00
rm -rf boot/Saved/Saved.prev/*
1996-02-21 02:49:46 -08:00
# Compile the native-code compiler
2013-07-28 08:52:17 -07:00
opt-core :
2015-09-14 05:18:06 -07:00
$( MAKEREC) runtimeopt
$( MAKEREC) ocamlopt
$( MAKEREC) libraryopt
2013-07-28 08:52:17 -07:00
opt :
2015-09-14 05:18:06 -07:00
$( MAKEREC) opt-core
$( MAKEREC) otherlibrariesopt ocamltoolsopt
1996-02-21 02:49:46 -08:00
2000-08-30 18:10:14 -07:00
# Native-code versions of the tools
2016-01-02 06:49:08 -08:00
# If the submodule is initialised, then opt.opt will build a native flexlink
2010-05-28 04:21:46 -07:00
opt.opt : core opt -core ocamlc .opt all ocamlopt .opt ocamllex .opt \
2016-01-02 06:49:08 -08:00
ocamltoolsopt ocamltoolsopt.opt otherlibrariesopt $( OCAMLBUILDNATIVE) \
$( OCAMLDOC_OPT) $( if $( wildcard flexdll/Makefile) ,flexlink.opt)
2010-05-28 04:21:46 -07:00
# Complete build using fast compilers
world.opt : coldstart opt .opt
2000-08-30 18:10:14 -07:00
1996-02-21 02:49:46 -08:00
# Installation
2012-05-29 03:48:19 -07:00
COMPLIBDIR = $( LIBDIR) /compiler-libs
2014-04-07 00:06:17 -07:00
INSTALL_BINDIR = $( DESTDIR) $( BINDIR)
INSTALL_LIBDIR = $( DESTDIR) $( LIBDIR)
INSTALL_COMPLIBDIR = $( DESTDIR) $( COMPLIBDIR)
INSTALL_STUBLIBDIR = $( DESTDIR) $( STUBLIBDIR)
INSTALL_MANDIR = $( DESTDIR) $( MANDIR)
1996-02-22 04:51:04 -08:00
install : installbyt installopt
installbyt :
2014-04-07 00:06:17 -07:00
mkdir -p $( INSTALL_BINDIR)
mkdir -p $( INSTALL_LIBDIR)
mkdir -p $( INSTALL_STUBLIBDIR)
mkdir -p $( INSTALL_COMPLIBDIR)
cp VERSION $( INSTALL_LIBDIR) /
2002-06-07 02:49:45 -07:00
cd byterun ; $( MAKEREC) install
2014-04-07 00:06:17 -07:00
cp ocamlc $( INSTALL_BINDIR) /ocamlc.exe
cp ocaml $( INSTALL_BINDIR) /ocaml.exe
2002-06-07 02:49:45 -07:00
cd stdlib ; $( MAKEREC) install
2014-04-07 00:06:17 -07:00
cp lex/ocamllex $( INSTALL_BINDIR) /ocamllex.exe
cp yacc/ocamlyacc.exe $( INSTALL_BINDIR) /ocamlyacc.exe
2015-01-24 08:35:29 -08:00
cp utils/*.cmi utils/*.cmt utils/*.cmti \
parsing/*.cmi parsing/*.cmt parsing/*.cmti \
typing/*.cmi typing/*.cmt typing/*.cmti \
bytecomp/*.cmi bytecomp/*.cmt bytecomp/*.cmti \
driver/*.cmi driver/*.cmt driver/*.cmti \
toplevel/*.cmi toplevel/*.cmt toplevel/*.cmti $( INSTALL_COMPLIBDIR)
2013-03-22 11:21:10 -07:00
cp compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma \
compilerlibs/ocamltoplevel.cma $( BYTESTART) $( TOPLEVELSTART) \
2014-04-07 00:06:17 -07:00
$( INSTALL_COMPLIBDIR)
cp expunge $( INSTALL_LIBDIR) /expunge.exe
cp toplevel/topdirs.cmi $( INSTALL_LIBDIR)
2002-06-07 02:49:45 -07:00
cd tools ; $( MAKEREC) install
2014-09-26 13:57:13 -07:00
for i in $( OTHERLIBRARIES) ; do \
$( MAKEREC) -C otherlibs/$$ i install || exit $$ ?; \
done
2013-07-28 08:52:17 -07:00
if test -n " $( WITH_OCAMLDOC) " ; then ( cd ocamldoc; $( MAKEREC) install) ; \
else :; fi
2014-01-23 04:01:44 -08:00
if test -n " $( WITH_DEBUGGER) " ; then ( cd debugger; $( MAKEREC) install) ; \
2008-07-29 01:31:41 -07:00
else :; fi
2013-12-12 09:38:43 -08:00
if test -n " $( WITH_OCAMLBUILD) " ; then ( cd ocamlbuild; $( MAKE) install) ; \
else :; fi
2016-01-02 06:49:08 -08:00
if test -n " $( FLEXDLL_SUBMODULE_PRESENT) " ; then $( MAKEREC) install-flexdll; \
else :; fi
2014-04-07 00:06:17 -07:00
cp config/Makefile $( INSTALL_LIBDIR) /Makefile.config
2015-09-22 01:32:46 -07:00
cp README.adoc $( INSTALL_DISTRIB) /Readme.general.txt
cp README.win32.adoc $( INSTALL_DISTRIB) /Readme.windows.txt
2014-04-07 00:06:17 -07:00
cp LICENSE $( INSTALL_DISTRIB) /License.txt
cp Changes $( INSTALL_DISTRIB) /Changes.txt
1996-02-21 02:49:46 -08:00
2016-01-02 06:49:08 -08:00
install-flexdll :
# The $(if ...) installs the correct .manifest file for MSVC and MSVC64
# (GNU make doesn't have ifeq as a function, hence slightly convoluted use of filter-out)
cp flexdll/flexlink.exe $( if $( filter-out mingw,$( TOOLCHAIN) ) ,flexdll/default$( filter-out _i386,_$( ARCH) ) .manifest) $( INSTALL_BINDIR) /
cp flexdll/flexdll_*.$( O) $( INSTALL_LIBDIR)
1996-02-21 02:49:46 -08:00
# Installation of the native-code compiler
installopt :
2002-06-07 02:49:45 -07:00
cd asmrun ; $( MAKEREC) install
2014-04-07 00:06:17 -07:00
cp ocamlopt $( INSTALL_BINDIR) /ocamlopt.exe
2002-06-07 02:49:45 -07:00
cd stdlib ; $( MAKEREC) installopt
2015-01-24 08:35:29 -08:00
cp asmcomp/*.cmi asmcomp/*.cmt asmcomp/*.cmti $( INSTALL_COMPLIBDIR)
2014-04-07 00:06:17 -07:00
cp compilerlibs/ocamloptcomp.cma $( OPTSTART) $( INSTALL_COMPLIBDIR)
2013-07-28 14:08:13 -07:00
if test -n " $( WITH_OCAMLDOC) " ; then ( cd ocamldoc; $( MAKEREC) installopt) ; fi
2013-12-12 09:38:43 -08:00
if test -n " $( WITH_OCAMLBUILD) " ; then ( cd ocamlbuild; $( MAKE) installopt) ; \
else :; fi
2015-07-17 07:31:05 -07:00
for i in $( OTHERLIBRARIES) ; do \
$( MAKEREC) -C otherlibs/$$ i installopt || exit $$ ?; \
done
2012-05-29 03:48:19 -07:00
if test -f ocamlopt.opt ; then $( MAKEREC) installoptopt; fi
2015-09-14 05:18:06 -07:00
cd tools; $( MAKEREC) installopt
2016-01-02 06:49:08 -08:00
if test -f ocamlopt.opt -a -f flexdll/flexlink.opt ; then cp -f flexdll/flexlink.opt $( INSTALL_BINDIR) /flexlink.exe ; fi
2012-05-29 03:48:19 -07:00
installoptopt :
2014-04-07 00:06:17 -07:00
cp ocamlc.opt $( INSTALL_BINDIR) /ocamlc.opt$( EXE)
cp ocamlopt.opt $( INSTALL_BINDIR) /ocamlopt.opt$( EXE)
cp lex/ocamllex.opt $( INSTALL_BINDIR) /ocamllex.opt$( EXE)
2016-01-11 05:39:40 -08:00
cp utils/*.cmx parsing/*.cmx typing/*.cmx bytecomp/*.cmx \
driver/*.cmx asmcomp/*.cmx $( INSTALL_COMPLIBDIR)
2012-06-08 05:53:40 -07:00
cp compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlcommon.$( A) \
2012-10-02 04:40:22 -07:00
compilerlibs/ocamlbytecomp.cmxa compilerlibs/ocamlbytecomp.$( A) \
compilerlibs/ocamloptcomp.cmxa compilerlibs/ocamloptcomp.$( A) \
$( BYTESTART:.cmo= .cmx) $( BYTESTART:.cmo= .$( O) ) \
$( OPTSTART:.cmo= .cmx) $( OPTSTART:.cmo= .$( O) ) \
2014-04-07 00:06:17 -07:00
$( INSTALL_COMPLIBDIR)
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
clean :: partialclean
1996-02-21 02:49:46 -08:00
# The compiler
2012-05-29 03:48:19 -07:00
compilerlibs/ocamlcommon.cma : $( COMMON )
$( CAMLC) -a -o $@ $( COMMON)
partialclean ::
rm -f compilerlibs/ocamlcommon.cma
# The bytecode compiler
compilerlibs/ocamlbytecomp.cma : $( BYTECOMP )
$( CAMLC) -a -o $@ $( BYTECOMP)
partialclean ::
rm -f compilerlibs/ocamlbytecomp.cma
ocamlc : compilerlibs /ocamlcommon .cma compilerlibs /ocamlbytecomp .cma $( BYTESTART )
2013-04-18 04:58:59 -07:00
$( CAMLC) $( LINKFLAGS) -compat-32 -o ocamlc compilerlibs/ocamlcommon.cma \
2013-03-22 11:21:10 -07:00
compilerlibs/ocamlbytecomp.cma $( BYTESTART)
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2014-04-02 09:20:38 -07:00
rm -f ocamlc
1996-02-21 02:49:46 -08:00
# The native-code compiler
2012-05-29 03:48:19 -07:00
compilerlibs/ocamloptcomp.cma : $( ASMCOMP )
$( CAMLC) -a -o $@ $( ASMCOMP)
partialclean ::
rm -f compilerlibs/ocamloptcomp.cma
ocamlopt : compilerlibs /ocamlcommon .cma compilerlibs /ocamloptcomp .cma $( OPTSTART )
$( CAMLC) $( LINKFLAGS) -o ocamlopt \
compilerlibs/ocamlcommon.cma compilerlibs/ocamloptcomp.cma $( OPTSTART)
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2014-04-02 09:20:38 -07:00
rm -f ocamlopt
1996-02-21 02:49:46 -08:00
# The toplevel
2012-05-29 03:48:19 -07:00
compilerlibs/ocamltoplevel.cma : $( TOPLEVEL )
$( CAMLC) -a -o $@ $( TOPLEVEL)
partialclean ::
rm -f compilerlibs/ocamltoplevel.cma
2013-03-22 11:21:10 -07:00
ocaml : compilerlibs /ocamlcommon .cma compilerlibs /ocamlbytecomp .cma \
compilerlibs/ocamltoplevel.cma $( TOPLEVELSTART) expunge
2012-05-29 03:48:19 -07:00
$( CAMLC) $( LINKFLAGS) -linkall -o ocaml.tmp \
compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma \
compilerlibs/ocamltoplevel.cma $( TOPLEVELSTART)
2002-11-22 07:10:40 -08:00
- $( CAMLRUN) ./expunge ocaml.tmp ocaml $( PERVASIVES)
1996-04-30 07:53:58 -07:00
rm -f ocaml.tmp
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
1996-04-30 07:53:58 -07:00
rm -f ocaml
1996-02-21 02:49:46 -08:00
2007-11-06 07:16:56 -08:00
# The native toplevel
2010-01-22 04:48:24 -08:00
ocamlnat : ocamlopt otherlibs /dynlink /dynlink .cmxa $( NATTOPOBJS :.cmo =.cmx )
2013-03-22 11:21:10 -07:00
$( CAMLOPT) $( LINKFLAGS) otherlibs/dynlink/dynlink.cmxa -o ocamlnat \
$( NATTOPOBJS:.cmo= .cmx) -linkall
2007-11-06 07:16:56 -08:00
toplevel/opttoploop.cmx : otherlibs /dynlink /dynlink .cmxa
otherlibs/dynlink/dynlink.cmxa : otherlibs /dynlink /natdynlink .ml
2015-09-14 05:18:06 -07:00
cd otherlibs/dynlink && $( MAKEREC) allopt
2007-11-06 07:16:56 -08:00
1996-02-21 02:49:46 -08:00
# The configuration file
2002-06-07 02:49:45 -07:00
utils/config.ml : utils /config .mlp config /Makefile
@rm -f utils/config.ml
sed -e " s|%%LIBDIR%%| $( LIBDIR) | " \
2010-01-22 04:48:24 -08:00
-e "s|%%BYTERUN%%|ocamlrun|" \
-e 's|%%CCOMPTYPE%%|$(CCOMPTYPE)|' \
-e " s|%%BYTECC%%| $( BYTECC) $( BYTECCCOMPOPTS) | " \
-e " s|%%NATIVECC%%| $( NATIVECC) $( NATIVECCCOMPOPTS) | " \
-e " s|%%PARTIALLD%%| $( PARTIALLD) | " \
-e " s|%%PACKLD%%| $( PACKLD) | " \
-e " s|%%BYTECCLIBS%%| $( BYTECCLIBS) | " \
-e " s|%%NATIVECCLIBS%%| $( NATIVECCLIBS) | " \
-e 's|%%RANLIBCMD%%|$(RANLIBCMD)|' \
2012-01-16 01:05:37 -08:00
-e 's|%%ARCMD%%|$(ARCMD)|' \
2010-01-22 04:48:24 -08:00
-e 's|%%BINUTILS_NM%%|$(BINUTILS_NM)|' \
-e 's|%%BINUTILS_OBJCOPY%%|$(BINUTILS_OBJCOPY)|' \
-e " s|%%ARCH%%| $( ARCH) | " \
-e " s|%%MODEL%%| $( MODEL) | " \
-e " s|%%SYSTEM%%| $( SYSTEM) | " \
-e " s|%%EXT_OBJ%%|. $( O) | " \
-e " s|%%EXT_ASM%%|. $( S) | " \
-e " s|%%EXT_LIB%%|. $( A) | " \
-e "s|%%EXT_DLL%%|.dll|" \
-e "s|%%SYSTHREAD_SUPPORT%%|true|" \
-e 's|%%ASM%%|$(ASM)|' \
2012-03-05 07:30:19 -08:00
-e 's|%%ASM_CFI_SUPPORTED%%|false|' \
2013-06-03 11:03:59 -07:00
-e 's|%%WITH_FRAME_POINTERS%%|false|' \
2010-01-22 04:48:24 -08:00
-e 's|%%MKDLL%%|$(MKDLL)|' \
-e 's|%%MKEXE%%|$(MKEXE)|' \
-e 's|%%MKMAINDLL%%|$(MKMAINDLL)|' \
-e 's|%%CC_PROFILE%%||' \
2013-07-01 12:28:15 -07:00
-e 's|%%HOST%%|$(HOST)|' \
-e 's|%%TARGET%%|$(TARGET)|' \
2015-12-17 08:35:35 -08:00
-e 's|%%FLAMBDA%%|$(FLAMBDA)|' \
2016-01-02 06:46:41 -08:00
-e 's|%%FLEXLINK_FLAGS%%|$(FLEXLINK_FLAGS)|' \
2010-01-22 04:48:24 -08:00
utils/config.mlp > utils/config.ml
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f utils/config.ml
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
beforedepend :: utils /config .ml
1996-02-21 02:49:46 -08:00
1997-02-04 07:40:22 -08:00
# The parser
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
parsing/parser.mli parsing/parser.ml : parsing /parser .mly
$( CAMLYACC) $( YACCFLAGS) parsing/parser.mly
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f parsing/parser.mli parsing/parser.ml parsing/parser.output
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
beforedepend :: parsing /parser .mli parsing /parser .ml
1996-02-21 02:49:46 -08:00
1997-02-04 07:40:22 -08:00
# The lexer
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
parsing/lexer.ml : parsing /lexer .mll
$( CAMLLEX) parsing/lexer.mll
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f parsing/lexer.ml
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
beforedepend :: parsing /lexer .ml
1996-02-21 02:49:46 -08:00
2012-05-29 03:48:19 -07:00
# Shared parts of the system compiled with the native-code compiler
compilerlibs/ocamlcommon.cmxa : $( COMMON :.cmo =.cmx )
$( CAMLOPT) -a -o $@ $( COMMON:.cmo= .cmx)
partialclean ::
2012-06-08 05:53:40 -07:00
rm -f compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlcommon.$( A)
2012-05-29 03:48:19 -07:00
1997-11-17 02:39:01 -08:00
# The bytecode compiler compiled with the native-code compiler
1996-02-21 02:49:46 -08:00
2012-05-29 03:48:19 -07:00
compilerlibs/ocamlbytecomp.cmxa : $( BYTECOMP :.cmo =.cmx )
$( CAMLOPT) -a -o $@ $( BYTECOMP:.cmo= .cmx)
partialclean ::
2012-06-08 05:53:40 -07:00
rm -f compilerlibs/ocamlbytecomp.cmxa compilerlibs/ocamlbytecomp.$( A)
2012-05-29 03:48:19 -07:00
2013-03-22 11:21:10 -07:00
ocamlc.opt : compilerlibs /ocamlcommon .cmxa compilerlibs /ocamlbytecomp .cmxa \
$( BYTESTART:.cmo= .cmx)
2012-05-29 03:48:19 -07:00
$( CAMLOPT) $( LINKFLAGS) -ccopt " $( BYTECCLINKOPTS) " -o ocamlc.opt \
compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlbytecomp.cmxa \
$( BYTESTART:.cmo= .cmx) -cclib " $( BYTECCLIBS) "
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
1996-04-30 07:53:58 -07:00
rm -f ocamlc.opt
1996-02-21 02:49:46 -08:00
# The native-code compiler compiled with itself
2012-05-29 03:48:19 -07:00
compilerlibs/ocamloptcomp.cmxa : $( ASMCOMP :.cmo =.cmx )
$( CAMLOPT) -a -o $@ $( ASMCOMP:.cmo= .cmx)
partialclean ::
2012-06-08 05:53:40 -07:00
rm -f compilerlibs/ocamloptcomp.cmxa compilerlibs/ocamloptcomp.$( A)
2012-05-29 03:48:19 -07:00
2013-03-22 11:21:10 -07:00
ocamlopt.opt : compilerlibs /ocamlcommon .cmxa compilerlibs /ocamloptcomp .cmxa \
$( OPTSTART:.cmo= .cmx)
2012-05-29 03:48:19 -07:00
$( CAMLOPT) $( LINKFLAGS) -o ocamlopt.opt \
compilerlibs/ocamlcommon.cmxa compilerlibs/ocamloptcomp.cmxa \
$( OPTSTART:.cmo= .cmx)
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2012-04-22 09:11:51 -07:00
rm -f ocamlopt.opt
1996-02-21 02:49:46 -08:00
2012-05-29 03:48:19 -07:00
$(COMMON : .cmo =.cmx ) $( BYTECOMP :.cmo =.cmx ) $( ASMCOMP :.cmo =.cmx ) : ocamlopt
1996-02-21 02:49:46 -08:00
# The numeric opcodes
2014-12-27 06:41:49 -08:00
bytecomp/opcodes.ml : byterun /caml /instruct .h
sed -n -e "/^enum/p" -e "s|,||g" -e "/^ /p" byterun/caml/instruct.h | \
2010-01-22 04:48:24 -08:00
gawk -f tools/make-opcodes > bytecomp/opcodes.ml
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f bytecomp/opcodes.ml
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
beforedepend :: bytecomp /opcodes .ml
1996-02-21 02:49:46 -08:00
# The predefined exceptions and primitives
2002-06-07 02:49:45 -07:00
byterun/primitives :
cd byterun ; $( MAKEREC) primitives
1996-02-21 02:49:46 -08:00
2014-12-27 06:41:49 -08:00
bytecomp/runtimedef.ml : byterun /primitives byterun /caml /fail .h
2002-06-07 02:49:45 -07:00
( echo 'let builtin_exceptions = [|' ; \
2014-12-27 06:41:49 -08:00
sed -n -e 's|.*/\* \("[A-Za-z_]*"\) \*/$$| \1;|p' byterun/caml/fail.h | \
2002-06-07 02:49:45 -07:00
sed -e '$$s/;$$//' ; \
2010-01-22 04:48:24 -08:00
echo '|]' ; \
echo 'let builtin_primitives = [|' ; \
sed -e 's/.*/ "&";/' -e '$$s/;$$//' byterun/primitives; \
2002-06-07 02:49:45 -07:00
echo '|]' ) > bytecomp/runtimedef.ml
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f bytecomp/runtimedef.ml
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
beforedepend :: bytecomp /runtimedef .ml
1996-02-21 02:49:46 -08:00
1997-07-24 04:49:12 -07:00
# Choose the right machine-dependent files
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
asmcomp/arch.ml : asmcomp /$( ARCH ) /arch .ml
cp asmcomp/$( ARCH) /arch.ml asmcomp/arch.ml
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f asmcomp/arch.ml
beforedepend :: asmcomp /arch .ml
1996-02-21 02:49:46 -08:00
2011-12-16 09:02:48 -08:00
asmcomp/proc.ml : asmcomp /$( ARCH ) /proc .ml
cp asmcomp/$( ARCH) /proc.ml asmcomp/proc.ml
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f asmcomp/proc.ml
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
beforedepend :: asmcomp /proc .ml
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
asmcomp/selection.ml : asmcomp /$( ARCH ) /selection .ml
cp asmcomp/$( ARCH) /selection.ml asmcomp/selection.ml
1997-07-24 04:49:12 -07:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f asmcomp/selection.ml
1997-07-24 04:49:12 -07:00
2002-06-07 02:49:45 -07:00
beforedepend :: asmcomp /selection .ml
1997-07-24 04:49:12 -07:00
2014-04-27 02:31:22 -07:00
asmcomp/CSE.ml : asmcomp /$( ARCH ) /CSE .ml
2014-04-27 09:36:41 -07:00
cp asmcomp/$( ARCH) /CSE.ml asmcomp/CSE.ml
2014-04-27 02:31:22 -07:00
partialclean ::
rm -f asmcomp/CSE.ml
beforedepend :: asmcomp /CSE .ml
2002-06-07 02:49:45 -07:00
asmcomp/reload.ml : asmcomp /$( ARCH ) /reload .ml
cp asmcomp/$( ARCH) /reload.ml asmcomp/reload.ml
1997-07-24 04:49:12 -07:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f asmcomp/reload.ml
1997-07-24 04:49:12 -07:00
2002-06-07 02:49:45 -07:00
beforedepend :: asmcomp /reload .ml
1997-07-24 04:49:12 -07:00
2002-06-07 02:49:45 -07:00
asmcomp/scheduling.ml : asmcomp /$( ARCH ) /scheduling .ml
cp asmcomp/$( ARCH) /scheduling.ml asmcomp/scheduling.ml
1997-07-24 04:49:12 -07:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f asmcomp/scheduling.ml
1997-07-24 04:49:12 -07:00
2002-06-07 02:49:45 -07:00
beforedepend :: asmcomp /scheduling .ml
1997-07-24 04:49:12 -07:00
1996-02-21 02:49:46 -08:00
# Preprocess the code emitters
2014-09-02 08:07:59 -07:00
asmcomp/emit.ml : asmcomp /$( ARCH ) /emit .mlp tools /cvt_emit
2015-07-17 07:31:05 -07:00
$( CAMLRUN) tools/cvt_emit < asmcomp/$( ARCH) /emit.mlp > asmcomp/emit.ml
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f asmcomp/emit.ml
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
beforedepend :: asmcomp /emit .ml
1996-02-21 02:49:46 -08:00
2002-06-07 02:49:45 -07:00
tools/cvt_emit : tools /cvt_emit .mll
cd tools ; $( MAKEREC) cvt_emit
1996-10-07 06:19:16 -07:00
1996-02-21 02:49:46 -08:00
# The "expunge" utility
2013-03-22 11:21:10 -07:00
expunge : compilerlibs /ocamlcommon .cma compilerlibs /ocamlbytecomp .cma \
toplevel/expunge.cmo
$( CAMLC) $( LINKFLAGS) -o expunge compilerlibs/ocamlcommon.cma \
compilerlibs/ocamlbytecomp.cma toplevel/expunge.cmo
1996-02-21 02:49:46 -08:00
1997-02-16 05:36:42 -08:00
partialclean ::
1996-02-21 02:49:46 -08:00
rm -f expunge
# The runtime system for the bytecode compiler
2002-06-07 02:49:45 -07:00
runtime : makeruntime stdlib /libcamlrun .$( A )
1997-01-05 06:06:13 -08:00
makeruntime :
2016-01-02 06:49:08 -08:00
cd byterun ; $( MAKEREC) $( BOOT_FLEXLINK_CMD) all
2002-06-07 02:49:45 -07:00
stdlib/libcamlrun.$(A) : byterun /libcamlrun .$( A )
cp byterun/libcamlrun.$( A) stdlib/libcamlrun.$( A)
1997-02-16 05:36:42 -08:00
clean ::
2002-06-07 02:49:45 -07:00
cd byterun ; $( MAKEREC) clean
rm -f stdlib/libcamlrun.$( A)
1996-02-21 02:49:46 -08:00
alldepend ::
2002-06-07 02:49:45 -07:00
cd byterun ; $( MAKEREC) depend
1996-02-21 02:49:46 -08:00
# The runtime system for the native-code compiler
2002-06-07 02:49:45 -07:00
runtimeopt : makeruntimeopt stdlib /libasmrun .$( A )
1996-02-21 02:49:46 -08:00
makeruntimeopt :
2002-06-07 02:49:45 -07:00
cd asmrun ; $( MAKEREC) all
stdlib/libasmrun.$(A) : asmrun /libasmrun .$( A )
cp asmrun/libasmrun.$( A) stdlib/libasmrun.$( A)
1997-02-16 05:36:42 -08:00
clean ::
2002-06-07 02:49:45 -07:00
cd asmrun ; $( MAKEREC) clean
rm -f stdlib/libasmrun.$( A)
1996-02-21 02:49:46 -08:00
alldepend ::
2002-06-07 02:49:45 -07:00
cd asmrun ; $( MAKEREC) depend
1996-02-21 02:49:46 -08:00
# The library
library :
2016-01-02 06:49:08 -08:00
cd stdlib ; $( MAKEREC) $( BOOT_FLEXLINK_CMD) all
1996-02-21 02:49:46 -08:00
library-cross :
2016-01-02 06:49:08 -08:00
cd stdlib ; $( MAKEREC) $( BOOT_FLEXLINK_CMD) CAMLRUN = ../byterun/ocamlrun all
1996-02-21 02:49:46 -08:00
libraryopt :
2016-01-02 06:49:08 -08:00
cd stdlib ; $( MAKEREC) $( BOOT_FLEXLINK_CMD) allopt
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
cd stdlib ; $( MAKEREC) clean
1996-02-21 02:49:46 -08:00
alldepend ::
2002-06-07 02:49:45 -07:00
cd stdlib ; $( MAKEREC) depend
1996-02-21 02:49:46 -08:00
# The lexer and parser generators
1996-04-30 07:53:58 -07:00
ocamllex :
2002-06-07 02:49:45 -07:00
cd lex ; $( MAKEREC) all
2000-08-30 18:10:14 -07:00
ocamllex.opt :
2002-06-07 02:49:45 -07:00
cd lex ; $( MAKEREC) allopt
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
cd lex ; $( MAKEREC) clean
1996-02-21 02:49:46 -08:00
alldepend ::
2002-06-07 02:49:45 -07:00
cd lex ; $( MAKEREC) depend
1996-02-21 02:49:46 -08:00
1996-04-30 07:53:58 -07:00
ocamlyacc :
2016-01-02 06:49:08 -08:00
cd yacc ; $( MAKEREC) $( BOOT_FLEXLINK_CMD) all
1997-02-16 05:36:42 -08:00
clean ::
2002-06-07 02:49:45 -07:00
cd yacc ; $( MAKEREC) clean
1996-02-21 02:49:46 -08:00
# Tools
2014-04-12 03:17:02 -07:00
ocamltools : ocamlc ocamlyacc ocamllex asmcomp /cmx_format .cmi \
asmcomp/printclambda.cmo
2002-06-07 02:49:45 -07:00
cd tools ; $( MAKEREC) all
2014-04-07 02:44:51 -07:00
ocamltoolsopt :
2014-04-07 04:40:24 -07:00
cd tools ; $( MAKEREC) opt
2014-04-07 02:44:51 -07:00
2014-04-12 03:17:02 -07:00
ocamltoolsopt.opt : ocamlc .opt ocamlyacc ocamllex asmcomp /cmx_format .cmi \
asmcomp/printclambda.cmx
2002-06-07 02:49:45 -07:00
cd tools ; $( MAKEREC) opt.opt
2014-04-07 02:44:51 -07:00
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
cd tools ; $( MAKEREC) clean
1996-02-21 02:49:46 -08:00
alldepend ::
2002-06-07 02:49:45 -07:00
cd tools ; $( MAKEREC) depend
1996-02-21 02:49:46 -08:00
2002-03-29 04:38:23 -08:00
# OCamldoc
2013-07-28 08:52:17 -07:00
ocamldoc :
2002-06-07 02:49:45 -07:00
cd ocamldoc ; $( MAKEREC) all
2010-01-22 04:48:24 -08:00
ocamldoc.opt :
2002-06-07 02:49:45 -07:00
cd ocamldoc ; $( MAKEREC) opt.opt
2002-03-29 04:38:23 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
cd ocamldoc ; $( MAKEREC) clean
2002-03-29 04:38:23 -08:00
alldepend ::
2002-06-07 02:49:45 -07:00
cd ocamldoc ; $( MAKEREC) depend
2002-03-29 04:38:23 -08:00
1996-02-21 02:49:46 -08:00
# The extra libraries
otherlibraries :
2015-07-17 07:31:05 -07:00
for i in $( OTHERLIBRARIES) ; do \
$( MAKEREC) -C otherlibs/$$ i all || exit $$ ?; \
done
1996-02-21 02:49:46 -08:00
otherlibrariesopt :
2015-07-17 07:31:05 -07:00
for i in $( OTHERLIBRARIES) ; \
do $( MAKEREC) -C otherlibs/$$ i allopt || exit $$ ?; \
done
1997-02-16 05:36:42 -08:00
partialclean ::
2015-07-17 07:31:05 -07:00
for i in $( OTHERLIBRARIES) ; \
do $( MAKEREC) -C otherlibs/$$ i partialclean || exit $$ ?; \
done
1996-02-21 02:49:46 -08:00
clean ::
2015-07-17 07:31:05 -07:00
for i in $( OTHERLIBRARIES) ; do \
$( MAKEREC) -C otherlibs/$$ i clean || exit $$ ?; \
done
1996-02-21 02:49:46 -08:00
alldepend ::
2015-07-17 07:31:05 -07:00
for i in $( OTHERLIBRARIES) ; do \
$( MAKEREC) -C otherlibs/$$ i depend || exit $$ ?; \
done
1996-02-21 02:49:46 -08:00
2008-07-29 01:31:41 -07:00
# The replay debugger
ocamldebugger : ocamlc ocamlyacc ocamllex
cd debugger; $( MAKEREC) all
partialclean ::
cd debugger; $( MAKEREC) clean
alldepend ::
cd debugger; $( MAKEREC) depend
2007-02-07 02:31:36 -08:00
# Ocamlbuild
2006-09-28 06:27:27 -07:00
2013-12-12 09:38:43 -08:00
ocamlbuild.byte : ocamlc otherlibraries
cd ocamlbuild && $( MAKE) all
2007-11-29 02:35:57 -08:00
2013-12-12 09:38:43 -08:00
ocamlbuild.native : ocamlopt otherlibrariesopt
2016-01-02 06:49:08 -08:00
cd ocamlbuild && $( if $( FLEXDLL_SUBMODULE_PRESENT) ,OCAML_FLEXLINK= "../boot/ocamlrun ../flexdll/flexlink.exe" ) $( MAKE) allopt
2007-02-07 02:31:36 -08:00
2007-10-08 07:19:34 -07:00
partialclean ::
2013-12-12 09:38:43 -08:00
cd ocamlbuild && $( MAKE) clean
alldepend ::
cd ocamlbuild && $( MAKE) depend
2002-11-05 02:23:52 -08:00
2013-04-30 02:57:54 -07:00
# Make clean in the test suite
clean ::
cd testsuite; $( MAKE) clean
1996-02-21 02:49:46 -08:00
# Default rules
.SUFFIXES : .ml .mli .cmo .cmi .cmx
.ml.cmo :
$( CAMLC) $( COMPFLAGS) -c $<
.mli.cmi :
$( CAMLC) $( COMPFLAGS) -c $<
.ml.cmx :
$( CAMLOPT) $( COMPFLAGS) -c $<
1997-02-16 05:36:42 -08:00
partialclean ::
2002-06-07 02:49:45 -07:00
rm -f utils/*.cm* utils/*.$( O) utils/*.$( S)
rm -f parsing/*.cm* parsing/*.$( O) parsing/*.$( S)
rm -f typing/*.cm* typing/*.$( O) typing/*.$( S)
rm -f bytecomp/*.cm* bytecomp/*.$( O) bytecomp/*.$( S)
rm -f asmcomp/*.cm* asmcomp/*.$( O) asmcomp/*.$( S)
rm -f driver/*.cm* driver/*.$( O) driver/*.$( S)
rm -f toplevel/*.cm* toplevel/*.$( O) toplevel/*.$( S)
rm -f tools/*.cm* tools/*.$( O) tools/*.$( S)
1996-02-21 02:49:46 -08:00
depend : beforedepend
2003-01-03 08:08:33 -08:00
( for d in utils parsing typing bytecomp asmcomp driver toplevel; \
do $( CAMLDEP) $( DEPFLAGS) $$ d/*.mli $$ d/*.ml; \
done ) > .depend
1996-02-21 02:49:46 -08:00
alldepend :: depend
2012-02-10 01:08:02 -08:00
distclean :
2015-09-14 05:18:06 -07:00
$( MAKEREC) clean
2015-07-17 07:31:05 -07:00
rm -f asmrun/.depend.nt byterun/.depend.nt
2014-05-12 07:03:04 -07:00
rm -f boot/ocamlrun boot/ocamlrun.exe boot/camlheader boot/ocamlyacc \
boot/*.cm* boot/libcamlrun.a
rm -f config/Makefile config/m.h config/s.h
rm -f tools/*.bak
rm -f ocaml ocamlc
rm -f testsuite/_log
2012-02-10 01:08:02 -08:00
2013-11-21 08:23:28 -08:00
.PHONY : all backup bootstrap checkstack clean
2012-02-10 01:08:02 -08:00
.PHONY : partialclean beforedepend alldepend cleanboot coldstart
.PHONY : compare core coreall
.PHONY : coreboot defaultentry depend distclean install installopt
.PHONY : library library -cross libraryopt ocamlbuild -mixed -boot
.PHONY : ocamlbuild .byte ocamlbuild .native ocamldebugger ocamldoc
2014-04-07 02:44:51 -07:00
.PHONY : ocamldoc .opt ocamllex ocamllex .opt ocamltools ocamltoolsopt
.PHONY : ocamltoolsopt .opt ocamlyacc opt -core opt opt .opt otherlibraries
2012-02-10 01:08:02 -08:00
.PHONY : otherlibrariesopt promote promote -cross
.PHONY : restore runtime runtimeopt makeruntimeopt world world .opt
2016-01-02 06:49:08 -08:00
.PHONY : flexdll flexlink .opt flexdll -common -err flexdll -repo
2012-02-10 01:08:02 -08:00
2002-06-07 02:49:45 -07:00
i n c l u d e . d e p e n d