ISO is not useful for us because the user still has to put diabdat.mpq
on the hard drive. At this point, might as well put DevilutionX on the
hard drive as well.
Changes the CI to produce a zip file with our assets and the `default.xbe`
executable.
1. Make the vcpkg hack minimal by only defining the options it needs
before `include(Platforms)`.
Every dependent option needed by vcpkg has to be recalculated
after `include(Platforms)`. This brings the count of such options
down to 1 (`PACKET_ENCRYPTION`).
2. `include(Platforms)` before the rest of the options.
3. Group related options together into sections and add comments.
4. Fix `--gc-sections` for C files. Also adds `-Wl,--as-needed`.
Note: `PIE` can now be `ON` even if `BUILD_TESTING` is `OFF`.
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.