[PATCH v3 wayland 3/3] doc: generate doxygen html output from the scanner

Pekka Paalanen ppaalanen at gmail.com
Fri Feb 26 15:00:15 UTC 2016


On Mon, 22 Feb 2016 08:57:47 +1000
Peter Hutterer <peter.hutterer at who-t.net> wrote:

> This switches the scanner to generate doxygen-compatible tags for the
> generated protocol headers, and hooks up the doxygen build to generate server
> and client-side API documentation.
> 
> Each protocol is a separate doxygen @page, with each interface a @subpage.
> Wayland only has one protocol, wayland-protocols will have these nested.
> Each protocol page has a list of interfaces and the copyright and description
> where available.
> All interfaces are grouped by doxygen @defgroup and @ingroups and appear in
> "Modules" in the generated output. Each interface subpage has the description
> and a link to the actual API doc.
> Function, struct and #defines are documented in doxygen style and associated
> with the matching interface.
> 
> Note that pages and groups have fixed HTML file names and are directly
> linkable/bookmark-able.
> 
> The @mainpage is a separate file that's included at build time. It doesn't
> contain much other than links to where the interesting bits are. It's a static
> file though that supports markdown, so we can extend it easily in the future.
> 
> For doxygen we need the new options EXTRACT_ALL and OPTIMIZE_OUTPUT_FOR_C so
> it scans C code properly. EXTRACT_STATIC is needed since most of the protocol
> hooks are static. WARN_IF_DOC_ERROR is required to silence the warnings when
> some parameters are documented but others aren't.
> 
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

Hi Peter,

I started looking at the output of this, and it took a while to realize
where all the output goes. Nothing much changes with the existing
documentation we install, so I got puzzled.

Then I looked at doc/doxygen/html/index.html and it didn't seem to have
what you described.

Then re-reading the Makefile.am and which directory it is in, I
realized I need to look at doc/doxygen/html/Client/index.html and
doc/doxygen/html/Server/index.html. These are the main outputs of this
patch, right?

I get the feeling the generated documentation is quite scattered and
not easy to find, but you probably intend to fix that in future?
I have quite forgot the earlier discussions, sorry.

Looking at e.g.
file:///home/pq/git/wayland/doc/doxygen/html/Client/group__iface__wl__surface.html
it seems all the function documentations are missing. Well, they were
missing also before.

I have opposed silencing the warnings about undocumented parameters
before. Is there something here that makes documenting all parameters
not possible, rather than just not having written docs in XML?

When I compare old and new wayland-client-protocol.h, I see that in the
beginning with the list of extern const struct wl_interface
wl_display_interface; etc. the documentation seems to be twice in the
new comment. Is that necessary?


Thanks,
pq

> ---
> Changes to v3:
> - rebased onto cde251a124d
> 
>  doc/doxygen/Makefile.am        |  27 +++++-
>  doc/doxygen/mainpage.dox       |  13 +++
>  doc/doxygen/wayland.doxygen.in |   5 +-
>  src/scanner.c                  | 214 ++++++++++++++++++++++++++---------------
>  4 files changed, 180 insertions(+), 79 deletions(-)
>  create mode 100644 doc/doxygen/mainpage.dox
> 
> diff --git a/doc/doxygen/Makefile.am b/doc/doxygen/Makefile.am
> index a8bb95f..e80c401 100644
> --- a/doc/doxygen/Makefile.am
> +++ b/doc/doxygen/Makefile.am
> @@ -1,7 +1,11 @@
>  
>  .SUFFIXES = .gv .png .map
>  
> -noinst_DATA = xml/Client/index.xml xml/Server/index.xml
> +noinst_DATA = \
> +              xml/Client/index.xml \
> +              xml/Server/index.xml \
> +              html/Client/index.html \
> +              html/Server/index.html
>  dist_noinst_DATA = wayland.doxygen.in
>  
>  scanned_src_files_shared = 				\
> @@ -27,6 +31,17 @@ scanned_src_files_man =					\
>  	$(top_srcdir)/src/wayland-client.h	\
>  	$(top_srcdir)/src/wayland-client-core.h
>  
> +extra_doxygen = \
> +	mainpage.dox
> +
> +extra_doxygen_Server = \
> +	$(top_builddir)/protocol/wayland-server-protocol.h \
> +	$(extra_doxygen)
> +
> +extra_doxygen_Client = \
> +	$(top_builddir)/protocol/wayland-client-protocol.h \
> +	$(extra_doxygen)
> +
>  diagramsdir := $(srcdir)/dot
>  diagramssrc := $(wildcard $(diagramsdir)/*.gv)
>  diagrams := $(patsubst $(diagramsdir)/%,xml/%,$(diagramssrc:.gv=.png))
> @@ -38,7 +53,7 @@ diagram_maps := $(patsubst $(diagramsdir)/%,xml/%,$(diagramssrc:.gv=.map))
>  dist_man3_MANS = $(shell test -d man && find man/man3 -name "wl_*.3" -printf "man/man3/%P\n")
>  
>  # Listing various directories that might need to be created.
> -alldirs := xml xml/Client xml/Server man/man3
> +alldirs := xml xml/Client xml/Server man/man3 html/Client html/Server
>  
>  $(diagrams): $(diagramssrc)
>  
> @@ -51,6 +66,13 @@ xml/%/index.xml: $(top_srcdir)/src/scanner.c $(scanned_src_files_%) wayland.doxy
>            echo "INPUT= $(scanned_src_files_$*)"; \
>            ) | $(DOXYGEN) -
>  
> +html/%/index.html: $(scanned_src_files_%) wayland.doxygen $(diagrams) $(diagram_maps) | html/%
> +	$(AM_V_GEN)(cat wayland.doxygen; \
> +          echo "GENERATE_HTML=YES"; \
> +          echo "HTML_OUTPUT=html/$*"; \
> +          echo "INPUT= $(scanned_src_files_$*) $(extra_doxygen_$*)"; \
> +          ) | $(DOXYGEN) -
> +
>  man/man3/wl_display.3: $(top_srcdir)/src/scanner.c $(scanned_src_files_man) wayland.doxygen | man/man3
>  	$(AM_V_GEN)(cat wayland.doxygen; \
>            echo "GENERATE_MAN=YES"; \
> @@ -74,6 +96,7 @@ all-local: man/man3/wl_display.3
>  
>  clean-local:
>  	rm -rf xml/
> +	rm -rf html/
>  	rm -rf man/
>  
>  EXTRA_DIST = $(diagramssrc)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 811 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20160226/39291385/attachment.sig>


More information about the wayland-devel mailing list