-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
94 lines (73 loc) · 1.78 KB
/
Makefile
File metadata and controls
94 lines (73 loc) · 1.78 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#
# LibCA
#
name=libCA
#SOURCES
SRC_D=./src
DATA_D=$(SRC_D)/data
STATIC_D=$(BUILD_D)/lib
#BUILD
BUILD_D:=./build
OBJ_BD:=$(BUILD_D)/obj
TEST_BD:=$(BUILD_D)/tests
LIB_BD:=$(BUILD_D)/lib
DIRS:=$(OBJ_BD) $(TEST_BD) $(LIB_BD) $(LIB_BD)
#COMPILE
CC:=gcc
CMD_C:=./compile_commands.json
BEAR_C:=bear --append --output $(CMD_C) --
VPATH:=$(VPATH):src:lib:$(wildcard lib/**):tests:build:$(OBJ_BD):$(LIB_BD)
FLAGS:=$(FLAGS) $(patsubst %,-I%,$(subst :, ,$(VPATH))) -Wall
#INSTALL
IND=/usr/
H_IND=$(IND)/include/
LIB_IND=$(IND)/lib32/
.PHONY: all
all: debug
.PHONY: test
test: FLAGS:=$(FLAGS) -D TESTS -O0 -g
test: CC:=$(BEAR_C) $(CC)
test: dirs tests
.PHONY: debug
debug: FLAGS:=$(FLAGS) -D DEBUG -O0 -g
debug: CC:=$(BEAR_C) $(CC)
debug: dirs tests
.PHONY: release
release: BUILD_D:=./build/release
release: OBJ_BD:=$(BUILD_D)/obj
release: LIB_BD:=$(BUILD_D)/lib
release: DIRS:=$(OBJ_BD) $(LIB_BD) $(LIB_BD)
release: FLAGS:=$(FLAGS) -O3 -D RELEASE
release: dirs
install: clean release $(H_FILES) $(LIB_FILES)
cp -t $(H_FILES) $(H_IND)
cp -r $(LIB_BD) $(LIB_IND)
uninstall:
rm $(patsubst %,$(H_IND)/$(notdir $(H_FILES)))
rm $(patsubst %,$(LIB_IND)/% $(notdir $(LIB_BD)))
clean:
rm -rf $(BUILD_D)
dirs:
mkdir -p $(DIRS)
#RULES
%.o: %.c %.h
$(CC) $(FLAGS) -c -o $(OBJ_BD)/$@ $<
%.o: %.c %.h
$(CC) $(FLAGS) -c -o $(OBJ_BD)/$@ $<
lib%.a: %.o
ar rcs $(LIB_BD)/$@ $(OBJ_BD)/$<
#LIBS
.PHONY: bstrlib
bstrlib: LIB_FILES:=$(LIB_FILES) libbstrlib.a
bstrlib: libbstrlib.a
.PHONY: munit
munit: LIB_FILES:=$(LIB_FILES) libmunit.a
munit: libmunit.a
.PHONY: mongoose
mongoose: LIB_FILES:=$(LIB_FILES) libmongoose.a
mongoose: libmongoose.a
.PHONY: tests
tests: TESTS:=src/ca_vector.c
tests: tests/main.c munit bstrlib ca_vector.o src/ca_vector.h
$(CC) $(FLAGS) -o $(TEST_BD)/$@ $< $(TESTS) -L $(LIB_BD) -lmunit
#TESTS