summaryrefslogtreecommitdiff
path: root/src/GNUmakefile
blob: 07f5748557d5e1c4fd8a0951a0215f9db0304322 (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
.PHONY: all clean install test

all: 3rdParty/xxd/xxd biruda birudaenv workertest

# gcc/clang
CFLAGS = -g -O0 -std=c99 -Wall -pedantic -D_XOPEN_SOURCE=600 -D_DEFAULT_SOURCE
# tcc
#CFLAGS = -g
CFLAGS += -I/usr/local/include -I3rdParty/linenoise -I3rdParty/http_tiny
CFLAGS += `pkg-config --cflags glib-2.0`
CFLAGS += `pkg-config --cflags libconfuse`
CFLAGS += `pkg-config --cflags json-c`
CFLAGS += `pkg-config --cflags libmicrohttpd`
LDFLAGS = -L/usr/local/lib
LDFLAGS += `pkg-config --libs-only-L glib-2.0`
LDFLAGS += `pkg-config --libs-only-L libconfuse`
LDFLAGS += `pkg-config --libs-only-L json-c`
LDFLAGS += `pkg-config --libs-only-L libmicrohttpd`
LIBS = -lconfuse -lpthread -lnanomsg -ljson-c -lmicrohttpd
LIBS += `pkg-config --libs-only-l glib-2.0`

%.o : %.c
	$(CC) $(CFLAGS) -c -o $@ $<

biruda: biruda.o biruda_cmdline.o master.o coordinator.o worker.o system.o webserver.o 3rdParty/linenoise/linenoise.o 3rdParty/http_tiny/http_lib.o cli.o
	$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)

birudaenv: birudaenv.c system.c
	$(CC) -static -o $@ $^
	
biruda_cmdline.o: biruda_cmdline.c
biruda.o: biruda.c biruda_cmdline.h master.h coordinator.h worker.h port.h system.h webserver.h 3rdParty/linenoise/linenoise.h cli.h biruda_conf.c
master.o: master.c master.h port.h
coordinator.o: coordinator.c coordinator.h port.h system.h
worker.o: worker.c worker.h port.h
system.o: system.c system.h
webserver.o: webserver.c webserver.h index.h
3rdParty/linenoise/linenoise.o: 3rdParty/linenoise/linenoise.c 3rdParty/linenoise/linenoise.h
3rdParty/http_tiny/http_lib.o: 3rdParty/http_tiny/http_lib.c 3rdParty/http_tiny/http_lib.h 
cli.o: cli.c cli.h

biruda_cmdline.c: biruda.ggo
	gengetopt -F biruda_cmdline --unamed-opts --conf-parser --include-getopt -i $<

biruda_cmdline.h: biruda.ggo
	gengetopt -F biruda_cmdline --unamed-opts --conf-parser --include-getopt -i $<

workertest: workertest.o
workertest.o: workertest.c

3rdParty/xxd/xxd: 3rdParty/xxd/xxd.c
	$(CC) -o $@ $^

biruda_conf.c: biruda.conf 3rdParty/xxd/xxd
	3rdParty/xxd/xxd -i biruda.conf > biruda_conf.c

index.h: index.html 3rdParty/xxd/xxd
	3rdParty/xxd/xxd -i index.html > index.h

clean:
	@-rm *.o
	@-rm biruda birudaenv
	@-rm biruda_cmdline.[ch]
	@-rm workertest
	@-rm 3rdParty/http_tiny/*.o
	@-rm 3rdParty/linenoise/*.o
	@-rm 3rdParty/xxd/xxd
	@-rm biruda_conf.c
	@-rm index.h

# default values
DESTDIR ?=
prefix ?= /usr

# standard directories following FHS
execdir=$(prefix)
sbindir=$(execdir)/sbin
sysconfdir=$(execdir)/etc
	
install:
	@test -d $(DESTDIR)$(sbindir) || install -d -m 0755 $(DESTDIR)$(sbindir)
	install -m 0775 biruda $(DESTDIR)$(sbindir)
	@test -d $(DESTDIR)$(sysconfdir)/biruda || install -d -m 0755 $(DESTDIR)$(sysconfdir)/biruda
	install -m 0644 biruda.conf $(DESTDIR)$(sysconfdir)/biruda

run: all
	@-./biruda -c biruda.conf -p
	@-./biruda --guess-env --human-readable
	
test:
	@-./biruda -f -c biruda.conf &
	@sleep 10
	@-./biruda -i --no-colors -c biruda.conf -F testscript
	@-pkill biruda