1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#!/bin/sh
rules_file=dune-rules.inc
generated_files=_generated-files
write_dune_rule()
{
src=$1
dst=$2
echo $dst >> $generated_files
case $src in
*.c.in|*.h.in) source_type=c;;
*) source_type=ocaml
esac
# echo Writing Dune rule to generate $dst from $src, source_type=$source_type
cat >> $rules_file << EOF
(rule
(targets $dst)
(deps
(:gen tools/stdcompatpp.exe) $src)
(action
(with-stdin-from $src
(with-stdout-to $dst
(run %{gen} --source-type $source_type)))))
EOF
}
genrule1()
{
input=$1
# echo One file: $input
write_dune_rule $input.in $input
}
genrule2()
{
input=$1
src=${input##*:}
dst=${input%%:*}
# echo Two files: src=$src dst=$dst
write_dune_rule $src $dst
}
rm -f $rules_file $generated_files
grep CONFIG_FILES configure.ac | grep -v META | sed 's/AC_CONFIG_FILES([[]\([^]]\+\)[]])/\1/g' | \
(while read input; do
case "$input" in
*:*) genrule2 $input;;
*) genrule1 $input;;
esac;
done)
|