## One word of caution before proceeding.
This is not the usual or preferred way to build programs on FreeBSD.  
As of writing there is no official fresh port available for eden-emu, but it is in the works.  
After it is available you can find a link to the eden-emu fresh port here and on Escarys github repo.  
See this build as an App Image alternative for FreeBSD.

## Dependencies.  
Before we start we need some dependencies.  
These dependencies are generally needed to build eden-emu on FreeBSD.

```
devel/cmake  
devel/sdl20  
devel/boost-libs  
devel/catch2  
devel/libfmt  
devel/nlohmann-json  
devel/ninja  
devel/nasm  
devel/autoconf  
devel/pkg-config  
devel/qt6-base  

multimedia/ffnvcodec-headers  
multimedia/ffmpeg  

audio/opus  

archivers/liblz4  

lang/gcc12  

graphics/glslang  
graphics/vulkan-utility-libraries  
```

---

### Build preparations:  
Run the following command to clone eden with git:
```sh
git clone --recursive https://git.eden-emu.dev/eden-emu/eden
```
You usually want to add the `--recursive` parameter as it also takes care of the external dependencies for you.

Now change into the eden directory and create a build directory there:
```sh
cd eden
mkdir build
```

Change into that build directory:
```sh
cd build
```

Now choose one option either 1 or 2, but not both as one option overwrites the other.

#### 1. Building in Release Mode (usually preferred and the most performant choice):
```sh
cmake .. -GNinja -DYUZU_TESTS=OFF
```

#### 2. Building in Release Mode with debugging symbols (useful if you want to debug errors for a eventual fix):
```sh
cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DYUZU_TESTS=ON
```

Build the emulator locally:
```sh
ninja
```

Optional: If you wish to install eden globally onto your system issue the following command:
```sh
sudo ninja install
```
OR
```sh
doas -- ninja install
```
