lscharen / silky-gs

A runtime for the Apple IIgs that provides a NES PPU and APU compatibility layer
10 stars 0 forks source link

Linux build POC #4

Open geoffp opened 4 hours ago

geoffp commented 4 hours ago

Hey! This is such amazing work.

I wanted to build this so I could try it on my GS, but my development machine is Linux, so I thought I'd try to get a Linux build process going. Turns out I was able to make it work without too much trouble!

Would you be interested in some work on a cross-platform build setup?

lscharen commented 4 hours ago

Hi!

Yes, it'd be interested. Since the code uses merlin32 which is Windows-only, I really hadn't thought that a non-Windows build pipeline would be viable, but if you've got a solution working, I'm all ears.

geoffp commented 4 hours ago

I checked and found that merlin32 is actually aggressively cross-platform these days, so that was actually the easiest part.

Cadius though is still Windows-only, but I was able to run it with Wine after a brief struggle to figure out which version of wine was going to work for me.

Then I had to change the config variable syntax in package.json and redo the .bat script in posix shell, and I think that was pretty much it. But at this point I was pretty sure I'd broken the windows build, and that to support both at once, something more would be needed.

I was left with the feeling that we could put together something that makes it easy to build on all three platforms either using JS (since you already depend on Node.js), some other common scripting language, or something else you'd like to try that we're both comfortable depending on.

Oh also: I did not address the debugging workflows, since there's no Linux build of Crossrunner yet (and couldn't make it work in wine), but I was able to make it sort-of work with KEGS, the downfall of which is that it's hard to make it do what you want just from a command line invocation; it tends to save tons of config state on its own.