76 lines
2.0 KiB
Markdown
76 lines
2.0 KiB
Markdown
# How to build Tilde Friends
|
||
|
||
> Disclaimer: this documentation has been written by a Linux user and has not been reviewed by other people on other platforms. The procedure may vary slightly depending on your operating system.
|
||
|
||
Builds **on** Linux (`x86_64` and `aarch64`), MacOS, OpenBSD, and Haiku.
|
||
|
||
Builds **for** all of those host platforms plus `mingw64`, iOS, and android.
|
||
|
||
Dependencies:
|
||
|
||
- `openssl` (`libssl-dev`, in debian-speak)
|
||
|
||
Dependencies for Android:
|
||
|
||
- TODO
|
||
|
||
Dependencies for iOS:
|
||
|
||
- TODO
|
||
|
||
Dependencies for Windows:
|
||
|
||
- TODO
|
||
|
||
> All other dependencies are kept up to date as git submodules.
|
||
|
||
1. Clone the repository with the submodules: `git clone --recursive https://dev.tildefriends.net/cory/tildefriends.git`
|
||
|
||
2. Run `make -j $(nproc) debug` or `make -j $(nproc) release`
|
||
|
||
> If you're unsure whether you should choose `debug` or `release`, stick to `release`.
|
||
|
||
> `-j $(nproc)` will start a compiler for every CPU thread, which will dramatically reduce the time needed to compile Tilde Friends.
|
||
|
||
An executable will be generated in a subdirectory of `out/`
|
||
|
||
It's possible to build for Android, iOS, and Windows on Linux, if you have the right dependencies in the right places. Run `make -j $(nproc) windebug winrelease iosdebug-ipa iosrelease-ipa release-apk`
|
||
|
||
To build in docker, `docker build .`
|
||
|
||
On NixOS: TODO
|
||
|
||
Now that you have a binary, head over to <running.md>.
|
||
|
||
## Troubleshooting
|
||
|
||
### The compiler throws an error and I can't build the binary.
|
||
|
||
Open `GNUMakefile` and edit the CFLAGS environment variable around line 50.
|
||
|
||
For example given this error:
|
||
|
||
```
|
||
src/http.c: In function ‘tf_http_get_cookie’:
|
||
src/http.c:1089:128: error: check of ‘name’ for NULL after already dereferencing it [-Werror=analyzer-deref-before-check]
|
||
```
|
||
|
||
Add:
|
||
|
||
```diff
|
||
CFLAGS += \
|
||
-std=gnu11 \
|
||
-Wall \
|
||
-Wextra \
|
||
-Wno-unused-parameter \
|
||
+ -Wno-analyzer-deref-before-check \
|
||
-MMD \
|
||
-MP \
|
||
-ffunction-sections \
|
||
-fdata-sections \
|
||
-fno-exceptions \
|
||
-g
|
||
```
|
||
|
||
Now the compiler will ignore this error and *should* continue building anyways.
|