1. Creates the missing `shared-dl` directory.
2. Unsets some environment variables that interfere with buildroot.
3. Disables `BR2_PER_PACKAGE_DIRECTORIES`, which prevented us
from using the partial sysroot build.
Also documents the `TOOLCHAIN=...` option in docs/building.md.
1. Run Docker as the current user instead of root,
removing the need to chown directories.
2. Copy `devilutionx.info` via CMake, removing the need to do it
manually.
3. Cleanup `prep.sh` somewhat.
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`.
This is mainly to help me test code builds under GCC faster than pushing to the remote and letting the build server do it. If someone without WSL installed selects the build target they'll get an error in their IDE, but no harmful impact other than that. The variables should be populated for any WSL2 installation. No idea about WSL1.
The whitespace in this file is showing significant changes because visual studio regenerates the whole file when a change is made, I didn't think it was worth reverting since it'll happen again next time someone makes a change (seems it defaults to spaces...). Added an entry to .editorconfig documenting the format used.
libmpq is a much simpler alternative to StormLib for reading MPQ archives.
We use our own fork of libmpq: https://github.com/diasurgical/libmpq
Impact:
* DevilutionX is now a lot more portable. Unlike StormLib, libmpq only
needs platform-specific code for Windows.
* Locks around file access **removed** (instead we duplicate the file descriptor for streamed audio only).
* RAM usage is **300 KiB** lower than StormLib.
* Stripped release linux_x86_64 binary is **32 KiB** smaller.
* Amiga build now hangs instead of crashing.
Users keep building non-release builds by copy-pasting the commands from
here.
As this uses a standard build flag (and not `-DBINARY_RELEASE=ON`),
users who are familiar with CMake or are building for development
will know to remove it.
Meanwhile, users who simply want to build from source will benefit from
optimized builds.
[ci skip]