[RFC wayland] doc: generate doxygen html output from the scanner
Pekka Paalanen
ppaalanen at gmail.com
Sun Nov 8 23:32:52 PST 2015
On Sat, 7 Nov 2015 09:53:10 +1000
Peter Hutterer <peter.hutterer at who-t.net> wrote:
> On 7/11/2015 01:27 , Pekka Paalanen wrote:
> > On Thu, 29 Oct 2015 11:48:01 +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.
> >>
> >> For the wayland protocol, this generates a mainpage with the copyright
> >> information, all interfaces are separated by doxygen groups and thus listed in
> >> "Modules" in the generated output.
> >>
> >> Function, struct and #defines are documented in doxygen style and associated
> >> with the matching interface.
> >> ---
> >> This is an RFC for now, we need to agree on whether we want to switch to
> >> doxygen style first. Other changes still missing here are:
> >> * afaict, the summary can be dropped for most entries, it doesn't seem
> >> to add any value if a long description is there
> >> * currently parsing too many header files, we should only parse the protocol
> >> ones for a cleaner documentation.
> >> * future work for wayland-protocols is to add the various protocols at the
> >> @page level
> >> * a couple of things don't have the doxygen tag yet (mostly #defines)
> >>
> >> doc/doxygen/Makefile.am | 22 +++++-
> >> doc/doxygen/wayland.doxygen.in | 4 +-
> >> src/scanner.c | 165 ++++++++++++++++++++++++++---------------
> >> 3 files changed, 130 insertions(+), 61 deletions(-)
> >
> > Hi Peter,
> >
> > this is a cool idea. I still haven't grasped all the details, but I
> > think we could use the following sets of "appendices" to the Wayland
> > documentation (prose):
> >
> > A. language-agnostic protocols docs
> > B. libwayland library API docs, server and client separated
> > C. protocol C bindings docs, server and client separated
> >
> > A and B are what we already have in some form, and C is what you are
> > now adding. Excellent!
> >
> > A is generated directly from XML, and intended for people working on
> > other language bindings than our C bindings (when we get part C for
> > people working in C).
> >
> > B is generated through Doxygen scanning non-generated code. It is
> > useful to keep the C bindings docs out of this, so that people writing
> > other language bindings have a coherent doc and they don't need to
> > check whether a function listed is something they are supposed to use
> > or not (i.e. generated or not).
>
> fwiw, it'd be possible to scan the core libraries as well and put them
> in a separate doxygen group/page. That way they'd resolve internally
> (e.g. an arg of type wl_resource) but still be separated in the doc.
Hi Peter,
sounds good.
> > A and C contain basically the same information, just laid out
> > differently: C talks in the proper C function and type names, while A
> > uses just the protocol names. C is further duplicated between server
> > and client docs.
> >
> > I'm not sure if we need server:B+C and client:B+C docs as such, since I
> > don't think there are many references between B and C. It might be
> > enough to have one TOC page for "server" and one for "client" which
> > then somehow link to B and C parts.
> >
> > Anyway, that's just random thoughts.
> >
> > What I would really like is a way to have links to A, B (and C) from the
> > *prose*. Looks like we can already have links to A at least.
> >
> > What bothers me in the current B from a user point of view is that I
> > don't know how to get a link to a specific function's documentation. I
> > don't think there is a TOC listing all functions, and when I find the
> > function I'm looking for, I can't take a link to it for e.g. pasting in
> > IRC. Doxygen docs themselves have all the links and TOCs, but the
> > conversion to docbook loses too much currently.
>
> I think this should be possible to extract with a bit of xsl tweaking,
> I'll try to look into that.
>
> One problem with doxygen though is that you can't link directly to a
> function from external sources, the anchors are hashes rather than
> function names. You can only link to a page, a group and a struct.
Bummer. I was hoping that there might be some way to create those links
when passing everything including the prose through a single tool at
once, but I suppose that's not really possible if there is no output
mode in Doxygen that didn't use hashes as the anchors. And if the
hashes are too unstable to use - I think I recall seeing them change
for no good reason.
Unless maybe if we did convert all docbook to doxygen... but I don't
know what downsides that would have.
> > Ah, I hope I gave some ideas. Interesting work!
> >
> > When you say "whether we want to switch to doxygen style", do you mean
> > that we'd drop the conversion to docbook? Would we be working towards
> > completely replacing docbook with only doxygen?
>
> No, the current docbook is untouched. The difference is simply that we
> have a different doc style in the scanner sources that doesn't work for
> doxygen (e.g. @foo instead of @param foo). AFAICT we're not using that
> style for anything, so switching to doxygen won't hurt us there.
Sure. I wonder if the old scanner generated comment format follows
kerneldoc instead, maybe it was just a thinko. I had always assumed it
was already doxygen format, just unused by us.
That conversion part is definitely Acked-by me.
> And since docbook is generated from doxygen, any additional info we
> generate that's doxygen compatible will benefit the docbook conversion.
Cool.
> > I applied this patch and tried to build it, but it seems it generates
> > object destructor functions twice, e.g. wl_buffer_destroy, so the build
> > fails.
>
> Weird. Then again, this was just an RFC patch :) Have a look at the new
> patch I sent out, that one works properly and generates nicer output in
> general
>
> http://lists.freedesktop.org/archives/wayland-devel/2015-November/025238.html
I'll try. :-)
Thanks,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 811 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20151109/dfb0de08/attachment.sig>
More information about the wayland-devel
mailing list