-%.cmx:
- target="$@"
- base="${target%.cmx}"
- src="${base}.ml"
- if [ -f "$src" ]; then
- $(REMAKE) "$src"
- deps=`$(ODEPS) -native $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"`
- echo "$deps" | $(REMAKE) -v PACKINCLUDE="$(PACKINCLUDE)" -v OCAMLDEPNATIVE=-native -v OCAMLFORPACK="$(OCAMLFORPACK)" -r "$target"
- $(OCAMLOPT) -o "$target" -c $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFORPACK) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"
- elif [ -d "$base" ]; then
- modname=`basename "$base"`
- packname=`echo "$modname" | sed 's/\(.*\)/\u\1/'`
- objs=`ls "$base"/*.ml | sed 's/\.ml/.cmx/g'`
- $(REMAKE) -v PACKINCLUDE="-I $base" -v OCAMLFORPACK="-for-pack $packname" $objs
- sorted_objs=`$(OCAMLDEP) -native $(OCAMLFINDFLAGS) -I $base -modules "$base"/*.ml | tools/osort.sh cmx`
- $(OCAMLOPT) -o "$target" -pack $sorted_objs
- elif [ -f "$base".mly ]; then
- $(REMAKE) "$base".mly
- $(OCAMLYACC) "$base".mly
- $(ODEPS) $(OCAMLDEPNATIVE) $(OCAMLFINDFLAGS) "$src" | \
- $(REMAKE) -v PACKINCLUDE="$(PACKINCLUDE)" -v OCAMLDEPNATIVE=-native -v OCAMLFORPACK="$(OCAMLFORPACK)" -r "$target"
- $(OCAMLOPT) -o "$target" -c $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFORPACK) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"
+ if test "$DOPACK"; then
+ modules=`cat $*.pack`
+ objects=`echo $modules | xargs tools/ocamlmoduledep.sh -native $PACKINCLUDE -I $(SRC) `
+ else
+ $REMAKE $*.ml
+ modules=`$(OCAMLDEP) $(OCAMLFINDFLAGS) -modules $*.ml | cut -f 2- -d ':'`
+ objects=`tools/ocamlmoduledep.sh -native $PACKINCLUDE -I $(SRC) $modules`