1151497Sru# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
2104862Sru#      Written by Werner Lemberg <wl@gnu.org>
3104862Sru# 
4104862Sru# This file is part of groff.
5104862Sru# 
6104862Sru# groff is free software; you can redistribute it and/or modify it under
7104862Sru# the terms of the GNU General Public License as published by the Free
8104862Sru# Software Foundation; either version 2, or (at your option) any later
9104862Sru# version.
10104862Sru# 
11104862Sru# groff is distributed in the hope that it will be useful, but WITHOUT ANY
12104862Sru# WARRANTY; without even the implied warranty of MERCHANTABILITY or
13104862Sru# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14104862Sru# for more details.
15104862Sru# 
16104862Sru# You should have received a copy of the GNU General Public License along
17104862Sru# with groff; see the file COPYING.  If not, write to the Free Software
18151497Sru# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
19104862Sru
20114402Sru# These may be overridden if cross-compiling.
21114402SruGROFFBIN=$(top_builddir)/src/roff/groff/groff
22151497SruGROFF_BIN_PATH=`echo $(groff_bin_dirs) | sed -e 's|  *|$(SH_SEP)|g'`
23114402Sru
24151497Sru# info files are distributed with the groff package, so makeinfo is
25151497Sru# usually not needed (however, to build from CVS you NEED it!)
26151497Sru# FIXME: Add autoconf test to check whether makeinfo exists.
27104862SruMAKEINFO=makeinfo
28104862Sru
29104862Srugroff_bin_dirs=\
30104862Sru  $(top_builddir)/src/roff/groff \
31104862Sru  $(top_builddir)/src/roff/troff \
32104862Sru  $(top_builddir)/src/preproc/pic \
33104862Sru  $(top_builddir)/src/preproc/eqn \
34104862Sru  $(top_builddir)/src/preproc/tbl \
35104862Sru  $(top_builddir)/src/preproc/grn \
36104862Sru  $(top_builddir)/src/preproc/refer \
37104862Sru  $(top_builddir)/src/preproc/soelim \
38104862Sru  $(top_builddir)/src/preproc/html \
39104862Sru  $(top_builddir)/src/devices/grops \
40104862Sru  $(top_builddir)/src/devices/grohtml
41104862Sru
42104862SruFFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
43104862SruTFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac
44104862Sru
45104862SruGROFF=\
46104862Sru  GROFF_COMMAND_PREFIX=''; \
47104862Sru  export GROFF_COMMAND_PREFIX; \
48114402Sru  GROFF_BIN_PATH=$(GROFF_BIN_PATH); \
49104862Sru  export GROFF_BIN_PATH; \
50104862Sru  sed -e "s;@VERSION@;$(version)$(revision);" $< \
51114402Sru  | $(GROFFBIN) $(TFLAG) $(FFLAG) -Upet -ww
52104862Sru
53104862SruDOCFILES=\
54104862Sru  meref.me \
55104862Sru  meintro.me \
56104862Sru  pic.ms
57104862Sru
58104862SruPROCESSEDDOCFILES=\
59104862Sru  meref.ps \
60104862Sru  meintro.ps \
61104862Sru  pic.ps
62104862Sru
63104862SruHTMLDOCFILES=\
64104862Sru  pic.html
65104862Sru
66151497SruHTMLDOCFILESALL=\
67151497Sru  pic*.html
68151497Sru
69104862SruHTMLDOCIMAGEFILES=\
70104862Sru  pic*
71104862Sru
72104862SruEXAMPLEFILES=\
73104862Sru  webpage.ms \
74151497Sru  groff.css \
75104862Sru  grnexmpl.g \
76104862Sru  grnexmpl.me
77104862Sru
78104862SruPROCESSEDEXAMPLEFILES=\
79104862Sru  webpage.ps \
80104862Sru  grnexmpl.ps
81104862Sru
82104862SruHTMLEXAMPLEFILES=\
83104862Sru  webpage.html
84104862Sru
85104862SruHTMLEXAMPLEIMAGEFILES=\
86104862Sru  webpage*
87104862Sru
88104862Sruimagedir=img
89104862Sruhtmldocimagedir=$(htmldocdir)/$(imagedir)
90104862Sruexampleimagedir=$(exampledir)/$(imagedir)
91104862Sru
92104862SruCLEANADD=\
93104862Sru  $(PROCESSEDDOCFILES) \
94104862Sru  $(PROCESSEDEXAMPLEFILES) \
95104862Sru  $(HTMLEXAMPLEFILES) \
96151497Sru  $(HTMLDOCFILESALL) \
97151497Sru  groff.aux groff.cp* groff.dvi groff.es* groff.fn* groff.html groff.ky* \
98151497Sru  groff.log groff.ma* groff.op* groff.pdf groff.pg* groff.ps groff.rq* \
99151497Sru  groff.st* groff.toc groff.tp groff.vr* \
100151497Sru  examples.stamp
101104862Sru
102104862SruCLEANDIRADD=\
103104862Sru  $(imagedir)
104104862Sru
105104862SruCLEANNOTSRCDIRADD=\
106151497Sru  groff.css \
107104862Sru  grnexmpl.g \
108104862Sru  groff \
109104862Sru  groff-* \
110104862Sru  gnu.eps \
111104862Sru  gnu.png
112104862Sru
113104862Sru.SUFFIXES: .me .ms .ps .html
114104862Sru
115104862Sru# For simplicity, we always call grn and eqn.
116104862Sru.me.ps:
117104862Sru	$(GROFF) -Tps -ge -me >$@
118104862Sru
119104862Sru.ms.html:
120104862Sru	$(GROFF) -P-p -P-b -P-I`basename $< | sed -e 's|.ms$$||'` \
121104862Sru		 -P-D$(imagedir) -Thtml -ms >$@
122104862Sru.ms.ps:
123104862Sru	$(GROFF) -Tps -ms -mwww >$@
124104862Sru
125104862Sru
126104862Sruall: groff $(PROCESSEDDOCFILES) prepare_examples \
127104862Sru     $(PROCESSEDEXAMPLEFILES) $(make_html)
128104862Sru
129104862Sruhtml: $(HTMLDOCFILES) $(HTMLEXAMPLEFILES)
130104862Sru
131151497Sruprepare_examples: examples.stamp
132151497Sru
133151497Sruexamples.stamp: grnexmpl.g groff.css gnu.eps
134104862Sru	test -f grnexmpl.g || cp $(srcdir)/grnexmpl.g .
135151497Sru	test -f groff.css || cp $(srcdir)/groff.css .
136151497Sru	if test ! -f gnu.eps; then \
137151497Sru	  if test -f $(srcdir)/gnu.eps; then \
138151497Sru	    cp $(srcdir)/gnu.eps .; \
139151497Sru	  elif test -f $(top_builddir)/contrib/pdfmark/gnu.eps; then \
140151497Sru	    cp $(top_builddir)/contrib/pdfmark/gnu.eps .; \
141151497Sru	  fi; \
142151497Sru	fi
143151497Sru	echo timestamp > $@
144104862Sru
145104862Srugroff: groff.texinfo
146151497Sru	$(MAKEINFO) --enable-encoding -I$(srcdir) $(srcdir)/groff.texinfo
147104862Sru
148104862Srugnu.eps: gnu.xpm
149114402Sru	xpmtoppm $(srcdir)/gnu.xpm | pnmdepth 15 | \
150114402Sru          $(pnmtops_nosetpage) -noturn -rle >$@
151151497Sru
152104862Srugnu.png: gnu.xpm
153104862Sru	xpmtoppm $(srcdir)/gnu.xpm | pnmdepth 15 | pnmtopng >$@
154104862Sru
155151497Srupic.html: pic.ms
156151497Sru	$(GROFF) -P-p -P-b -P-I`basename $< | sed -e 's|.ms$$||'` \
157151497Sru                 -P-D$(imagedir) -P-j`basename $< | sed -e 's|.ms$$||'` \
158151497Sru                 -Thtml -ms >$@
159151497Sru
160151497Sruwebpage.html: webpage.ms gnu.png groff.css
161104862Sruwebpage.ps: gnu.eps
162104862Sru
163104862Srugrnexmpl.ps: grnexmpl.me grnexmpl.g
164104862Sru
165104862Srudistfiles: groff gnu.eps gnu.png
166104862Sru
167104862Sruinstall_data: groff $(DOCFILES) $(PROCESSEDDOCFILES) $(make_install_html) \
168104862Sru              $(EXAMPLEFILES) $(PROCESSEDEXAMPLEFILES)
169104862Sru	-test -d $(infodir) || $(mkinstalldirs) $(infodir)
170104862Sru# Prefer info files in builddir over srcdir; we test for
171104862Sru# the existence of `groff'.
172104862Sru	d=.; \
173104862Sru	  test -f "groff" || d=$(srcdir); \
174151497Sru	  for f in $$d/groff `ls $$d/groff-*`; do \
175104862Sru	    rm -f $(infodir)/`basename $$f`; \
176104862Sru	    $(INSTALL_DATA) $$f $(infodir)/`basename $$f`; \
177104862Sru	  done
178104862Sru	$(INSTALL_INFO) --info-dir=$(infodir) $(infodir)/groff
179104862Sru	-test -d $(docdir) || $(mkinstalldirs) $(docdir)
180104862Sru	for f in $(DOCFILES); do \
181104862Sru	  rm -f $(docdir)/$$f; \
182104862Sru	  $(INSTALL_DATA) $(srcdir)/$$f $(docdir)/$$f; \
183104862Sru	done
184104862Sru	for f in $(PROCESSEDDOCFILES); do \
185104862Sru	  rm -f $(docdir)/$$f; \
186104862Sru	  $(INSTALL_DATA) $$f $(docdir)/$$f; \
187104862Sru	done
188104862Sru	-test -d $(exampledir) || $(mkinstalldirs) $(exampledir)
189104862Sru	for f in $(EXAMPLEFILES); do \
190104862Sru	  rm -f $(exampledir)/$$f; \
191104862Sru	  $(INSTALL_DATA) $(srcdir)/$$f $(exampledir)/$$f; \
192104862Sru	done
193104862Sru	for f in $(PROCESSEDEXAMPLEFILES); do \
194104862Sru	  rm -f $(exampledir)/$$f; \
195104862Sru	  $(INSTALL_DATA) $$f $(exampledir)/$$f; \
196104862Sru	done
197104862Sru
198104862Sruinstall_html: $(HTMLDOCFILES) $(HTMLEXAMPLEFILES)
199104862Sru	-test -d $(htmldocdir) || $(mkinstalldirs) $(htmldocdir)
200151497Sru	for f in `ls $(HTMLDOCFILESALL)`; do \
201104862Sru	  rm -f $(htmldocdir)/$$f; \
202104862Sru	  $(INSTALL_DATA) $$f $(htmldocdir)/$$f; \
203104862Sru	done
204104862Sru	-test -d $(htmldocimagedir) || $(mkinstalldirs) $(htmldocimagedir)
205104862Sru	rm -f $(htmldocimagedir)/$(HTMLDOCIMAGEFILES)
206104862Sru	$(INSTALL_DATA) $(imagedir)/$(HTMLDOCIMAGEFILES) $(htmldocimagedir)
207104862Sru	-test -d $(exampledir) || $(mkinstalldirs) $(exampledir)
208104862Sru	for f in $(HTMLEXAMPLEFILES); do \
209104862Sru	  rm -f $(exampledir)/$$f; \
210104862Sru	  $(INSTALL_DATA) $$f $(exampledir)/$$f; \
211104862Sru	done
212104862Sru	-test -d $(exampleimagedir) || $(mkinstalldirs) $(exampleimagedir)
213104862Sru	rm -f $(exampleimagedir)/$(HTMLEXAMPLEIMAGEFILES)
214104862Sru	$(INSTALL_DATA) $(imagedir)/$(HTMLEXAMPLEIMAGEFILES) $(exampleimagedir)
215104862Sru
216104862Sruuninstall_sub:
217151497Sru	-for f in groff `ls groff-*`; do \
218104862Sru	  rm -f $(infodir)/$$f; \
219104862Sru	done
220151497Sru	$(INSTALL_INFO) --remove --info-dir=$(infodir) $(infodir)/groff
221104862Sru	-for f in $(DOCFILES) $(PROCESSEDDOCFILES); do \
222104862Sru	  rm -f $(docdir)/$$f; \
223104862Sru	done
224151497Sru	-for f in `ls $(HTMLDOCFILESALL)`; do \
225104862Sru	  rm -f $(htmldocdir)/$$f; \
226104862Sru	done
227104862Sru	-rm -f $(htmldocimagedir)/$(HTMLDOCIMAGEFILES)
228104862Sru	-rmdir $(htmldocimagedir)
229151497Sru	-for f in $(EXAMPLEFILES) $(PROCESSEDEXAMPLEFILES) $(HTMLEXAMPLEFILES); do \
230104862Sru	  rm -f $(exampledir)/$$f; \
231104862Sru	done
232104862Sru	-rm -f $(exampleimagedir)/$(HTMLEXAMPLEIMAGEFILES)
233104862Sru	-rmdir $(exampleimagedir)
234