(rule
 (targets ext.out)
 (deps
  (:< ext.cppo)
  source.sh)
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:cppo} -x "rot13:tr '[a-z]' '[n-za-m]'" -x
     "source:sh source.sh '%F' %B %E" %{<}))))

(rule
 (targets comments.out)
 (deps
  (:< comments.cppo))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:cppo} %{<}))))

(rule
 (targets cond.out)
 (deps
  (:< cond.cppo))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:cppo} %{<}))))

(rule
 (targets tuple.out)
 (deps
  (:< tuple.cppo))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:cppo} %{<}))))

(rule
 (targets loc.out)
 (deps
  (:< loc.cppo))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:cppo} %{<}))))

(rule
 (targets paren_arg.out)
 (deps
  (:< paren_arg.cppo))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:cppo} %{<}))))

(rule
 (targets unmatched.out)
 (deps
  (:< unmatched.cppo))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:cppo} %{<}))))

(rule
 (targets version.out)
 (deps
  (:< version.cppo))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:cppo} -V X:123.05.2-alpha.1+foo-2.1 -V COQ:8.13+beta1 %{<}))))

(rule
 (targets test.out)
 (deps
  (:< test.cppo)
  incl.cppo
  incl2.cppo)
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:cppo} %{<}))))

(alias
 (name runtest)
 (package cppo)
 (action
  (diff ext.ref ext.out)))

(alias
 (name runtest)
 (package cppo)
 (action
  (diff comments.ref comments.out)))

(alias
 (name runtest)
 (package cppo)
 (action
  (diff cond.ref cond.out)))

(alias
 (name runtest)
 (package cppo)
 (action
  (diff tuple.ref tuple.out)))

(alias
 (name runtest)
 (package cppo)
 (action
  (diff loc.ref loc.out)))

(alias
 (name runtest)
 (package cppo)
 (action
  (diff paren_arg.ref paren_arg.out)))

(alias
 (name runtest)
 (package cppo)
 (action
  (diff version.ref version.out)))

(alias
 (name runtest)
 (package cppo)
 (action
  (diff unmatched.ref unmatched.out)))

(alias
 (name runtest)
 (package cppo)
 (action
  (diff test.ref test.out)))
