# GNU Makefile for unsaver #### # Packagers: override these on the make command line as needed. # maximum number of devices we can monitor. 16 seems like an awful lot... MAX_STICKS=16 # base name of joystick devices on your OS, gets numbers 0 to MAX_STICKS # appended to it during autodetection. This is the base filename without # the directory. If your first joystick is /dev/input/js0, say js here. JSNODE=js # directory where joystick devices live. monitored via inotify(7) to # detect hotplug events. EVENTDIR=/dev/input # Intended for optimizations, but you could include other flags here. # Override this, not CFLAGS OPTFLAGS=-Wall -ansi -pedantic -std=c89 -g # -L, -l, and maybe -Wl flags here. LDEXTRA= # Where 'make install' puts things. PREFIX=/usr/local BINDIR=$(PREFIX)/bin MANDIR=$(PREFIX)/share/man MAN1DIR=$(MANDIR)/man1 DOCDIR=$(PREFIX)/share/doc/$(PROJ) DESTDIR= # Booleans: 'y' or 'n' for these. STRIPBIN=y GZIPMAN=y # Normally these will end up as root and root (or possibly wheel). You # could also set 'CHOWN=/bin/true' to skip it. OWNER=$(shell id -nu 0) GROUP=$(shell id -ng 0) # These are only used if you're rebuilding the man and/or html pages, # e.g. because you've patched them. RST2MAN=rst2man.py RST2HTML=rst2html4.py # ### # Hopefully, no user-serviceable parts below this line. PROJ=unsaver # the .rst is the authoritative source for the version number. VERSION=$(shell fgrep '.. |version| replace::' $(PROJ).rst | cut -d' ' -f4) DEFINES=-DVERSION=\"$(VERSION)\" -DMAX_STICKS=$(MAX_STICKS) -DJSNODE=\"$(JSNODE)\" -DEVENTDIR=\"$(EVENTDIR)\" -DPROJ=\"$(PROJ)\" CFLAGS+=$(shell pkg-config --cflags x11 xtst) LDFLAGS+=$(shell pkg-config --libs x11 xtst) CFLAGS=$(OPTFLAGS) $(DEFINES) LDFLAGS+=$(LDEXTRA) all: $(PROJ) man: $(PROJ).1 html: $(PROJ).html clean: rm -f $(PROJ) core %.1: %.rst $(RST2MAN) $< > $@ || rm -f $@ %.html: %.rst $(RST2HTML) $< > $@ || rm -f $@ ifeq ($(shell whoami),root) CHOWN=chown else CHOWN=: chown endif install: all man html mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(MAN1DIR) $(DESTDIR)$(DOCDIR) cp $(PROJ) $(DESTDIR)$(BINDIR) $(CHOWN) $(OWNER):$(GROUP) $(DESTDIR)$(BINDIR)/$(PROJ) chmod 755 $(DESTDIR)$(BINDIR)/$(PROJ) ifeq ($(STRIPBIN),y) strip $(DESTDIR)$(BINDIR)/$(PROJ) endif cp $(PROJ).1 $(DESTDIR)$(MAN1DIR) ifeq ($(GZIPMAN),y) gzip -9 $(DESTDIR)$(MAN1DIR)/$(PROJ).1 endif $(CHOWN) root:root $(DESTDIR)$(MAN1DIR)/$(PROJ).1 chmod 644 $(DESTDIR)$(MAN1DIR)/$(PROJ).1 cp README $(DESTDIR)$(DOCDIR) chmod 644 $(DESTDIR)$(DOCDIR)/README $(CHOWN) $(OWNER):$(GROUP) $(DESTDIR)$(DOCDIR)/README push: all man html git add $(PROJ).1 $(PROJ).html git commit -m'auto-regenerate man/html pages' || true git push .PHONY: all man clean html install push