Files
nethack/sys/unix/Makefile.doc
PatR e52f38b3a3 Guidebook make sequencing
Be able to run 'make Guidebook{|.txt|.ps}' in the doc subdirectory
without requring a full install first.

makedefs is no longer one of the first things built when building
nethack, and even if it was, nobody should have to rebuild all of
nethack after 'make spotless' when they just want to create one
or more of the formatted Guidebooks.  The 'roff versions (.ps and
also .txt) use makedefs as a filter by default, so wouldn't build
if it wasn't there.

Have Makefile.doc build makedefs when needed.

Clean up some dependencies in Makefile.utl.

Add a couple of comments to Makefile.src.
2021-09-27 01:30:53 -07:00

131 lines
4.4 KiB
Makefile

# NetHack Documentation Makefile.
# NetHack 3.7 Makefile.doc $NHDT-Date: 1596498290 2020/08/03 23:44:50 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.21 $
# Copyright (c) 2015 by Kenneth Lorber, Kensington, Maryland
# NetHack may be freely redistributed. See license for details.
# Root of source tree:
NHSROOT=..
# for Atari
# SHELL=E:/GEMINI2/MUPFEL.TTP
MAKEDEFS = ../util/makedefs
# Which version do we want to build? (XXX These are not used anywhere.)
GUIDEBOOK = Guidebook # regular ASCII file
#GUIDEBOOK = Guidebook.ps # PostScript file
#GUIDEBOOK = Guidebook.dvi # TeX device-independent file
# Some versions of col need -x to keep them from converting spaces to tabs;
# some versions of col don't do the conversion by default and don't
# recognize the option. Sigh.
COLCMD = col -bx
#COLCMD = col -b
# The command to use to generate a PostScript file
# PSCMD = ditroff | psdit
PSCMD = groff
# Use the "cat" GUIDECMD if nroff and/or tbl and/or col are not installed
# Not appropriate for creating Guidebook.txt.
# GUIDECMD = cat Guidebook.txt
#
# Single page. Might need adjustment to .pl value
# GUIDECMD= $(GUIDE_PREFORMAT) | perl -pe 's/^(.mt)$$/.pl 4720v\n.in 0\n.po 8\n.ll 64m\n$$1/' | nroff -c -Tascii | $(COLCMD)
#
GUIDECMD = $(GUIDE_PREFORMAT) | nroff -c -Tascii | $(COLCMD)
ONEPAGECMD = $(ONEPAGE_PREFORMAT) | nroff -c -Tascii | $(COLCMD) \
| sed -e '/EOF--EOF/,12345D'
# Only generate output for the current configuration:
NHGREP = $(MAKEDEFS) --grep --input - --output -
NEEDMAKEDEFS = $(MAKEDEFS)
# Generate output for all configurations:
#NHGREP = $(MAKEDEFS) --grep --input - --output - --grep-define ALLDOCS
#NEEDMAKEDEFS = $(MAKEDEFS)
# Fallback:
#NHGREP = cat
#NEEDMAKEDEFS =
GUIDE_PREFORMAT = cat Guidebook.mn | $(NHGREP) | tbl tmac.n -
# for Guidebook.dat, unpaginated version of Guidebook.txt
ONEPAGE_PREFORMAT = cat Gbk-1pg-pfx.mn Guidebook.mn Gbk-1pg-sfx.mn \
| $(NHGREP) | tbl tmac.n -
# the basic guidebook
Guidebook : Guidebook.mn tmac.n tmac.nh $(NEEDMAKEDEFS)
$(GUIDECMD) > Guidebook
# Fancier output for those with ditroff, psdit and a PostScript printer.
Guidebook.ps : Guidebook.mn tmac.n tmac.nh $(NEEDMAKEDEFS)
$(GUIDE_PREFORMAT) | $(PSCMD) > Guidebook.ps
# Guidebook.tex is the same as Guidebook.mn but formatted with LaTeX.
# - The invocation command for LaTeX may vary in different installations.
# - To print Guidebook.dvi you need to use a suitable dvi-driver.
# - LaTeX needs to be run twice; second pass uses Guidebook.aux made by first.
Guidebook.dvi : Guidebook.tex
latex Guidebook.tex
latex Guidebook.tex
# makedefs has more dependencies than these; this is mainly to cope with the
# case where it hasn't been built yet since it is usually needed for $(NHGREP)
# (note: 'make makedefs', not 'make $(MAKEDEFS)')
$(MAKEDEFS) : ../util/makedefs.c ../include/config.h ../src/mdlib.c \
../util/mdgrep.h
( cd ../util ; make makedefs )
GAME = nethack
MANDIR = /usr/man/man6
MANEXT = 6
# manual installation for most BSD-style systems
GAMEMANCREATE = cat nethack.6 | $(NHGREP) >
RCVRMANCREATE = cat recover.6 | $(NHGREP) >
DLBMANCREATE = cat dlb.6 | $(NHGREP) >
MDMANCREATE = cat makedefs.6 | $(NHGREP) >
# manual installation for most SYSV-style systems
# GAMEMANCREATE = cat nethack.6 | $(NHGREP) | nroff -man - >
# RCVRMANCREATE = cat recover.6 | $(NHGREP) | nroff -man - >
# DLBMANCREATE = cat dlb.6 | $(NHGREP) | nroff -man - >
# MDMANCREATE = cat makedefs.6 | $(NHGREP) | nroff -man - >
manpages:
-$(GAMEMANCREATE) $(MANDIR)/$(GAME).$(MANEXT)
-$(RCVRMANCREATE) $(MANDIR)/recover.$(MANEXT)
-$(DLBMANCREATE) $(MANDIR)/dlb.$(MANEXT)
-$(MDMANCREATE) $(MANDIR)/makedefs.$(MANEXT)
# manual creation for distribution
DISTRIB = Guidebook.txt nethack.txt recover.txt \
dlb.txt makedefs.txt
distrib: $(DISTRIB)
@echo "Plain text documentation is up to date."
Guidebook.txt : Guidebook.mn tmac.n tmac.nh $(NEEDMAKEDEFS)
$(GUIDECMD) > Guidebook.txt
Guidebook.dat : Gbk-1pg-pfx.mn Gbk-1pg-sfx.mn Guidebook.mn tmac.n tmac.nh \
$(NEEDMAKEDEFS)
$(ONEPAGECMD) > Guidebook.dat
MAN2TXT = $(NHGREP) | nroff -man - | $(COLCMD)
nethack.txt : nethack.6
cat nethack.6 | $(MAN2TXT) > nethack.txt
recover.txt : recover.6
cat recover.6 | $(MAN2TXT) > recover.txt
dlb.txt : dlb.6
cat dlb.6 | $(MAN2TXT) > dlb.txt
makedefs.txt : makedefs.6
cat makedefs.6 | $(MAN2TXT) > makedefs.txt
clean:
-rm -f Guidebook.aux Guidebook.log
spotless: clean
-rm -f Guidebook Guidebook.dat Guidebook.ps Guidebook.dvi
maintainer-clean: spotless
-rm -f $(DISTRIB)
# -rm -f Makefile