lardon3d/docs/development/build.md
2026-08-08 13:22:57 +02:00

122 lines
2.4 KiB
Markdown

# Instructions de build
## Prérequis
- **OS** : Linux (testé sur distributions récentes)
- **Compilateur** : Clang (recommandé) ou GCC
- **Système de build** : Meson + Ninja
- **Dépendances** : ncursesw (ncurses avec support Unicode)
- **Langage** : C17
## Installation des dépendances
```sh
# Debian / Ubuntu
sudo apt install clang meson ninja-build libncursesw5-dev pkg-config
# Fedora
sudo dnf install clang meson ninja-build ncurses-devel pkg-config
# Arch
sudo pacman -S clang meson ninja ncurses pkgconf
```
## Build standard
```sh
CC=clang meson setup build --wipe
meson compile -C build -j8
```
### Options utiles
```sh
# Build de debug (défaut)
meson setup build --wipe
# Build de release
meson setup build --wipe --buildtype=release
# Build avec optimisations aggressive
meson setup build --wipe --buildtype=release -Db_lto=true
```
## Validation
```sh
# Tests unitaires
meson test -C build --print-errorlogs
# Vérification du style (whitespace)
git diff --check
```
## Build ASan/UBSan (debug mémoire)
À exécuter pour tout ticket touchant la mémoire, les durées de vie ou les
allocations :
```sh
CC=clang meson setup build-asan --wipe \
-Db_sanitize=address,undefined
meson compile -C build-asan -j8
meson test -C build-asan --print-errorlogs
```
## Build TSan (concurrence)
À exécuter pour tout ticket touchant la concurrence (pthread, mutex,
variables de condition, états partagés) :
```sh
CC=clang meson setup build-tsan --wipe \
-Db_sanitize=thread \
-Db_lundef=false
meson compile -C build-tsan -j8
meson test -C build-tsan --print-errorlogs
```
## Variables d'environnement
| Variable | Description |
|---|---|
| `CC` | Compilateur C (défaut : gcc) |
| `CFLAGS` | Drapeaux de compilation supplémentaires |
| `LDFLAGS` | Drapeaux de liaison supplémentaires |
## Structure du build
```text
build/
├── src/ # objets et binaires
├── tests/ # binaires de tests
└── compile_commands.json # pour LSP / clangd
```
## Dépannage
### Erreur : ncursesw introuvable
```sh
# Vérifier l'installation
pkg-config --libs ncursesw
# Si absent, installer le paquet de développement ncursesw
```
### Erreur : clang introuvable
```sh
# Utiliser gcc en alternative
meson setup build --wipe
# ou installer clang
sudo apt install clang
```
### Build lent
```sh
# Réduire la parallélisation
meson compile -C build -j4
# ou utiliser ccache
CC="ccache clang" meson setup build --wipe
```