-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
55 lines (48 loc) · 1.48 KB
/
makefile
File metadata and controls
55 lines (48 loc) · 1.48 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
#!/usr/bin/env vim
CC := g++
V := @
RM += -r
LIB += -Llib -lpthread
OBJ := ./obj/
SRC := ./src/
USER_FLAGS+= -O4 -I$(SRC) -std=c++11
targets := $(wildcard $(SRC)main/*.cpp) $(wildcard $(SRC)main/*.c)
objects := $(wildcard $(SRC)*/*.cpp) $(wildcard $(SRC)*/*.c)
objects := $(filter-out $(targets), $(objects))
objects := $(patsubst %.cpp,%.o,$(objects))
dirctry := $(sort $(dir $(objects)))
dirctry := $(patsubst %/,%,$(dirctry))
objects := $(notdir $(objects))
objects := $(addprefix $(OBJ),$(objects))
targets := $(basename $(notdir $(targets)))
targets := $(addprefix $(OBJ),$(targets))
define make-target
$(OBJ)$1: $(SRC)main/$1.cpp $(objects)
@echo + cc $$<
$(V)$(CC) $(USER_FLAGS) -o $$@ $$^ $(LIB)
endef
define make-intermediate
$(OBJ)%.o: $1/%.cpp
@echo + cc $$<
$(V)$(CC) -c $(USER_FLAGS) -o $$@ $$^
endef
all:always $(targets)
runfootprintsched:
$(V) time $(OBJ)/main FOOTPRINT 1>log/sched.out 2>log/sched.err
runreusedstsched:
$(V) time $(OBJ)/main REUSEDST 1>log/sched.out 2>log/sched.err
runbubblesched:
$(V) time $(OBJ)/main BUBBLE 1>log/sched.out 2>log/sched.err
runnoprediction:
$(V) time $(OBJ)/main NOPREDICTION 1>log/sched.out 2>log/sched.err
freerun:
$(V) time $(OBJ)/main FREERUN 1>log/sched.out 2>log/sched.err
runbubblebuild:
$(V) $(OBJ)/bubblebuild
$(foreach btar,$(targets),$(eval $(call make-target,$(notdir $(btar)))))
$(foreach bdir,$(dirctry),$(eval $(call make-intermediate,$(bdir))))
.PHONY:clean always reset test
always:
$(V)mkdir -p $(OBJ)
clean:
$(V)$(RM) $(OBJ)