-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
66 lines (46 loc) · 2.61 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
#CC=clang
SANITIZE=#-fsanitize=undefined -fsanitize=leak -fsanitize=address
CFLAGS=-g -Wall -pedantic -I/home/evyatar/.local/include `pkg-config --cflags mariadb libevent_pthreads libargon2 expat lua json-c` $(SANITIZE)
LDFLAGS=-L/home/evyatar/.local/lib -Wl,-rpath /home/evyatar/.local/lib $(SANITIZE)
LDLIBS=`pkg-config --libs mariadb libevent_pthreads libargon2 expat lua json-c` -lcmph
OBJDIR=obj
DEPDIR := .deps
DEPFLAGS=-MT $@ -MMD -MP -MF
COMMON_SRCS=writer.c reader.c database.c crypt.c packet.c account.c wz.c character.c constants.c hash-map.c
CHANNEL_SRCS=$(COMMON_SRCS) channel/server.c channel/main.c channel/client.c channel/map.c channel/drops.c channel/config.c channel/scripting/client.c channel/scripting/job.c channel/scripting/event.c channel/scripting/events.c channel/scripting/reactor-manager.c channel/scripting/script-manager.c channel/shop.c channel/events.c party.c channel/thread-coordinator.c
CHANNEL_OBJS=$(CHANNEL_SRCS:%.c=$(OBJDIR)/%.o)
LOGIN_SRCS=$(COMMON_SRCS) login/server.c login/main.c login/handlers.c login/config.c
LOGIN_OBJS=$(LOGIN_SRCS:%.c=$(OBJDIR)/%.o)
all: login/# channel/channel Makefile
login/#: $(LOGIN_OBJS) | login
$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
login: ; @mkdir -p $@
channel/channel: $(CHANNEL_OBJS) | channel
$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
channel: ; @mkdir -p $@
$(OBJDIR)/%.o: src/%.c
$(OBJDIR)/%.o: src/%.c $(DEPDIR)/%.d | $(DEPDIR) $(OBJDIR)
$(CC) $(DEPFLAGS) $(DEPDIR)/$*.d $(CFLAGS) -c -o $@ $<
$(OBJDIR)/#/%.o: src/#/%.c
$(OBJDIR)/#/%.o: src/#/%.c $(DEPDIR)/#/%.d | $(DEPDIR)/# $(OBJDIR)/#
$(CC) $(DEPFLAGS) $(DEPDIR)/#/$*.d $(CFLAGS) -c -o $@ $<
$(OBJDIR)/channel/%.o: src/channel/%.c
$(OBJDIR)/channel/%.o: src/channel/%.c $(DEPDIR)/channel/%.d | $(DEPDIR)/channel $(OBJDIR)/channel
$(CC) $(DEPFLAGS) $(DEPDIR)/channel/$*.d $(CFLAGS) -c -o $@ $<
$(OBJDIR)/channel/scripting/%.o: src/channel/scripting/%.c
$(OBJDIR)/channel/scripting/%.o: src/channel/scripting/%.c $(DEPDIR)/channel/scripting/%.d | $(DEPDIR)/channel/scripting $(OBJDIR)/channel/scripting
$(CC) $(DEPFLAGS) $(DEPDIR)/channel/scripting/$*.d $(CFLAGS) -c -o $@ $<
$(DEPDIR): ; @mkdir -p $@
$(DEPDIR)/#: ; @mkdir -p $@
$(DEPDIR)/channel: ; @mkdir -p $@
$(DEPDIR)/channel/scripting: ; @mkdir -p $@
$(OBJDIR): ; @mkdir -p $@
$(OBJDIR)/#: ; @mkdir -p $@
$(OBJDIR)/channel: ; @mkdir -p $@
$(OBJDIR)/channel/scripting: ; @mkdir -p $@
DEPFILES := $(LOGIN_SRCS:%.c=$(DEPDIR)/%.d) $(CHANNEL_SRCS:%.c=$(DEPDIR)/%.d)
$(DEPFILES):
include $(wildcard $(DEPFILES))
.PHONY: clean
clean:
rm -rf login/# channel/channel $(LOGIN_OBJS) $(CHANNEL_OBJS) $(DEPDIR) $(OBJDIR)