-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
126 lines (99 loc) · 3.39 KB
/
Makefile
File metadata and controls
126 lines (99 loc) · 3.39 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
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
## Modifiable
##==============================================================================
# Nom du programme
PROG = prog
# Options Doxygen
PROJECTNAME = "ProgParallele"
PROJECTBRIEF = ""
OUTPUTLANGUAGE = French
# Dossiers
SRCDIR = src/
BINDIR = bin/
DOCDIR = doc/
SAVEDIR = save/
# Utilisateur
FISRTNAME = Arthur
LASTNAME = Viens
# Options
OPT = -Wall -ansi -pedantic -mavx -mavx2
# Compress extension
COMP = .tar.gz
## Section stable
##==============================================================================
CC = gcc
RM = rm -f
CP = cp -f
TAR = tar -zcvf
SRC = $(wildcard $(SRCDIR)*.c)
HEAD = $(wildcard $(SRCDIR)*.h)
OBJ = $(subst $(SRCDIR), $(BINDIR), $(SRC:.c=.o))
DIRS = $(SRCDIR) $(BINDIR) $(DOCDIR) $(SAVEDIR)
.PHONY : all clean save restore give doc help show
all : $(PROG) doc
# Règle pour générer les dossiers
#--------------------------------------------------------
$(DIRS) :
mkdir -p $@
# Règle pour générer les fichiers objets (.o).
#--------------------------------------------------------
obj : $(OBJ) | $(BINDIR)
$(BINDIR)%.o : $(SRCDIR)%.c $(HEAD) | $(BINDIR)
$(CC) $(OPT) -c $< -o $@
# Règle pour générer l'exécutable
#--------------------------------------------------------
$(PROG) : $(OBJ)
$(CC) $^ -o $@ -lm -lpthread
@echo
@echo Entrez ./$@ pour exécuter le programme.
# Règle pour effacer les fichiers temporaires
#--------------------------------------------------------
clean :
find . -type f \( -name '*.o' -o -name '*\*\~' -o -name '*.bak' -o -name '*.old' -o -regex "^\#.*\#$$" \) -delete
$(RM) $(PROG)
# Règle pour générer une sauvegarde
#--------------------------------------------------------
save : | $(SAVEDIR)
$(CP) $(SRCDIR)* $(SAVEDIR)
# Règle pour restaurer une sauvegarde
#--------------------------------------------------------
restore : | $(SAVEDIR)
$(CP) $(SAVEDIR)* $(SRCDIR)
# Règle pour générer une archive
#--------------------------------------------------------
give : readme
$(TAR) $(LASTNAME)$(FISRTNAME)-$(PROG)$(COMP) $(SRCDIR) Makefile README.md
# Règle pour générer le README
#--------------------------------------------------------
readme :
touch README.md
# Règle pour afficher l'aide
#--------------------------------------------------------
help :
@echo 'Makefile pour des programmes C version 0.1'
@echo 'Arthur Viens <abdulhamid@eisti.eu>'
@echo
@echo 'Utilisation: make [CIBLE]'
@echo 'CIBLES:'
@echo ' all (=make) compile et édite les liens'
@echo ' objs Compile seulement (aucune édition des liens).'
@echo " clean Nettoye les fichiers objets, temporaires et l'exécutable."
@echo ' show Affiche les variables.'
@echo ' help Affiche ce message.'
@echo ' save Crée une sauvegarde de src/ dans save/.'
@echo ' restore Restaure les fichiers du dossier save/.'
@echo ' give Génère une archive du projet/programme.'
@echo ' doc Génère une documentation du programme dans doc/.'
@echo ' readme Génère un fichier README.md.'
# Règle pour afficher les variables
#--------------------------------------------------------
show :
@echo 'PROG :' $(PROG)
@echo 'SRCDIR :' $(SRCDIR)
@echo 'BINDIR :' $(BINDIR)
@echo 'SAVEDIR :' $(SAVEDIR)
@echo 'DOCDIR :' $(DOCDIR)
@echo 'HEAD :' $(HEAD)
@echo 'SRC :' $(SRC)
@echo 'OBJ :' $(OBJ)
@echo 'CC :' $(CC)
@echo 'OPT :' $(OPT)