;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                                                                        ;;
;;  SPDX-License-Identifier LGPL-2.1                                      ;;
;;  Copyright (C)                                                         ;;
;;  CEA (Commissariat à l'énergie atomique et aux énergies alternatives)  ;;
;;                                                                        ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(rule
 (alias frama-c-configure)
 (deps (universe))
 (action (progn
          (echo "Frama-C Kernel:" %{lib-available:frama-c.kernel_base} "\n")
          (echo "  - Fclib:" %{lib-available:frama-c.fclib} "\n")
          (echo "  - fpath:" %{lib-available:fpath} "\n")
          (echo "  - str:" %{lib-available:str} "\n")
          (echo "  - unix:" %{lib-available:unix} "\n")
          (echo "  - zarith:" %{lib-available:zarith} "\n")
          (echo "  - ocamlgraph:" %{lib-available:ocamlgraph} "\n")
          (echo "  - dynlink:" %{lib-available:dynlink} "\n")
          (echo "  - yaml.unix:" %{lib-available:yaml.unix} "\n")
          (echo "  - yojson:" %{lib-available:yojson} "\n")
          (echo "  - menhirLib:" %{lib-available:menhirLib} "\n")
          (echo "  - dune-site:" %{lib-available:dune-site} "\n")
          (echo "  - dune-site.plugins:" %{lib-available:dune-site.plugins} "\n")
          (echo "  - ppx_deriving.eq:" %{lib-available:ppx_deriving.eq} "\n")
          (echo "  - ppx_deriving.show:" %{lib-available:ppx_deriving.show} "\n")
          (echo "  - ppx_deriving.make:" %{lib-available:ppx_deriving.make} "\n")
          (echo "  - ppx_deriving.ord:" %{lib-available:ppx_deriving.ord} "\n")
          (echo "  - ppx_deriving_yaml:" %{lib-available:ppx_deriving_yaml} "\n")
          (echo "  - ppx_inline_test:" %{lib-available:ppx_inline_test} "\n")
          (echo "  - ppx_z_literals:" %{lib-available:frama-c.ppx_z_literals} "\n")
  )
  )
)

(rule
 (alias install)
 (enabled_if
  (and
   (= %{env:FRAMAC_DEVELOPER=no} "yes")
   (not %{lib-available:frama-c.kernel_base})))
 (action (echo "WARNING: Frama-C Kernel disabled. Run 'dune build @frama-c-configure' for more details\n"))
)

(library
  (name frama_c_kernel_base)
  (public_name frama-c.kernel_base)
  (modules (:standard \ frama_c_kernel))
  (flags -open Fclib :standard -w -9)
  (libraries frama-c.fclib frama-c.init fpath str unix zarith ocamlgraph dynlink yaml.unix yojson menhirLib dune-site dune-site.plugins frama-c.fc_internal_z)
  (instrumentation (backend landmarks))
  (instrumentation (backend bisect_ppx))
  (inline_tests)
  (preprocess (pps ppx_deriving.eq ppx_deriving.show ppx_deriving.make ppx_deriving.ord ppx_deriving_yaml ppx_inline_test frama-c.ppx_z_literals))
)

(library
  (name frama_c_kernel)
  (public_name frama-c.kernel)
  (modules frama_c_kernel)
  (wrapped false)
  (flags :standard -w -9)
  (libraries frama-c.fclib frama-c.kernel_base)
)

(alias (name runtest-frama_c_kernel)
  (deps (alias runtest-frama_c_kernel_base)))

(generate_sites_module (module config_data) (sites frama-c) (plugins (frama-c plugins)))

(include_subdirs unqualified)
