(executable
 (name mte)
 (modules
  fat
  respond
  pg_type
  pg
  env
  mte_device
  mte_handler
  mte
  mte_tos
  mte_seed
  mte_config
  mte_keys
  mte_management
  secmod_eddsa
  secmod_rsa
  log_reporter)
 (link_flags :standard -cclib "-z solo5-abi=hvt")
 (libraries
  mte
  ;
  mkernel
  mnet
  mnet-happy-eyeballs
  mnet-dns
  vifu
  gmp
  mirage-crypto
  mirage-crypto-rng
  mirage-crypto-rng-mkernel
  mirage-mtime.solo5
  mirage-ptime.solo5
  mfat
  ;
  caqti
  caqti-miou
  caqti-mnet
  caqti-driver-pgx
  pgx)
 (foreign_stubs
  (language c)
  (names manifest)))

(library
 (name mte)
 (wrapped false)
 (modules
  result
  syntax
  bbin
  amount
  libtool_version
  time
  assets_crunch
  assets
  hash
  eddsa
  rsa
  signkey
  denomination
  config_parser
  config
  signatures
  api)
 (libraries
  (re_export crockford)
  (re_export taler_signature_purpose_codes)
  ;
  angstrom
  fmt
  logs
  logs.fmt
  fpath
  cohttp
  bin
  caqti
  jsont
  jsont.bytesrw
  digestif
  kdf.hkdf
  zarith
  eqaf
  mirage-crypto-ec
  mirage-crypto-pk
  ptime
  uri
  ;
  ))

(library
 (name crockford)
 (modules crockford)
 (libraries base32))

(rule
 (target assets_crunch.ml)
 (deps
  (source_tree ../assets))
 (action
  (with-stdout-to
   %{null}
   (run ocaml-crunch -m plain ../assets -o %{target}))))

(rule
 (targets manifest.c)
 (deps manifest.json)
 (enabled_if
  (= %{context_name} "solo5"))
 (action
  (run solo5-elftool gen-manifest manifest.json manifest.c)))

(rule
 (targets manifest.c)
 (enabled_if
  (= %{context_name} "default"))
 (action
  (write-file manifest.c "")))
