X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=tools%2Focamldriver.sh;h=d2a968e2baf52d9a188eb963fc2ff7eaf9f0b910;hp=792330c02dbdfb7037062029fae2cf00bd16cd13;hb=be3f8efc9faf12df977b5e64a50868279fcb435b;hpb=57d93cea4d7dbd1ae5ee706b216fd42a1795de29 diff --git a/tools/ocamldriver.sh b/tools/ocamldriver.sh index 792330c..d2a968e 100644 --- a/tools/ocamldriver.sh +++ b/tools/ocamldriver.sh @@ -14,38 +14,53 @@ elif test -f ${base}.pack -a -d ${base}; then fi if test "$PACKDIR"; then PACKNAME=`echo $PACKDIR | cut -b1 | tr a-z A-Z`${PACKDIR#?} - if test "$NATIVE"; then + if test "$OCAMLNATIVE"; then FORPACK="-for-pack $PACKNAME" fi fi +if test "$EXT" = i; then + if test -f ${base}.mli; then + $REMAKE ${base}.mli; + fi + + modules=`$OCAMLDEP -modules ${base}.mli | cut -f 2- -d ':'` + objects=`tools/ocamlmoduledep.sh -inter $OCAMLNATIVE $PACKINCLUDE -I $SRC $modules` + $REMAKE $objects + $COMPILE -o ${target} -c $PACKINCLUDE ${base}.mli + exit 0 +fi + if test "$DOPACK"; then modules=`cat ${base}.pack` - objects=`echo $modules | xargs tools/ocamlmoduledep.sh $NATIVE $PACKINCLUDE -I $SRC ` + objects=`echo $modules | xargs tools/ocamlmoduledep.sh $OCAMLNATIVE $PACKINCLUDE -I $SRC ` else $REMAKE ${base}.ml modules=`$OCAMLDEP -modules ${base}.ml | cut -f 2- -d ':'` - objects=`tools/ocamlmoduledep.sh $NATIVE $PACKINCLUDE -I $SRC $modules` + if test "$EXT" = "o"; then + INTER=-inter + fi + objects=`tools/ocamlmoduledep.sh $INTER $OCAMLNATIVE $PACKINCLUDE -I $SRC $modules` fi $REMAKE $objects -deps=`echo $objects | sed "s/[.]cm[i${EXT}]/.dep/g"` -rm -f ${base}.dep; touch ${base}.dep +deps=`echo $objects | sed "s/[.]cm[i${EXT}]/.$DEPEXT/g"` +rm -f ${base}.$DEPEXT; touch ${base}.$DEPEXT $REMAKE $deps for f in $deps; do for g in `cat $f`; do - if grep -q $g ${base}.dep; then continue; fi - echo $g >> ${base}.dep + if grep -q $g ${base}.$DEPEXT; then continue; fi + echo $g >> ${base}.$DEPEXT done - if grep -q $f ${base}.dep; then continue; fi - echo $f >> ${base}.dep + if grep -q $f ${base}.$DEPEXT; then continue; fi + echo $f >> ${base}.$DEPEXT done -if test -f ${base}.mli; then $REMAKE -v PACKINCLUDE="$PACKINCLUDE" ${base}.cmi; fi +if test -f ${base}.mli; then $REMAKE PACKINCLUDE="$PACKINCLUDE" ${base}.cmi; fi if test "$DOPACK"; then - sorted_objects=`cat ${base}.dep | grep "$PACKDIR" | sed "s/[.]dep/.cm${EXT}/" | xargs` - cat ${base}.dep | grep -v "$PACKDIR" > ${base}.tmp - mv ${base}.tmp ${base}.dep + sorted_objects=`cat ${base}.$DEPEXT | grep "$PACKDIR" | sed "s/[.]$DEPEXT/.cm${EXT}/" | xargs` + cat ${base}.$DEPEXT | grep -v "$PACKDIR" > ${base}.tmp + mv ${base}.tmp ${base}.$DEPEXT $COMPILE -o ${target} -pack $sorted_objects else $COMPILE -o ${target} $FORPACK -c $PACKINCLUDE ${base}.ml