FreeBSD : Installation de Slade, éditeur de carte pour Doom

Code source.

https://github.com/HackTechDev/Slade4FreeBSD

Captures d'écran.

slade01.png

slade02.png

Compiler et lancer SLADE sous FreeBSD

Ce document résume l'analyse effectuée pour faire compiler SLADE 3.2.12 sur FreeBSD 15.0-RELEASE (amd64, Clang 19.1.7), les problèmes rencontrés côté build system, et les corrections apportées. Voir aussi ANALYSE.md pour le détail complet de l'investigation.

Résumé de l'analyse

Le projet compile "presque" tel quel sur FreeBSD, avec deux écarts par rapport à un build Linux/macOS classique :

  1. WebP : les ports FreeBSD n'installent pas de fichier de config CMake pour libwebp (pas de WebPConfig.cmake), seulement un .pc pkg-config. Le dépôt SLADE n'avait pas de module Find*.cmake pour WebP (contrairement à MPG123/FTGL/FluidSynth qui en ont un dans cmake/find_modules/). Correction apportée au dépôt : ajout de cmake/find_modules/FindWebP.cmake (calqué sur FindMPG123.cmake), qui recherche libwebp et libwebpdemux (les seules bibliothèques WebP réellement utilisées par le code, dans src/UI/WxWebpHandler.cpp).
  2. wx-config : les ports wxWidgets de FreeBSD nomment l'exécutable de config wxgtk3u-3.0-config / wxgtk3u-3.2-config, pas wx-config. Aucune modification du dépôt n'est nécessaire, il suffit de passer -DCL_WX_CONFIG=wxgtk3u-3.2-config à la configuration CMake (voir plus bas).
  3. Version de wxWidgets : le port wx30-gtk3 (wxWidgets 3.0.5) casse la compilation du header précompilé (wx/propgrid/advprops.h : wxPGProperty incomplet). C'est le bug connu déjà mentionné dans COMPILE.md ("wxWidgets >= 3.3.1 recommandé... bugs connus des versions antérieures"). Il faut utiliser le port wx32-gtk3 (wxWidgets 3.2.8), qui compile sans erreur.

Toutes les autres dépendances obligatoires (bzip2, zlib, FTGL, mpg123, OpenGL, SFML, libwebp) ainsi que les optionnelles (FluidSynth, Lua) sont disponibles directement dans les ports FreeBSD.

Installation des dépendances

sudo pkg install cmake ninja pkgconf git \
    wx32-gtk3 SFML ftgl mpg123 webp png fluidsynth lua54

bzip2 et zlib font partie de la base FreeBSD, pas besoin de les installer séparément.

Si wx30-gtk3 est déjà installé (version par défaut la plus ancienne des ports), ce n'est pas gênant : les deux versions de wxWidgets peuvent cohabiter, il suffit de cibler explicitement wxgtk3u-3.2-config au moment de la configuration CMake (voir ci-dessous).

Compilation

git clone <url-du-depot> SLADE-3.2.12   # ou utiliser le dépôt déjà cloné
cd SLADE-3.2.12
mkdir build && cd build
cmake -G Ninja -DCL_WX_CONFIG=wxgtk3u-3.2-config ..
cmake --build .

Options utiles supplémentaires (identiques à celles documentées dans CLAUDE.md) :

  • -DNO_LUA=ON — désactive le scripting Lua
  • -DNO_FLUIDSYNTH=ON — désactive la lecture MIDI FluidSynth
  • -DNO_WEBVIEW=ON — si wxWidgets a été compilé sans wxWebview
  • -DBUILD_PK3=OFF — pour ne pas regénérer slade.pk3 (activé par défaut)

La compilation complète (413 unités) a été testée avec succès, sans erreur, warnings mineurs seulement (-Wswitch sur des cas d'énumération non gérés dans Edit3D.cpp, sans impact fonctionnel).

Résultat dans build/ :

  • slade — exécutable ELF 64-bit FreeBSD (~295 Mo non strippé en configuration par défaut RelWithDebInfo)
  • slade.pk3 — ressources embarquées (icônes, palettes, configs de jeu, scripts Lua, etc.)

Lancement

slade.pk3 doit se trouver à côté de l'exécutable — ne pas copier uniquement le binaire ailleurs sans son .pk3 :

cd build
./slade

Fichiers modifiés/ajoutés dans le dépôt pour ce build

  • Ajouté : cmake/find_modules/FindWebP.cmake — nécessaire pour tout build sur un système fournissant WebP via pkg-config plutôt qu'un package CMake (c'est le cas de FreeBSD).
  • Aucune autre modification du code source n'a été nécessaire.