-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathMakefile
65 lines (52 loc) · 1.85 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
# Copyright (c) 2014, Hasnain Lakhani.
# All rights reserved.
# Please see LICENSE for details.
CXX=clang++
CFLAGS=-Wall -Wextra -Wpedantic -g -std=c++11 -I$(INCLUDE_DIR) -fPIC -O3
LDFLAGS=
BLOCKYTESTLDFLAGS=-L$(BIN_DIR) -lblocky
BLOCKYBENCHLDFLAGS=-L$(BIN_DIR) -lblocky
LIBLDFLAGS=-shared
_LIBDEPS=gf28 utils blockypacket coder blockycoder blockycodermemory blockycoderfile blockycodermmap
_LIBOBJ=gf28 utils coder blockycoder blockycoderfile blockycodermemory blockycodermmap
_BLOCKYTESTDEPS=
_BLOCKYTESTOBJ=blockytest
_BLOCKYBENCHDEPS=
_BLOCKYBENCHOBJ=blockybench
BLOCKYTESTEXECUTABLE=blockytest
BLOCKYBENCHEXECUTABLE=blockybench
LIBRARY=libblocky.so
INCLUDE_DIR=include
SRC_DIR=src
OBJ_DIR=obj
BIN_DIR=bin
DOC_DIR=doc
LIBDEPS=$(patsubst %,$(INCLUDE_DIR)/%.h,$(_LIBDEPS))
LIBOBJ=$(patsubst %,$(OBJ_DIR)/%.o,$(_LIBOBJ))
BLOCKYTESTDEPS=$(patsubst %,$(INCLUDE_DIR)/%.h,$(_BLOCKYTESTDEPS))
BLOCKYTESTOBJ=$(patsubst %,$(OBJ_DIR)/%.o,$(_BLOCKYTESTOBJ))
BLOCKYBENCHDEPS=$(patsubst %,$(INCLUDE_DIR)/%.h,$(_BLOCKYBENCHDEPS))
BLOCKYBENCHOBJ=$(patsubst %,$(OBJ_DIR)/%.o,$(_BLOCKYBENCHOBJ))
.PHONY: all
all: dirs library blockytest blockybench
.PHONY: blockytest
blockytest: $(BLOCKYTESTOBJ)
$(CXX) -o $(BIN_DIR)/$(BLOCKYTESTEXECUTABLE) $^ $(LDFLAGS) $(BLOCKYTESTLDFLAGS)
.PHONY: blockybench
blockybench: $(BLOCKYBENCHOBJ)
$(CXX) -o $(BIN_DIR)/$(BLOCKYBENCHEXECUTABLE) $^ $(LDFLAGS) $(BLOCKYBENCHLDFLAGS)
.PHONY: library
library: $(LIBOBJ)
$(CXX) -o $(BIN_DIR)/$(LIBRARY) $^ $(LDFLAGS) $(LIBLDFLAGS)
.PHONY: doc
doc: $(LIBDEPS) $(LIBOBJ)
doxygen
.PHONY: clean
clean:
rm -rf $(DOC_DIR)
rm -f -d $(OBJ_DIR)/*.o $(OBJ_DIR) $(BIN_DIR)/$(LIBRARY) $(BIN_DIR)/$(BLOCKYTESTEXECUTABLE) $(BIN_DIR)/$(BLOCKYBENCHEXECUTABLE) $(BIN_DIR)
dirs:
mkdir -p $(OBJ_DIR)
mkdir -p $(BIN_DIR)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(LIBDEPS) $(BLOCKYTESTDEPS) $(BLOCKYBENCHDEPS)
$(CXX) -c -o $@ $< $(CFLAGS)