From 41835719e3df2c3cc7df850d867d497b01f3ca14 Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Wed, 10 Mar 2021 10:44:46 +0100
Subject: [PATCH] updates

---
 slides/make_avance.md | 46 ++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 41 insertions(+), 5 deletions(-)

diff --git a/slides/make_avance.md b/slides/make_avance.md
index 035659e..009efa4 100644
--- a/slides/make_avance.md
+++ b/slides/make_avance.md
@@ -189,12 +189,20 @@ OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))
 
 # That escalated quickly: `*`, `%`, `:=`, ...
 
+```makefile
+# version "longue"
+SOURCES = $(wildcard *.c)
+OBJECTS = $(SOURCES:.c=.o)
+# version "courte"
+OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))
+```
+
 Let's take one step at a time:
 
-* Les `*`,
-* Les `%`, et leurs différences.
-* Les fonctions, ici `wildcard` et `patsubst`.
-* Le symbole `:=` vs `=`.
+* Les `*`{.makefile},
+* Les `%`{.makefile}, et leurs différences.
+* Les fonctions, ici `wildcard`{.makefile} et `patsubst`{.makefile}.
+* Le symbole `:=`{.makefile} vs `=`{.makefile}.
 
 # Le symbole `*`
 
@@ -221,7 +229,35 @@ OBJECTS = *.o
 OBJECTS := $(wildcard *.o) # retourne tous les fichier .o
 ```
 
-# Le symbole `:=` vs `=` (1/2)
+# La différence entre `*` et `%`
+
+* Le symbole `*`{.makefile} sert à générer une *liste* d'objets.
+* Le symbole `%`{.makefile} sert comme *emplacement* (placeholder).
+
+## Exemple
+
+```makefile
+%.o: %.c # % est la partie avant .c 
+    $(CC) -o $@ -c $< $(CFLAGS) # la règle pour chaque `%.c`
+# équivalent à
+galaxy.o: galaxy.c
+stars.o: stars.c
+vec.o: vec.c
+
+```
+
+## Application
+
+```makefile
+$(patsubst # Substitution de texte pour chaque
+    %.c,\ # Le pattern "avant" le .c
+    %.o,\ # Le pattern "avant" le .o
+    $(wildcard *.c)\ # Tous les fichiers .c
+    )
+```
+
+
+# Le symbole `:=`{.makefile} vs `=`{.makefile} (1/2)
 
 Deux façon (flavors) d'assigner des variables (voir [ce lien](https://www.gnu.org/software/make/manual/html_node/Flavors.html#Flavors)):
 
-- 
GitLab