aboutsummaryrefslogtreecommitdiff
path: root/Makefile.aut
blob: 6f44b645303e3675f702d74af0414c5410517048 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# Makefile for authoring less.

EMAIL = bug-less@gnu.org
HOMEPAGE = https://greenwoodsoftware.com/less
SHELL = /bin/sh
GIT = git
NROFF = nroff -t -man

srcdir = .
REL := $(shell sed -e '/char version/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q ${srcdir}/version.c)

ifeq ($(USE_PYTHON),1)
	MKHELP = mkhelp.py
else
	MKHELP = mkhelp.pl
endif

SRC = \
	main.c screen.c brac.c ch.c charset.c cmdbuf.c \
	command.c cvt.c decode.c edit.c filename.c forwback.c \
	help.c ifile.c input.c jump.c line.c linenum.c \
	lsystem.c mark.c optfunc.c option.c opttbl.c os.c \
	output.c pattern.c position.c prompt.c search.c signal.c \
	tags.c ttyin.c version.c xbuf.c
DISTFILES_W = \
	defines.ds  Makefile.dsb Makefile.dsg Makefile.dsu \
	defines.o2  Makefile.o2e \
	defines.o9  Makefile.o9c Makefile.o9u \
	defines.wn  Makefile.wnm Makefile.wnb Makefile.wng \
	configure 
UNICODE_FILES = \
	compose.uni fmt.uni ubin.uni wide.uni
DISTFILES = \
	${SRC} regexp.c regexp.h \
	COPYING INSTALL LICENSE Makefile.in Makefile.aut NEWS README \
	configure.ac lesskey.c lesskey_parse.c lessecho.c scrsize.c \
	charset.h cmd.h funcs.h lglob.h less.h lesskey.h option.h \
	pckeys.h pattern.h position.h xbuf.h \
	install.sh defines.h.in mkinstalldirs \
	less.nro less.man lesskey.nro lesskey.man lessecho.nro lessecho.man \
	less.hlp \
	mkhelp.pl \
	mkhelp.py \
	mkutable $(UNICODE_FILES) \
	$(shell ${MAKE} -s -f ${srcdir}/lesstest/Makefile echo_distfiles srcdir=${srcdir}/lesstest) \
	${DISTFILES_W}


all: help.c funcs.h $(UNICODE_FILES) ${srcdir}/configure 

release: .FORCE
	@if ${srcdir}/ready_to_release -d ${srcdir}; then :; else exit 1; fi
	${MAKE} -f Makefile.aut tagall 
	${MAKE} -f Makefile.aut all 
	${MAKE} -f Makefile.aut clean 
	${MAKE} -f Makefile.aut dist

.FORCE:

help.c: less.hlp 
	-mv -f ${srcdir}/help.c ${srcdir}/help.c.old
	rm -rf help.c
	${srcdir}/${MKHELP} < less.hlp > help.c
	if cmp -s help.c help.c.old; then mv -f help.c.old help.c; fi

${srcdir}/configure ${srcdir}/defines.h.in: ${srcdir}/configure.ac ${srcdir}/Makefile.in
	cd ${srcdir}; autoheader; autoconf

funcs.h: ${SRC:%=${srcdir}/%}
	-mv -f ${srcdir}/funcs.h ${srcdir}/funcs.h.old
	grep -h '^public [^;]*$$' ${SRC:%=${srcdir}/%} | sed 's/$$/;/' >${srcdir}/funcs.h

lint:
	lint -I. ${CPPFLAGS} ${SRC}

clean: 
	rm -f Makefile config.status config.log config.cache defines.h stamp-h \
		configure defines.h.in funcs.h help.c \
		less.nro less.man lesskey.nro lesskey.man lessecho.nro lessecho.man 

distclean: clean
realclean: clean

REPLACE_VERSION = \
	DT=`date '+%d %h %Y'`; \
	echo "Stuffing version number ${REL} into $@"; \
	rm -f $@; \
	sed \
		-e "s;@@VERSION@@;${REL};" \
		-e "s;@@DATE@@;$$DT;" >$@

${srcdir}/less.nro: ${srcdir}/less.nro.VER ${srcdir}/version.c
	${REPLACE_VERSION} ${srcdir}/less.nro.VER
${srcdir}/lesskey.nro: ${srcdir}/lesskey.nro.VER ${srcdir}/version.c
	${REPLACE_VERSION} ${srcdir}/lesskey.nro.VER
${srcdir}/lessecho.nro: ${srcdir}/lessecho.nro.VER ${srcdir}/version.c
	${REPLACE_VERSION} ${srcdir}/lessecho.nro.VER

${srcdir}/less.man: ${srcdir}/less.nro
	${NROFF} ${srcdir}/less.nro >${srcdir}/less.man
${srcdir}/lesskey.man: ${srcdir}/lesskey.nro
	${NROFF} ${srcdir}/lesskey.nro >${srcdir}/lesskey.man
${srcdir}/lessecho.man: ${srcdir}/lessecho.nro
	${NROFF} ${srcdir}/lessecho.nro >${srcdir}/lessecho.man

compose.uni: unicode/UnicodeData.txt
	./mkutable -f2 Mn Me -- unicode/UnicodeData.txt > $@
fmt.uni: unicode/UnicodeData.txt
	./mkutable -f2 Cf -- unicode/UnicodeData.txt > $@
ubin.uni: unicode/UnicodeData.txt
	./mkutable -f2 Cc Cs Co Zl Zp -- unicode/UnicodeData.txt > $@
wide.uni: unicode/EastAsianWidth.txt
	./mkutable -f1 W F -- unicode/EastAsianWidth.txt > $@

unicode-check:
	rm -rf unicode-old
	mv -f unicode unicode-old
	${MAKE} -f Makefile.aut unicode/UnicodeData.txt unicode/EastAsianWidth.txt
	@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

unicode/UnicodeData.txt:
	mkdir -p unicode
	lftp -c 'open -u "anonymous:${EMAIL}" ftp.unicode.org ; get Public/UNIDATA/UnicodeData.txt -o $@'
	touch $@
unicode/EastAsianWidth.txt:
	mkdir -p unicode
	lftp -c 'open -u "anonymous:${EMAIL}" ftp.unicode.org ; get Public/UNIDATA/EastAsianWidth.txt -o $@'
	touch $@

distfiles: ${DISTFILES}

echo_distfiles: 
	@echo $(subst .nro,.nro.VER,${DISTFILES})

dist: ${DISTFILES}
	if [ ! -d ${srcdir}/release ]; then mkdir ${srcdir}/release; fi
	@LESSREL=less-${REL} && RELDIR=release/$$LESSREL && \
	TARF=$$LESSREL-beta.tar.gz && ZIPF=$$LESSREL-beta.zip && \
	cd ${srcdir} && \
	rm -rf $$RELDIR && mkdir $$RELDIR && \
	echo "Preparing $$LESSREL" && \
	rm -rf $$LESSREL && mkdir $$LESSREL && \
	for f in ${DISTFILES}; do mkdir -p $$(dirname $$LESSREL/$$f); cp $$f $$LESSREL/$$f; done && \
	cd $$LESSREL && chmod -w * && chmod +w ${DISTFILES_W} lesstest && chmod +x configure && cd .. && \
	echo "Creating $$RELDIR/$$TARF" && \
	tar -cf - $$LESSREL | gzip -c >$$RELDIR/$$TARF && \
	echo "Signing $$RELDIR/$$TARF" && \
	gpg --detach-sign $$RELDIR/$$TARF && \
	mv $$RELDIR/$$TARF.sig $$RELDIR/$$LESSREL.sig && \
	echo "Creating $$RELDIR/$$ZIPF" && \
	zip -rq $$RELDIR/$$ZIPF $$LESSREL && \
	rm -rf $$LESSREL

tagall:
	echo "tagging v${REL}"; \
	$(GIT) tag -a -f -m "v${REL}" "v${REL}"

gnu_upload:
	@if [ -z "${REL}" ]; then echo "Please set REL=nnn"; exit 1; fi; \
	LESSREL=less-${REL} && RELDIR=release/$$LESSREL && \
	TARF=$$LESSREL.tar.gz && \
	if [ ! -s $$RELDIR/$$TARF ]; then echo "$$RELDIR/$$TARF does not exist"; exit 1; fi; \
	cd $$RELDIR && \
	gpg -b $$TARF && \
	( echo "version: 1.2"; echo "directory: less"; echo "filename: $$TARF" ) > $$TARF.directive && \
	gpg --clearsign $$TARF.directive && \
	echo "upload ready: cd $$RELDIR; ftp ftp-upload.gnu.org; cd /incoming/ftp; put $$TARF $$TARF.sig $$TARF.directive.asc"