Dune and -annot

I am trying to make dune build to generate .annot files without luck. I have this stanza:

(env
    (dev
        (flags (:standard -safe-string -annot -w -27-32-34-39)))
    (release
        (flags (:standard -O3 -safe-string -w -27-32-34-39))))

but it does not help. I know the “dev” flags are used in compilation, because if I change -w warnings are emitted. Am I missing something obvious? Thanks!

Did you inspect the build log at _build/log? I believe you should see the -annot files as you’d expect.

What you’re probably observing is that the .annot files are generated but deleted by subsequent runs because dune doesn’t know they are the targets of the rules.

Stepping back a bit, why do you need .annot files? As far as I know they’ve been completely superseded by .cmt and .cmti files.

I can see -annot option used. Here is an example from log:

(cd _build/default && /home/lord/.opam/4.07.1+flambda/bin/ocamlopt.opt -w @1..3@5..28@30..39@43@46..47@49..57@61..62-40 -strict-sequence -strict-formats -short-paths -keep-locs -safe-string -annot -w -27-32-34-39 -g -I .fah_status.eobjs/byte -I .fah_status.eobjs/native -I /home/lord/.opam/4.07.1+flambda/lib/base -I /home/lord/.opam/4.07.1+flambda/lib/base/caml -I /home/lord/.opam/4.07.1+flambda/lib/base/md5 -I /home/lord/.opam/4.07.1+flambda/lib/base/shadow_stdlib -I /home/lord/.opam/4.07.1+flambda/lib/base_bigstring -I /home/lord/.opam/4.07.1+flambda/lib/base_quickcheck -I /home/lord/.opam/4.07.1+flambda/lib/bin_prot -I /home/lord/.opam/4.07.1+flambda/lib/bin_prot/shape -I /home/lord/.opam/4.07.1+flambda/lib/biniou -I /home/lord/.opam/4.07.1+flambda/lib/bytes -I /home/lord/.opam/4.07.1+flambda/lib/camomile -I /home/lord/.opam/4.07.1+flambda/lib/camomile/default_config -I /home/lord/.opam/4.07.1+flambda/lib/camomile/dyn -I /home/lord/.opam/4.07.1+flambda/lib/camomile/lib_default -I /home/lord/.opam/4.07.1+flambda/lib/camomile/library -I /home/lord/.opam/4.07.1+flambda/lib/charInfo_width -I /home/lord/.opam/4.07.1+flambda/lib/core -I /home/lord/.opam/4.07.1+flambda/lib/core_kernel -I /home/lord/.opam/4.07.1+flambda/lib/core_kernel/base_for_tests -I /home/lord/.opam/4.07.1+flambda/lib/easy-format -I /home/lord/.opam/4.07.1+flambda/lib/equeue -I /home/lord/.opam/4.07.1+flambda/lib/fieldslib -I /home/lord/.opam/4.07.1+flambda/lib/jane-street-headers -I /home/lord/.opam/4.07.1+flambda/lib/lambda-term -I /home/lord/.opam/4.07.1+flambda/lib/lwt -I /home/lord/.opam/4.07.1+flambda/lib/lwt/unix -I /home/lord/.opam/4.07.1+flambda/lib/lwt_log -I /home/lord/.opam/4.07.1+flambda/lib/lwt_log/core -I /home/lord/.opam/4.07.1+flambda/lib/lwt_react -I /home/lord/.opam/4.07.1+flambda/lib/mew -I /home/lord/.opam/4.07.1+flambda/lib/mew_vi -I /home/lord/.opam/4.07.1+flambda/lib/mmap -I /home/lord/.opam/4.07.1+flambda/lib/netclient -I /home/lord/.opam/4.07.1+flambda/lib/netstring -I /home/lord/.opam/4.07.1+flambda/lib/netsys -I /home/lord/.opam/4.07.1+flambda/lib/ocaml/threads -I /home/lord/.opam/4.07.1+flambda/lib/ocplib-endian -I /home/lord/.opam/4.07.1+flambda/lib/ocplib-endian/bigstring -I /home/lord/.opam/4.07.1+flambda/lib/parsexp -I /home/lord/.opam/4.07.1+flambda/lib/ppx_assert/runtime-lib -I /home/lord/.opam/4.07.1+flambda/lib/ppx_bench/runtime-lib -I /home/lord/.opam/4.07.1+flambda/lib/ppx_compare/runtime-lib -I /home/lord/.opam/4.07.1+flambda/lib/ppx_enumerate/runtime-lib -I /home/lord/.opam/4.07.1+flambda/lib/ppx_expect/collector -I /home/lord/.opam/4.07.1+flambda/lib/ppx_expect/common -I /home/lord/.opam/4.07.1+flambda/lib/ppx_expect/config -I /home/lord/.opam/4.07.1+flambda/lib/ppx_hash/runtime-lib -I /home/lord/.opam/4.07.1+flambda/lib/ppx_inline_test/config -I /home/lord/.opam/4.07.1+flambda/lib/ppx_inline_test/runtime-lib -I /home/lord/.opam/4.07.1+flambda/lib/ppx_module_timer/runtime -I /home/lord/.opam/4.07.1+flambda/lib/ppx_sexp_conv/runtime-lib -I /home/lord/.opam/4.07.1+flambda/lib/react -I /home/lord/.opam/4.07.1+flambda/lib/result -I /home/lord/.opam/4.07.1+flambda/lib/seq -I /home/lord/.opam/4.07.1+flambda/lib/sexplib -I /home/lord/.opam/4.07.1+flambda/lib/sexplib/unix -I /home/lord/.opam/4.07.1+flambda/lib/sexplib0 -I /home/lord/.opam/4.07.1+flambda/lib/spawn -I /home/lord/.opam/4.07.1+flambda/lib/splittable_random -I /home/lord/.opam/4.07.1+flambda/lib/stdio -I /home/lord/.opam/4.07.1+flambda/lib/time_now -I /home/lord/.opam/4.07.1+flambda/lib/trie -I /home/lord/.opam/4.07.1+flambda/lib/typerep -I /home/lord/.opam/4.07.1+flambda/lib/variantslib -I /home/lord/.opam/4.07.1+flambda/lib/yojson -I /home/lord/.opam/4.07.1+flambda/lib/zed -intf-suffix .ml -no-alias-deps -opaque -open Dune__exe -o .fah_status.eobjs/native/dune__exe__Fah.cmx -c -impl fah.pp.ml)

I want annot files as Emacs Turareg uses it, for example, in caml-types-explore command.