# Building

## Dependencies

### Libraries
- [Qt](https://www.qt.io/)
  - an up-to-date version, even thought the codebase should largely work with Qt 5.7 or later
  - WebEngine
- [libconfig](https://hyperrealm.github.io/libconfig/)

### Tools
* A working compiler
  - gcc or clang on Linux
  - msvc on Windows due to QtWebEngine
* cmake
  - minimal version 3.1.0, but please use something up-to-date

## Compiling
smolbote follows the generic cmake build template.
```
# generate makefile
cmake -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../smolbote.git
# build
make -j 4
# install
make DESTDIR=/install/root/goes/here install
```

### Using libc++
You can use libc++ over stdlibc++ by setting UseLibCpp to On. Requires clang.
> -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DUseLibCpp=On

## Packaging

### Source Tarball
```
# Get source code from the repository
git archive --format=tar HEAD > head.tar
# Compress with lzip
lzip -9 --force --output=head.tar.lz head.tar
# Generate checksum
sha512sum --binary head.tar.lz > head.tar.lz.sha512
```

### makepkg
A PKGBUILD is provided in linux/makepkg/PKGBUILD. Please read before using.

## Troubleshooting

### Cannot link libconfig
You don't have pkg-config installed.