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

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

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

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

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

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