xref: /netbsd-src/external/bsd/less/dist/Makefile.aut (revision e4a6e799a67c2028562d75b4e61407b22434aa36)
1# Makefile for authoring less.
2
3EMAIL = bug-less@gnu.org
4HOMEPAGE = https://greenwoodsoftware.com/less
5SHELL = /bin/sh
6GIT = git
7NROFF = nroff -t -man
8
9srcdir = .
10REL := $(shell sed -e '/char version/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q ${srcdir}/version.c)
11
12ifeq ($(USE_PYTHON),1)
13	MKHELP = mkhelp.py
14else
15	MKHELP = mkhelp.pl
16endif
17
18SRC = \
19	main.c screen.c brac.c ch.c charset.c cmdbuf.c \
20	command.c cvt.c decode.c edit.c filename.c forwback.c \
21	help.c ifile.c input.c jump.c line.c linenum.c \
22	lsystem.c mark.c optfunc.c option.c opttbl.c os.c \
23	output.c pattern.c position.c prompt.c search.c signal.c \
24	tags.c ttyin.c version.c xbuf.c
25DISTFILES_W = \
26	defines.ds  Makefile.dsb Makefile.dsg Makefile.dsu \
27	defines.o2  Makefile.o2e \
28	defines.o9  Makefile.o9c Makefile.o9u \
29	defines.wn  Makefile.wnm Makefile.wnb Makefile.wng \
30	configure
31UNICODE_FILES = \
32	compose.uni fmt.uni ubin.uni wide.uni
33DISTFILES = \
34	${SRC} regexp.c regexp.h \
35	COPYING INSTALL LICENSE Makefile.in Makefile.aut NEWS README \
36	configure.ac lesskey.c lesskey_parse.c lessecho.c scrsize.c \
37	charset.h cmd.h funcs.h lglob.h less.h lesskey.h option.h \
38	pckeys.h pattern.h position.h xbuf.h \
39	install.sh defines.h.in mkinstalldirs \
40	less.nro less.man lesskey.nro lesskey.man lessecho.nro lessecho.man \
41	less.hlp \
42	mkhelp.pl \
43	mkhelp.py \
44	mkutable $(UNICODE_FILES) \
45	$(shell ${MAKE} -s -f ${srcdir}/lesstest/Makefile echo_distfiles srcdir=${srcdir}/lesstest) \
46	${DISTFILES_W}
47
48
49all: help.c funcs.h $(UNICODE_FILES) ${srcdir}/configure
50
51release: .FORCE
52	@if ${srcdir}/ready_to_release -d ${srcdir}; then :; else exit 1; fi
53	${MAKE} -f Makefile.aut tagall
54	${MAKE} -f Makefile.aut all
55	${MAKE} -f Makefile.aut clean
56	${MAKE} -f Makefile.aut dist
57
58.FORCE:
59
60help.c: less.hlp
61	-mv -f ${srcdir}/help.c ${srcdir}/help.c.old
62	rm -rf help.c
63	${srcdir}/${MKHELP} < less.hlp > help.c
64	if cmp -s help.c help.c.old; then mv -f help.c.old help.c; fi
65
66${srcdir}/configure ${srcdir}/defines.h.in: ${srcdir}/configure.ac ${srcdir}/Makefile.in
67	cd ${srcdir}; autoheader; autoconf
68
69funcs.h: ${SRC:%=${srcdir}/%}
70	-mv -f ${srcdir}/funcs.h ${srcdir}/funcs.h.old
71	grep -h '^public [^;]*$$' ${SRC:%=${srcdir}/%} | sed 's/$$/;/' >${srcdir}/funcs.h
72
73lint:
74	lint -I. ${CPPFLAGS} ${SRC}
75
76clean:
77	rm -f Makefile config.status config.log config.cache defines.h stamp-h \
78		configure defines.h.in funcs.h help.c \
79		less.nro less.man lesskey.nro lesskey.man lessecho.nro lessecho.man
80
81distclean: clean
82realclean: clean
83
84REPLACE_VERSION = \
85	DT=`date '+%d %h %Y'`; \
86	echo "Stuffing version number ${REL} into $@"; \
87	rm -f $@; \
88	sed \
89		-e "s;@@VERSION@@;${REL};" \
90		-e "s;@@DATE@@;$$DT;" >$@
91
92${srcdir}/less.nro: ${srcdir}/less.nro.VER ${srcdir}/version.c
93	${REPLACE_VERSION} ${srcdir}/less.nro.VER
94${srcdir}/lesskey.nro: ${srcdir}/lesskey.nro.VER ${srcdir}/version.c
95	${REPLACE_VERSION} ${srcdir}/lesskey.nro.VER
96${srcdir}/lessecho.nro: ${srcdir}/lessecho.nro.VER ${srcdir}/version.c
97	${REPLACE_VERSION} ${srcdir}/lessecho.nro.VER
98
99${srcdir}/less.man: ${srcdir}/less.nro
100	${NROFF} ${srcdir}/less.nro >${srcdir}/less.man
101${srcdir}/lesskey.man: ${srcdir}/lesskey.nro
102	${NROFF} ${srcdir}/lesskey.nro >${srcdir}/lesskey.man
103${srcdir}/lessecho.man: ${srcdir}/lessecho.nro
104	${NROFF} ${srcdir}/lessecho.nro >${srcdir}/lessecho.man
105
106compose.uni: unicode/UnicodeData.txt
107	./mkutable -f2 Mn Me -- unicode/UnicodeData.txt > $@
108fmt.uni: unicode/UnicodeData.txt
109	./mkutable -f2 Cf -- unicode/UnicodeData.txt > $@
110ubin.uni: unicode/UnicodeData.txt
111	./mkutable -f2 Cc Cs Co Zl Zp -- unicode/UnicodeData.txt > $@
112wide.uni: unicode/EastAsianWidth.txt
113	./mkutable -f1 W F -- unicode/EastAsianWidth.txt > $@
114
115unicode-check:
116	rm -rf unicode-old
117	mv -f unicode unicode-old
118	${MAKE} -f Makefile.aut unicode/UnicodeData.txt unicode/EastAsianWidth.txt
119	@if diff -q unicode-old unicode >/dev/null; then rm -rf unicode; mv -f unicode-old unicode; echo "unicode files already up to date"; else echo "unicode files updated"; fi
120
121unicode/UnicodeData.txt:
122	mkdir -p unicode
123	lftp -c 'open -u "anonymous:${EMAIL}" ftp.unicode.org ; get Public/UNIDATA/UnicodeData.txt -o $@'
124	touch $@
125unicode/EastAsianWidth.txt:
126	mkdir -p unicode
127	lftp -c 'open -u "anonymous:${EMAIL}" ftp.unicode.org ; get Public/UNIDATA/EastAsianWidth.txt -o $@'
128	touch $@
129
130distfiles: ${DISTFILES}
131
132echo_distfiles:
133	@echo $(subst .nro,.nro.VER,${DISTFILES})
134
135dist: ${DISTFILES}
136	if [ ! -d ${srcdir}/release ]; then mkdir ${srcdir}/release; fi
137	@LESSREL=less-${REL} && RELDIR=release/$$LESSREL && \
138	TARF=$$LESSREL-beta.tar.gz && ZIPF=$$LESSREL-beta.zip && \
139	cd ${srcdir} && \
140	rm -rf $$RELDIR && mkdir $$RELDIR && \
141	echo "Preparing $$LESSREL" && \
142	rm -rf $$LESSREL && mkdir $$LESSREL && \
143	for f in ${DISTFILES}; do mkdir -p $$(dirname $$LESSREL/$$f); cp $$f $$LESSREL/$$f; done && \
144	cd $$LESSREL && chmod -w * && chmod +w ${DISTFILES_W} lesstest && chmod +x configure && cd .. && \
145	echo "Creating $$RELDIR/$$TARF" && \
146	tar -cf - $$LESSREL | gzip -c >$$RELDIR/$$TARF && \
147	echo "Signing $$RELDIR/$$TARF" && \
148	gpg --detach-sign $$RELDIR/$$TARF && \
149	mv $$RELDIR/$$TARF.sig $$RELDIR/$$LESSREL.sig && \
150	echo "Creating $$RELDIR/$$ZIPF" && \
151	zip -rq $$RELDIR/$$ZIPF $$LESSREL && \
152	rm -rf $$LESSREL
153
154tagall:
155	echo "tagging v${REL}"; \
156	$(GIT) tag -a -f -m "v${REL}" "v${REL}"
157
158gnu_upload:
159	@if [ -z "${REL}" ]; then echo "Please set REL=nnn"; exit 1; fi; \
160	LESSREL=less-${REL} && RELDIR=release/$$LESSREL && \
161	TARF=$$LESSREL.tar.gz && \
162	if [ ! -s $$RELDIR/$$TARF ]; then echo "$$RELDIR/$$TARF does not exist"; exit 1; fi; \
163	cd $$RELDIR && \
164	gpg -b $$TARF && \
165	( echo "version: 1.2"; echo "directory: less"; echo "filename: $$TARF" ) > $$TARF.directive && \
166	gpg --clearsign $$TARF.directive && \
167	echo "upload ready: cd $$RELDIR; ftp ftp-upload.gnu.org; cd /incoming/ftp; put $$TARF $$TARF.sig $$TARF.directive.asc"
168