Import initial du projet shipheart_appli

This commit is contained in:
2026-08-13 10:33:28 +02:00
commit 8fe204361b
62 changed files with 32339 additions and 0 deletions
Executable
+32
View File
@@ -0,0 +1,32 @@
#!/bin/bash
#################################################################################################
# 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")
#==============================================================================================================
# 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
#==============================================================================================================
# Sauvegarde de la version :
cp "../bin/shipheart_appli" "../versions/shipheart_appli_"$DATEVERSION
#==============================================================================================================
# 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
+46
View File
@@ -0,0 +1,46 @@
# 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é...