aboutsummaryrefslogtreecommitdiff
path: root/doc/building.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/building.md')
-rw-r--r--doc/building.md59
1 files changed, 59 insertions, 0 deletions
diff --git a/doc/building.md b/doc/building.md
new file mode 100644
index 0000000..9ea9344
--- /dev/null
+++ b/doc/building.md
@@ -0,0 +1,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.
+