4 .caml-order: %.cmi: %.cmo
5 .caml-order: %.cmx: %.cmo
8 return $(file-sort .caml-order, $(files))
10 collect-includes(flags) =
21 if $(and $(gt $l, 1), \
22 $(and $(equal $(f.nth 0), -), \
23 $(equal $(f.nth 1), I)))
25 dirs += $(removeprefix -I, $f)
41 eprintln($(string $(argv)))
44 emacs-helper = directory $"`"$(absname $(dirof $<))\'
45 eecho "make[0]: Entering $(emacs-helper)"
47 ocamldep $(depflags) $(basename $<)
48 eecho "make[0]: Leaving $(emacs-helper)"
51 emacs-helper = directory $"`"$(absname $(dirof $<))\'
52 eecho "make[0]: Entering $(emacs-helper)"
54 ocamldep $(depflags) $(basename $<)
55 eecho "make[0]: Leaving $(emacs-helper)"
63 depflags = $(mapprefix -I, $(collect-includes $(flags)))
65 .SCANNER: %.cmo.scan: %.ml
69 .SCANNER: %.cmi.scan: %.mli
73 $I: $i :scanner: $I.scan
74 ocamlc $(flags) -c -o $I $(absname $i)
76 $o: $s :scanner: $o.scan
77 ocamlc $(flags) -c -o $o $(absname $s)
79 $o $I: $s :scanner: $o.scan
80 ocamlc $(flags) -c -o $o $(absname $s)
82 ocamlopt(name, flags) =
89 depflags = $(mapprefix -I, $(collect-includes $(flags)))
91 .SCANNER: %.cmx.scan: %.ml
95 .SCANNER: %.cmi.scan: %.mli
99 # $I: $i :scanner: $I.scan
100 # ocamlopt $(flags) -c -o $I $(absname $i)
102 $o $O: $s :scanner: $o.scan
103 ocamlopt $(flags) -c -o $o $(absname $s)
105 $o $O: $s :scanner: $o.scan
106 ocamlopt $(flags) -c -o $o $(absname $s)
108 Mocamlc(names, flags) =
109 foreach (n, $(names))
110 ocamlc ($n, $(flags))
112 Mocamlopt(names, flags) =
113 foreach (n, $(names))
114 ocamlopt ($n, $(flags))
120 .SCANNER: %.o.scan: %.c
121 gcc $(flags) -MM -MT $* $<
123 $o: $s :scanner: $o.scan
124 gcc $(flags) -c -o $@ $<
126 ocamlcc(name, flags) =
130 .SCANNER: %.o.scan: %.c
131 ocamlc -ccopt "$(flags) -MM -MT $o" -cc gcc $<
133 $o: $s :scanner: $o.scan
134 ocamlc -ccopt "$(flags) -o $o" -cc gcc $<
137 foreach (n, $(names))
140 Mocamlcc(names, flags) =
141 foreach (n, $(names))
142 ocamlcc($n, $(flags))
144 if $(not $(defined srcdir))
145 srcdir = $(absname $(dirof OMakeroot))
149 add-project-directories (build .)
150 vmount ($(srcdir), build)