-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
54 lines (41 loc) · 1.2 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
# Makefile for Kuro
B = build
S = src
E = examples
CC = g++
CFLAGS = -fcoroutines -std=c++20
CFLAGS += -Wall -O2 -D_GNU_SOURCE
CFLAGS += -I./liburing/src/include/
CFLAGS += -I./src/
SO_CFLAGS = -fPIC -shared
LDFLAGS = -L./$B/ -luring -lkuro
FORMAT = clang-format
FFLAGS = --style=google -i
LIB_URING = $B/liburing.so.2.2
LIB_URING_ = $B/liburing.so.2
LIB_URING__ = $B/liburing.so
LIB_SRC = $(shell echo $S/*.cc)
LIB = $B/libkuro.so
$(LIB): $(LIB_SRC)
@if [ ! -d $B ]; then mkdir $B; fi
$(CC) $(CFLAGS) $(SO_CFLAGS) $(LIB_SRC) -o $(LIB)
$(LIB_URING):
@if [ ! -d $B ]; then mkdir $B; fi
@cd ./liburing && make && cp src/liburing.so.* ../$(LIB_URING) || exit 1
$(LIB_URING_): $(LIB_URING)
@cp $(LIB_URING) $(LIB_URING_)
$(LIB_URING__): $(LIB_URING)
@cp $(LIB_URING) $(LIB_URING__)
uring: $(LIB_URING_) $(LIB_URING__)
EXAMPLE_SRC = $(shell echo $E/*.cc)
EXAMPLE_DST = $(patsubst $E/%, %, $(patsubst %.cc, %, $(EXAMPLE_SRC)))
$(EXAMPLE_DST): $(LIB_URING_) $(LIB_URING__) $(LIB)
@if [ ! -d $B ]; then mkdir $B; fi
$(CC) $(CFLAGS) $(patsubst %, $E/%.cc, $@) -o $B/$@ $(LDFLAGS)
example: $(EXAMPLE_DST)
format-example: $(EXAMPLE_SRC)
@$(FORMAT) $(FFLAGS) $<
format:
@$(FORMAT) $(FFLAGS) $S/*
clean:
@rm -rf $B