Unification des sources CM4/CM5 : makefiles scindés (common/cm4/cm5/cm5.debug), #ifdef CIBLE_CM5 pour GPIO, correctifs get_ip_address()/signal handler/backtrace, portabilité 32/64 bits
This commit is contained in:
+1
-2
@@ -3,7 +3,6 @@
|
||||
# Informations :
|
||||
# 1. Ce fichier doit être exécutable : sudo chmod +x <nom du fichier>
|
||||
# 2. il peut être lancé manuellement par : ./<nom relatif ou complet du fichier>
|
||||
# 3. les sorties standard et d'erreur sont redirigées vers un fichier dans le répertoire UPLOAD (donc il sera uploadé à la prochaine connexion puis supprimé localement)
|
||||
#################################################################################################
|
||||
# Variables globales :
|
||||
DATEVERSION=$(date +"%y%m%d_%H%M%S")
|
||||
@@ -13,7 +12,7 @@ DATEVERSION=$(date +"%y%m%d_%H%M%S")
|
||||
echo "#define VERSION_LOGICIEL \""$DATEVERSION"\"" > ../sources/_version.txt
|
||||
#==============================================================================================================
|
||||
# Lancement du makefile :
|
||||
make
|
||||
make -f makefile.cm5
|
||||
#==============================================================================================================
|
||||
# Sauvegarde de la version :
|
||||
cp "../bin/shipheart_appli" "../versions/shipheart_appli_"$DATEVERSION
|
||||
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
#################################################################################################
|
||||
# Version DEBUG (ASan) — ne génère PAS d'entrée dans versions/, uniquement le binaire de test.
|
||||
#################################################################################################
|
||||
# Variables globales :
|
||||
DATEVERSION=$(date +"%y%m%d_%H%M%S")
|
||||
#==============================================================================================================
|
||||
# Met à jour le fichier '_version.txt' dans le répertoire ../sources avec le 'datecode'. Celui-ci sera
|
||||
# utilisé lors de la compilation/link de l'application comme version du logiciel.
|
||||
echo "#define VERSION_LOGICIEL \""$DATEVERSION"\"" > ../sources/_version.txt
|
||||
#==============================================================================================================
|
||||
# Lancement du makefile :
|
||||
make -f makefile.cm5.debug
|
||||
#==============================================================================================================
|
||||
# Déploiement vers le CM5 (nécessaire depuis le passage en cross-compilation WSL2 -
|
||||
# auparavant la compilation avait lieu directement sur le CM5, donc le binaire y
|
||||
# était déjà présent). Utilise l'alias SSH 'cm5' défini dans ~/.ssh/config.
|
||||
# NB : shipheart_appli tourne en permanence sur le CM5 - une écriture directe sur
|
||||
# le fichier cible échoue ("Text file busy"). On écrit donc dans un fichier
|
||||
# temporaire, puis on renomme (opération atomique, fonctionne même sur un
|
||||
# exécutable en cours d'utilisation).
|
||||
scp -q "../bin/shipheart_appli" cm5:/home/koriolan/shipheart/versions/current/shipheart_appli.new
|
||||
ssh cm5 "mv /home/koriolan/shipheart/versions/current/shipheart_appli.new /home/koriolan/shipheart/versions/current/shipheart_appli"
|
||||
#==============================================================================================================
|
||||
# Fin :
|
||||
exit 0
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
# 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é...
|
||||
@@ -0,0 +1,20 @@
|
||||
# Choix du compilateur 'gcc' ou 'g++' NB : un (seul) test avec les deux donne un exécutable 20% plus petit avec GCC qu'avec G++ !
|
||||
CC=gcc
|
||||
|
||||
# Options de compilation :
|
||||
CFLAGS = -O3 -Wall -funwind-tables -fno-omit-frame-pointer `mariadb_config --cflags`
|
||||
|
||||
# Options de link pour accéder à MariaDB et à Alsa :
|
||||
LIBS = -rdynamic `mariadb_config --libs` -lm -lasound -lssl -lcrypto -ljson-c
|
||||
|
||||
# Localisation des répertoires :
|
||||
SRCDIR=../sources
|
||||
OBJDIR=../objets
|
||||
EXEDIR=../../versions/current
|
||||
|
||||
# Nom de l'éxécutable généré :
|
||||
EXECUTABLE=shipheart_appli
|
||||
|
||||
# Inclusion des règles communes (aux CM4/CM5 et debug) :
|
||||
include makefile.common
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# 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).
|
||||
PKGCONFIG = PKG_CONFIG_PATH= PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig pkg-config
|
||||
|
||||
# Options de compilation :
|
||||
CFLAGS = -O3 -Wall -funwind-tables -fno-omit-frame-pointer $(shell $(PKGCONFIG) --cflags mariadb alsa libssl libcrypto json-c libgpiod)
|
||||
CFLAGS += -DCIBLE_CM5
|
||||
|
||||
# Options de link pour accéder à MariaDB, Alsa, OpenSSL, json-c et GPIO :
|
||||
LIBS = -rdynamic $(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
|
||||
|
||||
# Inclusion des règles communes (aux CM4/CM5 et debug) :
|
||||
include makefile.common
|
||||
@@ -0,0 +1,22 @@
|
||||
# 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).
|
||||
PKGCONFIG = PKG_CONFIG_PATH= PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig pkg-config
|
||||
|
||||
# Options de compilation :
|
||||
CFLAGS = -O3 -Wall -funwind-tables -fno-omit-frame-pointer $(shell $(PKGCONFIG) --cflags mariadb alsa libssl libcrypto json-c libgpiod) -fsanitize=address -g
|
||||
|
||||
# Options de link pour accéder à MariaDB, Alsa, OpenSSL, json-c et GPIO :
|
||||
LIBS = -rdynamic $(shell $(PKGCONFIG) --libs mariadb alsa libssl libcrypto json-c libgpiod) -lm -fsanitize=address
|
||||
|
||||
# Localisation des répertoires :
|
||||
SRCDIR=../sources
|
||||
OBJDIR=../objets_debug
|
||||
EXEDIR=../bin
|
||||
|
||||
# Nom de l'éxécutable généré :
|
||||
EXECUTABLE=shipheart_appli
|
||||
|
||||
# Inclusion des règles communes (aux CM4/CM5 et debug) :
|
||||
include makefile.common
|
||||
@@ -0,0 +1,20 @@
|
||||
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 fonctions 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é...
|
||||
Executable
+19
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
# Usage : ./sync_vers_cm4.sh <IP-ou-alias-ssh>
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage : $0 <IP-ou-alias-ssh>"
|
||||
echo "NB : Le certificat est lié à une adresse précise. Si changement d'adresse cible, mettre à jour dans WSL2 par 'nano ~/.ssh/config' "
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CM4_HOST="cm4-dev"
|
||||
CM4_DEST="~/shipheart/appli"
|
||||
|
||||
echo "Synchronisation des sources vers ${CM4_HOST}:${CM4_DEST}..."
|
||||
rsync -av --delete ../sources/ ${CM4_HOST}:${CM4_DEST}/sources/
|
||||
|
||||
echo "Synchronisation des makefiles..."
|
||||
rsync -av makefile.common makefile.cm4 ${CM4_HOST}:${CM4_DEST}/make/
|
||||
|
||||
echo "Terminé. Pour compiler sur la carte :"
|
||||
echo "Terminé. Pour compiler : ssh ${CM4_HOST} 'cd ${CM4_DEST}/make && ./mak.sh'"
|
||||
Reference in New Issue
Block a user