Factor Remakefie and add more tests for parallel query composition.
[tatoo.git] / tools / ocamlmoduledep.sh
index 3102e1e..befd4cd 100755 (executable)
@@ -8,8 +8,9 @@ usage() {
 }
 
 INCLUDES=""
-MODULE=""
+MODULES=""
 NATIVE=0
+INTER=0
 while true; do
     case $1 in
         -I)
@@ -21,13 +22,11 @@ $2"
         -native)
             NATIVE=1
             ;;
+        -inter)
+            INTER=1
+            ;;
         [A-Z]*)
-            if test -z "$MODULE"; then
-                MODULE=$1
-            else
-                usage
-                exit 1
-            fi
+                MODULES="$MODULES $1"
             ;;
         *)
             echo "ERROR: '$1'"
@@ -38,20 +37,26 @@ $2"
     shift
     if test "$#" -eq 0; then break; fi
 done
-module="$(echo $MODULE | cut -b1 | tr A-Z a-z)$(echo $MODULE | cut -b2-)"
 if test "$NATIVE" = "1"; then
     ext=cmx
 else
     ext=cmo
 fi
 
-echo "$INCLUDES" | while read include; do
-    base="$include/$module"
-    if test -f "$base".ml -o -f "$base".mly -o -f "$base".mll -o -d "$base"; then
-        echo "$base"."$ext"
-        break
-    elif test -f "$base".mli; then
-        echo "$base".cmi
-        break
-    fi
+for MODULE in $MODULES; do
+    module="$(echo $MODULE | cut -b1 | tr A-Z a-z)$(echo $MODULE | cut -b2-)"
+    echo "$INCLUDES" | while read include; do
+        base="$include/$module"
+        if test -z "$include"; then continue; fi
+        if test  \( "$INTER" = "1" \) -a \( -f "$base".mli \) ; then
+                echo -n "$base"."cmi "
+        elif test -f "$base".ml -o -f "$base".mly -o -f "$base".mll -o -f "$base".pack; then
+            echo -n "$base"."$ext "
+            break
+        elif test -f "$base".mli; then
+            echo -n "$base"."cmi "
+            break
+        fi
+    done
 done
+echo