;; -*-lisp-*-

(ocamllex dl_lexer)

(menhir
 (flags
  (--explain --table --strict))
 (modules dl_parser))


(rule
 (target messages.ml)
 (deps
  (alias update_messages)
  (alias check_messages)
  (:parser dl_parser.mly)
  (:messages dl_parser.messages))
 (action (with-stdout-to %{target}
  (run menhir %{parser} --compile-errors %{messages}))))

(rule
 (alias update_messages)
 (enabled_if (= %{profile} dev))
 (deps
  (:messages dl_parser.messages)
  (:new_messages dl_parser.new.messages))
 (action
  (diff %{messages} %{new_messages})))

(rule
 (target dl_parser.new.messages)
 (deps
  (:parser dl_parser.mly)
  (:updated_messages dl_parser.updated.messages)
  (:auto_messages dl_parser.auto.messages))
 (action (with-stdout-to %{target}
  (run menhir %{parser}
   --merge-errors %{updated_messages}
   --merge-errors %{auto_messages}))))

(rule
 (target dl_parser.auto.messages)
 (deps
   (:parser dl_parser.mly))
 (action (with-stdout-to %{target}
  (run menhir %{parser} --list-errors))))

(rule
 (target dl_parser.updated.messages)
 (deps
  (:parser dl_parser.mly)
  (:messages dl_parser.messages))
 (action (with-stdout-to %{target}
  (run menhir %{parser} --update-errors %{messages}))))

(rule
 (alias check_messages)
 (enabled_if (= %{profile} dev))
 (deps
  (:messages dl_parser.messages))
 (action
  (run grep -zvq "<YOUR SYNTAX ERROR MESSAGE HERE>" %{messages})))

;; This stanza declares the DatalogLib

(library
 (name datalogLib)
 (public_name acgtk.datalogLib)
 (private_modules errors)
 (libraries
  ;; external libraries
  str
  menhirLib
  logs
  ;; internal library
  utilsLib
  containers))

(documentation
 (package acgtk))
