On Nov 4, 2007, at 7:59 PM, Jason Curl wrote:
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
Automake can infer the suffixes automagically, you don't need to fiddle with SUFFIXES.
.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 @[EMAIL PROTECTED] Did I miss something?
It works for me, that's weird. Do you see the definition of MAN2HTML in `Makefile'?
By the way, I'd do this instead: AC_PATH_PROG([MAN2HTML], [man2html]) test x"$MAN2HTML" = x && $as_unset MAN2HTML AM_MISSING_PROG([MAN2HTML], [man2html]) So that if the user hasn't got man2html installed, they will get: /bin/sh /tmp/ac/missing --run man2html myman.3 myman.html /tmp/ac/missing: line 54: man2html: command not found WARNING: `man2html' is needed, and is missing on your system. You might have modified some files without having theproper tools for further handling them. Check the `README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing `man2html' program.
make: *** [myman.html] Error 1The $as_unset thing is to remove the variable MAN2HTML, in which case AM_MISSING_PROG will enter into action.
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/libmofo/convertstring.html'/usr/bin/install: cannot stat `../../../../code/libmofo/man/ convertstring.html': No such file or directorymake[3]: *** [install-htmlDATA] Error 1make[3]: Leaving directory `/home/jcurl/mofo/build/windows/libmofo/ man'make[2]: *** [install-am] Error 2make[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...
Ah, then I see two ways out:1. Consider that the HTML pages are BUILT_SOURCES. This will entail that they will be distributed (and you shouldn't list them in CLEANFILES) so that people who don't have man2html and who simply want to build your package without changing it can have the pre- generated HTML pages right away. 2. Use an Automake conditional to fill the html_DATA variable only if configure detected that man2html was available.
I prefer 1. better, since people *want* the documentation, without the hassle of installing all the dependencies to build it. If you go for 2., consider providing a separate package that contains the pre- built documentation.
Cheers, -- Benoit Sigoure aka Tsuna EPITA Research and Development Laboratory
PGP.sig
Description: This is a digitally signed message part