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
1. Removes adjustments to `orig/system_palette`.
They're not needed because videos have a separate render loop.
For an in-game movie, the caller sets the palette after the movie.
2. Splits some of `SVidPlayContinue` code into functions
(`UpdatePalette` and `BlitFrame`).
3. Adds a separate config variable for SDL1 SVid video mode.
E.g. on rg99 there isn't enough video RAM for double-buffering
the main game but we can do it for the videos.
1. Platform and toolchain files are now all under `platforms/`, with a
single `CMake/platforms/${platform}.cmake` per platform.
2. Custom functions/macros are under `functions/`.
3. Finder modules are in `/finders`.
Changes how dependency options are handled and moves them out of
`CMakeLists.txt`.
Major changes:
1. The static default now takes `TARGET_SUPPORTS_SHARED_LIBS` into account
2. The `DIST` setting no longer affects the static default.
3. The static option is now visible for system dependencies as well.
(it was previously hidden by `cmake_dependent_option`).
4. The auto-detection mechanism for `libfmt` and `SDL_image` only
applies if the setting has not been set.
5. SDL2 on Android is now also linked statically,
resulting in a 1.1 MiB smaller APK.
When using non-system dependencies, the default should always be static,
as there are 2 main use cases for these:
1. Dependencies that we must currently vendor because our forks have
significant changes that are not yet merged/released upstream.
2. Platforms that have no system packages, such as Android and iOS.
In both cases, static linking is the most appropriate default.
Previously, only the translations were copied for Android at build time.
The other assets were copied only at configure time.
Replaces Android-specific handling with a general mechanism to override
the build-time assets directory.
Instead of using the `GETTEXT_PROCESS_PO_FILES` function, do it
ourselves in a cleaner way.
This fixes a number of issues:
1. Translations and assets are now built whenever the binary is built,
without causing the binary to be rebuilt.
2. Translations are only copied to `build/assets` (previously they were
also copied to `build/`).
3. This should now be compatible with the new XCode.
The `SDL_main.h` header defines `main` to be `SDL_main` *when needed
by the target platform. This header must be included before defining
`main`.
The `SDL2::SDLmain` library should be linked only to the executable, not
to `libdevilutionx`.
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.