-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
148 lines (115 loc) · 2.2 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
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
BIN_DIR ?= bin
SRC_DIR = src
INC_DIR = include
DATA_DIR = data
DEP_DIR = deps
SRC_FILES := $(shell find $(SRC_DIR) -name '*.cpp')
DEP_FILES := $(SRC_FILES:$(SRC_DIR)/%.cpp=$(DEP_DIR)/%.d)
BIN_FILES := $(SRC_FILES:$(SRC_DIR)/%.cpp=$(BIN_DIR)/%)
CC = g++
CFLAGS = -O2 -I$(INC_DIR) -MT $@ -MMD -MP -MF $(DEP_DIR)/$(@F).d -Wall
.PHONY: all
all: $(BIN_FILES) | $(BIN_DIR)
#
# Magic to handle header dependencies
#
$(DEP_FILES):
include $(wildcard $(DEP_FILES))
#
# Make required directories
#
$(DEP_DIR):
mkdir -p $(DEP_DIR)
$(BIN_DIR):
mkdir -p $(BIN_DIR)
#
# Link data file to bin dir
#
$(BIN_DIR)/%.txt: $(DATA_DIR)/%.txt | $(BIN_DIR)
echo $@
ln -sf $$(readlink -f $<) $@
#
# Compilation
#
$(BIN_DIR)/066: $(SRC_DIR)/066.cpp $(INC_DIR)/* $(DEP_DIR)/066.d | $(BIN_DIR) $(DEP_DIR)
$(CC) $(CFLAGS) $< -o $@ -lgmp
$(BIN_DIR)/096: $(SRC_DIR)/096.cpp $(INC_DIR)/* $(DEP_DIR)/096.d | $(BIN_DIR) $(DEP_DIR) $(BIN_DIR)/096.txt
$(CC) $(CFLAGS) $< -o $@
$(BIN_DIR)/%: $(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(BIN_DIR) $(DEP_DIR)
$(CC) $(CFLAGS) $< -o $@
#
# Cleanup
#
.PHONY: clean
clean:
rm -r $(DEP_DIR)
rm -r $(BIN_DIR)
#
# Targets to build and run solution programs
#
.PHONY: 035
035: $(BIN_DIR)/035
$(BIN_DIR)/035
.PHONY: 064
064: $(BIN_DIR)/064
$(BIN_DIR)/064
.PHONY: 066
066: $(BIN_DIR)/066
$(BIN_DIR)/066
.PHONY: 070
070: $(BIN_DIR)/070
$(BIN_DIR)/070
.PHONY: 093
093: $(BIN_DIR)/093
$(BIN_DIR)/093
.PHONY: 096
096: $(BIN_DIR)/096
$(BIN_DIR)/096
.PHONY: 112
112: $(BIN_DIR)/112
$(BIN_DIR)/112
.PHONY: 113
113: $(BIN_DIR)/113
$(BIN_DIR)/113
.PHONY: 118
118: $(BIN_DIR)/118
$(BIN_DIR)/118
.PHONY: 134
134: $(BIN_DIR)/134
$(BIN_DIR)/134
.PHONY: 146
146: $(BIN_DIR)/146
$(BIN_DIR)/146
.PHONY: 148
148: $(BIN_DIR)/148
$(BIN_DIR)/148
.PHONY: 212
212: $(BIN_DIR)/212
$(BIN_DIR)/212
.PHONY: 214
214: $(BIN_DIR)/214
$(BIN_DIR)/214
.PHONY: 243
243: $(BIN_DIR)/243
$(BIN_DIR)/243
.PHONY: 317
317: $(BIN_DIR)/317
$(BIN_DIR)/317
.PHONY: 323
323: $(BIN_DIR)/323
$(BIN_DIR)/323
.PHONY: 354
354: $(BIN_DIR)/354
$(BIN_DIR)/354
.PHONY: 451
451: $(BIN_DIR)/451
$(BIN_DIR)/451
.PHONY: 500
500: $(BIN_DIR)/500
$(BIN_DIR)/500
.PHONY: 686
686: $(BIN_DIR)/686
$(BIN_DIR)/686
.PHONY: 719
719: $(BIN_DIR)/719
$(BIN_DIR)/719