1# !/bin/sh
2#  Numdiff makefile
3#  Copyright (C)  2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017  Ivano Primi  <ivprimi@libero.it>
4#
5#   Copying and distribution of this file, with or without modification,
6#   are permitted in any medium without royalty provided the copyright
7#   notice and this notice are preserved.
8#
9# @configure_input@
10
11PACKAGE=numdiff
12PACKAGETWO=ndselect
13VERSION=5.9.0
14
15SHELL=/bin/sh
16.SUFFIXES:
17.SUFFIXES: .c .o
18
19prefix          =@prefix@
20exec_prefix     =@exec_prefix@
21bindir          =@bindir@
22docdir		=@docdir@
23localedir	=@localedir@
24infodir		=@infodir@
25mandir          =@mandir@
26srcdir          =@srcdir@
27VPATH           =@srcdir@
28
29BINDIR=$(bindir)
30DOCDIR=$(docdir)/$(PACKAGE)
31INFODIR=$(infodir)
32LOCALEDIR=$(localedir)
33MANDIR=$(mandir)/man1
34
35CC=@CC@
36@SET_MAKE@
37#MAKE=make
38
39MKDIR=$(srcdir)/shtool install -d
40DIST_MKDIR=$(srcdir)/shtool mkdir -f -m 777
41INSTALL=$(srcdir)/shtool install -c
42MOVE=$(srcdir)/shtool move -p
43INSTALL_PROGRAM=$(INSTALL)
44INSTALL_DATA=$(INSTALL) -m 644
45FIND=@FIND@
46INSTINFO=@INSTINFO@
47LS=ls
48CP=cp
49RM=rm -f
50RMDIR=rmdir
51RD=rm -f -R
52CAT=cat
53GZIP=gzip -f
54TAR=tar
55MSGFMT=msgfmt -c
56MSGMERGE=msgmerge
57XGETTEXT=xgettext -C -D$(srcdir) -k_ -kN_ --msgid-bugs-address=ivprimi@libero.it
58TEXI2HTML=makeinfo --html --no-split
59TEXI2INFO=makeinfo
60TEXI2PDF=texi2pdf
61TEXI2TXT=makeinfo --plaintext
62HELP2MAN=help2man -s 1 -m "User Commands"
63
64# flags for the preprocessor:
65CPPFLAGS        =-DPACKAGE="\"$(PACKAGE)\"" -DPACKAGE2="\"$(PACKAGETWO)\"" -DLOCALEDIR="\"$(LOCALEDIR)\"" -I$(srcdir) -I. @CPPFLAGS@
66# flags for the C compiler:
67CFLAGS          =@CFLAGS@
68
69# flags for the linker:
70LDFLAGS         =@LDFLAGS@
71# -L and -l options:
72LIBS            =@LIBS@ @LIB_CLOCK_GETTIME@
73
74OBJECTS= ./analyze.o ./arith.o ./bitvector.o ./cmpbuf.o ./cmpfns.o ./error.o ./exitfail.o ./flags.o ./getopt.o ./getopt1.o ./inout.o ./io.o ./linesplit.o ./main.o ./ndselect.o ./numutil.o ./options.o ./setmode.o ./side.o ./thrlist.o ./util.o ./xalloc-die.o ./xmalloc.o @LIBOBJS@
75
76OBJECTSONE=./analyze.o ./arith.o ./bitvector.o ./cmpbuf.o ./cmpfns.o ./error.o ./exitfail.o ./flags.o ./getopt.o ./getopt1.o ./inout.o ./io.o ./linesplit.o ./main.o ./numutil.o ./options.o ./setmode.o ./side.o ./thrlist.o ./util.o ./xalloc-die.o ./xmalloc.o @LIBOBJS@
77SOURCESONE=$(srcdir)/analyze.c $(srcdir)/arith.c $(srcdir)/bitvector.c $(srcdir)/cmpbuf.c $(srcdir)/cmpfns.c $(srcdir)/error.c $(srcdir)/errors.c $(srcdir)/exitfail.c $(srcdir)/flags.c $(srcdir)/getopt.c $(srcdir)/getopt1.c $(srcdir)/inout.c $(srcdir)/io.c $(srcdir)/linesplit.c $(srcdir)/main.c $(srcdir)/new.c $(srcdir)/number.c $(srcdir)/numutil.c $(srcdir)/options.c $(srcdir)/read_line.c $(srcdir)/setmode.c $(srcdir)/side.c $(srcdir)/thrlist.c $(srcdir)/util.c $(srcdir)/xalloc-die.c $(srcdir)/xmalloc.c
78OBJECTSTWO=./bitvector.o ./getopt.o ./getopt1.o ./linesplit.o ./ndselect.o
79SOURCESTWO=$(srcdir)/bitvector.c $(srcdir)/getopt.c $(srcdir)/getopt1.c $(srcdir)/linesplit.c $(srcdir)/ndselect.c $(srcdir)/read_line.c
80DOCS=$(srcdir)/AUTHORS $(srcdir)/BUGS $(srcdir)/COPYING $(srcdir)/ChangeLog $(srcdir)/INSTALL $(srcdir)/NEWS $(srcdir)/README $(srcdir)/TODO
81TEXISRC=$(srcdir)/docs/numdiff.txi
82FDLTEXI=$(srcdir)/docs/fdl.texi
83HTMLFILE=$(srcdir)/docs/numdiff.html
84INFOFILE=$(srcdir)/docs/numdiff.info
85MANFILE=$(srcdir)/docs/numdiff.1
86MANFILETWO=$(srcdir)/docs/ndselect.1
87PDFFILE=$(srcdir)/docs/numdiff.pdf
88TXTFILE=$(srcdir)/docs/numdiff.txt
89# l10n files
90PACKAGE_POT=$(srcdir)/po/$(PACKAGE)/$(PACKAGE).pot
91PACKAGETWO_POT=$(srcdir)/po/$(PACKAGETWO)/$(PACKAGETWO).pot
92PACKAGE_IT=$(srcdir)/po/$(PACKAGE)/it
93PACKAGETWO_IT=$(srcdir)/po/$(PACKAGETWO)/it
94IT_LOC_DIR="$(DESTDIR)$(LOCALEDIR)/it/LC_MESSAGES"
95
96GARBAGE=./numdiff.aux ./numdiff.cp ./numdiff.cps ./numdiff.fn ./numdiff.ky ./numdiff.log ./numdiff.pg ./numdiff.toc ./numdiff.tp ./numdiff.vr ./config.log ./config.status ./config.h.in.save ./config.h
97
98# Rules to build the executable programs
99
100all: $(PACKAGE) $(PACKAGETWO)
101
102$(PACKAGE): $(OBJECTS)
103	$(CC) $(OBJECTSONE) -o $@ $(LDFLAGS) $(LIBS)
104
105$(PACKAGETWO): $(OBJECTS)
106	$(CC) $(OBJECTSTWO) -o $@ $(LDFLAGS) $(LIBS)
107
108# Rules to build the documentation. The documentation
109# must be built in $(srcdir)/docs !
110
111man: $(MANFILE) $(MANFILETWO)
112
113$(MANFILE):
114	$(HELP2MAN) -n "compare similar files with numeric fields" -p $(PACKAGE) $(PACKAGE) > $(MANFILE)
115
116$(MANFILETWO):
117	$(HELP2MAN) -n "select lines and fields for numdiff" -p $(PACKAGE) $(PACKAGETWO) > $(MANFILETWO)
118
119info: $(INFOFILE).gz
120
121$(INFOFILE).gz: $(INFOFILE)
122	$(CAT) $(INFOFILE) | $(GZIP) > $(INFOFILE).gz
123
124$(INFOFILE): $(TEXISRC)
125	$(TEXI2INFO) $(TEXISRC) -o $(INFOFILE)
126
127html: $(HTMLFILE)
128
129$(HTMLFILE): $(TEXISRC)
130	$(TEXI2HTML) $(TEXISRC) -o $(HTMLFILE)
131
132pdf: $(PDFFILE)
133
134$(PDFFILE): $(TEXISRC)
135	$(TEXI2PDF) $(TEXISRC) -o $(PDFFILE)
136
137txt: $(TXTFILE)
138
139$(TXTFILE): $(TEXISRC)
140	$(TEXI2TXT) $(TEXISRC) -o $(TXTFILE)
141
142# Rules to create PO template files. They should be used
143# only by the maintainer of the package.
144
145pot: $(PACKAGE_POT) $(PACKAGETWO_POT)
146
147$(PACKAGE_POT): $(SOURCESONE)
148	@echo 'This command is intended for maintainers to use; it'
149	@echo 'requires special tools to work.'
150	$(XGETTEXT) --package-name=$(PACKAGE) \
151	--package-version=$(VERSION) \
152	-o $(PACKAGE_POT) $(SOURCESONE) *.h
153
154$(PACKAGETWO_POT): $(SOURCESTWO)
155	@echo 'This command is intended for maintainers to use; it'
156	@echo 'requires special tools to work.'
157	$(XGETTEXT) --package-name=$(PACKAGETWO) \
158	--package-version=$(VERSION) \
159	-o $(PACKAGETWO_POT) $(SOURCESTWO) *.h
160
161po: $(PACKAGE_IT).po $(PACKAGETWO_IT).po
162
163$(PACKAGE_IT).po: $(PACKAGE_POT)
164	@echo 'This command is intended for maintainers to use; it'
165	@echo 'requires special tools to work.'
166	if $(SHELL) -c "$(LS) $(PACKAGE_IT).po" \
167	>/dev/null 2>&1; then \
168	$(MSGMERGE) $(PACKAGE_IT).po $(PACKAGE_POT) -o $(PACKAGE_IT).po.new; \
169	$(MOVE) $(PACKAGE_IT).po.new $(PACKAGE_IT).po; \
170	else $(CP) $(PACKAGE_POT) $(PACKAGE_IT).po; fi
171
172$(PACKAGETWO_IT).po: $(PACKAGETWO_POT)
173	@echo 'This command is intended for maintainers to use; it'
174	@echo 'requires special tools to work.'
175	if $(SHELL) -c "$(LS) $(PACKAGETWO_IT).po" \
176	>/dev/null 2>&1; then \
177	$(MSGMERGE) $(PACKAGETWO_IT).po $(PACKAGETWO_POT) -o $(PACKAGETWO_IT).po.new; \
178	$(MOVE) $(PACKAGETWO_IT).po.new $(PACKAGETWO_IT).po; \
179	else $(CP) $(PACKAGETWO_POT) $(PACKAGETWO_IT).po; fi
180
181# Rules to build the l10n files. They
182# must be built in $(srcdir)/po/numdiff (for numdiff) and
183# in $(srcdir)/po/ndselect (for ndselect).
184
185mo: $(PACKAGE_IT).mo $(PACKAGETWO_IT).mo
186
187$(PACKAGE_IT).mo: $(PACKAGE_IT).po
188	$(MSGFMT) $(PACKAGE_IT).po -o $(PACKAGE_IT).mo
189
190$(PACKAGETWO_IT).mo: $(PACKAGETWO_IT).po
191	$(MSGFMT) $(PACKAGETWO_IT).po -o $(PACKAGETWO_IT).mo
192
193# Rules needed by the installation process.
194
195installdirs: all
196	$(MKDIR) "$(DESTDIR)$(BINDIR)"
197	$(MKDIR) "$(DESTDIR)$(DOCDIR)"
198	$(MKDIR) "$(DESTDIR)$(INFODIR)"
199	$(MKDIR) "$(DESTDIR)$(MANDIR)"
200	$(MKDIR) $(IT_LOC_DIR)
201
202install: installdirs html info pdf txt
203	$(INSTALL_PROGRAM) $(PACKAGE) $(PACKAGETWO) "$(DESTDIR)$(BINDIR)"
204	$(INSTALL_DATA) $(DOCS) "$(DESTDIR)$(DOCDIR)"
205	$(INSTALL_DATA) $(MANFILE) "$(DESTDIR)$(MANDIR)"
206	$(INSTALL_DATA) $(MANFILETWO) "$(DESTDIR)$(MANDIR)"
207	$(INSTALL_DATA) $(HTMLFILE) "$(DESTDIR)$(DOCDIR)"
208	$(INSTALL_DATA) $(PDFFILE) "$(DESTDIR)$(DOCDIR)"
209	$(INSTALL_DATA) $(TXTFILE) "$(DESTDIR)$(DOCDIR)"
210	$(POST_INSTALL)
211	$(INSTALL_DATA) $(INFOFILE) "$(DESTDIR)$(INFODIR)"
212	: $(INFOFILE).gz "$(DESTDIR)$(INFODIR)"
213	if $(SHELL) -c "$(INSTINFO) --version" \
214	>/dev/null 2>&1; then \
215	$(INSTINFO) --dir-file="$(DESTDIR)$(INFODIR)/dir" "$(DESTDIR)$(INFODIR)/numdiff.info"; \
216	else true; fi
217
218install-nls: install
219	$(INSTALL_DATA) $(PACKAGE_IT).mo $(IT_LOC_DIR)/$(PACKAGE).mo
220	$(INSTALL_DATA) $(PACKAGETWO_IT).mo $(IT_LOC_DIR)/$(PACKAGETWO).mo
221
222# Rules needed to removed the installed stuff
223
224uninstall:
225	$(RM) "$(DESTDIR)$(BINDIR)/$(PACKAGE)"
226	$(RM) "$(DESTDIR)$(BINDIR)/$(PACKAGETWO)"
227	$(RM) "$(DESTDIR)$(DOCDIR)"/*
228	$(RMDIR) "$(DESTDIR)$(DOCDIR)"
229	$(INSTINFO) --delete "$(DESTDIR)$(INFODIR)/numdiff.info" "$(DESTDIR)$(INFODIR)/dir"
230	$(RM) "$(DESTDIR)$(INFODIR)/numdiff.info.gz"
231	$(RM) "$(DESTDIR)$(INFODIR)/numdiff.info"
232	$(RM) "$(DESTDIR)$(MANDIR)/$(PACKAGE).1"
233	$(RM) "$(DESTDIR)$(MANDIR)/$(PACKAGETWO).1"
234
235uninstall-nls: uninstall
236	$(FIND) "$(DESTDIR)$(LOCALEDIR)" -name '$(PACKAGE).mo' -exec $(RM) \{\} \;
237	$(FIND) "$(DESTDIR)$(LOCALEDIR)" -name '$(PACKAGETWO).mo' -exec $(RM) \{\} \;
238
239# Cleaning rules
240
241clean:
242	$(RM) $(OBJECTS)
243	$(RM) $(PACKAGE)
244	$(RM) $(PACKAGETWO)
245
246distclean: clean
247	$(RM) $(GARBAGE)
248
249maintainer-clean: distclean
250	@echo 'This command is intended for maintainers to use; it'
251	@echo 'deletes files that may need special tools to rebuild.'
252	$(RM) $(HTMLFILE)
253	$(RM) $(INFOFILE)
254	$(RM) $(INFOFILE).gz
255	$(RM) $(MANFILE)
256	$(RM) $(MANFILETWO)
257	$(RM) $(PDFFILE)
258	$(RM) $(TXTFILE)
259	$(RM) $(PACKAGE_POT)
260	$(RM) $(PACKAGETWO_POT)
261	$(RM) $(PACKAGE_IT).mo
262	$(RM) $(PACKAGETWO_IT).mo
263
264# To make a distribution tarball
265
266createdirs:
267	$(DIST_MKDIR) $(srcdir)/$(PACKAGE)-$(VERSION)
268	$(DIST_MKDIR) $(srcdir)/$(PACKAGE)-$(VERSION)/RCS
269	$(DIST_MKDIR) $(srcdir)/$(PACKAGE)-$(VERSION)/docs
270	$(DIST_MKDIR) $(srcdir)/$(PACKAGE)-$(VERSION)/m4
271	$(DIST_MKDIR) $(srcdir)/$(PACKAGE)-$(VERSION)/po
272	$(DIST_MKDIR) $(srcdir)/$(PACKAGE)-$(VERSION)/po/$(PACKAGE)
273	$(DIST_MKDIR) $(srcdir)/$(PACKAGE)-$(VERSION)/po/$(PACKAGETWO)
274
275copy: createdirs
276	$(CP) $(DOCS) $(srcdir)/$(PACKAGE)-$(VERSION)
277	$(CP) $(srcdir)/Makefile.in $(srcdir)/$(PACKAGE)-$(VERSION)
278	$(CP) $(srcdir)/aclocal.m4 $(srcdir)/$(PACKAGE)-$(VERSION)
279	$(CP) $(srcdir)/config.h.in $(srcdir)/$(PACKAGE)-$(VERSION)
280	$(CP) $(srcdir)/configure.ac $(srcdir)/$(PACKAGE)-$(VERSION)
281	$(CP) $(srcdir)/configure $(srcdir)/$(PACKAGE)-$(VERSION)
282	$(CP) $(TEXISRC) $(srcdir)/$(PACKAGE)-$(VERSION)/docs
283	$(CP) $(FDLTEXI) $(srcdir)/$(PACKAGE)-$(VERSION)/docs
284	$(CP) $(HTMLFILE) $(srcdir)/$(PACKAGE)-$(VERSION)/docs
285	$(CP) $(INFOFILE) $(srcdir)/$(PACKAGE)-$(VERSION)/docs
286	$(CP) $(INFOFILE).gz $(srcdir)/$(PACKAGE)-$(VERSION)/docs
287	$(CP) $(MANFILE) $(srcdir)/$(PACKAGE)-$(VERSION)/docs
288	$(CP) $(MANFILETWO) $(srcdir)/$(PACKAGE)-$(VERSION)/docs
289	$(CP) $(PDFFILE) $(srcdir)/$(PACKAGE)-$(VERSION)/docs
290	$(CP) $(TXTFILE) $(srcdir)/$(PACKAGE)-$(VERSION)/docs
291	$(CP) $(srcdir)/analyze.c $(srcdir)/$(PACKAGE)-$(VERSION)
292	$(CP) $(srcdir)/arith.c $(srcdir)/$(PACKAGE)-$(VERSION)
293	$(CP) $(srcdir)/bitvector.c $(srcdir)/$(PACKAGE)-$(VERSION)
294	$(CP) $(srcdir)/cmpbuf.c $(srcdir)/$(PACKAGE)-$(VERSION)
295	$(CP) $(srcdir)/cmpfns.c $(srcdir)/$(PACKAGE)-$(VERSION)
296	$(CP) $(srcdir)/error.c $(srcdir)/$(PACKAGE)-$(VERSION)
297	$(CP) $(srcdir)/errors.c $(srcdir)/$(PACKAGE)-$(VERSION)
298	$(CP) $(srcdir)/exitfail.c $(srcdir)/$(PACKAGE)-$(VERSION)
299	$(CP) $(srcdir)/flags.c $(srcdir)/$(PACKAGE)-$(VERSION)
300	$(CP) $(srcdir)/getopt.c $(srcdir)/$(PACKAGE)-$(VERSION)
301	$(CP) $(srcdir)/getopt1.c $(srcdir)/$(PACKAGE)-$(VERSION)
302	$(CP) $(srcdir)/inout.c $(srcdir)/$(PACKAGE)-$(VERSION)
303	$(CP) $(srcdir)/io.c $(srcdir)/$(PACKAGE)-$(VERSION)
304	$(CP) $(srcdir)/linesplit.c $(srcdir)/$(PACKAGE)-$(VERSION)
305	$(CP) $(srcdir)/main.c $(srcdir)/$(PACKAGE)-$(VERSION)
306	$(CP) $(srcdir)/ndselect.c $(srcdir)/$(PACKAGE)-$(VERSION)
307	$(CP) $(srcdir)/new.c $(srcdir)/$(PACKAGE)-$(VERSION)
308	$(CP) $(srcdir)/number.c $(srcdir)/$(PACKAGE)-$(VERSION)
309	$(CP) $(srcdir)/numutil.c $(srcdir)/$(PACKAGE)-$(VERSION)
310	$(CP) $(srcdir)/options.c $(srcdir)/$(PACKAGE)-$(VERSION)
311	$(CP) $(srcdir)/read_line.c $(srcdir)/$(PACKAGE)-$(VERSION)
312	$(CP) $(srcdir)/setmode.c $(srcdir)/$(PACKAGE)-$(VERSION)
313	$(CP) $(srcdir)/side.c $(srcdir)/$(PACKAGE)-$(VERSION)
314	$(CP) $(srcdir)/thrlist.c $(srcdir)/$(PACKAGE)-$(VERSION)
315	$(CP) $(srcdir)/util.c $(srcdir)/$(PACKAGE)-$(VERSION)
316	$(CP) $(srcdir)/xalloc-die.c $(srcdir)/$(PACKAGE)-$(VERSION)
317	$(CP) $(srcdir)/xmalloc.c $(srcdir)/$(PACKAGE)-$(VERSION)
318	$(CP) $(srcdir)/bitvector.h $(srcdir)/$(PACKAGE)-$(VERSION)
319	$(CP) $(srcdir)/cmpbuf.h $(srcdir)/$(PACKAGE)-$(VERSION)
320	$(CP) $(srcdir)/error.h $(srcdir)/$(PACKAGE)-$(VERSION)
321	$(CP) $(srcdir)/exitfail.h $(srcdir)/$(PACKAGE)-$(VERSION)
322	$(CP) $(srcdir)/getopt.h $(srcdir)/$(PACKAGE)-$(VERSION)
323	$(CP) $(srcdir)/getopt_int.h $(srcdir)/$(PACKAGE)-$(VERSION)
324	$(CP) $(srcdir)/gettext.h $(srcdir)/$(PACKAGE)-$(VERSION)
325	$(CP) $(srcdir)/linesplit.h $(srcdir)/$(PACKAGE)-$(VERSION)
326	$(CP) $(srcdir)/ndselect.h $(srcdir)/$(PACKAGE)-$(VERSION)
327	$(CP) $(srcdir)/number.h $(srcdir)/$(PACKAGE)-$(VERSION)
328	$(CP) $(srcdir)/numdiff.h $(srcdir)/$(PACKAGE)-$(VERSION)
329	$(CP) $(srcdir)/setmode.h $(srcdir)/$(PACKAGE)-$(VERSION)
330	$(CP) $(srcdir)/system.h $(srcdir)/$(PACKAGE)-$(VERSION)
331	$(CP) $(srcdir)/unlocked-io.h $(srcdir)/$(PACKAGE)-$(VERSION)
332	$(CP) $(srcdir)/xalloc.h $(srcdir)/$(PACKAGE)-$(VERSION)
333	$(CP) $(srcdir)/shtool $(srcdir)/$(PACKAGE)-$(VERSION)
334	$(CP) $(srcdir)/m4/setmode.m4 $(srcdir)/$(PACKAGE)-$(VERSION)/m4
335	$(CP) $(srcdir)/m4/st_mtim.m4 $(srcdir)/$(PACKAGE)-$(VERSION)/m4
336	$(CP) $(PACKAGE_POT)      $(srcdir)/$(PACKAGE)-$(VERSION)/po/$(PACKAGE)
337	$(CP) $(PACKAGE_IT).po    $(srcdir)/$(PACKAGE)-$(VERSION)/po/$(PACKAGE)
338	$(CP) $(PACKAGE_IT).mo    $(srcdir)/$(PACKAGE)-$(VERSION)/po/$(PACKAGE)
339	$(CP) $(PACKAGETWO_POT)   $(srcdir)/$(PACKAGE)-$(VERSION)/po/$(PACKAGETWO)
340	$(CP) $(PACKAGETWO_IT).po $(srcdir)/$(PACKAGE)-$(VERSION)/po/$(PACKAGETWO)
341	$(CP) $(PACKAGETWO_IT).mo $(srcdir)/$(PACKAGE)-$(VERSION)/po/$(PACKAGETWO)
342
343dist: copy
344	$(TAR) cvf $(srcdir)/$(PACKAGE)-$(VERSION).tar $(srcdir)/$(PACKAGE)-$(VERSION)
345	$(GZIP) $(srcdir)/$(PACKAGE)-$(VERSION).tar
346	$(RD) $(srcdir)/$(PACKAGE)-$(VERSION)
347
348# To make a backup tarball
349
350tarball: copy
351	$(CP) $(srcdir)/RCS/* $(srcdir)/$(PACKAGE)-$(VERSION)/RCS
352	$(TAR) cvf $(srcdir)/$(PACKAGE)-$(VERSION).tar $(srcdir)/$(PACKAGE)-$(VERSION)
353	$(GZIP) $(srcdir)/$(PACKAGE)-$(VERSION).tar
354	$(RD) $(srcdir)/$(PACKAGE)-$(VERSION)
355