-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
80 lines (58 loc) · 2.58 KB
/
Makefile
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
# The package path prefix, if you want to install to another root, set DESTDIR to that root.
PREFIX ?= /usr
# The binary path excluding prefix.
BIN ?= /bin
# The library binary path excluding prefix.
LIBEXEC ?= /libexec
# The resource path excluding prefix.
DATA ?= /share
# The binary path including prefix.
BINDIR ?= $(PREFIX)$(BIN)
# The library binary path including prefix.
LIBEXECDIR ?= $(PREFIX)$(LIBEXEC)
# The resource path including prefix.
DATADIR ?= $(PREFIX)$(DATA)
# The license base path including prefix.
LICENSEDIR ?= $(DATADIR)/licenses
# The name of the package as it should be installed.
PKGNAME ?= daemond
OPTIMISE = -Og -g
STD = gnu99
LFLAGS = -lrt
WARN = -Wall -Wextra -pedantic -Wdouble-promotion -Wformat=2 -Winit-self -Wmissing-include-dirs \
-Wtrampolines -Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
-Wno-variadic-macros -Wsync-nand -Wunsafe-loop-optimizations -Wcast-align \
-Wdeclaration-after-statement -Wundef -Wbad-function-cast -Wwrite-strings -Wlogical-op \
-Wstrict-prototypes -Wold-style-definition -Wpacked -Wvector-operation-performance \
-Wunsuffixed-float-constants -Wsuggest-attribute=const -Wsuggest-attribute=noreturn \
-Wsuggest-attribute=format -Wnormalized=nfkc -fstrict-aliasing -fipa-pure-const -ftree-vrp \
-fstack-usage -funsafe-loop-optimizations -Wshadow -Wredundant-decls -Winline -Wcast-qual \
-Wsign-conversion -Wstrict-overflow=5 -Wconversion -Wsuggest-attribute=pure -Wswitch-default \
-Wstrict-aliasing=1 -fstrict-overflow -Wfloat-equal -Waggregate-return
FLAGS = $(OPTIMISE) -std=$(STD) $(LFLAGS) $(WARN) $(CFLAGS) $(LDFLAGS) $(CPPFLAGS)
DAEMOND_RESURRECTD_OBJS = daemond-resurrectd
START_DAEMOND_OBJS = start-daemond
DAEMOND_OBJS = daemond daemonise
# Build rules.
.PHONY: all
all: bin/daemond bin/daemond-resurrectd bin/start-daemond
bin/daemond-resurrectd: $(foreach O,$(DAEMOND_RESURRECTD_OBJS),obj/$(O).o)
@mkdir -p bin
$(CC) $(FLAGS) -o $@ $^
bin/start-daemond: $(foreach O,$(START_DAEMOND_OBJS),obj/$(O).o)
@mkdir -p bin
$(CC) $(FLAGS) -o $@ $^
bin/daemond: $(foreach O,$(DAEMOND_OBJS),obj/$(O).o)
@mkdir -p bin
$(CC) $(FLAGS) -o $@ $^
obj/%.o: src/%.c src/*.h
@mkdir -p obj
$(CC) $(FLAGS) -c -o $@ $<
# Clean rules.
.PHONY: clean
clean:
-rm -rf obj bin