# Compilar JailDoctor's Dilemma

## Linux (Debian/Ubuntu)

Instal·la les dependències:

```bash
sudo apt install cmake make g++ xxd glslang-tools glslc
```

Per a SDL3, instal·la el paquet de desenvolupament si està disponible al teu repositori:

```bash
sudo apt install libsdl3-dev
```

Si `libsdl3-dev` no està als repos (SDL3 és recent i pot no estar a Debian stable), compila'l des del codi font:

```bash
git clone https://github.com/libsdl-org/SDL.git --branch release-3.x --depth 1
cd SDL && cmake -B build && cmake --build build && sudo cmake --install build
```

Compila el joc:

```bash
cmake -B build
cmake --build build
```

---

## Windows (MinGW via WinLibs)

1. Instal·la [WinLibs](https://winlibs.com/) (MinGW-w64 amb GCC)
2. Instal·la [CMake](https://cmake.org/download/)
3. Descarrega les [biblioteques de desenvolupament de SDL3 per a MinGW](https://github.com/libsdl-org/SDL/releases) — copia les capçaleres a `include/` i els fitxers `.a` a `lib/` de MinGW
4. Instal·la el [Vulkan SDK](https://vulkan.lunarg.com/sdk/home) — proporciona `glslc` per a la compilació dels shaders

Compila el joc (des d'un terminal MinGW):

```bash
cmake -B build -G "MinGW Makefiles"
cmake --build build
```

---

## macOS

Instal·la les dependències amb [Homebrew](https://brew.sh):

```bash
brew install cmake sdl3 glslang
```

Compila el joc:

```bash
cmake -B build
cmake --build build
```

---

## Què fa la compilació

`cmake --build build` ho gestiona tot en ordre:

1. **Compila els shaders** — regenera `postfx_vert_spv.h` / `postfx_frag_spv.h` si els fitxers `.vert` o `.frag` han canviat (requereix `glslc`)
2. **Compila el joc** — només recompila els fitxers `.cpp` modificats
3. **Empaqueta els recursos** — regenera `resources.pack` des de `data/` si algun asset ha canviat

Si `glslc` no està instal·lat, s'utilitzen les capçaleres de shaders precompilades (incloses al repositori).

> **Nota:** El `file(GLOB_RECURSE)` sobre `data/` s'avalua en temps de configuració de CMake. Si **afegeixes un fitxer nou** a `data/`, executa `cmake -B build` de nou perquè CMake el detecte com a dependència.

L'executable es genera a l'arrel del projecte: `./jaildoctors_dilemma`
