https://github.com/HackTechDev/gtkradiant4freebsd
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.
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.
| 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.
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.
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.