-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
133 lines (105 loc) · 3.68 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
uname_S := $(shell uname -s)
DEBUG = false
PROFILE = false
ifeq ($(uname_S), Darwin)
CC = gcc-10
else
CC = gcc
endif
SRC_DIR = src/
TARGETS_DIR = target/
OBJECTS_DIR = bin/
EXECUTABLES_DIR = app/
CFLAGSDEB = -g -Wall -Og -lm
LFLAGSDEB = -g -Wall -Og -lm -c
CFLAGSPROF = -march=native -O2 -lm -pg
LFLAGSPROF = -march=native -O2 -lm -c -pg
CFLAGSPROD = -march=native -O3 -lm
LFLAGSPROD = -march=native -O3 -lm -c
ifeq ($(DEBUG), true)
CFLAGS = $(CFLAGSDEB)
LFLAGS = $(LFLAGSDEB)
else
ifeq ($(PROFILE), true)
CFLAGS = $(CFLAGSPROF)
LFLAGS = $(LFLAGSPROF)
else
CFLAGS = $(CFLAGSPROD)
LFLAGS = $(LFLAGSPROD)
endif
endif
DEPS = \
$(SRC_DIR)graphContraction.h \
$(SRC_DIR)graph.h \
$(SRC_DIR)utils.h
OBJECTS = \
$(OBJECTS_DIR)graphContraction.o \
$(OBJECTS_DIR)graph.o \
$(OBJECTS_DIR)utils.o
OBJECT_TGS = \
graphContraction.o \
graph.o \
utils.o
EXECUTABLE_TGS = \
convertFromIGraph \
convertToIGraph \
doGraphContraction \
genErdosRenyi
DEF_FILENAME = simpleSample
default: help
all: $(EXECUTABLE_TGS) ## Compiles all the executables from the executable list
objects: $(OBJECTS) ## Compiles all the objects from the object list
doGraphContraction: $(TARGETS_DIR)doGraphContraction.c $(OBJECT_TGS) ## Compiles the target "doGraphContraction"
$(CC) $(CFLAGS) -o $(EXECUTABLES_DIR)[email protected] $< $(OBJECTS)
genErdosRenyi: $(TARGETS_DIR)genErdosRenyi.c $(OBJECT_TGS) ## Compiles the target "genErdosRenyi"
$(CC) $(CFLAGS) -o $(EXECUTABLES_DIR)[email protected] $< $(OBJECTS)
convertFromIGraph: $(TARGETS_DIR)convertFromIGraph.c $(OBJECT_TGS) ## Compiles the target "convertFromIGraph"
$(CC) $(CFLAGS) -o $(EXECUTABLES_DIR)[email protected] $< $(OBJECTS)
convertToIGraph: $(TARGETS_DIR)convertToIGraph.c $(OBJECT_TGS) ## Compiles the target "convertToIGraph"
$(CC) $(CFLAGS) -o $(EXECUTABLES_DIR)[email protected] $< $(OBJECTS)
%.o: $(SRC_DIR)%.c $(DEPS)
$(CC) $(LFLAGS) -o $(OBJECTS_DIR)$@ $<
testContraction: ## Builds and execute doGraphContraction on the default graph
make doGraphContraction
./app/doGraphContraction.app -v -p $(DEF_FILENAME)
clean: ## Removes all the compiled sources
rm -rf app/
rm -rf bin/
mkdir app
mkdir bin
touch app/.gitkeep
touch bin/.gitkeep
data-cleanup: ## Removes all the outputs
touch results/remove.txt
touch results/generated/remove.txt
rm results/*.txt
rm results/generated/*.txt
install: ## Configure the repository
touch config/serial.number
rm config/serial.number
echo 0 > config/serial.number
help: ## Shows this help
@echo ' '
@echo 'Usage: make <command>'
@echo ' ./app/<target> [-?]'
@echo ' '
@echo 'Command List:'
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
@echo ' '
@echo 'Variable list:'
@echo ' - Compiler: $(CC)'
@echo ' - Debug: $(DEBUG)'
@echo ' - Profile: $(PROFILE)'
@echo ' - Application Flags: $(CFLAGS)'
@echo ' - Library Flags: $(LFLAGS)'
@echo ' - Library Files: $(DEPS)'
@echo ' - Object Files: $(OBJECTS)'
@echo ' - Target List: $(EXECUTABLE_TGS)'
@echo ' - Default test: $(DEF_FILENAME)'
@echo ' '
@echo ' '
@echo 'Library by Elia Onofri and Flavio Lombardi'
@echo '{eonofri, flombardi}@uniroma3.it'
@echo 'Version 1.0 -- 18/08/2023'
@echo ' '
@echo ' '