aboutsummaryrefslogtreecommitdiff
path: root/doc/Building.asciidoc
blob: f1927def0d6cb73ef6bf13a062a5ab8f2be0c95a (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
== 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[]