(rule
 (targets cpp.output)
 (deps
  (package stanc)
  (:stanfiles
   (glob_files *.stan)))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:run_bin_on_args} "%{bin:stanc} --print-cpp" %{stanfiles}))))

(rule
 (alias runtest)
 (action
  (diff cpp.expected cpp.output)))

(rule
 (targets lir.output)
 (deps
  (package stanc)
  (:stanfiles mother.stan))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:run_bin_on_args} "%{bin:stanc} --debug-lir" %{stanfiles}))))

(rule
 (alias runtest)
 (action
  (diff lir.expected lir.output)))

(rule
 (targets mir.output)
 (deps
  (package stanc)
  (:stanfiles mother.stan))
 (action
  (with-stdout-to
   %{targets}
   (run %{bin:run_bin_on_args} "%{bin:stanc} --debug-mir" %{stanfiles}))))

(rule
 (alias runtest)
 (action
  (diff mir.expected mir.output)))

(rule
 (targets transformed_mir.output)
 (deps
  (package stanc)
  (:stanfiles mother.stan))
 (action
  (with-stdout-to
   %{targets}
   (run
    %{bin:run_bin_on_args}
    "%{bin:stanc} --debug-transformed-mir"
    %{stanfiles}))))

(rule
 (alias runtest)
 (action
  (diff transformed_mir.expected transformed_mir.output)))

(rule
 (targets cl.output)
 (deps
  (package stanc)
  (:stanfiles optimize_glm.stan))
 (action
  (with-stdout-to
   %{targets}
   (run
    %{bin:run_bin_on_args}
    "%{bin:stanc} --print-cpp --use-opencl"
    %{stanfiles}))))

(rule
 (alias runtest)
 (action
  (diff cl.expected cl.output)))
