a tale of two compilers

At the start of the week I began writing a SDL HIDD for AROS. Currently it does nothing, just prints a debug message when its init is called to show that its compiled and running. This was working on Sunday night.

On Monday I started modifying the build system to support disabling the X11 HIDD in favour of the SDL one. My plan is that you’ll be able to compile in one or more HIDDs for hosted, and select between them using a command line switch. No more X11 dependency if you don’t want it (and if you were doing, say, a Windows or OSX port, you don’t want it), and no more hidd.prefs, which I never liked. I finished the build stuff on Tuesday.

Once I’d confirmed it was working properly, I then recompiled with the X11 HIDD to ensure I hadn’t broken it. Something strange happened. The kernel booted, but then startup failed with a “illegal instruction”.

I figured I’d made some silly mistake (as we know, the depths of AROS contain much deep magic and many dragons), so I gradually backed out my changes, one at a time, testing as I went. No change. I tweaked and experimented over Wednesday and Thursday, with no luck. Finally, in desperation, I pulled a fresh untouched tree from Subversion and built it. It crashed.

The nightlies were working problem, so that pointed to a problem with my build environment. After some discussion with aros-dev and some poking, I finally found out today that GCC 4.2.1 is producing broken code. GCC 4.1.3, which is what the nightlies are compiled with and what I’ve now reverted to, works properly. I don’t know if its an actual GCC bug or if AROS code is actually wrong but used to work because of some edge case. AROS has some pretty spooky macros which could very well be at fault.

For the moment I’m happy to sit on the older GCC. I’ve lost days on this, and I’m just glad its over. I’m looking forward to getting some code written now.

Something I have been able to do while waiting for endless builds to complete is to read Git docs. I really like the look of it and am eager to give it a try for AROS development. I’ve decided I will develop the SDL HIDD using Git, so I should get the chance to see it in action. I’m not yet sure how to commit from Git to SVN yet, but I’m sure I’ll figure it out soon enough.

I’ve also made a public Git repository of the AROS sources available. These are available here: http://cataclysm.cx/git/. They’re updated from AROS Subversion every hour on the hour. Feel free to clone and pull from these repositories; I have bandwidth to burn.

This weekend should be a good one for code, I hope.