1. Adds a `libdevilution_so` target when tests are enabled.
2. Each test file is now a separate binary target linked against `libdevilutionx_so` (can now run tests in parallel).
3. Tests are now defined in a separate `test/CMakeLists.txt` file.
4. Building the tests is now controlled by the standard `BUILD_TESTING` option (defined by CTest).
5. Tests are now built by default.
6. On CI, test errors are now reported.
Also:
* `.clang-format`: Enable SortIncludes in tests
* `path_test.cpp`: Fix -Wsign-compare
With this flag (off by default), all of the dependencies are packaged
into the source archive (including SDL2 etc).
Useful for building on machines without an internet connection.
The does some pruning of the dependencies' files to avoid a 100 MiB+ tarball.
Even with that, the final tarball size is 17 MiB with xz, 25 MiB with gzip.
See the file documentation at the top of `tools/make_src_dist.py` for
more information.
The line wrapping algorithm of gettext is somewhat complicated.
Rather than trying to approximate it, use `msgcat` from gettext
directly. This is also what poedit does.
This tool can insert ZWSP between words in Chinese .po files using this
model: https://tfhub.dev/google/zh_segmentation/1
We will use this tool to be able to word wrap Chinese translations at runtime
without bundling a segmenter.
Doing this offline also allows us to use a segmenter that would
otherwise be too slow for runtime.