Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
Windows support #607
This issue is for enhancement tracking/feature request. Since portability is a goal stated here and there does not seem to be an issue tracking this, I thought I would create one. If it is no longer a goal then feel free to close it, but I think that it would be useful even if low priority, and I might start some work on this if I can find the time.
Since the non-Mac Unix builds run on SDL it should not be too much trouble to port most of the application. That said I have not yet looked at the code base, so if there is anything to keep in mind, or any observations, warnings, information regarding portability to Windows, comments would be helpful.
It should still be entirely portable; if anything it's more portable than ever since the releases of this month as even OpenGL is now something that both platforms opt into rather than an assumption.
My recent work in this area has been merely to install Windows 10 in a virtual machine and start reading about C++/WinRT. I also had a look around ANGLE as a potential avenue for reusing much of the existing OpenGL code, though it's ES 3 rather than desktop OpenGL so I had the feeling that getting to Windows via either Android or a private iOS build might be intelligent.
In other words: I've read a bunch of things, failed to come to a conclusion, and not done any work (!)
I think I will immediately write a Wiki entry on how to port. The good news is: it should still be really easy. There's a single point of entry for obtaining 'a machine', then you need to register with it destinations for audio and video (and, optionally, 'activity', which means status LEDs in practice — drive activity, caps locks, etc), then push keyboard and joystick activity to it, and tell it how much time to run for.
There's some reflection on machine settings, though I could do a better job there.
Anyway, I'll write it up properly — concrete classes, etc — and reply again.
There's an inital draft of that documentation at https://github.com/TomHarte/CLK/wiki/Porting-Guide ; I'm sure I'll realise I've left a bunch of things out at some point, so watch for revisions.