From bc28f6f4645b0fd7ebd0685a531db2ddad101436 Mon Sep 17 00:00:00 2001 From: malc Date: Tue, 29 Jul 2014 06:58:56 +0400 Subject: [PATCH] First stab at ocaml dependencies --- build.ninja | 4 +++- doocaml | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/build.ninja b/build.ninja index 1210ffb..1c1b02c 100644 --- a/build.ninja +++ b/build.ninja @@ -14,7 +14,9 @@ rule cc description = cc $out rule ocamlc - command = sh $srcdir/doocaml $out $in -c $ocamlflags + deps = gcc + depfile = $out.d + command = sh $srcdir/doocaml $out $in $depfile -c $ocamlflags description = ocamlc $out rule genhelp diff --git a/doocaml b/doocaml index 217dae3..548d06c 100644 --- a/doocaml +++ b/doocaml @@ -4,5 +4,12 @@ set -e out="$(basename "$1")" dir="$(dirname "$1")" expr "$2" : "/.*" >/dev/null && src="$2" || src="$PWD/$2" -shift 2 -(cd "$dir" && ocamlc "$@" -o $out $src) +dep="$3" +shift 3 + +fixdep() { + sed -e "/.*\.cmx.*/d" -e "s,${src%%.ml}.cm[oxi],$dir/$out," +} + +dep=${dep#$dir/} +(cd $dir && ocamlc "$@" -o $out $src && ocamldep $src | fixdep >$dep) -- 2.11.4.GIT