From 9c47ceeef79caa02c5ee810659d8f784676b3f71 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 29 Jul 2018 14:08:27 +0200 Subject: Update build instructions --- BUILDING.md | 62 +++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 26 deletions(-) (limited to 'BUILDING.md') diff --git a/BUILDING.md b/BUILDING.md index 50ca3ea..51fb333 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -1,17 +1,22 @@ ## Requirements -### [Qt](https://www.qt.io/) 5.11 +### [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/) program_options +### [boost](http://www.boost.org/) + - Version 1.66 + - Components: program_options -### cmake 3.10 +### cmake + - Version 3.10 -### Compiler with C++17 support +### Compiler + - C++17 support - gcc 7+; clang 4+ - Windows: only MSVC is supported due to QtWebEngine @@ -21,18 +26,26 @@ generate a makefile, build the program and install it. ~~~ sh # clone the repository -hg clone https://neueland.iserlohn-fortress.net/smolbote.hg +git clone https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote.git # generate makefile mkdir build && cd build -cmake -DCMAKE_CXX_FLAGS="-O2 [other cxx flags]" -DCMAKE_BUILD_TYPE=Release ../smolbote.hg +cmake -DCMAKE_BUILD_TYPE=Release ../smolbote # make && make install make -j4 make install ~~~ -### -DCMAKE_CXX_FLAGS +## 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. @@ -40,14 +53,28 @@ 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. -### -DCMAKE_BUILD_TYPE +You can set the compiler using +~~~sh +-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. -### -DCMAKE_INSTALL_PREFIX +~~~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. @@ -55,20 +82,3 @@ You can use libc++ over stdlibc++ by setting UseLibCpp to On. Requires clang. -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DUseLibCpp=On ~~~ -### Verifying source code integrity -Since mercurial doesn't have any method for signing commits, some commits have -signed sha512 checksums available. - -~~~ sh -# get node for the current commit -node="$(hg log -r tip --template='{node}')" - -# get sha512 checksums and signature -curl -O https://neueland.iserlohn-fortress.net/smolbote/integrity/$node -curl -O https://neueland.iserlohn-fortress.net/smolbote/integrity/$node.sig - -# verify signature and files -gpg --verify $node.sig -sha512sum --check --quiet $node -~~~ - -- cgit v1.2.1