= OCaml Task Force Policy area = == OCamldoc API Ref == === Why ? === Since ocaml is shipped with ocamldoc, most of documentation can be generated out of *.mli/*.ml files. This possiblity is very interesting, since it should help ocaml programmer to have a consistent bookshelf of OCaml library. === How ? === ==== HTML ==== HTML generation is the most easy to handle. There is no name clash possibility and we can share date through the Applications/Programming section of doc-base (integrated bookshelf tools of debian). Most of the package can generate ocamldoc HTML data (since it is a common way to share this kind of information). This is a first step toward generating a consistent HTML based documentation. ==== Man ==== Manpages are quite common in C/Perl programming languages. Generating ocamldoc manpages is possible -- but not done for most of the package. There is a high probability of name clash (just because there is a high possibility that a C function with the same name exists). One way to avoid name clash is to have a specific man section (just as Perl with .3pm). === Tools === ==== ocamldoc-api-ref-config ==== This tool handle data that should be useful to generate required file to comply with coming OCaml Documentation policy. This tool behaves like *-config script. Quick command line argument summary: Usage: ocamldoc-api-ref-config [--html-directory|--doc-base-generate] PACKAGE Options: ||--html-directory||Output the directory name where the generated ocamldoc generated file should go|| ||--doc-base-generate||Generate debian/PACKAGE.doc-base.ocamldoc-apiref and output file created|| ||--manpages||Generate debian/PACKAGE.manpages (possible extension)|| Example: $> ocamldoc-api-ref-config --html-directory libzip-ocaml-dev /usr/share/doc/libzip-ocaml-dev/html/api $> ocamldoc-api-ref-config --doc-base-generate libzip-ocaml-dev debian/libzip-ocaml-dev.doc-base.ocamldoc-apiref CDBS integration: @OCamlDocApiRef@ is substitued in debian/*.in file by the $(shell ocamldoc-api-ref-config --html-directory $(pkg)) (maybe this will need to redesign the loop of *.in file in the CDBS file to check to what package belongs the *.in file) This can be used in *.install.in to install documentation in the good directory. The dependency for compiling the documentation (-I flags) must include all the directory generated in every package which are under the OCAML_STDLIB_DIR. A OCAML_OCAMLDOC_OCAMLFIND_FLAGS variable will allow to use ocamlfind to solve external dependency when invoking ocamldoc. A rule will generate the .doc-base.ocamldoc-apiref for all packages defined in OCAML_OCAMLDOC_PACKAGES_DOCBASE variable. A rule will generate the documentation and the .doc-base.ocamldoc-apiref for all packages defined in OCAML_OCAMLDOC_PACKAGES variable.