Home | History | Annotate | Line # | Download | only in dist
      1 # Makefile for authoring less.
      2 
      3 EMAIL = bug-less (a] gnu.org
      4 HOMEPAGE = https://greenwoodsoftware.com/less
      5 SHELL = /bin/sh
      6 GIT = git
      7 NROFF = nroff -t -man
      8 
      9 srcdir = .
     10 REL := $(shell sed -e '/char version/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q ${srcdir}/version.c)
     11 
     12 ifeq ($(USE_PYTHON),1)
     13 	MKHELP = mkhelp.py
     14 else
     15 	MKHELP = mkhelp.pl
     16 endif
     17 
     18 SRC = \
     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
     25 DISTFILES_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 
     31 UNICODE_FILES = \
     32 	compose.uni fmt.uni ubin.uni wide.uni
     33 DISTFILES = \
     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 
     49 all: help.c funcs.h $(UNICODE_FILES) ${srcdir}/configure 
     50 
     51 release: .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 
     60 help.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 
     69 funcs.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 
     73 lint:
     74 	lint -I. ${CPPFLAGS} ${SRC}
     75 
     76 clean: 
     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 
     81 distclean: clean
     82 realclean: clean
     83 
     84 REPLACE_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 
    106 compose.uni: unicode/UnicodeData.txt
    107 	./mkutable -f2 Mn Me -- unicode/UnicodeData.txt > $@
    108 fmt.uni: unicode/UnicodeData.txt
    109 	./mkutable -f2 Cf -- unicode/UnicodeData.txt > $@
    110 ubin.uni: unicode/UnicodeData.txt
    111 	./mkutable -f2 Cc Cs Co Zl Zp -- unicode/UnicodeData.txt > $@
    112 wide.uni: unicode/EastAsianWidth.txt
    113 	./mkutable -f1 W F -- unicode/EastAsianWidth.txt > $@
    114 
    115 unicode-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 
    121 unicode/UnicodeData.txt:
    122 	mkdir -p unicode
    123 	lftp -c 'open -u "anonymous:${EMAIL}" ftp.unicode.org ; get Public/UNIDATA/UnicodeData.txt -o $@'
    124 	touch $@
    125 unicode/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 
    130 distfiles: ${DISTFILES}
    131 
    132 echo_distfiles: 
    133 	@echo $(subst .nro,.nro.VER,${DISTFILES})
    134 
    135 dist: ${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 
    154 tagall:
    155 	echo "tagging v${REL}"; \
    156 	$(GIT) tag -a -f -m "v${REL}" "v${REL}"
    157 
    158 gnu_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