(alias
 ((name all)
  (deps (test.bc
         test.exe
         test.bc${ext_obj}
         test.exe${ext_obj}
         test.bc${ext_dll}
         test${ext_dll}
         static.bc
         static.exe))))

(executable
 ((name test)
  (modes ((byte   exe          )
          (native exe          )
          (byte   object       )
          (native object       )
          (byte   shared_object)
          (native shared_object)))))

(rule
 ((targets (static.exe))
  (deps (test.exe${ext_obj} static.c))
  (action (run ${CC} -o ${@} -I ${ocaml_where} -I . ${^}
           ${ocaml-config:native_c_libraries}))))

(rule
 ((targets (static.bc))
  (deps (test.bc${ext_obj} static.c))
  (action (run ${CC} -o ${@} -I ${ocaml_where} -I . ${^}
           ${ocaml-config:bytecomp_c_libraries}))))

(rule
 ((targets (dynamic.exe))
  (deps (dynamic.c))
  (action (run ${CC} -o ${@} ${<} -ldl))))

(alias
 ((name runtest)
  (action
   (run ./static.exe))))

(alias
 ((name runtest)
  (action
   (run ./static.bc))))

(alias
 ((name   runtest)
  (deps   (test.bc${ext_dll}))
  (action (run ./dynamic.exe ./${<}))))

(alias
 ((name   runtest)
  (deps   (test${ext_dll}))
  (action (run ./dynamic.exe ./${<}))))
