-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
47 lines (34 loc) · 1.1 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
CXX = g++
CXXFLAGS = -Wall -MMD -g
TESTFLAGS = -lboost_unit_test_framework
EXEC = sim
TESTEXEC = test
SRCDIR = src
OBJDIR = obj
BINDIR = bin
TESTDIR = test
SOURCES := ${wildcard ${SRCDIR}/*.cpp}
OBJECTS := ${patsubst ${SRCDIR}/%.cpp,${OBJDIR}/%.o,${SOURCES}}
DEPENDS = ${OBJECTS:.o=.d}
TESTSOURCES := ${wildcard ${TESTDIR}/*.cpp}
TESTOBJECTS := ${patsubst ${TESTDIR}/%.cpp,${OBJDIR}/%.o,${TESTSOURCES}}
TESTDEPENDS = ${TESTOBJECTS:.o=.d}
COMBINEDOBJECTS = ${filter-out ${OBJDIR}/main.o, ${TESTOBJECTS} ${OBJECTS}}
COMBINEDSOURCES = ${filter-out ${SRCDIR}/main.cpp, ${TESTSOURCES} ${SOURCES}}
COMBINEDDEPENDS = ${filter-out ${OBJDIR}/main.d, ${TESTDEPENDS} ${DEPENDS}}
${BINDIR}/${EXEC}: ${OBJECTS} | ${BINDIR}
${CXX} ${OBJECTS} -o ${BINDIR}/${EXEC}
${OBJDIR}/%.o: ${SRCDIR}/%.cpp | ${OBJDIR}
${CXX} ${CXXFLAGS} -c -o $@ $<
test: ${COMBINEDOBJECTS} | ${BINDIR}
${CXX} ${TESTFLAGS} ${COMBINEDOBJECTS} -o ${BINDIR}/${TESTEXEC}
${OBJDIR}/%.o: ${TESTDIR}/%.cpp | ${OBJDIR}
${CXX} ${CXXFLAGS} -c -o $@ $<
${BINDIR}:
mkdir $@
${OBJDIR}:
mkdir $@
-include ${DEPENDS}
.PHONY: clean
clean:
rm -r ${OBJDIR} ${BINDIR}