This essentially is a even-more refactored version of the new eupak "Task" setup, but done in a generic way, so multiple tools can be written like eupak easily, and I Don't Need to Duplicate It Every Time.
This commit also comes with a new test binary, "toollib_test". This will be removed once it's no longer needed and I'm done sketching out the API set (and eupak is refactored to use toollib instead), but for now this provides a two-way thing:
- Allows me to hack on toollib without breaking everything
- Shows how to use toollib.
Also fix some warnings and potential issues that building the entire EuropaTools codebase under those flags showed.
Later on once we drop the libpixel and stbiw dependencies, we can probably turn on -Werror for release builds.
Instead of using set_target_properties on all tool binaries,
instead we can use target_compile_features([xxx] PUBLIC cxx_std_20).
This properly alienates projects which depend on libeuropa, allowing the src/tools CMakeLists to be trimmed down quite a bit.
Also fixes a build break I accidentally introduced.