Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
vis/Makefile
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
224 lines (183 sloc)
6.32 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -include config.mk | |
| REGEX_SRC ?= text-regex.c | |
| SRC = array.c \ | |
| buffer.c \ | |
| libutf.c \ | |
| main.c \ | |
| map.c \ | |
| sam.c \ | |
| text.c \ | |
| text-common.c \ | |
| text-io.c \ | |
| text-iterator.c \ | |
| text-motions.c \ | |
| text-objects.c \ | |
| text-util.c \ | |
| ui-terminal.c \ | |
| view.c \ | |
| vis.c \ | |
| vis-lua.c \ | |
| vis-marks.c \ | |
| vis-modes.c \ | |
| vis-motions.c \ | |
| vis-operators.c \ | |
| vis-prompt.c \ | |
| vis-registers.c \ | |
| vis-text-objects.c \ | |
| $(REGEX_SRC) | |
| ELF = vis vis-menu vis-digraph | |
| EXECUTABLES = $(ELF) vis-clipboard vis-complete vis-open | |
| MANUALS = $(EXECUTABLES:=.1) | |
| DOCUMENTATION = LICENSE README.md | |
| VERSION = $(shell git describe --always --dirty 2>/dev/null || echo "v0.8-git") | |
| CONFIG_HELP ?= 1 | |
| CONFIG_CURSES ?= 1 | |
| CONFIG_LUA ?= 1 | |
| CONFIG_LPEG ?= 0 | |
| CONFIG_TRE ?= 0 | |
| CONFIG_ACL ?= 0 | |
| CONFIG_SELINUX ?= 0 | |
| CFLAGS_STD ?= -std=c99 -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -DNDEBUG | |
| CFLAGS_STD += -DVERSION=\"${VERSION}\" | |
| LDFLAGS_STD ?= -lc | |
| CFLAGS_LIBC ?= -DHAVE_MEMRCHR=0 | |
| CFLAGS_VIS = $(CFLAGS_AUTO) $(CFLAGS_TERMKEY) $(CFLAGS_CURSES) $(CFLAGS_ACL) \ | |
| $(CFLAGS_SELINUX) $(CFLAGS_TRE) $(CFLAGS_LUA) $(CFLAGS_LPEG) $(CFLAGS_STD) \ | |
| $(CFLAGS_LIBC) | |
| CFLAGS_VIS += -DVIS_PATH=\"${SHAREPREFIX}/vis\" | |
| CFLAGS_VIS += -DCONFIG_HELP=${CONFIG_HELP} | |
| CFLAGS_VIS += -DCONFIG_CURSES=${CONFIG_CURSES} | |
| CFLAGS_VIS += -DCONFIG_LUA=${CONFIG_LUA} | |
| CFLAGS_VIS += -DCONFIG_LPEG=${CONFIG_LPEG} | |
| CFLAGS_VIS += -DCONFIG_TRE=${CONFIG_TRE} | |
| CFLAGS_VIS += -DCONFIG_SELINUX=${CONFIG_SELINUX} | |
| CFLAGS_VIS += -DCONFIG_ACL=${CONFIG_ACL} | |
| LDFLAGS_VIS = $(LDFLAGS_AUTO) $(LDFLAGS_TERMKEY) $(LDFLAGS_CURSES) $(LDFLAGS_ACL) \ | |
| $(LDFLAGS_SELINUX) $(LDFLAGS_TRE) $(LDFLAGS_LUA) $(LDFLAGS_LPEG) $(LDFLAGS_STD) | |
| STRIP?=strip | |
| TAR?=tar | |
| DOCKER?=docker | |
| all: $(ELF) | |
| config.h: | |
| cp config.def.h config.h | |
| config.mk: | |
| @touch $@ | |
| vis: config.h config.mk *.c *.h | |
| ${CC} ${CFLAGS} ${CFLAGS_VIS} ${CFLAGS_EXTRA} ${SRC} ${LDFLAGS} ${LDFLAGS_VIS} -o $@ | |
| vis-menu: vis-menu.c | |
| ${CC} ${CFLAGS} ${CFLAGS_AUTO} ${CFLAGS_STD} ${CFLAGS_EXTRA} $< ${LDFLAGS} ${LDFLAGS_STD} ${LDFLAGS_AUTO} -o $@ | |
| vis-digraph: vis-digraph.c | |
| ${CC} ${CFLAGS} ${CFLAGS_AUTO} ${CFLAGS_STD} ${CFLAGS_EXTRA} $< ${LDFLAGS} ${LDFLAGS_STD} ${LDFLAGS_AUTO} -o $@ | |
| vis-single-payload.inc: $(EXECUTABLES) lua/* | |
| for e in $(ELF); do \ | |
| ${STRIP} "$$e"; \ | |
| done | |
| echo '#ifndef VIS_SINGLE_PAYLOAD_H' > $@ | |
| echo '#define VIS_SINGLE_PAYLOAD_H' >> $@ | |
| echo 'static unsigned char vis_single_payload[] = {' >> $@ | |
| $(TAR) --mtime='2014-07-15 01:23Z' --owner=0 --group=0 --numeric-owner --mode='a+rX-w' -c \ | |
| $(EXECUTABLES) $$(find lua -name '*.lua' | LC_ALL=C sort) | xz -T 1 | \ | |
| od -t x1 -v | sed -e 's/^[0-9a-fA-F]\{1,\}//g' -e 's/\([0-9a-f]\{2\}\)/0x\1,/g' >> $@ | |
| echo '};' >> $@ | |
| echo '#endif' >> $@ | |
| vis-single: vis-single.c vis-single-payload.inc | |
| ${CC} ${CFLAGS} ${CFLAGS_AUTO} ${CFLAGS_STD} ${CFLAGS_EXTRA} $< ${LDFLAGS} ${LDFLAGS_STD} ${LDFLAGS_AUTO} -luntar -llzma -o $@ | |
| ${STRIP} $@ | |
| docker-kill: | |
| -$(DOCKER) kill vis && $(DOCKER) wait vis | |
| docker: docker-kill clean | |
| $(DOCKER) build -t vis . | |
| $(DOCKER) run --rm -d --name vis vis tail -f /dev/null | |
| $(DOCKER) exec vis apk update | |
| $(DOCKER) exec vis apk upgrade | |
| $(DOCKER) cp . vis:/build/vis | |
| $(DOCKER) exec -w /build/vis vis ./configure CC='cc --static' \ | |
| --enable-acl \ | |
| --enable-lua \ | |
| --enable-lpeg-static | |
| $(DOCKER) exec -w /build/vis vis make VERSION="$(VERSION)" clean vis-single | |
| $(DOCKER) cp vis:/build/vis/vis-single vis | |
| $(DOCKER) kill vis | |
| docker-clean: docker-kill clean | |
| -$(DOCKER) image rm vis | |
| debug: clean | |
| @$(MAKE) CFLAGS_EXTRA='${CFLAGS_EXTRA} ${CFLAGS_DEBUG}' | |
| profile: clean | |
| @$(MAKE) CFLAGS_AUTO='' LDFLAGS_AUTO='' CFLAGS_EXTRA='-pg -O2' | |
| coverage: clean | |
| @$(MAKE) CFLAGS_EXTRA='--coverage' | |
| test-update: | |
| git submodule init | |
| git submodule update --remote --rebase | |
| test: | |
| [ -e test/Makefile ] || $(MAKE) test-update | |
| @$(MAKE) -C test | |
| testclean: | |
| @echo cleaning the test artifacts | |
| [ ! -e test/Makefile ] || $(MAKE) -C test clean | |
| clean: | |
| @echo cleaning | |
| @rm -f $(ELF) vis-single vis-single-payload.inc vis-*.tar.gz *.gcov *.gcda *.gcno | |
| distclean: clean testclean | |
| @echo cleaning build configuration | |
| @rm -f config.h config.mk | |
| dist: distclean | |
| @echo creating dist tarball | |
| @git archive --prefix=vis-${VERSION}/ -o vis-${VERSION}.tar.gz HEAD | |
| man: | |
| @for m in ${MANUALS}; do \ | |
| echo "Generating $$m"; \ | |
| sed -e "s/VERSION/${VERSION}/" "man/$$m" | mandoc -W warning -T utf8 -T html -O man=%N.%S.html -O style=mandoc.css 1> "man/$$m.html" || true; \ | |
| done | |
| luadoc: | |
| @cd lua/doc && ldoc . && sed -e "s/RELEASE/${VERSION}/" -i index.html | |
| luadoc-all: | |
| @cd lua/doc && ldoc -a . && sed -e "s/RELEASE/${VERSION}/" -i index.html | |
| luacheck: | |
| @luacheck --config .luacheckrc lua test/lua | less -RFX | |
| install: $(ELF) | |
| @echo installing executable files to ${DESTDIR}${PREFIX}/bin | |
| @mkdir -p ${DESTDIR}${PREFIX}/bin | |
| @for e in ${EXECUTABLES}; do \ | |
| cp -f "$$e" ${DESTDIR}${PREFIX}/bin && \ | |
| chmod 755 ${DESTDIR}${PREFIX}/bin/"$$e"; \ | |
| done | |
| @test ${CONFIG_LUA} -eq 0 || { \ | |
| echo installing support files to ${DESTDIR}${SHAREPREFIX}/vis; \ | |
| mkdir -p ${DESTDIR}${SHAREPREFIX}/vis; \ | |
| cp -r lua/* ${DESTDIR}${SHAREPREFIX}/vis; \ | |
| rm -rf "${DESTDIR}${SHAREPREFIX}/vis/doc"; \ | |
| } | |
| @echo installing documentation to ${DESTDIR}${DOCPREFIX}/vis | |
| @mkdir -p ${DESTDIR}${DOCPREFIX}/vis | |
| @for d in ${DOCUMENTATION}; do \ | |
| cp "$$d" ${DESTDIR}${DOCPREFIX}/vis && \ | |
| chmod 644 "${DESTDIR}${DOCPREFIX}/vis/$$d"; \ | |
| done | |
| @echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1 | |
| @mkdir -p ${DESTDIR}${MANPREFIX}/man1 | |
| @for m in ${MANUALS}; do \ | |
| sed -e "s/VERSION/${VERSION}/" < "man/$$m" > "${DESTDIR}${MANPREFIX}/man1/$$m" && \ | |
| chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; \ | |
| done | |
| install-strip: install | |
| @echo stripping executables | |
| @for e in $(ELF); do \ | |
| ${STRIP} ${DESTDIR}${PREFIX}/bin/"$$e"; \ | |
| done | |
| uninstall: | |
| @echo removing executable file from ${DESTDIR}${PREFIX}/bin | |
| @for e in ${EXECUTABLES}; do \ | |
| rm -f ${DESTDIR}${PREFIX}/bin/"$$e"; \ | |
| done | |
| @echo removing documentation from ${DESTDIR}${DOCPREFIX}/vis | |
| @for d in ${DOCUMENTATION}; do \ | |
| rm -f ${DESTDIR}${DOCPREFIX}/vis/"$$d"; \ | |
| done | |
| @echo removing manual pages from ${DESTDIR}${MANPREFIX}/man1 | |
| @for m in ${MANUALS}; do \ | |
| rm -f ${DESTDIR}${MANPREFIX}/man1/"$$m"; \ | |
| done | |
| @echo removing support files from ${DESTDIR}${SHAREPREFIX}/vis | |
| @rm -rf ${DESTDIR}${SHAREPREFIX}/vis | |
| .PHONY: all clean testclean dist distclean install install-strip uninstall debug profile coverage test test-update luadoc luadoc-all luacheck man docker-kill docker docker-clean |