diff options
Diffstat (limited to 'makefile')
-rw-r--r-- | makefile | 37 |
1 files changed, 25 insertions, 12 deletions
@@ -6,6 +6,13 @@ DOC_DIR := doc | |||
6 | BIN_DIR := bin | 6 | BIN_DIR := bin |
7 | 7 | ||
8 | 8 | ||
9 | ##### OUTPUT FILES | ||
10 | BIN := morph | ||
11 | ARCHIVE := upem-c-morphing-adam-pacien.tar.gz | ||
12 | LOG := commits.log | ||
13 | REPORT := project-report.pdf | ||
14 | |||
15 | |||
9 | ##### CC PARAMS | 16 | ##### CC PARAMS |
10 | CC := gcc | 17 | CC := gcc |
11 | CFLAGS := -ansi -Wall -pedantic -std=gnu99 -O2 | 18 | CFLAGS := -ansi -Wall -pedantic -std=gnu99 -O2 |
@@ -18,21 +25,23 @@ PERCENT := % | |||
18 | 25 | ||
19 | 26 | ||
20 | ##### MAIN TARGETS | 27 | ##### MAIN TARGETS |
21 | .PHONY: all check build report clean | 28 | .PHONY: all check build objects report clean |
22 | 29 | ||
23 | all: build check api-doc report; | 30 | all: build check api-doc report; |
24 | 31 | ||
32 | build: objects $(BIN_DIR)/$(BIN); | ||
33 | |||
25 | .SECONDEXPANSION: | 34 | .SECONDEXPANSION: |
26 | build: $$(patsubst $(SRC_DIR)/$$(PERCENT).c,$(BIN_DIR)/$$(PERCENT).o,$$(wildcard $(SRC_DIR)/**/*.c)); | 35 | objects: $$(patsubst $(SRC_DIR)/$$(PERCENT).c,$(BIN_DIR)/$$(PERCENT).o,$$(wildcard $(SRC_DIR)/**/*.c)); |
27 | 36 | ||
28 | .SECONDEXPANSION: | 37 | .SECONDEXPANSION: |
29 | check: $$(patsubst $(TEST_DIR)/$$(PERCENT).c,$(BIN_DIR)/$$(PERCENT).test,$$(wildcard $(TEST_DIR)/**/*.c)); | 38 | check: $$(patsubst $(TEST_DIR)/$$(PERCENT).c,$(BIN_DIR)/$$(PERCENT).test,$$(wildcard $(TEST_DIR)/**/*.c)); |
30 | 39 | ||
31 | report: $(DOC_DIR)/project-report.pdf $(DOC_DIR)/commits.log; | 40 | report: $(DOC_DIR)/$(REPORT) $(DOC_DIR)/$(LOG); |
32 | 41 | ||
33 | clean: clean-bin clean-api-doc clean-report clean-archive; | 42 | clean: clean-bin clean-api-doc clean-report clean-archive; |
34 | 43 | ||
35 | archive: upem-c-morphing-adam-pacien.tar.gz; | 44 | archive: $(ARCHIVE); |
36 | 45 | ||
37 | 46 | ||
38 | ##### BINARIES GENERATION | 47 | ##### BINARIES GENERATION |
@@ -44,10 +53,13 @@ $(BIN_DIR)/%.o: $$(patsubst $(BIN_DIR)/$$(PERCENT).o,$(SRC_DIR)/$$(PERCENT).c,$$ | |||
44 | $(CC) $(CFLAGS) $(IFLAGS) -c $< -o $@ | 53 | $(CC) $(CFLAGS) $(IFLAGS) -c $< -o $@ |
45 | 54 | ||
46 | .SECONDEXPANSION: | 55 | .SECONDEXPANSION: |
47 | $(BIN_DIR)/%.test: $$(patsubst $(BIN_DIR)/$$(PERCENT).test,$(TEST_DIR)/$$(PERCENT).c,$$@) build | $$(@D)/ | 56 | $(BIN_DIR)/%.test: $$(patsubst $(BIN_DIR)/$$(PERCENT).test,$(TEST_DIR)/$$(PERCENT).c,$$@) objects | $$(@D)/ |
48 | $(CC) $(CFLAGS) $(IFLAGS) $(BIN_DIR)/**/*.o $< -o $@ $(LFLAGS) | 57 | $(CC) $(CFLAGS) $(IFLAGS) $(BIN_DIR)/**/*.o $< -o $@ $(LFLAGS) |
49 | ./$@ | 58 | ./$@ |
50 | 59 | ||
60 | $(BIN_DIR)/$(BIN): $(SRC_DIR)/main.c | ||
61 | $(CC) $(CFLAGS) $(IFLAGS) $(BIN_DIR)/**/*.o $< -o $@ $(LFLAGS) | ||
62 | |||
51 | $(BIN_DIR)/%/: | 63 | $(BIN_DIR)/%/: |
52 | mkdir -p $(@D) | 64 | mkdir -p $(@D) |
53 | 65 | ||
@@ -65,31 +77,32 @@ api-doc: | |||
65 | 77 | ||
66 | clean-api-doc: | 78 | clean-api-doc: |
67 | $(RM) -r $(DOC_DIR)/api/* | 79 | $(RM) -r $(DOC_DIR)/api/* |
80 | $(RM) -r $(DOC_DIR)/gen/Data | ||
68 | 81 | ||
69 | 82 | ||
70 | ##### REPORT | 83 | ##### REPORT |
71 | .PRECIOUS: $(DOC_DIR)/%.pdf $(DOC_DIR)/commits.log | 84 | .PRECIOUS: $(DOC_DIR)/%.pdf $(DOC_DIR)/$(LOG) |
72 | .PHONY: clean-report | 85 | .PHONY: clean-report |
73 | 86 | ||
74 | .SECONDEXPANSION: | 87 | .SECONDEXPANSION: |
75 | $(DOC_DIR)/%.pdf: $$(patsubst $$(PERCENT).pdf,$$(PERCENT).md,$$@) | 88 | $(DOC_DIR)/%.pdf: $$(patsubst $$(PERCENT).pdf,$$(PERCENT).md,$$@) |
76 | pandoc --template $(DOC_DIR)/report-template.tex --number-sections --listings --output $@ $< | 89 | pandoc --template $(DOC_DIR)/report-template.tex --number-sections --listings --output $@ $< |
77 | 90 | ||
78 | $(DOC_DIR)/commits.log: | 91 | $(DOC_DIR)/$(LOG): |
79 | git log > $@ | 92 | git log > $@ |
80 | 93 | ||
81 | clean-report: | 94 | clean-report: |
82 | $(RM) -r $(DOC_DIR)/project-report.pdf | 95 | $(RM) $(DOC_DIR)/$(REPORT) |
83 | $(RM) -r $(DOC_DIR)/commits.log | 96 | $(RM) $(DOC_DIR)/$(LOG) |
84 | 97 | ||
85 | 98 | ||
86 | ##### ARCHIVE | 99 | ##### ARCHIVE |
87 | .PRECIOUS: upem-c-morphing-adam-pacien.tar.gz | 100 | .PRECIOUS: $(ARCHIVE) |
88 | .PHONY: clean-archive | 101 | .PHONY: clean-archive |
89 | 102 | ||
90 | upem-c-morphing-adam-pacien.tar.gz: build check clean report | 103 | $(ARCHIVE): check clean report |
91 | touch $@ | 104 | touch $@ |
92 | tar --exclude-vcs --exclude=./$@ -zcvf ./$@ . | 105 | tar --exclude-vcs --exclude=./$@ -zcvf ./$@ . |
93 | 106 | ||
94 | clean-archive: | 107 | clean-archive: |
95 | $(RM) upem-c-morphing-adam-pacien.tar.gz | 108 | $(RM) $(ARCHIVE) |