-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
52 lines (32 loc) · 1.14 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
SrcDir = src
LibDir = $(SrcDir)/lib*
Lib-CompilationUnits = $(shell find $(LibDir) -name '*.c')
Mat-OutputFile = matriz
Mat-CompilationUnits = $(Lib-CompilationUnits) $(SrcDir)/main-mat.c
Tree-OutputFile = arvore
Tree-CompilationUnits = $(Lib-CompilationUnits) $(SrcDir)/main-tree.c
Build = gcc
Standard = c99 -pedantic
Libs = -lm
Warnings = -Wall -Wextra -Werror
Optimize = -O2 -flto
BuildFlags = $(Warnings) \
-std=$(Standard) \
$(Libs) \
$(Optimize) \
-I $(SrcDir) \
-o $(1)
DebugFlags = -g
ReleaseFlags = -DNDEBUG
all: release-mat release-tree
build-mat: $(SrcDir)
@$(Build) $(call BuildFlags,$(Mat-OutputFile)) $(DebugFlags) $(Mat-CompilationUnits)
build-tree: $(SrcDir)
@$(Build) $(call BuildFlags,$(Tree-OutputFile)) $(DebugFlags) $(Tree-CompilationUnits)
release-mat: $(SrcDir)
@$(Build) $(call BuildFlags,$(Mat-OutputFile)) $(ReleaseFlags) $(Mat-CompilationUnits)
release-tree: $(SrcDir)
@$(Build) $(call BuildFlags,$(Tree-OutputFile)) $(ReleaseFlags) $(Tree-CompilationUnits)
clean:
rm $(Mat-OutputFile)
rm $(Tree-OutputFile)