aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: d7420d2a294cab39214ff343833a9c89b352bab0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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

### Compiler and options.
CC=gcc
# CC=clang works, too

COPT=-O2
CWARN=-Wall
CFLAGS=-std=c99 $(COPT) $(CWARN)

### 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/marsond-$(VERSION)
UDEVDIR=/etc/udev/rules.d

INSTALL=install
INSTALL_MAN=$(INSTALL)
INSTALL_UDEV=$(INSTALL)
INSTALL_DOC=$(INSTALL)
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: marsond marsond.1 99-marsond.rules

marsond: marsond.c usage.c

usage.c: mkusage.pl marsond.1
	perl mkusage.pl marsond.rst > usage.c

marsond.1: marsond.rst
	rst2man marsond.rst > marsond.1

99-marsond.rules:
	sed 's,@SBINDIR@,$(SBINDIR),' < 99-marsond.rules.in > 99-marsond.rules

clean:
	rm -f marsond core *.o

realclean: clean
	rm -f marsond.1 usage.c

install: all
	mkdir -p $(DESTDIR)/$(SBINDIR) $(DESTDIR)/$(MAN8DIR) $(DESTDIR)/$(UDEVDIR) $(DESTDIR)/$(DOCDIR)
	$(INSTALL_BIN) marsond $(DESTDIR)/$(SBINDIR)
	$(INSTALL_MAN) marsond.1 $(DESTDIR)/$(MAN8DIR)
	$(GZIP) $(DESTDIR)/$(MAN8DIR)/marsond.1 || true
	$(INSTALL_UDEV) 99-marsond.rules $(DESTDIR)/$(UDEVDIR)$(RULESUFFIX)
	$(INSTALL_DOC) README TODO LICENSE $(DESTDIR)/$(DOCDIR)