# Makefile for miragextract #### # Packagers: override these on the make command line as needed. # Intended for optimizations, but you could include other flags here. OPTFLAGS=-O2 # -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 -u 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=miragextract DOCS=README FAQ ChangeLog $(PROJ).html SNDFILE_CFLAGS:=$(shell pkg-config --cflags sndfile) SNDFILE_LIBS:=$(shell pkg-config --libs sndfile) MIRAGE_CFLAGS:=$(shell pkg-config --cflags libmirage) MIRAGE_LIBS:=$(shell pkg-config --libs libmirage) CFLAGS=-Wall $(OPTFLAGS) $(MIRAGE_CFLAGS) $(SNDFILE_CFLAGS) LDFLAGS=$(MIRAGE_LIBS) $(SNDFILE_LIBS)$ $(LDEXTRA) all: $(PROJ) man: $(PROJ).1 html: $(PROJ).html $(PROJ).1: $(PROJ).rst $(RST2MAN) $(PROJ).rst > $(PROJ).1 $(PROJ).html: $(PROJ).rst $(RST2HTML) $(PROJ).rst > $(PROJ).html 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) root:root $(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 for i in $(DOCS); do \ cp $$i $(DESTDIR)$(DOCDIR); \ chmod 644 $(DESTDIR)$(DOCDIR)/$$i; \ $(CHOWN) $(OWNER):$(GROUP) $(DESTDIR)$(DOCDIR)/$$i; \ done # These 2 are maintainer-specific targets. test: all ./$(PROJ) test.cue push: all man html git add $(PROJ).1 $(PROJ).html git commit -m'auto-regenerate man/html pages' || true git push .PHONY: all man html test push install