-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
73 lines (47 loc) · 1.48 KB
/
makefile
File metadata and controls
73 lines (47 loc) · 1.48 KB
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
CXX_OPT:=-std=gnu99 -fPIC
# COMPILER
CXX:=gcc
# SHARED OBJECTS
LIBS:=-lpthread
SRCDIR:=./src
SUBDIRS:= \
$(SRCDIR)/cas-spinlock \
$(SRCDIR)/tas-spinlock \
$(SRCDIR)/queued-spinlock \
$(SRCDIR)/mutable-lock \
$(SRCDIR)/utils
# $(SRCDIR)/heuristic-mutlocks \
OPT:= -O2
LFLAGS:=
LPATH:=
SOURCES:= $(shell find $(SRCDIR) -name '*.c')
HEADERS:= $(shell find $(SRCDIR) -name '*.h')
INCLUDES:= $(addprefix -I,$(SUBDIRS))
OBJ:=$(SOURCES:.c=.o)
DEBUG:= -g3
MACROS+= #-DMUTLOCK_DEBUG
WARNINGS:= -Wall #-Wno-discarded-qualifiers #-Wno-unused-value
TARGETS:=libmutlock.so
SHARED_OPT:=-shared -Wl,-soname,$(TARGETS)
C_DEPS := $(OBJ:.o=.d)
C_DEPS := $(patsubst ./src/%, ./deps_src/%, $(C_DEPS))
INSTALL_SO_PATH?=libs
INSTALL_INC_PATH?=include
all: $(TARGETS)
install:
mkdir -p $(INSTALL_SO_PATH); mkdir -p $(INSTALL_INC_PATH)
cp $(TARGETS) $(INSTALL_SO_PATH)
cp $(HEADERS) $(INSTALL_INC_PATH)
$(TARGETS): $(OBJ)
@echo "---- Generating target ----"
$(CXX) $(CXX_OPT) $(SHARED_OPT) $(LFLAGS) $(LPATH) $(OBJ) -o $@ $(LIBS)
@echo "---- Target successfully generated ----"
-include $(C_DEPS)
%.o: %.c
@mkdir -p $(dir $(patsubst src/%,deps_src/%, $<))
@echo "---- Building source file" $<" ----"
@echo "---- Generating binary file" $@ " ----"
$(CXX) $(CXX_OPT) $(WARNINGS) $(DEBUG) $(MACROS) $(OPT) $(INCLUDES) $(OTHERFLAGS) -MMD -MP -MF"$(patsubst src/%,deps_src/%, $(@:%.o=%.d))" -MT"$(@)" -c $< -o $@
@echo "---- Done ----"
clean:
rm -rf $(OBJ) $(TARGETS) $(OBJ:.o=.d) deps_src