-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
60 lines (43 loc) · 1.46 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
#Compiler and compiler flags
CXX := mpic++
CXXFLAGS := -Wall -std=c++11
LIB := -lconfig++
INC := -I include -I /usr/local/include/eigen3
#Directories
SRCDIR := src
BUILDDIR := build
TARGETDIR := bin
#Targets
TARGETS = $(TARGETDIR)/DaMaSCUS-Simulator $(TARGETDIR)/DaMaSCUS-Analyzer
#Source files
SRCEXT := cpp
COMMONSRC := $(shell find $(SRCDIR) -maxdepth 1 -type f -name '*.$(SRCEXT)')
SIMSRC :=$(COMMONSRC) $(shell find $(SRCDIR)/simulation -type f -name *.$(SRCEXT))
ANASRC :=$(COMMONSRC) $(shell find $(SRCDIR)/analysis -type f -name *.$(SRCEXT))
#Object files
SIMOBJ := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SIMSRC:.$(SRCEXT)=.o))
ANAOBJ := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(ANASRC:.$(SRCEXT)=.o))
.PHONY: all simulator analyzer clean codecov
all: CXXFLAGS += -O2
all: $(TARGETS)
test: LIB+= --coverage
test: $(TARGETS)
simulator: CXXFLAGS += -O2
simulator: $(TARGETDIR)/DaMaSCUS-Simulator
analyzer: CXXFLAGS += -O2
analyzer: $(TARGETDIR)/DaMaSCUS-Analyzer
$(TARGETDIR)/DaMaSCUS-Simulator: $(SIMOBJ)
$(CXX) $(CXXFLAGS) $(INC) -o $@ $^ $(LIB)
$(TARGETDIR)/DaMaSCUS-Analyzer: $(ANAOBJ)
$(CXX) $(CXXFLAGS) $(INC) -o $@ $^ $(LIB)
$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)
@mkdir -p $(BUILDDIR)/simulation/
@mkdir -p $(BUILDDIR)/analysis/
$(CXX) $(CXXFLAGS) $(INC) $(LIB) -o $@ -c $<
codecov:
clean:
find . -type f -name '*.o' -delete
find . -type f -name '*.gcno' -delete
find . -type f -name '*.gcda' -delete
find . -type f -name '*.gcov' -delete
rm -f $(TARGETS)