;; Some files must be preprocessed by cppo.
(rule
  (targets cloud.ml)
  (deps cloud.cppo.ml)
  (action (run %{bin:cppo} -V OCAML:%{ocaml_version} %{deps} -o %{targets})))
(rule
  (targets test02.ml)
  (deps test02.cppo.ml)
  (action (run %{bin:cppo} -V OCAML:%{ocaml_version} %{deps} -o %{targets})))
(rule
  (targets testallprims.ml)
  (deps testallprims.cppo.ml)
  (action (run %{bin:cppo} -V OCAML:%{ocaml_version} %{deps} -o %{targets})))
(rule
  (targets VisitorsRuntimeBootstrap.ml)
  (deps VisitorsRuntimeBootstrap.cppo.ml)
  (action (run %{bin:cppo} -V OCAML:%{ocaml_version} %{deps} -o %{targets})))

(executable
  (name bench)
  (modules bench)
  (preprocess (pps visitors.ppx))
  (libraries core_bench core_unix.command_unix)
)

(library
  (name snippets_basic)
  (preprocess (pps visitors.ppx))
  (flags -w A-4-34-44-70)
  (modules
    point build
    cloud
    delayed_tree
    dictionary
    empty_universal_type_quantification
    expr00
    expr00endo
    expr00fold
    expr00fold2
    expr01
    expr01use
    expr01use_variant
    expr02
    expr03
    expr04
    expr05lexico
    expr05lexico_test
    expr05
    expr06
    expr11
    expr15b
    expr15c
    expr15
    expr16
    expr17
    expr_info_mapreduce
    expr_info_mapreduce_test
    expr_info_mapreduce_use
    expr_info
    expr_info_polymorphic
    expr_info_polymorphic_use
    expr_info_polymorphic_use_test
    expr_info_use
    expr
    expr_redef
    fold
    map_from_fold
    mapReduce
    monomorphic
    monopoly
    oexpr_polymorphic
    OOinferfixedagaincheck
    OOinferfixedagain
    OOinferfixed
    OOinfer
    OOinferself
    OOinfervirtual
    opaque
    polyclass
    prefixes
    test00
    test01
    test02
    test03
    test04
    test05
    test06
    test07
    testallprims
    VisitorsRuntimeBootstrap
  )
)

(library
  (name snippets_that_need_hashcons)
  (preprocess (pps visitors.ppx))
  (flags -w A-4-34-44-70)
  (libraries hashcons)
  (modules
    expr08
    expr08double
    expr08extra
    expr12
    expr13double
    expr13extra
    expr13
    expr14
    hexpr_polymorphic
  )
)

(library
  (name cil)
  (modules cil_types cil_types_polymorphic)
  (preprocess (pps visitors.ppx))
)
