# Choix du compilateur croisé (cible aarch64/CM5, exécuté depuis WSL2 x86_64) : CC=aarch64-linux-gnu-gcc # Recherche pkg-config restreinte aux .pc arm64 uniquement (PKG_CONFIG_LIBDIR # écrase le chemin de recherche par défaut, pour ne jamais mélanger avec les # .pc x86_64 de l'hôte). mariadb_config est abandonné : ce script n'est pas # conscient du multiarch et renverrait les chemins x86_64 de l'hôte. PKGCONFIG = PKG_CONFIG_PATH= PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig pkg-config # Options de compilation : # PRODUCTION : CFLAGS = -O3 -Wall $(shell $(PKGCONFIG) --cflags mariadb alsa libssl libcrypto json-c libgpiod) # DEBUG : #CFLAGS = -O3 -Wall $(shell $(PKGCONFIG) --cflags mariadb alsa libssl libcrypto json-c libgpiod) -gstabs # Possibilité d'utiliser aussi '-Wunused-variable' si besoin... Voire 'Wall' si on veut se faire mal...! # Options de link pour accéder à MariaDB, Alsa, OpenSSL, json-c et GPIO : LIBS = $(shell $(PKGCONFIG) --libs mariadb alsa libssl libcrypto json-c libgpiod) -lm # Localisation des répertoires : SRCDIR=../sources OBJDIR=../objets EXEDIR=../bin # Nom de l'éxécutable généré : EXECUTABLE=shipheart_appli #------------------------------------------------------------------------------------------------------------ # !!!!!!!!! .............................NE DOIT PAS ETRE MODIFIE EN DESSOUS.......................!!!!!!!!!! #------------------------------------------------------------------------------------------------------------ SRC= $(wildcard $(SRCDIR)/*.c) DEPS= $(wildcard $(SRCDIR)/*.h) OBJ = $(subst $(SRCDIR),$(OBJDIR), $(patsubst %.c, %.o, $(SRC)) ) # Règle de plus haut niveau : all: $(EXEDIR)/$(EXECUTABLE) # Linker (dépendance de l'exécutable vs les fichiers Objet) : $(EXEDIR)/$(EXECUTABLE): $(OBJ) $(CC) -o $@ $^ $(LIBS) # Compilateur (dépendance des fichiers Objet vs leur fichier Source et TOUS les Headers) : $(OBJDIR)/%.o: $(SRCDIR)/%.c $(DEPS) $(CC) -o $@ -c $< $(CFLAGS) # Cas particulier du fichier '_version.c' qui dépend, en plus, du fichier '_version.txt' : # cf fichier '_version.c' pour détails. $(OBJDIR)/_version.o: $(SRCDIR)/_version.c $(SRCDIR)/_version.txt $(CC) -o $(OBJDIR)/_version.o -c $(SRCDIR)/_version.c $(CFLAGS) # NB : Les focntions de type Clean ou Mrproper ne sont pas laissées car # on part du principe qu'on garde les fichiers objets dans le répertoire dédié...