The `VERSION` variable doesn't work with a release tarball, because it requires git to be set correctly.
Instead this reads the version from the `VERSION` file.
- Shared helpers extracted to functions.sh for use by upstream packaging,
Mod SDK, and downstream packaging (via the Makefile targets).
- Assembly management separated from data and combined between engine
and mods to prepare for pending .NET core requirements.
- Streamline Makefile targets.
- Clean up a lot of old technical debt.
- Use SDL2 message boxes instead of Winforms.
- Use a proper project instead of compiling a single file.
- Use assembly attributes instead of modifying strings in the source code.
- Remove generic OpenRA.exe launcher.
- Replace MakeLAA.exe with a python script.
On FreeBSD build fails, so check if `msbuild` exists without arguments.
$ gmake
command: wrong number of arguments
OpenRA requires the 'msbuild -verbosity:m -nologo' tool provided by Mono >= 5.4.
gmake: *** [Makefile:154: core] Error 1
# FreeBSD sh
$ command -v echo ls
command: wrong number of arguments
# dash
$ command -v echo ls
echo
# ksh, bash, zsh
$ command -v echo ls
echo
/bin/ls
The Makefile behaviour is recreated using the new and significantly
cleaner .NET Core csproj format.
fixheader.exe is promoted to OpenRA.PostProcess.exe and now runs
on all platforms.
- Rename Bits<T> to BitSet<T>.
- Implement set based helpers for BitSet<T>.
- When representing TargetTypes of ITargetable in various traits, use a BitSet<TargetableType> instead of HashSet<string> for better performance & reduced memory usage.
- Fix FieldLoader to trim input values when generating a BitSet<T>.
- Require T in BitSet<T> and BitSetAllocator<T> to be a class since it's just a marker value. This allows the JIT to instantiate generic code for these classes once, as they don't benefit from specialized code for T. (Typically JITs will generate shared code for all reference types, and unique code for every value type encountered).