# Makefile for marsond. Should be fine with any make (GNU, BSD, etc). # Remember, all these assignments, you can override on the make # command line rather than editing this file. Examples: # make CC=clang CFLAGS=-O3 # make install PREFIX=/usr/local ### Project information. PROJ=marsond VERSION=0.1.1 ### Compiler and options. CC=gcc # CC=clang works, too COPT=-O2 CWARN=-Wall CFLAGS=-std=c99 $(COPT) $(CWARN) -DVERSION='"$(VERSION)"' ### Install paths. Not compiled into the binary. # These are appropriate for Slackware. Most other distros will need # MANDIR=$(PREFIX)/share/man, and DOCDIR=$(PREFIX)/share/doc/marsond. PREFIX=/usr SBINDIR=$(PREFIX)/sbin MANDIR=$(PREFIX)/man MAN8DIR=$(PREFIX)/man8 DOCDIR=/usr/doc/$(PROJ)-$(VERSION) UDEVDIR=/etc/udev/rules.d INSTALL=install INSTALL_FILE=$(INSTALL) -m0644 INSTALL_MAN=$(INSTALL_FILE) INSTALL_UDEV=$(INSTALL_FILE) INSTALL_DOC=$(INSTALL_FILE) INSTALL_BIN=$(INSTALL) -s -m0755 # Build with GZIP=false to avoid gzipping the man page. GZIP=gzip -9 # When building a Slackware package, use RULESUFFIX=.new RULESUFFIX= ### No user-serviceable parts below (I hope). all: $(PROJ) $(PROJ).1 99-$(PROJ).rules $(PROJ): $(PROJ).c usage.c usage.c: mkusage.pl $(PROJ).1 perl mkusage.pl $(PROJ).rst > usage.c $(PROJ).1: $(PROJ).rst rst2man $(PROJ).rst > $(PROJ).1 99-$(PROJ).rules: sed 's,@SBINDIR@,$(SBINDIR),' < 99-$(PROJ).rules.in > 99-$(PROJ).rules clean: rm -f $(PROJ) core *.o realclean: clean rm -f $(PROJ).1 usage.c install: all mkdir -p $(DESTDIR)/$(SBINDIR) $(DESTDIR)/$(MAN8DIR) $(DESTDIR)/$(UDEVDIR) $(DESTDIR)/$(DOCDIR) $(INSTALL_BIN) $(PROJ) $(DESTDIR)/$(SBINDIR) $(INSTALL_MAN) $(PROJ).1 $(DESTDIR)/$(MAN8DIR) $(GZIP) $(DESTDIR)/$(MAN8DIR)/$(PROJ).1 || true $(INSTALL_UDEV) 99-$(PROJ).rules $(DESTDIR)/$(UDEVDIR)/99-$(PROJ).rules$(RULESUFFIX) $(INSTALL_DOC) README TODO LICENSE $(DESTDIR)/$(DOCDIR)