Files
Ange-Marie MAURIN - A2M Systèmes da0d31385b build: arborescence bin/<plateforme>/<type> et build unifié (ADR 0010)
- platform/layout : racine sequa-root.json, chemins des composants, arguments et chemins en UTF-8.
- Règles install() : bin/windows-x64/{debug,release,asan}/ (core, render, studio + ui, engines).
- Le Core trouve sequa-render et les adaptateurs depuis la racine (--sequa-root, passé par
  Studio host à sa copie fantôme) : plus de render-unavailable depuis le panneau Rendu.
- L'adaptateur Godot cherche Godot et son projet à côté de lui (surcharge par --adapter-options) ;
  template_release pour le type release. Godot hébergé dans les presets debug et release.
- scripts/build-all.ps1 : Godot, C++, interface, arrêt des processus du dossier visé, install ;
  check.ps1 l'appelle (modification de l'ADR 0004).
- docs/installation/ : compiler, lancer, installer et désinstaller par plateforme.
2026-11-07 15:50:37 +01:00
..

Plateforme : disposition de l'arborescence

Brique commune qui connaît la structure de l'installation SEQUA (ADR 0010). Elle permet à chaque composant (Studio host, Core, rendu, adaptateurs) de retrouver les autres binaires et ressources à partir d'un unique repère : le fichier sequa-root.json à la racine.

Arborescence attendue

<root>/sequa-root.json
<root>/core/sequa-core(.exe)
<root>/render/sequa-render(.exe)
<root>/studio/sequa-studio(.exe)
<root>/studio/ui/            (interface web, index.html)
<root>/engines/<engine>/sequa_<engine>_adapter(.dll|.so)

API (sequa::platform)

Pièce Rôle
root_marker Nom du fichier repère ("sequa-root.json").
current_executable() Chemin absolu de l'exécutable en cours (Windows / Linux / macOS).
module_path(address) Chemin du module (exe ou bibliothèque partagée) contenant address (dladdr / GetModuleHandleEx).
find_root(start) Remonte depuis start jusqu'à la racine du FS ; premier dossier contenant sequa-root.json.
executable_name(base) Ajoute .exe sous Windows, sinon inchangé.
module_name(base) Ajoute .dll sous Windows, .so ailleurs (macOS compris, suffixe CMake MODULE).
is_valid_engine_name(engine) Non vide, seulement [a-z0-9_].
utf8_arguments(argc, argv) Arguments en UTF-8 sans le nom du programme (Windows : relus par CommandLineToArgvW, argv étant dans la page de code locale).
path_from_utf8(text), path_to_utf8(path) Conversions chemin ↔ UTF-8 ; à utiliser pour tout chemin passé en argument à un processus enfant ou reçu de lui.
Layout(root) Façade orientée objet : core_executable(), render_executable(), studio_executable(), ui_dir(), engine_dir(engine), adapter_library(engine) (nullopt si nom invalide).

Utilisation

  • Studio host : trouve la racine via find_root(current_executable()), construit un Layout, passe --sequa-root <root> au Core lancé (copie fantôme, ADR 0006).
  • Core : reçoit --sequa-root, en déduit sequa-render et l'adaptateur moteur via Layout.
  • Adaptateurs : module_path sur un symbole interne → dossier de l'adaptateur → engines/<moteur>/ pour la bibliothèque Godot et le projet (ADR 0010 §7.0.1).

Aucune dépendance externe hors STL. Tests avec doctest (MIT).

Référence

ADR 0010 : Arborescence des binaires (développement et installation), build unifié