FreeBSD : Installation de GtkRadiant, éditeur de carte pour Quake

Code source.

https://github.com/HackTechDev/gtkradiant4freebsd

Captures d'écran.

gtkradiant01.png

Portage FreeBSD — GtkRadiant

Ce document résume le travail de portage de la compilation de GtkRadiant sous FreeBSD (testé sur FreeBSD 15.0-RELEASE, toolchain clang système). Il complète ANALYSE.md, qui détaille le diagnostic technique de chaque erreur ; ce fichier-ci sert d'index rapide : ce qui a changé, où, et pourquoi.

Contexte

config.py avait déjà une base de support FreeBSD/OpenBSD/NetBSD (choix du compilateur cc/c++, define -D__BSD__), mais la compilation réelle avec scons --no-packs échouait sur plusieurs erreurs dues à du code hérité peu portable, mises en évidence par clang (plus strict que gcc sur ces points en C++17), pas par une réelle incompatibilité FreeBSD.

Fichiers modifiés

Fichier Nature du correctif
plugins/vfspk3/unzip.cpp Suppression du mot-clé register (5 déclarations dans huft_build()), interdit en C++17
libs/pak/unzip.cpp Idem, même fonction huft_build() dupliquée dans ce module
tools/urt/tools/quake3/q3map2/model.c PicoLoadFileFunc : ajout de const sur char *name pour matcher le pointeur de fonction attendu par PicoSetLoadFileFunc()
tools/urt/tools/quake3/q3map2/q3map2.h Déclaration de PicoLoadFileFunc alignée sur le même correctif
tools/quake3/q3data/p3dlib.c P3DLoad() : filelength(fileno(fp)) scindé en _WIN32 (garde fileno, vraie API CRT) vs autres plateformes (Q_filelength(fp) directement, sans passer par un descripteur entier)
tools/quake3/q3data/q3data.c Remplacement de l'en-tête obsolète <sys/dir.h> (absent sous FreeBSD 15) par <dirent.h>, standard POSIX

Fichiers de documentation ajoutés dans le même effort : ANALYSE.md (détail technique de chaque bug), CLAUDE.md (guide d'architecture/build pour Claude Code), et ce README_FREEBSD.md.

Portée

Tous les correctifs sont soit protégés par des gardes de plateforme existants (_WIN32, __linux__/__BSD__/__APPLE__), soit strictement neutres (suppression de register, alignement de signature déjà correcte côté mainline). Aucun impact attendu sur les builds Windows, Linux ou macOS existants.

Build validé

pacman -S git scons libxml2 gtk2 freeglut gtkglext subversion libjpeg-turbo   # ArchLinux
# sous FreeBSD : dépendances équivalentes via pkg (gtk2, gtkglext, libxml2, jpeg-turbo)

rm -rf build install site.sconf
scons --no-packs -j4

Résultat : scons: done building targets., code de sortie 0. Binaires produits et fonctionnels : install/radiant.bin, install/q3map2 (URT inclus), install/q3data, et les 24 modules de plugins (install/modules/*.so) sans symbole non résolu (ldd propre).

Voir ANALYSE.md pour le détail erreur-par-erreur.