-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
112 lines (85 loc) · 2.51 KB
/
Makefile
File metadata and controls
112 lines (85 loc) · 2.51 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Languages
CC := g++
PERL := perl
COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cc = $(CXX) $(DEPFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
POSTCOMPILE = @mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d && touch $@
# Directories
OBJDIR := obj
DEPDIR := dep
BOOSTDIR := /usr/include/boost
# Flags
DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td
OPTFLAGS := -O0
INCLUDEFLAGS := -I$(BOOSTDIR)/include -I../include
PROFFLAGS := #-pg
DEFS +=
CFLAGS := -Wall -g $(PROFFLAGS) $(INCLUDEFLAGS) $(OPTFLAGS) $(DEFS)
CXXFLAGS := $(CFLAGS) -std=c++11
LDFLAGS :=
# Libraries
LDLIBS := -lboost_thread \
-lboost_filesystem \
-lboost_regex \
-lboost_system \
-lboost_date_time \
-lboost_chrono
LOADLIBES :=
# Target names
UTESTTARGET := unitTest
PTESTTARGET := perfTest
TARGET :=
LIBTARGET :=
# Directories to build
OBJDIR := obj
DEPDIR := dep
# Source files
LIBSRCS :=
UTESTSRCS := unitTest.cpp
PTESTSRCS := perfTest.cpp
SRCS := $(UTESTSRCS) $(PTESTSRCS)
# Object files
LIBOBJS := $(addprefix $(OBJDIR)/,$(LIBSRCS:.cpp=.o))
UTESTOBJS := $(addprefix $(OBJDIR)/,$(UTESTSRCS:.cpp=.o))
PTESTOBJS := $(addprefix $(OBJDIR)/,$(PTESTSRCS:.cpp=.o))
OBJS := $(PTESTOBJS) $(UTESTOBJS)
$(UTESTTARGET): $(UTESTOBJS) $(LIBTARGET)
$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) $(PROF) -o $@
$(PTESTTARGET): $(PTESTOBJS) $(LIBTARGET)
$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) $(PROF) -o $@
$(TARGET): $(OBJS) $(LIBTARGET)
$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) $(PROF) -o $@
$(LIBTARGET): $(LIBOBJS)
$(AR) $(ARFLAGS) $@ $^
ranlib $@
.PHONY: perf
perf:
$(MAKE) -f $(lastword $(MAKEFILE_LIST)) perfTest \
OPTFLAGS=-O3 DEFS=-DNODEBUG
.PHONY: clean
clean:
rm -f $(TARGET) $(UTESTTARGET) $(PTESTTARGET) \
$(TARGET).exe $(UTESTTARGET).exe $(PTESTTARGET).exe \
$(LIBTARGET) $(OBJS) $(LIBOBJS) $(DEPDIR)/*.d *.bak *.exe.* *~
$(OBJDIR)/%.o : %.c
$(OBJDIR)/%.o : %.c $(DEPDIR)/%.d
$(COMPILE.c) $(OUTPUT_OPTION) $<
$(POSTCOMPILE)
$(OBJDIR)/%.o : %.cpp
$(OBJDIR)/%.o : %.cpp $(DEPDIR)/%.d
$(COMPILE.cc) $(OUTPUT_OPTION) $<
$(POSTCOMPILE)
$(OBJDIR)/%.o : %.cc
$(OBJDIR)/%.o : %.cc $(DEPDIR)/%.d
$(COMPILE.cc) $(OUTPUT_OPTION) $<
$(POSTCOMPILE)
$(OBJDIR)/%.o : %.cxx
$(OBJDIR)/%.o : %.cxx $(DEPDIR)/%.d
$(COMPILE.cc) $(OUTPUT_OPTION) $<
$(POSTCOMPILE)
%.i : %.c
$(CC) -E $(CPPFLAGS) $<
$(DEPDIR)/%.d: ;
.PRECIOUS: $(DEPDIR)/%.d
# Include dependency files
include $(wildcard $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS))))