122 lines
2.4 KiB
Markdown
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
|
|
```
|