5050
5151.PHONY : clean
5252clean :
53- @echo " Nothing to do - 'make clean' is a no-op. "
53+ rm -rf build
5454
5555# The 'man' target creates cowsay.1, cowthink.1, and other man pages.
5656#
5757# The 'man' target is intended for use at authoring time, not at build time, so it is not
5858# part of the normal build sequence, and its outputs are checked into the source repo.
5959#
60- # This is partially to simplify the build process, and partially to preserve the internal
61- # "update" timestamp inside the man pages. We also do this at authoring time instead of
62- # install time to avoid introducing a dependency on Asciidoctor for users .
60+ # This is to simplify the build process. We also do this at authoring time instead of
61+ # install time to avoid introducing a dependency on Asciidoctor for end users, who may
62+ # want to run directly from the repo without a build step .
6363
6464.PHONY : man
6565man : man/man1/cowsay.1
@@ -75,23 +75,23 @@ man: man/man1/cowsay.1
7575# than just irrelevant metadata.
7676man/man1/cowsay.1 : man-src/man1/cowsay.1.adoc man-src/normalize-manpage.sed
7777 @set -e; \
78- tmpdir=" tmp$$$$ " ; \
79- if $( ASCIIDOCTOR) -b manpage -D " $$ tmpdir/man/man1" man-src/man1/cowsay.1.adoc; then \
80- sed -f man-src/normalize-manpage.sed man/man1/cowsay.1 > " $$ tmpdir/man/man1/normalized-old-cowsay.1" ; \
81- sed -f man-src/normalize-manpage.sed " $$ tmpdir/man/man1/cowsay.1" > " $$ tmpdir/man/man1/normalized-new-cowsay.1" ; \
82- if ! test -e " man/man1/cowsay.1" || ! cmp " $$ tmpdir/man/man1/normalized-old-cowsay.1" " $$ tmpdir/man/man1/normalized-new-cowsay.1" > /dev/null; then \
83- echo " Updating man/man1/cowsay.1" ; \
84- mv -f " $$ tmpdir/man/man1/cowsay.1" man/man1/cowsay.1; \
85- rm -f " $$ tmpdir/man/man1/normalized-old-cowsay.1" ; \
86- rm -f " $$ tmpdir/man/man1/normalized-new-cowsay.1" ; \
87- rm -f " $$ tmpdir/man/man1/cowthink.1" ; \
88- rmdir " $$ tmpdir/man/man1" ; \
89- rmdir " $$ tmpdir/man" ; \
90- rmdir " $$ tmpdir" ; \
78+ if ! test -d build; then mkdir build; fi ; \
79+ tmpdir=" build/tmp$$$$ " ; \
80+ if $( ASCIIDOCTOR) -a reproducible -b manpage -D " $$ tmpdir/man/man1" man-src/man1/cowsay.1.adoc; then \
81+ if test -f man/man1/cowsay.1; then \
82+ sed -f man-src/normalize-manpage.sed man/man1/cowsay.1 > " $$ tmpdir/man/man1/normalized-old-cowsay.1" ; \
83+ sed -f man-src/normalize-manpage.sed " $$ tmpdir/man/man1/cowsay.1" > " $$ tmpdir/man/man1/normalized-new-cowsay.1" ; \
84+ if ! test -e " man/man1/cowsay.1" || ! cmp " $$ tmpdir/man/man1/normalized-old-cowsay.1" " $$ tmpdir/man/man1/normalized-new-cowsay.1" > /dev/null; then \
85+ echo " Updating man/man1/cowsay.1" ; \
86+ mv -f " $$ tmpdir/man/man1/cowsay.1" man/man1/cowsay.1; \
87+ else \
88+ echo " man/man1/cowsay.1 is up to date" ; \
89+ fi ; \
9190 else \
92- echo " man/man1/cowsay.1 is up to date " ; \
93- rm -rf " $$ tmpdir" ; \
91+ echo " Regenerating man/man1/cowsay.1" ; \
92+ mv -f " $$ tmpdir/man/man1/cowsay.1 " man/man1/cowsay.1 ; \
9493 fi ; \
94+ rm -rf " $$ tmpdir" ; \
9595 else \
9696 echo " Error updating man/man1/cowsay.1" ; \
9797 exit 1; \
0 commit comments