automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Generating 'cat' pages on make install


From: Jason Curl
Subject: Re: Generating 'cat' pages on make install
Date: Sun, 04 Nov 2007 19:59:28 +0100
User-agent: Thunderbird 2.0.0.6 (Windows/20070728)

Benoit SIGOURE wrote:
On Nov 4, 2007, at 2:40 PM, Jason Curl wrote:

So let's assume I've got a command on my build environment

groff -Tascii -mandoc myman.3 | col -b > mycat.3

I might even extend this to generate HTML instead of ASCII.

Later I'd be implementing a Perl script to convert what is in code comments to something else to then generate the man pages. These man pages document an API.
[...]
Well, may be I'll rephrase the question: Given a list of man pages in my Makefile.am, how can I write or extend automake (hopefully easily) to use that list that is already defined to run a command and copy it somewhere on make install, using the example I've provided?

I'd like to keep it in Automake if possible rather than having preconfigure, postconfigure scripts.

Hi Jason,
there are plenty of scripts to convert man pages to HTML (google://man2html) you don't need to write yours ;)
what I'd do in such a situation is:
Later I'd rather have all documentation embedded in my C code to reduce maintenance a little and a Perl script to extract what I want from C code was what I was referring to. I've started looking at how glibc does it. man2html is only the last step.

But I like your tip.


--Makefile.am--------------------------------------------------------
man3_MANS = myman.3 foo.3
man1_MANS = otherman.1
html_DATA = $(man3_MANS:.3=.html) $(man1_MANS:.1=.html)

.1.html:
    $(MAN2HTML) $^ -o $@
.3.html:
    $(MAN2HTML) $^ -o $@
---------------------------------------------------------------------

You don't need to change Automake or whatever. It's pretty simple and self-contained.
That's what I like, neat, small and self contained. Makes programming an art. But I'm having a bit of a programmers block.

I've implemented the following:

-----8<---- Makefile.am ----
man_MANS =                                                      \
   libmofo.3                                                   \
   convertstring.3                                             \
   mofobuilddate.3 mofobuildhost.3 mofoversion.3 mofoendian.3  \
   smsread.3

html_DATA = $(man_MANS:.3=.html)

CLEANFILES = $(html_DATA)

EXTRA_DIST = $(man_MANS)

all-local: $(html_DATA)

# When we 'make' we create the .html files
SUFFIXES = .html
.3.html:
   @MAN2HTML@ $^ > $@
-----8<---- configure.ac ----
...
AC_PATH_PROG(MAN2HTML,man2html,man2html)
...
--------------------

I haven't figured out how to define the variable $(MAN2HTML) instead using automake substitution with @address@hidden Did I miss something?

How can I prevent the rule from running if the user doesn't have 'man2html' in their path? I don't think I can just use a "dummy" command like echo, as the /usr/bin/install command would return an error:

/usr/bin/install -c -m 644 '../../../../code/libmofo/man/convertstring.html' '/home/jcurl/mofo/build/windows/release/share/doc/libm
ofo/convertstring.html'
/usr/bin/install: cannot stat `../../../../code/libmofo/man/convertstring.html': No such file or directory
make[3]: *** [install-htmlDATA] Error 1
make[3]: Leaving directory `/home/jcurl/mofo/build/windows/libmofo/man'
make[2]: *** [install-am] Error 2
make[2]: Leaving directory `/home/jcurl/mofo/build/windows/libmofo/man'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/jcurl/mofo/build/windows/libmofo'
make: *** [install-recursive] Error 1

Definitely not what I want...




reply via email to

[Prev in Thread] Current Thread [Next in Thread]