aboutsummaryrefslogtreecommitdiff
path: root/BUILDING.md
blob: 105e7b49457d09292d5be40e1a404279124f60e0 (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
81
## Requirements

### [Qt](https://www.qt.io/)
 - Version 5.11

Even though most of the browser might work with the last LTS Qt release, always
use an up-to-date version of QtWebEngine. Security fixes to Blink do _not_ get
backported. QtWebEngine can be built with older versions of Qt, if upgrading Qt
is not a possibility.

### [boost](http://www.boost.org/)
 - Version 1.66
 - Components: program_options

### cmake
 - Version 3.10

### Compiler
 - C++17 support
 - gcc 7+;  clang 4+
 - Windows: only MSVC is supported due to QtWebEngine

## Basic Installation
In short, the generic cmake build loop of 'cmake, make, make install' will
generate a makefile, build the program and install it.

~~~ sh
# clone the repository
git clone https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote.git

# generate makefile
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ../smolbote

# make && make install
make -j4
make install
~~~

## Configuring

### vendor.cmake
vendor.cmake contains all settings but the build type. It can be used to easily
create a build profile.

When changing vendor.cmake, make sure to have all values defined in the preset.

### Compiler flags
cmake does not set any C++ flags by default, including no optimization flags.
You need to set these yourself if your build system doesn't set any either.

On gcc/clang, no optimize flags are set by default, resulting in rather bloated
code being generated. Recommend setting at least -O2. MSVC has optimze flags
set by default.

You can set the compiler using -DCMAKE_CXX_COMPILER=/path/to/c++. 
You can set additional compiler flags using -DCMAKE_CXX_FLAGS.

### Build type
Install paths are only set on Release builds.

~~~sh
-DCMAKE_BUILD_TYPE=Debug|Release
~~~

### Install prefix
Sets the install location prefix.
win32: Binary is written to bin/, and plugins to bin/plugins.
others: Binary will be written to bin/, and plugins to lib/smolbote/.

~~~sh
-DCMAKE_INSTALL_PREFIX=/usr/local
~~~

### Using libc++
You can use libc++ over stdlibc++ by setting UseLibCpp to On. Requires clang.

~~~ sh
-DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DUseLibCpp=On
~~~