aboutsummaryrefslogtreecommitdiff
path: root/doc/building.md
blob: 9ea9344e94cb90761dc3cc5ac47f56eb4967e821 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
## 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.