# Ocamlbuild tags file

true: -traverse

# Traverse only these directories
<{bytecomp,driver,stdlib,tools,asmcomp,camlp4,ocamlbuild,toplevel,ocamldoc,typing,otherlibs,utils,debugger,lex,parsing,byterun,asmrun}/**>: traverse

"boot" or "byterun" or "asmrun": not_hygienic

# These should not be required but it fails on *BSD and Windows...
"yacc" or "win32caml": not_hygienic

# We want -g everywhere it's possible
true: debug

# By default everything we link needs the stdlib
true: use_stdlib

# The stdlib neither requires the stdlib nor debug information
<stdlib/**>: -use_stdlib, -debug

<**/*.ml*>: warn_error_A

<{bytecomp,driver,stdlib,tools,asmcomp,toplevel,typing,utils,lex,parsing}/**>: strict_sequence

"toplevel/topstart.byte": linkall

<ocamldoc/**>: -debug
<ocamldoc/*.ml>: ocamldoc_sources
<ocamldoc/*.ml*>: include_unix, include_str, include_dynlink
<ocamldoc/odoc.{byte,native}>: use_unix, use_str, use_dynlink

<camlp4/**/*.ml*>: camlp4boot, warn_Z
<camlp4/Camlp4_{config,import}.ml*>: -camlp4boot
"camlp4/Camlp4_import.ml": -warn_Z
<camlp4/build/*> or <camlp4/boot/*> or "camlp4/Camlp4/Struct/Lexer.ml": -camlp4boot, -warn_Z, warn_a
<camlp4/Camlp4Bin.{byte,native}> or <camlp4/{mkcamlp4,boot/camlp4boot}.byte>: use_dynlink
<camlp4/Camlp4Printers/**.ml>: include_unix
"camlp4/Camlp4/Struct/DynLoader.ml" or "camlp4/boot/Camlp4.ml": include_dynlink
<camlp4/Camlp4Top/**>: include_toplevel
<camlp4/camlp4{,boot,o,r,of,rf,oof,orf}.byte>: -debug

<ocamlbuild/*>: include_unix

<**/pervasives.ml> or <**/pervasives.mli> or <**/camlinternalOO.mli>: nopervasives
<**/camlinternalOO*.cmx>: inline(0)
<**/scanf*.cmx>: inline(9)
<**/*Labels.ml*>: nolabels

"tools/addlabels.ml": warn_s

<debugger/main.byte> or <debugger/main.native>: use_unix, linkall
<debugger/*.ml*>: include_unix

<otherlibs/{,win32}unix/unix.cm{,x}a> or <otherlibs/str/str.cm{,x}a>: ocamlmklib
<otherlibs/num/nums.cm{,x}a> or <otherlibs/dbm/dbm.cm{,x}a>: ocamlmklib
<otherlibs/{,win32}graph/graphics.cm{,x}a>: ocamlmklib
<otherlibs/threads/threads.cm{,x}a>: ocamlmklib
"otherlibs/threads/unix.cma": ocamlmklib
<otherlibs/bigarray/bigarray.cm{,x}a>: ocamlmklib

<otherlibs/{bigarray,systhreads}/**.ml*>: include_unix

# See the remark about static linking of threads.cmxa in myocamlbuild.ml
<otherlibs/systhreads/threads.cma>: ocamlmklib

"otherlibs/threads/pervasives.ml": include_unix

<otherlibs/**>: otherlibs
<otherlibs/{,win32}unix/**>: otherlibs_unix
<otherlibs/win32unix/**>: otherlibs_win32unix
<otherlibs/bigarray/**>: otherlibs_bigarray
<otherlibs/num/**>: otherlibs_num
<otherlibs/threads/**>: otherlibs_threads
"otherlibs/threads/unix.cma": -otherlibs_threads
<otherlibs/systhreads/**>: otherlibs_systhreads
<otherlibs/dbm/**>: otherlibs_dbm
<otherlibs/graph/**>: otherlibs_graph
<otherlibs/win32graph/**>: otherlibs_win32graph
<otherlibs/labltk/**>: otherlibs_labltk

<otherlibs/labltk/support/tkthread.ml*> or <otherlibs/labltk/browser/*.ml*>: bootstrap_thread
<otherlibs/labltk/**.{cm{,x},}a>: ocamlmklib
"otherlibs/labltk/browser/jglib.cma": -ocamlmklib
"otherlibs/labltk/browser/main.byte": use_unix, use_str, ocamlbrowser, bootstrap_thread
<otherlibs/labltk/{browser,jpf}/**.ml*>: include_unix, include_str
