-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMakefile
110 lines (91 loc) · 2.49 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
PAX_OBJ= \
paxos/carray.o \
paxos/paxos.o \
paxos/quorum.o \
paxos/storage_mem.o \
paxos/storage_utils.o \
paxos/storage.o \
evpaxos/message.o \
evpaxos/paxos_types_pack.o \
evpaxos/config.o \
evpaxos/peers.o \
evpaxos/eth.o \
kpaxos/kfile.o
CL_OBJ= \
kpaxos/kclient.o \
kpaxos/kstats.o \
evpaxos/evlearner.o \
paxos/learner.o \
$(PAX_OBJ)
PROP_OBJ= \
kpaxos/kproposer.o \
evpaxos/evproposer.o \
paxos/proposer.o \
$(PAX_OBJ)
ACC_OBJ= \
kpaxos/kacceptor.o \
evpaxos/evacceptor.o \
paxos/acceptor.o \
$(PAX_OBJ)
LEARN_OBJ= \
kpaxos/klearner.o \
evpaxos/evlearner.o \
paxos/learner.o \
kpaxos/kernel_device.o \
$(PAX_OBJ)
REP_OBJ= \
kpaxos/kernel_device.o \
kpaxos/kreplica.o \
evpaxos/evlearner.o \
evpaxos/evproposer.o \
evpaxos/evacceptor.o \
paxos/acceptor.o \
paxos/learner.o \
paxos/proposer.o \
evpaxos/evreplica.o \
$(PAX_OBJ)
################# MODIFY HERE FOR MORE MODULES ##############
obj-m += \
kproposer.o \
klearner.o \
kacceptor.o \
kreplica.o \
kclient.o
kclient-y:= $(CL_OBJ)
kproposer-y:= $(PROP_OBJ)
kacceptor-y:= $(ACC_OBJ)
klearner-y:= $(LEARN_OBJ)
kreplica-y:= $(REP_OBJ)
##############################################################
KDIR ?= /lib/modules/$(shell uname -r)/build
BUILD_DIR ?= $(PWD)/build
BUILD_DIR_MAKEFILE ?= $(PWD)/build/Makefile
C_COMP:= -std=c99
G_COMP:= -std=gnu99
USR_FLAGS:= -Wall -D user_space
USR_SRCS := $(wildcard kpaxos/user_*.c)
USR_CL := $(filter-out kpaxos/user_learner.c, $(USR_SRCS))
USR_LEARN := $(filter-out kpaxos/user_client.c, $(USR_SRCS))
USRC_OBJS := $(patsubst kpaxos/%.c, $(BUILD_DIR)/%.o, $(USR_CL))
USRL_OBJS := $(patsubst kpaxos/%.c, $(BUILD_DIR)/%.o, $(USR_LEARN))
EXTRA_CFLAGS:= -I$(PWD)/kpaxos/include -I$(PWD)/paxos/include -I$(PWD)/evpaxos/include -I$(HOME)/local/include
ccflags-y:= $(G_COMP) -Wall -Wno-declaration-after-statement -Wframe-larger-than=3100 -O3
all: $(BUILD_DIR) kernel_app user_client user_learner
kernel_app: $(BUILD_DIR_MAKEFILE)
make -C $(KDIR) M=$(BUILD_DIR) src=$(PWD) modules
$(BUILD_DIR):
mkdir -p "$@/paxos"
mkdir -p "$@/evpaxos"
mkdir -p "$@/kpaxos"
$(BUILD_DIR_MAKEFILE): $(BUILD_DIR)
touch "$@"
$(BUILD_DIR)/%.o: kpaxos/%.c
$(CC) $(G_COMP) $(USR_FLAGS) $(EXTRA_CFLAGS) -c $< -o $@
user_client: $(USRC_OBJS)
$(CC) $(USR_FLAGS) $(EXTRA_CFLAGS) -o $(BUILD_DIR)/$@ $^
user_learner: $(USRL_OBJS)
$(CC) $(USR_FLAGS) $(EXTRA_CFLAGS) -o $(BUILD_DIR)/$@ $^
###########################################################################
clean:
make -C $(KDIR) M=$(BUILD_DIR) src=$(PWD) clean
-rm -rf build