2.3 KiB
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.
-
Clone the repository with the submodules:
git clone --recursive https://dev.tildefriends.net/cory/tildefriends.git
-
Run
make -j $(nproc) debug
ormake -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 .
Now that you have a binary, head over to running.md.
Troubleshooting
The compiler throws a warning and I can't build the binary
You can choose to tell the compiler to ignore warnings.
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:
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. Note this is a dirty hack to get Tilde Friends to compile and you should not propose to keep this flag on. Instead, open a bug report.