1. Remove `find_package(BZip2 REQUIRED)` from Dependencies.cmake
because it is not used by devilutionx directly (it's a libmpq dependency).
2. For emscripten, use the built-in version of bzip2.
3. Reverts 0b4705cf1c, which added
a redundant `find_package(ZLIB REQUIRED)` to `Dependencies.cmake`.
SDL2 2.24.0 has a bug in its cmake for macOS: https://github.com/libsdl-org/SDL/issues/6119
This bug has already been fixed upstream. This is a workaround until the
next version of SDL2 is released.
The version in Ubuntu 22.04 comes without `ConvertUTF.{h,c}`.
We actually do not need `ConvertUTF.{h,c}` and starting from
v4.19 it is possible to tell SimpleIni to not include it
by setting `SI_NO_CONVERSION`.
Sets `SI_NO_CONVERSION` and raises the minimum required SimpleIni
version to 4.19.
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. 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.