Hi,
Is it guaranteed that the initialisers for each module will be run in
the order of modules specified to the ocaml compiler?
Say, with the given Makefile:
ML = ocaml/device.ml ocaml/keyboard.ml ocaml/console.ml
ocaml/thread.ml ocaml/irq.ml ocaml/kernel.ml
MLI = $(wildcard ocaml/*.mli)
CMX = $(ML:.ml=.cmx)
OCAMLKERNEL = ocaml/ocamlkernel.o
$(OCAMLKERNEL): $(CMX)
$(OCAMLOPT) -linkpkg $(CMXA) $(CMX) -output-obj -o $@
For instance: I want to have it such that keyboard.ml registers a
device during init, and then console.ml registers a device which
depends on opening the keyboard device earlier registered.
But the only way this is guaranteed to work is if I can make some sort
of guarantees about the order that initialisers are called at the
module level. Does ocaml make any sort of guarantees like this? Or
will depending on this to happen be too fragile?
Jonathan