## Building from source

### Dependencies
- [Qt](https://www.qt.io/)
- [meson](https://mesonbuild.com/) 0.52.0 or later
- [kconfiglib](https://github.com/ulfalizer/Kconfiglib/)
- A compiler with C++17 support
- spdlog: if not found can be downloaded by meson

### Optional dependencies
- openssl or libressl: for signing plugins
- breakpad-client
- gtest

### Steps
```
# clone the repository
git clone https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote.git smolbote.git
cd smolbote.git

# Get the submodules
git submodule init
git submodule update

# configure
mkdir build
meson build

# make
ninja
```

## Using meson

### Listing build options
```
build% meson configure
```

### Changing build options
```
build% meson configure -D<option-name>=<enabled|disabled>
```

### Prevent meson from downloading wraps
During configure, meson can download missing dependencies on its own using
wraps. To disable this, pass '--wrap-mode=nodownload' during the configure
phase:
```
repo% meson --wrap-mode=nodownload build-path
```

For more information on how to use meson, see the meson [quick quide](https://mesonbuild.com/Quick-guide.html).

## Configuring builds
smolbote uses Kconfig to store and customize features and default settings such
as keyboard shortcuts and paths. You can edit these settings using `menuconfig`
from kconfiglib or similar.