diff options
author | Damien Doligez <damien.doligez-inria.fr> | 1996-11-02 17:55:06 +0000 |
---|---|---|
committer | Damien Doligez <damien.doligez-inria.fr> | 1996-11-02 17:55:06 +0000 |
commit | 1aaf9a118aef383c39ff7424ae8814c836bda771 (patch) | |
tree | 4419ad84b1529fe942e779adbcae465fc6b915fb | |
parent | de2bb67cd62cd862747aa3c6dd90da015bba9eaa (diff) |
Portage Mac/MPW
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1133 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | Changes | 9 | ||||
-rw-r--r-- | INSTALL.MPW | 55 | ||||
-rw-r--r-- | Makefile.Mac | 371 | ||||
-rw-r--r-- | Makefile.Mac.depend | 627 | ||||
-rw-r--r-- | bytecomp/bytelink.ml | 119 |
5 files changed, 1163 insertions, 18 deletions
@@ -1,3 +1,12 @@ +Objective Caml 1.04: +-------------------- + +* Macintosh port: + - The makefiles are provided for compiling and installing O'Caml on + a Macintosh with MPW 3.4.1. + - An application with the toplevel in a window is forthcoming. + + Objective Caml 1.03: -------------------- diff --git a/INSTALL.MPW b/INSTALL.MPW new file mode 100644 index 000000000..e39bc7fb3 --- /dev/null +++ b/INSTALL.MPW @@ -0,0 +1,55 @@ +# PREREQUISITES +# +# You need MPW 3.4.1 (with SC and MrC). +# +# +# INSTALLATION INSTRUCTIONS +# +# To install Objective Caml in your MPW environment, follow this script. +# Read the comments and execute the commands. If you run the commands +# without changing anything, you'll get a reasonable default configuration. +# +# Set the shell's stack size to at least 128k because O'Caml uses a lot of +# stack space. + +SetShellSize -s 128k + +# Go to the directory where you found this file. + +Directory "`echo "{active}" | streamedit -e '1 replace /[Â:]*°/ ""'`" + +# Copy some useful scripts to your Commands directory. +# DoMake is absolutely needed for installation +# Characters is only needed by the executable error messages +# MakeDepend is only needed if you rebuild the dependency makefiles + +Duplicate :tools:DoMake :tools:Characters :tools:MakeDepend "{MPW}User Commands:" + +# Edit ":config:config.Mac" to change the configuration. +# (mostly, the destination folders for installation) + +Open :config:config.Mac + +# Set the configuration variables. + +Execute :config:config.Mac + +# O'Caml needs an environment variable to find its library files. +# (the value is taken from the configuration variables) + +Set -e CAMLLIB "{LIBDIR}" + +# Make it persistent. + +Echo "Set -e CAMLLIB `quote "{CAMLLIB}"`" >"{MPW}Startup Items:O'Caml" + +# Now you're all set. Build the files and install everything. +# For more explanations on these steps, see the file INSTALL. +# +# These commands produce a lot of output, so you may want to copy +# them to the worksheet for execution. + +DoMake world +DoMake bootstrap +DoMake install +DoMake realclean diff --git a/Makefile.Mac b/Makefile.Mac new file mode 100644 index 000000000..fad00c372 --- /dev/null +++ b/Makefile.Mac @@ -0,0 +1,371 @@ +# The main Makefile + +MacVersion = "mac.0x1" + +CAMLC = :boot:ocamlrun :boot:ocamlc -I :boot: +COMPFLAGS = {INCLUDES} +LINKFLAGS = +CAMLYACC = :boot:ocamlyacc +YACCFLAGS = +CAMLLEX = :boot:ocamlrun :boot:ocamllex +CAMLDEP = :boot:ocamlrun :tools:ocamldep +DEPFLAGS = {INCLUDES} +CAMLRUN = :byterun:ocamlrun + +INCLUDES = -I :utils: -I :parsing: -I :typing: -I :bytecomp: ¶ + -I :driver: -I :toplevel: + +UTILS = :utils:misc.cmo :utils:tbl.cmo :utils:config.cmo ¶ + :utils:clflags.cmo :utils:terminfo.cmo + +PARSING = :parsing:location.cmo :parsing:longident.cmo :parsing:pstream.cmo ¶ + :parsing:parser.cmo :parsing:lexer.cmo :parsing:parse.cmo + +TYPING = :typing:ident.cmo :typing:path.cmo ¶ + :typing:primitive.cmo :typing:types.cmo ¶ + :typing:subst.cmo :typing:predef.cmo ¶ + :typing:datarepr.cmo :typing:env.cmo ¶ + :typing:typedtree.cmo ¶ + :typing:ctype.cmo :typing:printtyp.cmo ¶ + :typing:mtype.cmo :typing:includecore.cmo ¶ + :typing:includemod.cmo :typing:parmatch.cmo ¶ + :typing:typetexp.cmo :typing:typecore.cmo ¶ + :typing:typedecl.cmo :typing:typeclass.cmo ¶ + :typing:typemod.cmo + +COMP = :bytecomp:lambda.cmo :bytecomp:printlambda.cmo ¶ + :bytecomp:translobj.cmo :bytecomp:matching.cmo :bytecomp:translcore.cmo ¶ + :bytecomp:translclass.cmo :bytecomp:translmod.cmo ¶ + :bytecomp:simplif.cmo :bytecomp:runtimedef.cmo + +BYTECOMP = :bytecomp:meta.cmo :bytecomp:instruct.cmo :bytecomp:bytegen.cmo ¶ + :bytecomp:printinstr.cmo :bytecomp:opcodes.cmo :bytecomp:emitcode.cmo ¶ + :bytecomp:symtable.cmo :bytecomp:bytelibrarian.cmo :bytecomp:bytelink.cmo + +DRIVER = :driver:errors.cmo :driver:compile.cmo :driver:main.cmo + +TOPLEVEL = :driver:errors.cmo :driver:compile.cmo ¶ + :toplevel:printval.cmo :toplevel:toploop.cmo ¶ + :toplevel:trace.cmo :toplevel:topdirs.cmo + +TOPLEVELMAIN = :toplevel:topmain.cmo + +COMPOBJS = {UTILS} {PARSING} {TYPING} {COMP} {BYTECOMP} {DRIVER} + +TOPLIB = {UTILS} {PARSING} {TYPING} {COMP} {BYTECOMP} {TOPLEVEL} + +EXPUNGEOBJS = :utils:misc.cmo :utils:tbl.cmo ¶ + :utils:config.cmo :utils:clflags.cmo ¶ + :typing:ident.cmo :typing:predef.cmo ¶ + :bytecomp:runtimedef.cmo :bytecomp:symtable.cmo ¶ + :toplevel:expunge.cmo + +PERVASIVES = arg array char digest filename format gc hashtbl lexing list map ¶ + obj parsing pervasives printexc printf queue random set sort ¶ + stack string stream sys oo genlex topdirs + +# Recompile the system using the bootstrap compiler +all Ä runtime ocamlc ocamllex ocamlyacc ocamltools library ocaml otherlibraries + +# The compilation of ocaml will fail if the runtime has changed. +# Never mind, just do make bootstrap to reach fixpoint again. + +# Compile everything the first time +world Ä + domake coldstart + domake clean + domake all + +# Complete bootstrapping cycle +bootstrap Ä +# Save the original bootstrap compiler + domake backup +# Promote the new compiler but keep the old runtime +# This compiler runs on :boot:ocamlrun and produces bytecode for +# :byterun:ocamlrun + domake promote-cross +# Rebuild ocamlc and ocamllex (run on :byterun:ocamlrun) + domake clean + domake ocamlc ocamllex +# Rebuild the library (using :byterun:ocamlrun :ocamlc) + domake library-cross +# Promote the new compiler and the new runtime + domake promote +# Rebuild everything, including ocaml and the tools + domake clean + domake all +# Check if fixpoint reached + domake compare + beep + +LIBFILES = :stdlib.cma :std_exit.cmo :Å.cmi camlheader + +# Start up the system from the distribution compiler +coldstart Ä + directory :byterun; domake all; directory :: + duplicate -y :byterun:ocamlrun :boot:ocamlrun + directory :yacc; domake all; directory :: + duplicate -y :yacc:ocamlyacc :boot:ocamlyacc + directory :stdlib + domake -d COMPILER=::boot:ocamlc all + duplicate -y {LIBFILES} ::boot: + directory :: + +# Save the current bootstrap compiler +backup Ä + if `exists -d :boot:Saved:` == "" + NewFolder :boot:Saved: + end + move :boot:Saved: :boot:Saved.prev: + NewFolder :boot:Saved: + move :boot:Saved.prev: :boot:Saved:Saved.prev: + duplicate -y :boot:ocamlrun :boot:Saved: + move :boot:ocamlc :boot:ocamllex :boot:ocamlyacc :boot:Saved: + directory :boot; duplicate -y {LIBFILES} :Saved:; directory :: + +# Promote the newly compiled system to the rank of cross compiler +# (Runs on the old runtime, produces code for the new runtime) +promote-cross Ä + duplicate -y :ocamlc :boot:ocamlc + duplicate -y :lex:ocamllex :boot:ocamllex + duplicate -y :yacc:ocamlyacc :boot:ocamlyacc + directory :stdlib + duplicate -y {LIBFILES} ::boot: || set status 0 + directory :: + +# 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 + duplicate -y :byterun:ocamlrun :boot:ocamlrun + +# Restore the saved bootstrap compiler if a problem arises +restore Ä + move -y :boot:Saved:Å :boot: + delete -y :boot:Saved: + move -y :boot:Saved.prev: :boot:Saved: + +# Check if fixpoint reached +compare Ä + set exit 0 + equal -q :boot:ocamlc :ocamlc && equal -q :boot:ocamllex :lex:ocamllex + if {status} + echo "¶nFixpoint not reached, try one more bootstrapping cycle.¶n" + else + echo "¶nFixpoint reached, bootstrap succeeded.¶n" + end + +# Remove old bootstrap compilers +cleanboot Ä + delete -i -y :boot:Saved:Saved.prev:Å || set status 0 + +# Installation +install Ä $OutOfDate + flush + for i in "{BINDIR}" "{LIBDIR}" + if "`exists -d "{i}"`" == "" + newfolder "{i}" + end + end + directory :byterun: + domake install + directory :: + duplicate -y :ocamlc "{BINDIR}ocamlc" + duplicate -y :ocaml "{BINDIR}ocaml" + directory :stdlib: + domake install + directory :: + duplicate -y :lex:ocamllex "{BINDIR}ocamllex" + duplicate -y :yacc:ocamlyacc "{BINDIR}ocamlyacc" + duplicate -y toplevellib.cma expunge "{LIBDIR}" + duplicate -y :toplevel:topmain.cmo "{LIBDIR}topmain.cmo" + duplicate -y :toplevel:toploop.cmi :toplevel:topdirs.cmi "{LIBDIR}" + directory :tools: + domake install + directory :: + duplicate -y :man:ocaml.help "{HELPFILE}" + for i in {OTHERLIBRARIES} + directory :otherlibs:{i} + domake install + directory ::: + end + +realclean ÄÄ clean + +# The compiler + +ocamlc Ä {COMPOBJS} + {CAMLC} {LINKFLAGS} -o ocamlc {COMPOBJS} + +clean ÄÄ + delete -i ocamlc + +# The toplevel + +ocaml Ä toplevellib.cma {TOPLEVELMAIN} expunge + {CAMLC} {LINKFLAGS} -linkall -o ocaml.tmp toplevellib.cma {TOPLEVELMAIN} + {CAMLRUN} :expunge ocaml.tmp ocaml {PERVASIVES} || set status 0 + delete -i ocaml.tmp + +toplevellib.cma Ä {TOPLIB} + {CAMLC} -a -o toplevellib.cma {TOPLIB} + +clean ÄÄ + delete -i ocaml toplevellib.cma + +# The configuration file + +:utils:config.ml Ä :utils:config.mlp :config:Makefile + delete -i :utils:config.ml + streamedit -e "/let version =/ replace /¶¶¶"°/ ¶"/{MacVersion}¶¶¶"¶"" ¶ + -e "1,$ replace /%%LIBDIR%%/ ¶"{LIBDIR}¶"" ¶ + -e "1,$ replace /%%EXT_OBJ%%/ '.o'" ¶ + -e "1,$ replace /%%EXT_LIB%%/ '.x'" ¶ + :utils:config.mlp > :utils:config.ml + +clean ÄÄ + delete -i :utils:config.ml + +beforedepend ÄÄ :utils:config.ml + +# The parser generator + +:parsing:parser.mli Ä :parsing:parser.ml + echo -n + +:parsing:parser.ml Ä :parsing:parser.mly + {CAMLYACC} {YACCFLAGS} :parsing:parser.mly + +clean ÄÄ + delete -i :parsing:parser.mli :parsing:parser.ml :parsing:parser.output + +beforedepend ÄÄ :parsing:parser.mli :parsing:parser.ml + +# The lexer generator + +:parsing:lexer.ml Ä :parsing:lexer.mll + {CAMLLEX} :parsing:lexer.mll + +clean ÄÄ + delete -i :parsing:lexer.ml + +beforedepend ÄÄ :parsing:lexer.ml + +# The numeric opcodes + +:bytecomp:opcodes.ml Ä :byterun:instruct.h + :tools:make-opcodes.Mac :byterun:instruct.h :bytecomp:opcodes.ml + +clean ÄÄ + delete -i :bytecomp:opcodes.ml + +beforedepend ÄÄ :bytecomp:opcodes.ml + +# The predefined exceptions and primitives + +:byterun:primitives Ä + directory :byterun: + domake primitives + directory :: + +:bytecomp:runtimedef.ml Ä :byterun:primitives :byterun:fail.h + (echo 'let builtin_exceptions = [|' ; ¶ + streamedit -d -e '/¶/¶* (¶"[A-Za-z_]*¶")¨0 ¶*¶/°/ print ¨0 ";"' :byterun:fail.h | ¶ + streamedit -e '$ replace /;°/ "|]"'; ¶ + echo 'let builtin_primitives = [|'; ¶ + streamedit -e "1,$ replace /(Å)¨0/ ' ¶"' ¨0 '¶";'" -e '$ replace /;°/ "|]"' :byterun:primitives; ¶ + ) > :bytecomp:runtimedef.ml + +clean ÄÄ + delete -i :bytecomp:runtimedef.ml + +beforedepend ÄÄ :bytecomp:runtimedef.ml + +# The "expunge" utility + +expunge Ä {EXPUNGEOBJS} + {CAMLC} {LINKFLAGS} -o expunge {EXPUNGEOBJS} + +clean ÄÄ + delete -i expunge + +# The runtime system for the bytecode compiler + +runtime Ä + directory :byterun:; domake all; directory :: +realclean ÄÄ + directory :byterun:; domake clean; directory :: +alldepend ÄÄ + directory :byterun:; domake depend; directory :: + +# The library + +library Ä + directory :stdlib; domake all; directory :: +library-cross Ä + directory :stdlib; domake -d RUNTIME=::byterun:ocamlrun all; directory :: +clean ÄÄ + directory :stdlib; domake clean; directory :: +alldepend ÄÄ + directory :stdlib; domake depend; directory :: + +# The lexer and parser generators + +ocamllex Ä + directory :lex; domake all; directory :: +clean ÄÄ + directory :lex; domake clean; directory :: +alldepend ÄÄ + directory :lex; domake depend; directory :: + +ocamlyacc Ä + directory :yacc; domake all; directory :: +realclean ÄÄ + directory :yacc; domake clean; directory :: + +# Tools + +ocamltools Ä + directory :tools; domake all; directory :: +clean ÄÄ + directory :tools; domake clean; directory :: +alldepend ÄÄ + directory :tools; domake depend; directory :: + +# The extra libraries + +otherlibraries Ä + for i in {OTHERLIBRARIES} + directory :otherlibs:{i}; domake all; directory ::: + end +clean ÄÄ + for i in {OTHERLIBRARIES} + directory :otherlibs:{i}; domake clean; directory ::: + end +realclean ÄÄ + for i in {OTHERLIBRARIES} + directory :otherlibs:{i}; domake realclean; directory ::: + end +alldepend ÄÄ + for i in {OTHERLIBRARIES} + directory :otherlibs:{i}; domake depend; directory ::: + end + +# Default rules + +.cmo Ä .ml + {CAMLC} {COMPFLAGS} -c {depdir}{default}.ml + +.cmi Ä .mli + {CAMLC} {COMPFLAGS} -c {depdir}{default}.mli + +clean ÄÄ + for i in utils parsing typing bytecomp driver toplevel tools + delete -i :{i}:Å.cm[io] || set status 0 + end + +depend Ä beforedepend + for d in utils parsing typing bytecomp driver toplevel + {CAMLDEP} {DEPFLAGS} :{d}:Å.mli :{d}:Å.ml + end > Makefile.Mac.depend + +alldepend ÄÄ depend diff --git a/Makefile.Mac.depend b/Makefile.Mac.depend new file mode 100644 index 000000000..2583ecbec --- /dev/null +++ b/Makefile.Mac.depend @@ -0,0 +1,627 @@ +:utils:config.cmoÄ :utils:config.cmi +:utils:config.cmxÄ :utils:config.cmi +:utils:misc.cmoÄ :utils:misc.cmi +:utils:misc.cmxÄ :utils:misc.cmi +:utils:tbl.cmoÄ :utils:tbl.cmi +:utils:tbl.cmxÄ :utils:tbl.cmi +:utils:terminfo.cmoÄ :utils:terminfo.cmi +:utils:terminfo.cmxÄ :utils:terminfo.cmi +:parsing:lexer.cmiÄ :parsing:parser.cmi +:parsing:parse.cmiÄ :parsing:parsetree.cmi +:parsing:parser.cmiÄ :parsing:parsetree.cmi +:parsing:parsetree.cmiÄ :parsing:asttypes.cmi :parsing:location.cmi ¶ + :parsing:longident.cmi +:parsing:pstream.cmiÄ :parsing:parsetree.cmi +:parsing:lexer.cmoÄ :utils:misc.cmi :parsing:parser.cmi :parsing:lexer.cmi +:parsing:lexer.cmxÄ :utils:misc.cmx :parsing:parser.cmx :parsing:lexer.cmi +:parsing:location.cmoÄ :utils:terminfo.cmi :parsing:location.cmi +:parsing:location.cmxÄ :utils:terminfo.cmx :parsing:location.cmi +:parsing:longident.cmoÄ :utils:misc.cmi :parsing:longident.cmi +:parsing:longident.cmxÄ :utils:misc.cmx :parsing:longident.cmi +:parsing:parse.cmoÄ :parsing:lexer.cmi :parsing:location.cmi ¶ + :parsing:parser.cmi :parsing:parse.cmi +:parsing:parse.cmxÄ :parsing:lexer.cmx :parsing:location.cmx ¶ + :parsing:parser.cmx :parsing:parse.cmi +:parsing:parser.cmoÄ :parsing:asttypes.cmi :utils:clflags.cmo ¶ + :parsing:location.cmi :parsing:longident.cmi :parsing:parsetree.cmi ¶ + :parsing:pstream.cmi :parsing:parser.cmi +:parsing:parser.cmxÄ :parsing:asttypes.cmi :utils:clflags.cmx ¶ + :parsing:location.cmx :parsing:longident.cmx :parsing:parsetree.cmi ¶ + :parsing:pstream.cmx :parsing:parser.cmi +:parsing:pstream.cmoÄ :parsing:asttypes.cmi :parsing:location.cmi ¶ + :parsing:longident.cmi :parsing:parsetree.cmi :parsing:pstream.cmi +:parsing:pstream.cmxÄ :parsing:asttypes.cmi :parsing:location.cmx ¶ + :parsing:longident.cmx :parsing:parsetree.cmi :parsing:pstream.cmi +:typing:ctype.cmiÄ :parsing:asttypes.cmi :typing:env.cmi :typing:ident.cmi ¶ + :typing:path.cmi :typing:types.cmi +:typing:datarepr.cmiÄ :parsing:asttypes.cmi :typing:path.cmi ¶ + :typing:types.cmi +:typing:env.cmiÄ :typing:ident.cmi :parsing:longident.cmi :typing:path.cmi ¶ + :typing:types.cmi +:typing:includecore.cmiÄ :typing:env.cmi :typing:ident.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi +:typing:includemod.cmiÄ :typing:env.cmi :typing:ident.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi +:typing:mtype.cmiÄ :typing:env.cmi :typing:ident.cmi :typing:path.cmi ¶ + :typing:types.cmi +:typing:parmatch.cmiÄ :parsing:location.cmi :typing:typedtree.cmi +:typing:path.cmiÄ :typing:ident.cmi +:typing:predef.cmiÄ :typing:ident.cmi :typing:path.cmi :typing:types.cmi +:typing:printtyp.cmiÄ :typing:ident.cmi :parsing:longident.cmi ¶ + :typing:path.cmi :typing:types.cmi +:typing:subst.cmiÄ :typing:ident.cmi :typing:path.cmi :typing:types.cmi +:typing:typeclass.cmiÄ :parsing:asttypes.cmi :typing:ctype.cmi ¶ + :typing:env.cmi :typing:ident.cmi :parsing:location.cmi ¶ + :parsing:longident.cmi :parsing:parsetree.cmi :typing:path.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi +:typing:typecore.cmiÄ :parsing:asttypes.cmi :typing:env.cmi ¶ + :parsing:location.cmi :parsing:longident.cmi :parsing:parsetree.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi +:typing:typedecl.cmiÄ :typing:env.cmi :typing:ident.cmi :parsing:location.cmi ¶ + :parsing:parsetree.cmi :typing:types.cmi +:typing:typedtree.cmiÄ :parsing:asttypes.cmi :typing:env.cmi ¶ + :typing:ident.cmi :parsing:location.cmi :typing:path.cmi ¶ + :typing:primitive.cmi :typing:types.cmi +:typing:typemod.cmiÄ :typing:env.cmi :typing:ident.cmi :typing:includemod.cmi ¶ + :parsing:location.cmi :parsing:longident.cmi :parsing:parsetree.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi +:typing:types.cmiÄ :parsing:asttypes.cmi :typing:ident.cmi :typing:path.cmi ¶ + :typing:primitive.cmi +:typing:typetexp.cmiÄ :typing:env.cmi :parsing:location.cmi ¶ + :parsing:longident.cmi :parsing:parsetree.cmi :typing:types.cmi +:typing:ctype.cmoÄ :parsing:asttypes.cmi :typing:env.cmi :utils:misc.cmi ¶ + :typing:path.cmi :typing:types.cmi :typing:ctype.cmi +:typing:ctype.cmxÄ :parsing:asttypes.cmi :typing:env.cmx :utils:misc.cmx ¶ + :typing:path.cmx :typing:types.cmx :typing:ctype.cmi +:typing:datarepr.cmoÄ :parsing:asttypes.cmi :utils:misc.cmi :typing:path.cmi ¶ + :typing:predef.cmi :typing:types.cmi :typing:datarepr.cmi +:typing:datarepr.cmxÄ :parsing:asttypes.cmi :utils:misc.cmx :typing:path.cmx ¶ + :typing:predef.cmx :typing:types.cmx :typing:datarepr.cmi +:typing:env.cmoÄ :parsing:asttypes.cmi :utils:config.cmi :typing:datarepr.cmi ¶ + :typing:ident.cmi :parsing:longident.cmi :utils:misc.cmi :typing:path.cmi ¶ + :typing:predef.cmi :typing:subst.cmi :utils:tbl.cmi :typing:types.cmi ¶ + :typing:env.cmi +:typing:env.cmxÄ :parsing:asttypes.cmi :utils:config.cmx :typing:datarepr.cmx ¶ + :typing:ident.cmx :parsing:longident.cmx :utils:misc.cmx :typing:path.cmx ¶ + :typing:predef.cmx :typing:subst.cmx :utils:tbl.cmx :typing:types.cmx ¶ + :typing:env.cmi +:typing:ident.cmoÄ :typing:ident.cmi +:typing:ident.cmxÄ :typing:ident.cmi +:typing:includecore.cmoÄ :parsing:asttypes.cmi :typing:ctype.cmi ¶ + :utils:misc.cmi :typing:path.cmi :typing:predef.cmi :typing:typedtree.cmi ¶ + :typing:types.cmi :typing:includecore.cmi +:typing:includecore.cmxÄ :parsing:asttypes.cmi :typing:ctype.cmx ¶ + :utils:misc.cmx :typing:path.cmx :typing:predef.cmx :typing:typedtree.cmx ¶ + :typing:types.cmx :typing:includecore.cmi +:typing:includemod.cmoÄ :typing:env.cmi :typing:ident.cmi ¶ + :typing:includecore.cmi :utils:misc.cmi :typing:path.cmi ¶ + :typing:printtyp.cmi :utils:tbl.cmi :typing:typedtree.cmi ¶ + :typing:types.cmi :typing:includemod.cmi +:typing:includemod.cmxÄ :typing:env.cmx :typing:ident.cmx ¶ + :typing:includecore.cmx :utils:misc.cmx :typing:path.cmx ¶ + :typing:printtyp.cmx :utils:tbl.cmx :typing:typedtree.cmx ¶ + :typing:types.cmx :typing:includemod.cmi +:typing:mtype.cmoÄ :typing:ctype.cmi :typing:env.cmi :typing:ident.cmi ¶ + :typing:path.cmi :typing:types.cmi :typing:mtype.cmi +:typing:mtype.cmxÄ :typing:ctype.cmx :typing:env.cmx :typing:ident.cmx ¶ + :typing:path.cmx :typing:types.cmx :typing:mtype.cmi +:typing:parmatch.cmoÄ :parsing:asttypes.cmi :typing:ctype.cmi ¶ + :parsing:location.cmi :utils:misc.cmi :typing:typedtree.cmi ¶ + :typing:types.cmi :typing:parmatch.cmi +:typing:parmatch.cmxÄ :parsing:asttypes.cmi :typing:ctype.cmx ¶ + :parsing:location.cmx :utils:misc.cmx :typing:typedtree.cmx ¶ + :typing:types.cmx :typing:parmatch.cmi +:typing:path.cmoÄ :typing:ident.cmi :typing:path.cmi +:typing:path.cmxÄ :typing:ident.cmx :typing:path.cmi +:typing:predef.cmoÄ :typing:ident.cmi :typing:path.cmi :typing:types.cmi ¶ + :typing:predef.cmi +:typing:predef.cmxÄ :typing:ident.cmx :typing:path.cmx :typing:types.cmx ¶ + :typing:predef.cmi +:typing:primitive.cmoÄ :typing:primitive.cmi +:typing:primitive.cmxÄ :typing:primitive.cmi +:typing:printtyp.cmoÄ :parsing:asttypes.cmi :typing:ctype.cmi ¶ + :typing:ident.cmi :parsing:longident.cmi :utils:misc.cmi :typing:path.cmi ¶ + :typing:primitive.cmi :typing:types.cmi :typing:printtyp.cmi +:typing:printtyp.cmxÄ :parsing:asttypes.cmi :typing:ctype.cmx ¶ + :typing:ident.cmx :parsing:longident.cmx :utils:misc.cmx :typing:path.cmx ¶ + :typing:primitive.cmx :typing:types.cmx :typing:printtyp.cmi +:typing:subst.cmoÄ :typing:ident.cmi :utils:misc.cmi :typing:path.cmi ¶ + :utils:tbl.cmi :typing:types.cmi :typing:subst.cmi +:typing:subst.cmxÄ :typing:ident.cmx :utils:misc.cmx :typing:path.cmx ¶ + :utils:tbl.cmx :typing:types.cmx :typing:subst.cmi +:typing:typeclass.cmoÄ :parsing:asttypes.cmi :typing:ctype.cmi ¶ + :typing:env.cmi :typing:ident.cmi :parsing:location.cmi ¶ + :parsing:longident.cmi :utils:misc.cmi :parsing:parsetree.cmi ¶ + :typing:path.cmi :typing:printtyp.cmi :typing:typecore.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi :typing:typetexp.cmi ¶ + :typing:typeclass.cmi +:typing:typeclass.cmxÄ :parsing:asttypes.cmi :typing:ctype.cmx ¶ + :typing:env.cmx :typing:ident.cmx :parsing:location.cmx ¶ + :parsing:longident.cmx :utils:misc.cmx :parsing:parsetree.cmi ¶ + :typing:path.cmx :typing:printtyp.cmx :typing:typecore.cmx ¶ + :typing:typedtree.cmx :typing:types.cmx :typing:typetexp.cmx ¶ + :typing:typeclass.cmi +:typing:typecore.cmoÄ :parsing:asttypes.cmi :typing:ctype.cmi :typing:env.cmi ¶ + :typing:ident.cmi :parsing:location.cmi :parsing:longident.cmi ¶ + :utils:misc.cmi :typing:parmatch.cmi :parsing:parsetree.cmi ¶ + :typing:path.cmi :typing:predef.cmi :typing:printtyp.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi :typing:typetexp.cmi ¶ + :typing:typecore.cmi +:typing:typecore.cmxÄ :parsing:asttypes.cmi :typing:ctype.cmx :typing:env.cmx ¶ + :typing:ident.cmx :parsing:location.cmx :parsing:longident.cmx ¶ + :utils:misc.cmx :typing:parmatch.cmx :parsing:parsetree.cmi ¶ + :typing:path.cmx :typing:predef.cmx :typing:printtyp.cmx ¶ + :typing:typedtree.cmx :typing:types.cmx :typing:typetexp.cmx ¶ + :typing:typecore.cmi +:typing:typedecl.cmoÄ :utils:config.cmi :typing:ctype.cmi :typing:env.cmi ¶ + :typing:ident.cmi :typing:includecore.cmi :parsing:location.cmi ¶ + :parsing:parsetree.cmi :typing:primitive.cmi :typing:printtyp.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi :typing:typetexp.cmi ¶ + :typing:typedecl.cmi +:typing:typedecl.cmxÄ :utils:config.cmx :typing:ctype.cmx :typing:env.cmx ¶ + :typing:ident.cmx :typing:includecore.cmx :parsing:location.cmx ¶ + :parsing:parsetree.cmi :typing:primitive.cmx :typing:printtyp.cmx ¶ + :typing:typedtree.cmx :typing:types.cmx :typing:typetexp.cmx ¶ + :typing:typedecl.cmi +:typing:typedtree.cmoÄ :parsing:asttypes.cmi :typing:env.cmi ¶ + :typing:ident.cmi :parsing:location.cmi :utils:misc.cmi :typing:path.cmi ¶ + :typing:primitive.cmi :typing:types.cmi :typing:typedtree.cmi +:typing:typedtree.cmxÄ :parsing:asttypes.cmi :typing:env.cmx ¶ + :typing:ident.cmx :parsing:location.cmx :utils:misc.cmx :typing:path.cmx ¶ + :typing:primitive.cmx :typing:types.cmx :typing:typedtree.cmi +:typing:typemod.cmoÄ :typing:ctype.cmi :typing:env.cmi :typing:ident.cmi ¶ + :typing:includemod.cmi :parsing:location.cmi :parsing:longident.cmi ¶ + :utils:misc.cmi :typing:mtype.cmi :parsing:parsetree.cmi :typing:path.cmi ¶ + :typing:printtyp.cmi :typing:subst.cmi :typing:typeclass.cmi ¶ + :typing:typecore.cmi :typing:typedecl.cmi :typing:typedtree.cmi ¶ + :typing:types.cmi :typing:typemod.cmi +:typing:typemod.cmxÄ :typing:ctype.cmx :typing:env.cmx :typing:ident.cmx ¶ + :typing:includemod.cmx :parsing:location.cmx :parsing:longident.cmx ¶ + :utils:misc.cmx :typing:mtype.cmx :parsing:parsetree.cmi :typing:path.cmx ¶ + :typing:printtyp.cmx :typing:subst.cmx :typing:typeclass.cmx ¶ + :typing:typecore.cmx :typing:typedecl.cmx :typing:typedtree.cmx ¶ + :typing:types.cmx :typing:typemod.cmi +:typing:types.cmoÄ :parsing:asttypes.cmi :typing:ident.cmi :utils:misc.cmi ¶ + :typing:path.cmi :typing:primitive.cmi :typing:types.cmi +:typing:types.cmxÄ :parsing:asttypes.cmi :typing:ident.cmx :utils:misc.cmx ¶ + :typing:path.cmx :typing:primitive.cmx :typing:types.cmi +:typing:typetexp.cmoÄ :typing:ctype.cmi :typing:env.cmi :parsing:location.cmi ¶ + :parsing:longident.cmi :utils:misc.cmi :parsing:parsetree.cmi ¶ + :typing:printtyp.cmi :utils:tbl.cmi :typing:types.cmi ¶ + :typing:typetexp.cmi +:typing:typetexp.cmxÄ :typing:ctype.cmx :typing:env.cmx :parsing:location.cmx ¶ + :parsing:longident.cmx :utils:misc.cmx :parsing:parsetree.cmi ¶ + :typing:printtyp.cmx :utils:tbl.cmx :typing:types.cmx ¶ + :typing:typetexp.cmi +:bytecomp:bytegen.cmiÄ :bytecomp:instruct.cmi :bytecomp:lambda.cmi +:bytecomp:bytelink.cmiÄ :bytecomp:emitcode.cmi :bytecomp:symtable.cmi +:bytecomp:emitcode.cmiÄ :typing:ident.cmi :bytecomp:instruct.cmi ¶ + :bytecomp:lambda.cmi +:bytecomp:instruct.cmiÄ :typing:ident.cmi :bytecomp:lambda.cmi +:bytecomp:lambda.cmiÄ :parsing:asttypes.cmi :typing:ident.cmi ¶ + :typing:path.cmi :typing:primitive.cmi +:bytecomp:matching.cmiÄ :bytecomp:lambda.cmi :parsing:location.cmi ¶ + :typing:typedtree.cmi +:bytecomp:printinstr.cmiÄ :bytecomp:instruct.cmi +:bytecomp:printlambda.cmiÄ :bytecomp:lambda.cmi +:bytecomp:simplif.cmiÄ :bytecomp:lambda.cmi +:bytecomp:symtable.cmiÄ :bytecomp:emitcode.cmi :typing:ident.cmi +:bytecomp:translclass.cmiÄ :typing:ident.cmi :bytecomp:lambda.cmi ¶ + :typing:typedtree.cmi +:bytecomp:translcore.cmiÄ :parsing:asttypes.cmi :typing:ident.cmi ¶ + :bytecomp:lambda.cmi :parsing:location.cmi :typing:primitive.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi +:bytecomp:translmod.cmiÄ :bytecomp:lambda.cmi :typing:typedtree.cmi +:bytecomp:translobj.cmiÄ :typing:ident.cmi :bytecomp:lambda.cmi +:bytecomp:bytegen.cmoÄ :parsing:asttypes.cmi :typing:ident.cmi ¶ + :bytecomp:instruct.cmi :bytecomp:lambda.cmi :utils:misc.cmi ¶ + :typing:primitive.cmi :typing:types.cmi :bytecomp:bytegen.cmi +:bytecomp:bytegen.cmxÄ :parsing:asttypes.cmi :typing:ident.cmx ¶ + :bytecomp:instruct.cmx :bytecomp:lambda.cmx :utils:misc.cmx ¶ + :typing:primitive.cmx :typing:types.cmx :bytecomp:bytegen.cmi +:bytecomp:bytelibrarian.cmoÄ :utils:clflags.cmo :utils:config.cmi ¶ + :bytecomp:emitcode.cmi :utils:misc.cmi :bytecomp:bytelibrarian.cmi +:bytecomp:bytelibrarian.cmxÄ :utils:clflags.cmx :utils:config.cmx ¶ + :bytecomp:emitcode.cmx :utils:misc.cmx :bytecomp:bytelibrarian.cmi +:bytecomp:bytelink.cmoÄ :utils:clflags.cmo :utils:config.cmi ¶ + :bytecomp:emitcode.cmi :typing:ident.cmi :utils:misc.cmi ¶ + :bytecomp:opcodes.cmo :bytecomp:symtable.cmi :bytecomp:bytelink.cmi +:bytecomp:bytelink.cmxÄ :utils:clflags.cmx :utils:config.cmx ¶ + :bytecomp:emitcode.cmx :typing:ident.cmx :utils:misc.cmx ¶ + :bytecomp:opcodes.cmx :bytecomp:symtable.cmx :bytecomp:bytelink.cmi +:bytecomp:emitcode.cmoÄ :parsing:asttypes.cmi :utils:config.cmi ¶ + :typing:env.cmi :typing:ident.cmi :bytecomp:instruct.cmi ¶ + :bytecomp:lambda.cmi :bytecomp:meta.cmi :utils:misc.cmi ¶ + :bytecomp:opcodes.cmo :bytecomp:translmod.cmi :bytecomp:emitcode.cmi +:bytecomp:emitcode.cmxÄ :parsing:asttypes.cmi :utils:config.cmx ¶ + :typing:env.cmx :typing:ident.cmx :bytecomp:instruct.cmx ¶ + :bytecomp:lambda.cmx :bytecomp:meta.cmx :utils:misc.cmx ¶ + :bytecomp:opcodes.cmx :bytecomp:translmod.cmx :bytecomp:emitcode.cmi +:bytecomp:instruct.cmoÄ :typing:ident.cmi :bytecomp:lambda.cmi ¶ + :bytecomp:instruct.cmi +:bytecomp:instruct.cmxÄ :typing:ident.cmx :bytecomp:lambda.cmx ¶ + :bytecomp:instruct.cmi +:bytecomp:lambda.cmoÄ :parsing:asttypes.cmi :typing:ident.cmi :utils:misc.cmi ¶ + :typing:path.cmi :typing:primitive.cmi :bytecomp:lambda.cmi +:bytecomp:lambda.cmxÄ :parsing:asttypes.cmi :typing:ident.cmx :utils:misc.cmx ¶ + :typing:path.cmx :typing:primitive.cmx :bytecomp:lambda.cmi +:bytecomp:matching.cmoÄ :parsing:asttypes.cmi :typing:ctype.cmi ¶ + :typing:ident.cmi :bytecomp:lambda.cmi :parsing:location.cmi ¶ + :utils:misc.cmi :typing:predef.cmi :typing:primitive.cmi ¶ + :typing:typedtree.cmi :typing:types.cmi :bytecomp:matching.cmi +:bytecomp:matching.cmxÄ :parsing:asttypes.cmi :typing:ctype.cmx ¶ + :typing:ident.cmx :bytecomp:lambda.cmx :parsing:location.cmx ¶ + :utils:misc.cmx :typing:predef.cmx :typing:primitive.cmx ¶ + :typing:typedtree.cmx :typing:types.cmx :bytecomp:matching.cmi +:bytecomp:meta.cmoÄ :bytecomp:meta.cmi +:bytecomp:meta.cmxÄ :bytecomp:meta.cmi +:bytecomp:printinstr.cmoÄ :typing:ident.cmi :bytecomp:instruct.cmi ¶ + :bytecomp:lambda.cmi :bytecomp:printlambda.cmi :bytecomp:printinstr.cmi +:bytecomp:printinstr.cmxÄ :typing:ident.cmx :bytecomp:instruct.cmx ¶ + :bytecomp:lambda.cmx :bytecomp:printlambda.cmx :bytecomp:printinstr.cmi +:bytecomp:printlambda.cmoÄ :parsing:asttypes.cmi :typing:ident.cmi ¶ + :bytecomp:lambda.cmi :typing:primitive.cmi :typing:types.cmi ¶ + :bytecomp:printlambda.cmi +:bytecomp:printlambda.cmxÄ :parsing:asttypes.cmi :typing:ident.cmx ¶ + :bytecomp:lambda.cmx :typing:primitive.cmx :typing:types.cmx ¶ + :bytecomp:printlambda.cmi +:bytecomp:runtimedef.cmoÄ :bytecomp:runtimedef.cmi +:bytecomp:runtimedef.cmxÄ :bytecomp:runtimedef.cmi +:bytecomp:simplif.cmoÄ :parsing:asttypes.cmi :typing:ident.cmi ¶ + :bytecomp:lambda.cmi :bytecomp:simplif.cmi +:bytecomp:simplif.cmxÄ :parsing:asttypes.cmi :typing:ident.cmx ¶ + :bytecomp:lambda.cmx :bytecomp:simplif.cmi +:bytecomp:symtable.cmoÄ :parsing:asttypes.cmi :utils:clflags.cmo ¶ + :utils:config.cmi :bytecomp:emitcode.cmi :typing:ident.cmi ¶ + :bytecomp:lambda.cmi :bytecomp:meta.cmi :utils:misc.cmi ¶ + :typing:predef.cmi :bytecomp:runtimedef.cmi :utils:tbl.cmi ¶ + :bytecomp:symtable.cmi +:bytecomp:symtable.cmxÄ :parsing:asttypes.cmi :utils:clflags.cmx ¶ + :utils:config.cmx :bytecomp:emitcode.cmx :typing:ident.cmx ¶ + :bytecomp:lambda.cmx :bytecomp:meta.cmx :utils:misc.cmx ¶ + :typing:predef.cmx :bytecomp:runtimedef.cmx :utils:tbl.cmx ¶ + :bytecomp:symtable.cmi +:bytecomp:translclass.cmoÄ :parsing:asttypes.cmi :typing:ident.cmi ¶ + :bytecomp:lambda.cmi :bytecomp:matching.cmi :utils:misc.cmi ¶ + :bytecomp:translcore.cmi :bytecomp:translobj.cmi :typing:typedtree.cmi ¶ + :typing:types.cmi :bytecomp:translclass.cmi +:bytecomp:translclass.cmxÄ :parsing:asttypes.cmi :typing:ident.cmx ¶ + :bytecomp:lambda.cmx :bytecomp:matching.cmx :utils:misc.cmx ¶ + :bytecomp:translcore.cmx :bytecomp:translobj.cmx :typing:typedtree.cmx ¶ + :typing:types.cmx :bytecomp:translclass.cmi +:bytecomp:translcore.cmoÄ :parsing:asttypes.cmi :utils:config.cmi ¶ + :typing:ctype.cmi :typing:env.cmi :typing:ident.cmi :bytecomp:lambda.cmi ¶ + :parsing:location.cmi :bytecomp:matching.cmi :utils:misc.cmi ¶ + :typing:path.cmi :typing:predef.cmi :typing:primitive.cmi ¶ + :bytecomp:translobj.cmi :typing:typedtree.cmi :typing:types.cmi ¶ + :bytecomp:translcore.cmi +:bytecomp:translcore.cmxÄ :parsing:asttypes.cmi :utils:config.cmx ¶ + :typing:ctype.cmx :typing:env.cmx :typing:ident.cmx :bytecomp:lambda.cmx ¶ + :parsing:location.cmx :bytecomp:matching.cmx :utils:misc.cmx ¶ + :typing:path.cmx :typing:predef.cmx :typing:primitive.cmx ¶ + :bytecomp:translobj.cmx :typing:typedtree.cmx :typing:types.cmx ¶ + :bytecomp:translcore.cmi +:bytecomp:translmod.cmoÄ :parsing:asttypes.cmi :typing:ident.cmi ¶ + :bytecomp:lambda.cmi :utils:misc.cmi :typing:primitive.cmi ¶ + :bytecomp:translclass.cmi :bytecomp:translcore.cmi ¶ + :bytecomp:translobj.cmi :typing:typedtree.cmi :typing:types.cmi ¶ + :bytecomp:translmod.cmi +:bytecomp:translmod.cmxÄ :parsing:asttypes.cmi :typing:ident.cmx ¶ + :bytecomp:lambda.cmx :utils:misc.cmx :typing:primitive.cmx ¶ + :bytecomp:translclass.cmx :bytecomp:translcore.cmx ¶ + :bytecomp:translobj.cmx :typing:typedtree.cmx :typing:types.cmx ¶ + :bytecomp:translmod.cmi +:bytecomp:translobj.cmoÄ :parsing:asttypes.cmi :typing:env.cmi ¶ + :typing:ident.cmi :bytecomp:lambda.cmi :parsing:longident.cmi ¶ + :utils:misc.cmi :bytecomp:translobj.cmi +:bytecomp:translobj.cmxÄ :parsing:asttypes.cmi :typing:env.cmx ¶ + :typing:ident.cmx :bytecomp:lambda.cmx :parsing:longident.cmx ¶ + :utils:misc.cmx :bytecomp:translobj.cmi +:asmcomp:asmgen.cmiÄ :asmcomp:cmm.cmi :bytecomp:lambda.cmi +:asmcomp:clambda.cmiÄ :parsing:asttypes.cmi :typing:ident.cmi ¶ + :bytecomp:lambda.cmi +:asmcomp:closure.cmiÄ :asmcomp:clambda.cmi :bytecomp:lambda.cmi +:asmcomp:cmm.cmiÄ :typing:ident.cmi +:asmcomp:cmmgen.cmiÄ :asmcomp:clambda.cmi :asmcomp:cmm.cmi +:asmcomp:codegen.cmiÄ :asmcomp:cmm.cmi +:asmcomp:compilenv.cmiÄ :asmcomp:clambda.cmi :typing:ident.cmi +:asmcomp:emit.cmiÄ :asmcomp:cmm.cmi :asmcomp:linearize.cmi +:asmcomp:interf.cmiÄ :asmcomp:mach.cmi +:asmcomp:linearize.cmiÄ :asmcomp:mach.cmi :asmcomp:reg.cmi +:asmcomp:liveness.cmiÄ :asmcomp:mach.cmi +:asmcomp:mach.cmiÄ :asmcomp:cmm.cmi :asmcomp:reg.cmi +:asmcomp:printcmm.cmiÄ :asmcomp:cmm.cmi +:asmcomp:printlinear.cmiÄ :asmcomp:linearize.cmi +:asmcomp:printmach.cmiÄ :asmcomp:mach.cmi :asmcomp:reg.cmi +:asmcomp:proc.cmiÄ :asmcomp:cmm.cmi :asmcomp:mach.cmi :asmcomp:reg.cmi +:asmcomp:reg.cmiÄ :asmcomp:cmm.cmi +:asmcomp:reload.cmiÄ :asmcomp:mach.cmi :asmcomp:reg.cmi +:asmcomp:scheduling.cmiÄ :asmcomp:linearize.cmi +:asmcomp:selection.cmiÄ :asmcomp:cmm.cmi :asmcomp:mach.cmi +:asmcomp:spill.cmiÄ :asmcomp:mach.cmi +:asmcomp:split.cmiÄ :asmcomp:mach.cmi +:asmcomp:arch_mips.cmoÄ :utils:misc.cmi +:asmcomp:arch_mips.cmxÄ :utils:misc.cmx +:asmcomp:arch_power.cmoÄ :utils:misc.cmi +:asmcomp:arch_power.cmxÄ :utils:misc.cmx +:asmcomp:arch_sparc.cmoÄ :utils:misc.cmi +:asmcomp:arch_sparc.cmxÄ :utils:misc.cmx +:asmcomp:asmgen.cmoÄ :utils:clflags.cmo :asmcomp:closure.cmi :asmcomp:cmm.cmi ¶ + :asmcomp:cmmgen.cmi :asmcomp:coloring.cmi :utils:config.cmi ¶ + :asmcomp:emit.cmi :asmcomp:emitaux.cmi :asmcomp:interf.cmi ¶ + :asmcomp:linearize.cmi :asmcomp:liveness.cmi :asmcomp:mach.cmi ¶ + :utils:misc.cmi :asmcomp:printcmm.cmi :asmcomp:printlinear.cmi ¶ + :asmcomp:printmach.cmi :asmcomp:proc.cmi :asmcomp:reg.cmi ¶ + :asmcomp:reload.cmi :asmcomp:scheduling.cmi :asmcomp:selection.cmi ¶ + :asmcomp:spill.cmi :asmcomp:split.cmi :asmcomp:asmgen.cmi +:asmcomp:asmgen.cmxÄ :utils:clflags.cmx :asmcomp:closure.cmx :asmcomp:cmm.cmx ¶ + :asmcomp:cmmgen.cmx :asmcomp:coloring.cmx :utils:config.cmx ¶ + :asmcomp:emit.cmi :asmcomp:emitaux.cmx :asmcomp:interf.cmx ¶ + :asmcomp:linearize.cmx :asmcomp:liveness.cmx :asmcomp:mach.cmx ¶ + :utils:misc.cmx :asmcomp:printcmm.cmx :asmcomp:printlinear.cmx ¶ + :asmcomp:printmach.cmx :asmcomp:proc.cmi :asmcomp:reg.cmx ¶ + :asmcomp:reload.cmx :asmcomp:scheduling.cmx :asmcomp:selection.cmx ¶ + :asmcomp:spill.cmx :asmcomp:split.cmx :asmcomp:asmgen.cmi +:asmcomp:asmlibrarian.cmoÄ :asmcomp:clambda.cmi :utils:clflags.cmo ¶ + :asmcomp:compilenv.cmi :utils:config.cmi :utils:misc.cmi ¶ + :asmcomp:proc.cmi :asmcomp:asmlibrarian.cmi +:asmcomp:asmlibrarian.cmxÄ :asmcomp:clambda.cmx :utils:clflags.cmx ¶ + :asmcomp:compilenv.cmx :utils:config.cmx :utils:misc.cmx ¶ + :asmcomp:proc.cmi :asmcomp:asmlibrarian.cmi +:asmcomp:asmlink.cmoÄ :asmcomp:asmgen.cmi :utils:clflags.cmo ¶ + :asmcomp:cmmgen.cmi :asmcomp:compilenv.cmi :utils:config.cmi ¶ + :asmcomp:emit.cmi :asmcomp:emitaux.cmi :parsing:location.cmi ¶ + :utils:misc.cmi :asmcomp:proc.cmi :bytecomp:runtimedef.cmi ¶ + :asmcomp:asmlink.cmi +:asmcomp:asmlink.cmxÄ :asmcomp:asmgen.cmx :utils:clflags.cmx ¶ + :asmcomp:cmmgen.cmx :asmcomp:compilenv.cmx :utils:config.cmx ¶ + :asmcomp:emit.cmi :asmcomp:emitaux.cmx :parsing:location.cmx ¶ + :utils:misc.cmx :asmcomp:proc.cmi :bytecomp:runtimedef.cmx ¶ + :asmcomp:asmlink.cmi +:asmcomp:clambda.cmoÄ :parsing:asttypes.cmi :typing:ident.cmi ¶ + :bytecomp:lambda.cmi :asmcomp:clambda.cmi +:asmcomp:clambda.cmxÄ :parsing:asttypes.cmi :typing:ident.cmx ¶ + :bytecomp:lambda.cmx :asmcomp:clambda.cmi +:asmcomp:closure.cmoÄ :parsing:asttypes.cmi :asmcomp:clambda.cmi ¶ + :asmcomp:compilenv.cmi :typing:ident.cmi :bytecomp:lambda.cmi ¶ + :utils:misc.cmi :utils:tbl.cmi :asmcomp:closure.cmi +:asmcomp:closure.cmxÄ :parsing:asttypes.cmi :asmcomp:clambda.cmx ¶ + :asmcomp:compilenv.cmx :typing:ident.cmx :bytecomp:lambda.cmx ¶ + :utils:misc.cmx :utils:tbl.cmx :asmcomp:closure.cmi +:asmcomp:cmm.cmoÄ :typing:ident.cmi :asmcomp:cmm.cmi +:asmcomp:cmm.cmxÄ :typing:ident.cmx :asmcomp:cmm.cmi +:asmcomp:cmmgen.cmoÄ :parsing:asttypes.cmi :asmcomp:clambda.cmi ¶ + :utils:clflags.cmo :asmcomp:cmm.cmi :asmcomp:compilenv.cmi ¶ + :typing:ident.cmi :bytecomp:lambda.cmi :utils:misc.cmi ¶ + :typing:primitive.cmi :asmcomp:proc.cmi :typing:types.cmi ¶ + :asmcomp:cmmgen.cmi +:asmcomp:cmmgen.cmxÄ :parsing:asttypes.cmi :asmcomp:clambda.cmx ¶ + :utils:clflags.cmx :asmcomp:cmm.cmx :asmcomp:compilenv.cmx ¶ + :typing:ident.cmx :bytecomp:lambda.cmx :utils:misc.cmx ¶ + :typing:primitive.cmx :asmcomp:proc.cmi :typing:types.cmx ¶ + :asmcomp:cmmgen.cmi +:asmcomp:codegen.cmoÄ :asmcomp:cmm.cmi :asmcomp:coloring.cmi ¶ + :asmcomp:emit.cmi :asmcomp:interf.cmi :asmcomp:linearize.cmi ¶ + :asmcomp:liveness.cmi :asmcomp:printcmm.cmi :asmcomp:printlinear.cmi ¶ + :asmcomp:printmach.cmi :asmcomp:reg.cmi :asmcomp:reload.cmi ¶ + :asmcomp:spill.cmi :asmcomp:split.cmi :asmcomp:codegen.cmi +:asmcomp:codegen.cmxÄ :asmcomp:cmm.cmx :asmcomp:coloring.cmx ¶ + :asmcomp:emit.cmi :asmcomp:interf.cmx :asmcomp:linearize.cmx ¶ + :asmcomp:liveness.cmx :asmcomp:printcmm.cmx :asmcomp:printlinear.cmx ¶ + :asmcomp:printmach.cmx :asmcomp:reg.cmx :asmcomp:reload.cmx ¶ + :asmcomp:spill.cmx :asmcomp:split.cmx :asmcomp:codegen.cmi +:asmcomp:coloring.cmoÄ :asmcomp:proc.cmi :asmcomp:reg.cmi ¶ + :asmcomp:coloring.cmi +:asmcomp:coloring.cmxÄ :asmcomp:proc.cmi :asmcomp:reg.cmx ¶ + :asmcomp:coloring.cmi +:asmcomp:compilenv.cmoÄ :asmcomp:clambda.cmi :utils:config.cmi ¶ + :typing:env.cmi :typing:ident.cmi :utils:misc.cmi :asmcomp:compilenv.cmi +:asmcomp:compilenv.cmxÄ :asmcomp:clambda.cmx :utils:config.cmx ¶ + :typing:env.cmx :typing:ident.cmx :utils:misc.cmx :asmcomp:compilenv.cmi +:asmcomp:emitaux.cmoÄ :asmcomp:emitaux.cmi +:asmcomp:emitaux.cmxÄ :asmcomp:emitaux.cmi +:asmcomp:interf.cmoÄ :asmcomp:mach.cmi :asmcomp:proc.cmi :asmcomp:reg.cmi ¶ + :asmcomp:interf.cmi +:asmcomp:interf.cmxÄ :asmcomp:mach.cmx :asmcomp:proc.cmi :asmcomp:reg.cmx ¶ + :asmcomp:interf.cmi +:asmcomp:linearize.cmoÄ :asmcomp:cmm.cmi :asmcomp:mach.cmi :asmcomp:proc.cmi ¶ + :asmcomp:reg.cmi :asmcomp:linearize.cmi +:asmcomp:linearize.cmxÄ :asmcomp:cmm.cmx :asmcomp:mach.cmx :asmcomp:proc.cmi ¶ + :asmcomp:reg.cmx :asmcomp:linearize.cmi +:asmcomp:liveness.cmoÄ :asmcomp:mach.cmi :utils:misc.cmi ¶ + :asmcomp:printmach.cmi :asmcomp:proc.cmi :asmcomp:reg.cmi ¶ + :asmcomp:liveness.cmi +:asmcomp:liveness.cmxÄ :asmcomp:mach.cmx :utils:misc.cmx ¶ + :asmcomp:printmach.cmx :asmcomp:proc.cmi :asmcomp:reg.cmx ¶ + :asmcomp:liveness.cmi +:asmcomp:mach.cmoÄ :asmcomp:cmm.cmi :asmcomp:reg.cmi :asmcomp:mach.cmi +:asmcomp:mach.cmxÄ :asmcomp:cmm.cmx :asmcomp:reg.cmx :asmcomp:mach.cmi +:asmcomp:printcmm.cmoÄ :asmcomp:cmm.cmi :typing:ident.cmi ¶ + :asmcomp:printcmm.cmi +:asmcomp:printcmm.cmxÄ :asmcomp:cmm.cmx :typing:ident.cmx ¶ + :asmcomp:printcmm.cmi +:asmcomp:printlinear.cmoÄ :asmcomp:linearize.cmi :asmcomp:mach.cmi ¶ + :asmcomp:printmach.cmi :asmcomp:printlinear.cmi +:asmcomp:printlinear.cmxÄ :asmcomp:linearize.cmx :asmcomp:mach.cmx ¶ + :asmcomp:printmach.cmx :asmcomp:printlinear.cmi +:asmcomp:printmach.cmoÄ :asmcomp:cmm.cmi :asmcomp:mach.cmi ¶ + :asmcomp:printcmm.cmi :asmcomp:proc.cmi :asmcomp:reg.cmi ¶ + :asmcomp:printmach.cmi +:asmcomp:printmach.cmxÄ :asmcomp:cmm.cmx :asmcomp:mach.cmx ¶ + :asmcomp:printcmm.cmx :asmcomp:proc.cmi :asmcomp:reg.cmx ¶ + :asmcomp:printmach.cmi +:asmcomp:proc_alpha.cmoÄ :asmcomp:cmm.cmi :asmcomp:mach.cmi :utils:misc.cmi ¶ + :asmcomp:reg.cmi +:asmcomp:proc_alpha.cmxÄ :asmcomp:cmm.cmx :asmcomp:mach.cmx :utils:misc.cmx ¶ + :asmcomp:reg.cmx +:asmcomp:proc_hppa.cmoÄ :asmcomp:cmm.cmi :utils:config.cmi :asmcomp:mach.cmi ¶ + :utils:misc.cmi :asmcomp:reg.cmi +:asmcomp:proc_hppa.cmxÄ :asmcomp:cmm.cmx :utils:config.cmx :asmcomp:mach.cmx ¶ + :utils:misc.cmx :asmcomp:reg.cmx +:asmcomp:proc_i386.cmoÄ :asmcomp:cmm.cmi :asmcomp:mach.cmi :utils:misc.cmi ¶ + :asmcomp:reg.cmi +:asmcomp:proc_i386.cmxÄ :asmcomp:cmm.cmx :asmcomp:mach.cmx :utils:misc.cmx ¶ + :asmcomp:reg.cmx +:asmcomp:proc_i386nt.cmoÄ :asmcomp:cmm.cmi :asmcomp:mach.cmi :utils:misc.cmi ¶ + :asmcomp:reg.cmi +:asmcomp:proc_i386nt.cmxÄ :asmcomp:cmm.cmx :asmcomp:mach.cmx :utils:misc.cmx ¶ + :asmcomp:reg.cmx +:asmcomp:proc_mips.cmoÄ :asmcomp:cmm.cmi :asmcomp:mach.cmi :utils:misc.cmi ¶ + :asmcomp:reg.cmi +:asmcomp:proc_mips.cmxÄ :asmcomp:cmm.cmx :asmcomp:mach.cmx :utils:misc.cmx ¶ + :asmcomp:reg.cmx +:asmcomp:proc_power.cmoÄ :asmcomp:cmm.cmi :utils:config.cmi :asmcomp:mach.cmi ¶ + :utils:misc.cmi :asmcomp:reg.cmi +:asmcomp:proc_power.cmxÄ :asmcomp:cmm.cmx :utils:config.cmx :asmcomp:mach.cmx ¶ + :utils:misc.cmx :asmcomp:reg.cmx +:asmcomp:proc_sparc.cmoÄ :asmcomp:cmm.cmi :utils:config.cmi :asmcomp:mach.cmi ¶ + :utils:misc.cmi :asmcomp:reg.cmi +:asmcomp:proc_sparc.cmxÄ :asmcomp:cmm.cmx :utils:config.cmx :asmcomp:mach.cmx ¶ + :utils:misc.cmx :asmcomp:reg.cmx +:asmcomp:reg.cmoÄ :asmcomp:cmm.cmi :asmcomp:reg.cmi +:asmcomp:reg.cmxÄ :asmcomp:cmm.cmx :asmcomp:reg.cmi +:asmcomp:reload.cmoÄ :asmcomp:mach.cmi :utils:misc.cmi :asmcomp:proc.cmi ¶ + :asmcomp:reg.cmi :asmcomp:reload.cmi +:asmcomp:reload.cmxÄ :asmcomp:mach.cmx :utils:misc.cmx :asmcomp:proc.cmi ¶ + :asmcomp:reg.cmx :asmcomp:reload.cmi +:asmcomp:scheduling.cmoÄ :asmcomp:cmm.cmi :asmcomp:linearize.cmi ¶ + :asmcomp:mach.cmi :utils:misc.cmi :asmcomp:proc.cmi :asmcomp:reg.cmi ¶ + :asmcomp:scheduling.cmi +:asmcomp:scheduling.cmxÄ :asmcomp:cmm.cmx :asmcomp:linearize.cmx ¶ + :asmcomp:mach.cmx :utils:misc.cmx :asmcomp:proc.cmi :asmcomp:reg.cmx ¶ + :asmcomp:scheduling.cmi +:asmcomp:selection.cmoÄ :asmcomp:cmm.cmi :typing:ident.cmi :asmcomp:mach.cmi ¶ + :utils:misc.cmi :asmcomp:proc.cmi :asmcomp:reg.cmi :utils:tbl.cmi ¶ + :asmcomp:selection.cmi +:asmcomp:selection.cmxÄ :asmcomp:cmm.cmx :typing:ident.cmx :asmcomp:mach.cmx ¶ + :utils:misc.cmx :asmcomp:proc.cmi :asmcomp:reg.cmx :utils:tbl.cmx ¶ + :asmcomp:selection.cmi +:asmcomp:spill.cmoÄ :asmcomp:mach.cmi :asmcomp:proc.cmi :asmcomp:reg.cmi ¶ + :asmcomp:spill.cmi +:asmcomp:spill.cmxÄ :asmcomp:mach.cmx :asmcomp:proc.cmi :asmcomp:reg.cmx ¶ + :asmcomp:spill.cmi +:asmcomp:split.cmoÄ :asmcomp:mach.cmi :asmcomp:reg.cmi :asmcomp:split.cmi +:asmcomp:split.cmxÄ :asmcomp:mach.cmx :asmcomp:reg.cmx :asmcomp:split.cmi +:driver:compile.cmiÄ :typing:env.cmi +:driver:optcompile.cmiÄ :typing:env.cmi +:driver:compile.cmoÄ :bytecomp:bytegen.cmi :utils:clflags.cmo ¶ + :utils:config.cmi :bytecomp:emitcode.cmi :typing:env.cmi ¶ + :typing:includemod.cmi :parsing:location.cmi :utils:misc.cmi ¶ + :parsing:parse.cmi :bytecomp:printinstr.cmi :bytecomp:printlambda.cmi ¶ + :typing:printtyp.cmi :bytecomp:simplif.cmi :bytecomp:translmod.cmi ¶ + :typing:typedtree.cmi :typing:typemod.cmi :driver:compile.cmi +:driver:compile.cmxÄ :bytecomp:bytegen.cmx :utils:clflags.cmx ¶ + :utils:config.cmx :bytecomp:emitcode.cmx :typing:env.cmx ¶ + :typing:includemod.cmx :parsing:location.cmx :utils:misc.cmx ¶ + :parsing:parse.cmx :bytecomp:printinstr.cmx :bytecomp:printlambda.cmx ¶ + :typing:printtyp.cmx :bytecomp:simplif.cmx :bytecomp:translmod.cmx ¶ + :typing:typedtree.cmx :typing:typemod.cmx :driver:compile.cmi +:driver:errors.cmoÄ :bytecomp:bytelibrarian.cmi :bytecomp:bytelink.cmi ¶ + :typing:env.cmi :typing:includemod.cmi :parsing:lexer.cmi ¶ + :parsing:location.cmi :parsing:parse.cmi :bytecomp:symtable.cmi ¶ + :bytecomp:translcore.cmi :typing:typeclass.cmi :typing:typecore.cmi ¶ + :typing:typedecl.cmi :typing:typemod.cmi :typing:typetexp.cmi ¶ + :driver:errors.cmi +:driver:errors.cmxÄ :bytecomp:bytelibrarian.cmx :bytecomp:bytelink.cmx ¶ + :typing:env.cmx :typing:includemod.cmx :parsing:lexer.cmx ¶ + :parsing:location.cmx :parsing:parse.cmx :bytecomp:symtable.cmx ¶ + :bytecomp:translcore.cmx :typing:typeclass.cmx :typing:typecore.cmx ¶ + :typing:typedecl.cmx :typing:typemod.cmx :typing:typetexp.cmx ¶ + :driver:errors.cmi +:driver:main.cmoÄ :bytecomp:bytelibrarian.cmi :bytecomp:bytelink.cmi ¶ + :utils:clflags.cmo :driver:compile.cmi :utils:config.cmi ¶ + :driver:errors.cmi +:driver:main.cmxÄ :bytecomp:bytelibrarian.cmx :bytecomp:bytelink.cmx ¶ + :utils:clflags.cmx :driver:compile.cmx :utils:config.cmx ¶ + :driver:errors.cmx +:driver:optcompile.cmoÄ :asmcomp:asmgen.cmi :utils:clflags.cmo ¶ + :asmcomp:compilenv.cmi :utils:config.cmi :typing:env.cmi ¶ + :typing:includemod.cmi :parsing:location.cmi :utils:misc.cmi ¶ + :parsing:parse.cmi :bytecomp:printlambda.cmi :typing:printtyp.cmi ¶ + :bytecomp:simplif.cmi :bytecomp:translmod.cmi :typing:typedtree.cmi ¶ + :typing:typemod.cmi :driver:optcompile.cmi +:driver:optcompile.cmxÄ :asmcomp:asmgen.cmx :utils:clflags.cmx ¶ + :asmcomp:compilenv.cmx :utils:config.cmx :typing:env.cmx ¶ + :typing:includemod.cmx :parsing:location.cmx :utils:misc.cmx ¶ + :parsing:parse.cmx :bytecomp:printlambda.cmx :typing:printtyp.cmx ¶ + :bytecomp:simplif.cmx :bytecomp:translmod.cmx :typing:typedtree.cmx ¶ + :typing:typemod.cmx :driver:optcompile.cmi +:driver:opterrors.cmoÄ :asmcomp:asmgen.cmi :asmcomp:asmlibrarian.cmi ¶ + :asmcomp:asmlink.cmi :asmcomp:compilenv.cmi :typing:env.cmi ¶ + :typing:includemod.cmi :parsing:lexer.cmi :parsing:location.cmi ¶ + :parsing:parse.cmi :bytecomp:translcore.cmi :typing:typeclass.cmi ¶ + :typing:typecore.cmi :typing:typedecl.cmi :typing:typemod.cmi ¶ + :typing:typetexp.cmi :driver:opterrors.cmi +:driver:opterrors.cmxÄ :asmcomp:asmgen.cmx :asmcomp:asmlibrarian.cmx ¶ + :asmcomp:asmlink.cmx :asmcomp:compilenv.cmx :typing:env.cmx ¶ + :typing:includemod.cmx :parsing:lexer.cmx :parsing:location.cmx ¶ + :parsing:parse.cmx :bytecomp:translcore.cmx :typing:typeclass.cmx ¶ + :typing:typecore.cmx :typing:typedecl.cmx :typing:typemod.cmx ¶ + :typing:typetexp.cmx :driver:opterrors.cmi +:driver:optmain.cmoÄ :asmcomp:asmlibrarian.cmi :asmcomp:asmlink.cmi ¶ + :utils:clflags.cmo :utils:config.cmi :driver:optcompile.cmi ¶ + :driver:opterrors.cmi :asmcomp:printmach.cmi +:driver:optmain.cmxÄ :asmcomp:asmlibrarian.cmx :asmcomp:asmlink.cmx ¶ + :utils:clflags.cmx :utils:config.cmx :driver:optcompile.cmx ¶ + :driver:opterrors.cmx :asmcomp:printmach.cmx +:toplevel:printval.cmiÄ :typing:env.cmi :typing:path.cmi :typing:types.cmi +:toplevel:topdirs.cmiÄ :parsing:location.cmi :parsing:longident.cmi ¶ + :parsing:parsetree.cmi +:toplevel:toploop.cmiÄ :typing:env.cmi :parsing:longident.cmi ¶ + :parsing:parsetree.cmi +:toplevel:trace.cmiÄ :typing:env.cmi :parsing:longident.cmi :typing:path.cmi ¶ + :typing:types.cmi +:toplevel:expunge.cmoÄ :utils:config.cmi :typing:ident.cmi :utils:misc.cmi ¶ + :bytecomp:runtimedef.cmi :bytecomp:symtable.cmi +:toplevel:expunge.cmxÄ :utils:config.cmx :typing:ident.cmx :utils:misc.cmx ¶ + :bytecomp:runtimedef.cmx :bytecomp:symtable.cmx +:toplevel:printval.cmoÄ :typing:ctype.cmi :typing:env.cmi :typing:ident.cmi ¶ + :parsing:longident.cmi :utils:misc.cmi :typing:path.cmi ¶ + :typing:predef.cmi :typing:printtyp.cmi :typing:types.cmi ¶ + :toplevel:printval.cmi +:toplevel:printval.cmxÄ :typing:ctype.cmx :typing:env.cmx :typing:ident.cmx ¶ + :parsing:longident.cmx :utils:misc.cmx :typing:path.cmx ¶ + :typing:predef.cmx :typing:printtyp.cmx :typing:types.cmx ¶ + :toplevel:printval.cmi +:toplevel:topdirs.cmoÄ :bytecomp:bytelink.cmi :utils:config.cmi ¶ + :typing:ctype.cmi :bytecomp:emitcode.cmi :typing:env.cmi ¶ + :driver:errors.cmi :typing:ident.cmi :parsing:location.cmi ¶ + :parsing:longident.cmi :bytecomp:meta.cmi :utils:misc.cmi ¶ + :bytecomp:opcodes.cmo :parsing:parse.cmi :typing:path.cmi ¶ + :typing:predef.cmi :typing:printtyp.cmi :toplevel:printval.cmi ¶ + :bytecomp:symtable.cmi :toplevel:toploop.cmi :toplevel:trace.cmi ¶ + :typing:types.cmi :toplevel:topdirs.cmi +:toplevel:topdirs.cmxÄ :bytecomp:bytelink.cmx :utils:config.cmx ¶ + :typing:ctype.cmx :bytecomp:emitcode.cmx :typing:env.cmx ¶ + :driver:errors.cmx :typing:ident.cmx :parsing:location.cmx ¶ + :parsing:longident.cmx :bytecomp:meta.cmx :utils:misc.cmx ¶ + :bytecomp:opcodes.cmx :parsing:parse.cmx :typing:path.cmx ¶ + :typing:predef.cmx :typing:printtyp.cmx :toplevel:printval.cmx ¶ + :bytecomp:symtable.cmx :toplevel:toploop.cmx :toplevel:trace.cmx ¶ + :typing:types.cmx :toplevel:topdirs.cmi +:toplevel:toploop.cmoÄ :bytecomp:bytegen.cmi :utils:clflags.cmo ¶ + :driver:compile.cmi :utils:config.cmi :bytecomp:emitcode.cmi ¶ + :typing:env.cmi :driver:errors.cmi :parsing:location.cmi ¶ + :parsing:longident.cmi :bytecomp:meta.cmi :utils:misc.cmi ¶ + :parsing:parse.cmi :parsing:parsetree.cmi :typing:primitive.cmi ¶ + :bytecomp:printinstr.cmi :bytecomp:printlambda.cmi :typing:printtyp.cmi ¶ + :toplevel:printval.cmi :bytecomp:simplif.cmi :bytecomp:symtable.cmi ¶ + :bytecomp:translmod.cmi :typing:typedtree.cmi :typing:typemod.cmi ¶ + :typing:types.cmi :toplevel:toploop.cmi +:toplevel:toploop.cmxÄ :bytecomp:bytegen.cmx :utils:clflags.cmx ¶ + :driver:compile.cmx :utils:config.cmx :bytecomp:emitcode.cmx ¶ + :typing:env.cmx :driver:errors.cmx :parsing:location.cmx ¶ + :parsing:longident.cmx :bytecomp:meta.cmx :utils:misc.cmx ¶ + :parsing:parse.cmx :parsing:parsetree.cmi :typing:primitive.cmx ¶ + :bytecomp:printinstr.cmx :bytecomp:printlambda.cmx :typing:printtyp.cmx ¶ + :toplevel:printval.cmx :bytecomp:simplif.cmx :bytecomp:symtable.cmx ¶ + :bytecomp:translmod.cmx :typing:typedtree.cmx :typing:typemod.cmx ¶ + :typing:types.cmx :toplevel:toploop.cmi +:toplevel:topmain.cmoÄ :utils:clflags.cmo :toplevel:toploop.cmi +:toplevel:topmain.cmxÄ :utils:clflags.cmx :toplevel:toploop.cmx +:toplevel:trace.cmoÄ :typing:ctype.cmi :parsing:longident.cmi :utils:misc.cmi ¶ + :typing:path.cmi :typing:printtyp.cmi :toplevel:printval.cmi ¶ + :toplevel:toploop.cmi :typing:types.cmi :toplevel:trace.cmi +:toplevel:trace.cmxÄ :typing:ctype.cmx :parsing:longident.cmx :utils:misc.cmx ¶ + :typing:path.cmx :typing:printtyp.cmx :toplevel:printval.cmx ¶ + :toplevel:toploop.cmx :typing:types.cmx :toplevel:trace.cmi diff --git a/bytecomp/bytelink.ml b/bytecomp/bytelink.ml index cce3120e9..5fb3fb8df 100644 --- a/bytecomp/bytelink.ml +++ b/bytecomp/bytelink.ml @@ -175,13 +175,17 @@ let link_file outchan = function (* Create a bytecode executable file *) +let openflags = + match (Sys.get_config ()).Sys.os_type with + | "MacOS" -> [Open_wronly; Open_trunc; Open_creat] + | _ -> [Open_wronly; Open_trunc; Open_creat; Open_binary] +;; + let link_bytecode objfiles exec_name copy_header = let objfiles = "stdlib.cma" :: (objfiles @ ["std_exit.cmo"]) in let tolink = List.fold_right scan_file objfiles [] in - let outchan = - open_out_gen [Open_wronly; Open_trunc; Open_creat; Open_binary] 0o777 - exec_name in + let outchan = open_out_gen openflags 0o777 exec_name in try (* Copy the header *) if copy_header then begin @@ -218,11 +222,20 @@ let link_bytecode objfiles exec_name copy_header = remove_file exec_name; raise x +let os_type = (Sys.get_config ()).Sys.os_type;; + (* Build a custom runtime *) +let rec extract suffix l = + match l with + | [] -> [] + | h::t when Filename.check_suffix h suffix -> h :: (extract suffix t) + | h::t -> extract suffix t +;; + let build_custom_runtime prim_name exec_name = - match Config.system with - "win32" -> + match os_type with + | "Win32" -> Sys.command (Printf.sprintf "%s /Fe%s -I%s %s %s %s %s\\libcamlrun.lib %s" @@ -234,10 +247,59 @@ let build_custom_runtime prim_name exec_name = (String.concat " " (List.rev !Clflags.ccobjs)) Config.standard_library Config.c_libraries) + | "MacOS" -> + let c68k = "sc" + and libs68k = "\"{libraries}IntEnv.far.o\" " ^ + "\"{libraries}MacRuntime.o\" " ^ + "\"{clibraries}StdCLib.far.o\" " ^ + "\"{libraries}MathLib.far.o\" " ^ + "\"{libraries}ToolLibs.o\" " ^ + "\"{libraries}Interface.o\"" + and link68k = "ilink -compact -state nouse -model far -msg nodup" + and cppc = "mrc" + and libsppc = "\"{sharedlibraries}MathLib\" " ^ + "\"{ppclibraries}PPCCRuntime.o\" " ^ + "\"{ppclibraries}PPCToolLibs.o\" " ^ + "\"{sharedlibraries}StdCLib\" " ^ + "\"{ppclibraries}StdCRuntime.o\" " ^ + "\"{sharedlibraries}InterfaceLib\" " + and linkppc = "ppclink -d" + and objs68k = extract ".o" (List.rev !Clflags.ccobjs) + and objsppc = extract ".x" (List.rev !Clflags.ccobjs) + in + Sys.command (Printf.sprintf "%s -i \"%s\" %s \"%s\" -o \"%s.o\"" + c68k + Config.standard_library + (String.concat " " (List.rev !Clflags.ccopts)) + prim_name + prim_name); + Sys.command (Printf.sprintf "%s -i \"%s\" %s \"%s\" -o \"%s.x\"" + cppc + Config.standard_library + (String.concat " " (List.rev !Clflags.ccopts)) + prim_name + prim_name); + Sys.command ("delete -i \""^exec_name^"\""); + Sys.command (Printf.sprintf + "%s -t MPST -c 'MPS ' -o \"%s\" \"%s.o\" \"%s\" \"%s\" %s" + link68k + exec_name + prim_name + (String.concat "\" \"" objs68k) + (Filename.concat Config.standard_library "libcamlrun.o") + libs68k); + Sys.command (Printf.sprintf + "%s -t MPST -c 'MPS ' -o \"%s\" \"%s.x\" \"%s\" \"%s\" %s" + linkppc + exec_name + prim_name + (String.concat "\" \"" objsppc) + (Filename.concat Config.standard_library "libcamlrun.x") + libsppc) | _ -> Sys.command (Printf.sprintf - "%s -o %s -I%s %s %s -L%s %s -lcamlrun %s" + "%s -o %s -I%s %s %s -L%s -lcamlrun %s %s" Config.bytecomp_c_compiler exec_name Config.standard_library @@ -253,27 +315,48 @@ let link objfiles = if not !Clflags.custom_runtime then link_bytecode objfiles !Clflags.exec_name true else begin - let bytecode_name = Filename.temp_file "camlcode" "" in - let prim_name = Filename.temp_file "camlprim" ".c" in - try + match os_type with + | "MacOS" -> + let bytecode_name = Filename.temp_file "camlcode" "" in + let prim_name = Filename.temp_file "camlprim" ".c" in + begin try link_bytecode objfiles bytecode_name false; Symtable.output_primitives prim_name; if build_custom_runtime prim_name !Clflags.exec_name <> 0 then raise(Error Custom_runtime); - let oc = - open_out_gen [Open_wronly; Open_append; Open_binary] 0 - !Clflags.exec_name in - let ic = open_in_bin bytecode_name in - copy_file ic oc; - close_in ic; - close_out oc; - remove_file bytecode_name; - remove_file prim_name + Sys.command ("mergefragment -c -t Caml \""^bytecode_name^"\""); + Sys.command (Printf.sprintf + "mergefragment \"%s\" \"%s\"" bytecode_name !Clflags.exec_name); + Sys.command (Printf.sprintf + "delete -i \"%s\" \"%s\" \"%s.o\" \"%s.x\"" + bytecode_name prim_name prim_name prim_name); with x -> remove_file bytecode_name; remove_file prim_name; raise x end + | _ -> + let bytecode_name = Filename.temp_file "camlcode" "" in + let prim_name = Filename.temp_file "camlprim" ".c" in + try + link_bytecode objfiles bytecode_name false; + Symtable.output_primitives prim_name; + if build_custom_runtime prim_name !Clflags.exec_name <> 0 + then raise(Error Custom_runtime); + let oc = + open_out_gen [Open_wronly; Open_append; Open_binary] 0 + !Clflags.exec_name in + let ic = open_in_bin bytecode_name in + copy_file ic oc; + close_in ic; + close_out oc; + remove_file bytecode_name; + remove_file prim_name + with x -> + remove_file bytecode_name; + remove_file prim_name; + raise x + end (* Error report *) |