Commit | Line | Data |
---|---|---|
552b13ca WJ |
1 | #Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc. |
2 | # Written by James Clark (jjc@jclark.uucp) | |
3 | # | |
4 | #This file is part of groff. | |
5 | # | |
6 | #groff is free software; you can redistribute it and/or modify it under | |
7 | #the terms of the GNU General Public License as published by the Free | |
8 | #Software Foundation; either version 1, or (at your option) any later | |
9 | #version. | |
10 | # | |
11 | #groff is distributed in the hope that it will be useful, but WITHOUT ANY | |
12 | #WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 | #FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 | #for more details. | |
15 | # | |
16 | #You should have received a copy of the GNU General Public License along | |
17 | #with groff; see the file LICENSE. If not, write to the Free Software | |
18 | #Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
19 | ||
20 | # Define PAGE to be letter if your PostScript printer uses 8.5x11 paper (USA) | |
21 | # and define it to be A4, if it uses A4 paper (rest of the world). | |
22 | PAGE=A4 | |
23 | #PAGE=letter | |
24 | ||
25 | # BINDIR says where to install executables. | |
26 | BINDIR=/usr/local/bin | |
27 | ||
28 | GROFFLIBDIR=/usr/local/lib/groff | |
29 | ||
30 | # FONTDIR says where to install dev*/*. | |
31 | FONTDIR=$(GROFFLIBDIR)/font | |
32 | ||
33 | # FONTPATH says where to look for dev*/*. | |
34 | FONTPATH=.:$(FONTDIR):/usr/local/lib/font:/usr/lib/font | |
35 | ||
36 | # MACRODIR says where to install macros. | |
37 | MACRODIR=$(GROFFLIBDIR)/tmac | |
38 | ||
39 | # MACROPATH says where to look for macro files. | |
40 | MACROPATH=.:$(MACRODIR):/usr/lib/tmac | |
41 | ||
42 | # DEVICE is the default device. | |
43 | DEVICE=ps | |
44 | ||
45 | # PSPRINT is the command to use for printing a PostScript file. | |
46 | # It must be a simple command, not a pipeline. | |
47 | PSPRINT=lpr | |
48 | ||
49 | # DVIPRINT is the command to use for printing a TeX dvi file. | |
50 | # It must be a simple command, not a pipeline. | |
51 | DVIPRINT=lpr -d | |
52 | ||
53 | # HYPHENFILE is the file containing the hyphenation patterns. | |
54 | HYPHENFILE=$(GROFFLIBDIR)/hyphen | |
55 | ||
56 | # MANROOT is the root of the man page directory tree. | |
57 | MANROOT=/usr/local/man | |
58 | ||
59 | # MAN1EXT is the man section for user commands. | |
60 | MAN1EXT=1 | |
61 | MAN1DIR=$(MANROOT)/man$(MAN1EXT) | |
62 | ||
63 | # MAN5EXT is the man section for file formats. | |
64 | MAN5EXT=5 | |
65 | MAN5DIR=$(MANROOT)/man$(MAN5EXT) | |
66 | ||
67 | # MAN7EXT is the man section for macros. | |
68 | MAN7EXT=7 | |
69 | MAN7DIR=$(MANROOT)/man$(MAN7EXT) | |
70 | ||
71 | # The groff ms macros will be available as -m$(TMAC_S). | |
72 | # If you use `TMAC_S=s', you can use the Unix ms macros by using | |
73 | # groff -ms -M/usr/lib/tmac. | |
74 | TMAC_S=gs | |
75 | ||
76 | # Include -DBROKEN_SPOOLER in CPPDEFINES if you have a PostScript | |
77 | # spooler or previewer that is unable to cope with anything after | |
78 | # %%EndProlog and before the first page (old versions of TranScript | |
79 | # have this problem) or gets confused by included documents (the Sun | |
80 | # pageview previewer has this problem), or if you are going to be | |
81 | # sharing PostScript documents with others who might be running such a | |
82 | # spooler or previewer. | |
83 | # Include -DCFRONT_ANSI_BUG if you are using AT&T C++ 2.0 with an ANSI C | |
84 | # compiler backend. | |
85 | # Include -DHAVE_VFORK if you have vfork(). | |
86 | # Include -DHAVE_SYS_SIGLIST if you have sys_siglist[]. | |
87 | # Include -DHAVE_UNION_WAIT if wait() is declared by osfcn.h to take | |
88 | # an argument of type union wait * (Sun C++ does this). Don't include | |
89 | # it if you're using the libg++ header files. | |
90 | CPPDEFINES=-DBROKEN_SPOOLER -DHAVE_VFORK -DHAVE_SYS_SIGLIST # -DHAVE_UNION_WAIT -DCFRONT_ANSI_BUG | |
91 | ||
92 | # Uncomment the next line if you don't have fmod in your math library. | |
93 | # I believe this is needed on Ultrix and BSD 4.3. | |
94 | # FMOD=fmod.o | |
95 | ||
96 | # Uncomment the next line if you don't have strtol in your C library. | |
97 | # I believe this is needed on BSD 4.3. | |
98 | # STRTOL=strtol.o | |
99 | ||
100 | # Additional flags needed to compile lib/malloc.c | |
101 | # Use this with BSD. | |
102 | MALLOCFLAGS=-DBSD | |
103 | # Use this with System V | |
104 | # MALLOCFLAGS=-DUSG | |
105 | # Use this with SunOS 4.1 | |
106 | # MALLOCFLAGS=-DBSD -DSUNOS_LOCALTIME_BUG | |
107 | ||
108 | # Comment this out if the GNU malloc gives you problems, or if you would | |
109 | # prefer to use the system malloc. | |
110 | MALLOC=malloc.o | |
111 | ||
112 | GROFF= | |
113 | # Comment the next line out if groff.c gives problems. | |
114 | GROFF=groff | |
115 | ||
116 | # CC is the C++ compiler | |
117 | CC=g++ | |
118 | # I'm told that -fno-inline is needed on a 68030-based Apollo | |
119 | # CC=g++ -fno-inline | |
120 | ||
121 | # OLDCC is the C compiler. | |
122 | OLDCC=gcc | |
123 | ||
124 | PROFILE_FLAG= | |
125 | DEBUG_FLAG=-g | |
126 | OPTIMIZE_FLAG=-O | |
127 | WARNING_FLAGS=#-Wall -Wcast-qual -Wwrite-strings | |
128 | ||
129 | # Use this to pass additional flags on the command line. | |
130 | XCFLAGS= | |
131 | ||
132 | # CFLAGS are passed to sub makes | |
133 | CFLAGS=$(PROFILE_FLAG) $(DEBUG_FLAG) $(OPTIMIZE_FLAG) $(WARNING_FLAGS) \ | |
134 | $(CPPDEFINES) $(XCFLAGS) | |
135 | ||
136 | XOLDCFLAGS= | |
137 | # OLDCFLAGS are passed to sub makes | |
138 | OLDCFLAGS=$(DEBUG_FLAG) $(PROFILE_FLAG) $(OPTIMIZE_FLAG) $(XOLDCFLAGS) | |
139 | ||
140 | XLDFLAGS= | |
141 | LDFLAGS=$(PROFILE_FLAG) $(DEBUG_FLAG) $(XLDFLAGS) | |
142 | # Libraries needed for linking C++ programs. | |
143 | LIBS= | |
144 | # Libraries needed for linking C++ programs that use libm.a. | |
145 | MLIBS=$(LIBS) -lm | |
146 | ||
147 | AR=ar | |
148 | ||
149 | # Define RANLIB to be empty if you don't have ranlib. | |
150 | RANLIB=ranlib | |
151 | ||
152 | # YACC can be either yacc or bison -y | |
153 | YACC=bison -y | |
154 | YACCFLAGS=-v | |
155 | ||
156 | ETAGS=/usr/local/bin/etags | |
157 | # Flag to make etags treat *.[ch] files as C++ | |
158 | ETAGSFLAGS=-p | |
159 | ||
160 | SHELL=/bin/sh | |
161 | ||
162 | SUBDIRS=lib troff pic tbl eqn etc driver ps tty dvi macros man | |
163 | ||
164 | # SUBFLAGS says what flags to pass to sub makes | |
165 | SUBFLAGS="CC=$(CC)" "CFLAGS=$(CFLAGS)" "LDFLAGS=$(LDFLAGS)" \ | |
166 | "OLDCC=$(OLDCC)" "OLDCFLAGS=$(OLDCFLAGS)" \ | |
167 | "YACC=$(YACC)" "YACCFLAGS=$(YACCFLAGS)" \ | |
168 | "DEVICE=$(DEVICE)" "FONTPATH=$(FONTPATH)" "MACROPATH=$(MACROPATH)" \ | |
169 | "MALLOCFLAGS=$(MALLOCFLAGS)" "MALLOC=$(MALLOC)" \ | |
170 | "FMOD=$(FMOD)" "STRTOL=$(STRTOL)" \ | |
171 | "AR=$(AR)" "RANLIB=$(RANLIB)" "LIBS=$(LIBS)" "MLIBS=$(MLIBS)" \ | |
172 | "FONTDIR=$(FONTDIR)" "BINDIR=$(BINDIR)" "PAGE=$(PAGE)" \ | |
173 | "MACRODIR=$(MACRODIR)" "HYPHENFILE=$(HYPHENFILE)" \ | |
174 | "TMAC_S=$(TMAC_S)" "MAN1EXT=$(MAN1EXT)" "MAN1DIR=$(MAN1DIR)" \ | |
175 | "MAN5EXT=$(MAN5EXT)" "MAN5DIR=$(MAN5DIR)" \ | |
176 | "MAN7EXT=$(MAN7EXT)" "MAN7DIR=$(MAN7DIR)" | |
177 | ||
178 | all: $(SUBDIRS) $(GROFF) shgroff | |
179 | ||
180 | $(SUBDIRS): FORCE | |
181 | @cd $@; \ | |
182 | echo Making all in $@; \ | |
183 | $(MAKE) $(SUBFLAGS) all | |
184 | ||
185 | troff pic tbl eqn etc ps tty dvi: lib | |
186 | ps tty dvi: driver | |
187 | ||
188 | TAGS: FORCE | |
189 | @for dir in $(SUBDIRS); do \ | |
190 | echo Making TAGS in $$dir; \ | |
191 | (cd $$dir; $(MAKE) "ETAGSFLAGS=$(ETAGSFLAGS)" "ETAGS=$(ETAGS)" TAGS); \ | |
192 | done | |
193 | ||
194 | topclean: FORCE | |
195 | -rm -f shgroff | |
196 | -rm -f groff *.o core | |
197 | ||
198 | clean: topclean FORCE | |
199 | @for dir in $(SUBDIRS) doc; do \ | |
200 | echo Making clean in $$dir; \ | |
201 | (cd $$dir; $(MAKE) clean); done | |
202 | ||
203 | distclean: topclean FORCE | |
204 | @for dir in $(SUBDIRS) doc; do \ | |
205 | echo Making distclean in $$dir; \ | |
206 | (cd $$dir; $(MAKE) distclean); done | |
207 | ||
208 | # You really don't want to use this target. | |
209 | realclean: topclean FORCE | |
210 | @for dir in $(SUBDIRS) doc; do \ | |
211 | echo Making realclean in $$dir; \ | |
212 | (cd $$dir; $(MAKE) realclean); done | |
213 | ||
214 | install.nobin: FORCE shgroff | |
215 | -[ -d $(BINDIR) ] || mkdir $(BINDIR) | |
216 | -[ -d $(GROFFLIBDIR) ] || mkdir $(GROFFLIBDIR) | |
217 | -[ -d $(MANROOT) ] || mkdir $(MANROOT) | |
218 | @for dir in $(SUBDIRS); do \ | |
219 | echo Making install.nobin in $$dir; \ | |
220 | (cd $$dir; $(MAKE) $(SUBFLAGS) install.nobin); done | |
221 | if [ -z "$(GROFF)" ] ; then cp shgroff $(BINDIR)/groff ; fi | |
222 | ||
223 | install.bin: FORCE $(GROFF) | |
224 | -[ -d $(BINDIR) ] || mkdir $(BINDIR) | |
225 | @for dir in $(SUBDIRS); do \ | |
226 | echo Making install.bin in $$dir; \ | |
227 | (cd $$dir; $(MAKE) $(SUBFLAGS) install.bin); done | |
228 | if [ -n "$(GROFF)" ] ; then cp groff $(BINDIR)/groff ; fi | |
229 | ||
230 | install: install.bin install.nobin | |
231 | ||
232 | install.mm: FORCE | |
233 | -[ -d $(GROFFLIBDIR) ] || mkdir $(GROFFLIBDIR) | |
234 | -[ -d $(MACRODIR) ] || mkdir $(MACRODIR) | |
235 | sed -f macros/fixmacros.sed -e 's;/usr/lib/tmac;$(MACRODIR);' \ | |
236 | /usr/lib/macros/mmt >$(MACRODIR)/tmac.m | |
237 | sed -f macros/fixmacros.sed /usr/lib/tmac/sys.name \ | |
238 | >$(MACRODIR)/sys.name | |
239 | patch -s $(MACRODIR)/tmac.m macros/mm.diff | |
240 | ||
241 | shgroff: groff.sh | |
242 | @echo Making $@ from groff.sh | |
243 | @-rm -f $@ | |
244 | @sed -e "s;@BINDIR@;$(BINDIR);" \ | |
245 | -e "s;@DEVICE@;$(DEVICE);" \ | |
246 | -e "s;@PROG_PREFIX@;$(PROG_PREFIX);" \ | |
247 | -e "s;@FONTDIR@;$(FONTDIR);" \ | |
248 | -e "s;@PSPRINT@;$(PSPRINT);" \ | |
249 | -e "s;@DVIPRINT@;$(DVIPRINT);" \ | |
250 | groff.sh >$@ || rm -f $@ | |
251 | @chmod +x $@ | |
252 | ||
253 | groff: groff.o lib/libgroff.a | |
254 | $(CC) $(LDFLAGS) -o $@ groff.o lib/libgroff.a $(LIBS) | |
255 | ||
256 | lib/libgroff.a: lib | |
257 | ||
258 | groff.o: groff.c stringify | |
259 | $(CC) -c -Ilib $(CFLAGS) -DDEVICE=\"$(DEVICE)\" \ | |
260 | "-DPSPRINT=`$(SHELL) stringify $(PSPRINT)`" \ | |
261 | "-DDVIPRINT=`$(SHELL) stringify $(DVIPRINT)`" \ | |
262 | groff.c | |
263 | ||
264 | groff.o: lib/lib.h lib/errarg.h lib/error.h lib/stringclass.h lib/font.h | |
265 | ||
266 | bindist: all VERSION Makefile.bd README.bd FORCE | |
267 | -[ -d bindist ] || mkdir bindist | |
268 | @topdir=`pwd`; \ | |
269 | for dir in $(SUBDIRS); do \ | |
270 | (cd $$dir; $(MAKE) "BINDIR=$$topdir/bindist" install.bin); done | |
271 | cp README.bd bindist/README | |
272 | cp VERSION bindist | |
273 | if [ "$(GROFF)" ] ; then cp groff bindist/groff ; fi | |
274 | @echo Making bindist/Makefile | |
275 | @sed -e "s;@GROFFLIBDIR@;$(GROFFLIBDIR);" \ | |
276 | -e "s;@FONTDIR@;$(FONTDIR);" \ | |
277 | -e "s;@FONTPATH@;$(FONTPATH);" \ | |
278 | -e "s;@MACRODIR@;$(MACRODIR);" \ | |
279 | -e "s;@MACROPATH@;$(MACROPATH);" \ | |
280 | -e "s;@HYPHENFILE@;$(HYPHENFILE);" \ | |
281 | -e "s;@DEVICE@;$(DEVICE);" \ | |
282 | -e "s;@GROFF@;$(GROFF);" \ | |
283 | Makefile.bd >bindist/Makefile | |
284 | ||
285 | FORCE: |