== Requirements

[cols="1,1,3"]
|===
|Name |Version |Notes

| link:https://www.qt.io/[Qt]
| 5.11.1 or later
| QtWebEngine should be buildable with older versions of Qt. Please use the
  latest version.

| link:http://www.boost.org/[boost]
| Version 1.66
| Components: program_options

| link:https://mesonbuild.com/[meson]
| Version 0.48
|

| ninja
|
| Requirement of meson

| python3
|
| Requirement both of meson, and some scripts in tools/

| A compiler
| C++17 support
| gcc 7+; clang 4+; on Windows only MSVC is supported due to QtWebEngine

| asciidoc
| 
| Only for building manpage

|===

== Building from source
In short, the generic cmake build loop of 'cmake, make, make install' will
generate a makefile, build the program and install it.

[source, sh]
----
# clone the repository
git clone https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote.git smolbote.git
cd smolbote.git

# These two submodules are required
git submodule init
git submodule update 3rd-party/SingleApplication/SingleApplication.git
git submodule update tools/Kconfiglib

# generate build.ninja
mkdir build
meson build

# make
ninja
----

=== Configuring smolbote
smolbote uses Kconfig to store and customize default application settings such
as keyboard shortcuts and paths. You can edit these settings by running
`tools/Kconfiglib/menuconfig.py` in the repository root.

When building, tools/config.py is used to load `platform-name/.config` and
generate a header file.

=== Configuring meson
Run `meson configure` in the build directory to list available options.

Use `meson configure -Doption=value` change them. Ninja will regenerate its
build file on next run.

See the link:https://mesonbuild.com/Quick-guide.html[meson documentation] for
more information on how to use meson.

// Compiling on Windows
include::Building/Windows.asciidoc[]

