in Strategy, Turnbased

32bit linux now works again using pas2c.

From Hedgewars - : link to original post

A bit of history. With Hedgewars 0.9.23, we shifted to SDL2. While there were a fair # of SDL2 related issues that had to be addressed, there was one we didn't notice. Unbeknownst to us, FreePascal had an alignment bug. This was triggered by a CPU feature detection in SDL2 which could not be disabled, causing instant crashes.

It took a while for us to be aware of this since there aren't many 32 bit linux users, and many of them were on a long-term stable like Debian. Eventually they caught up and the error report feedback flooded in, this year in particular with 0.9.24.
I did reply to many of these feedbacks, but Google tends to send my emails to the Spam folder (which GMail users never check), so I got few responses.

With 0.9.25, we reenabled pas2c. What is pas2c? It was a tokeniser written in Haskell long ago by unc0rr to support the emscripten toolchain. At the time it went something like this. Pascal source —(Haskell tokeniser)→ C sources —(Clang)→ LLVM —(Emscripten)→ Javascript.
This worked, and we got an actual playable hedgewars in web browsers. Unfortunately the project has not been maintained.

Fortunately, pas2c still exists, so after some tweaking of the source code and fixing a few errors, it was usable once more for build purposes. You can use it to target any platform clang supports, extending the supported platforms for distros quite a bit.
We also attempted to force-enable it in CMakeLists.txt for 32 bit linux - you can see that here:
https://hg.hedgewars.org/hedgewars/file/06672690d71b/CMakeLists.txt#l72

The upshot is that Haskell is now a required dependency for 32 bit linux builds. The good news is that clang is a bit better at optimisation than FreePascal, so in general things load and run faster if you build using pas2c.

read more