Now, in general I remain impressed at how easily half a million lines of code did port between these systems. The codebase included some fairly low level code, some hacking in the internals of the X server, and some vexing C++ (this was pre-ANSI C++ by some margin)and the record for getting it running on a new system was around two weeks.
However, every platform had some kind of gotcha in the toolchain. It would always be a different issueon one platform it would be template instantiation, on another it would be position-dependent code, on a third it would be allowing dereferencing of a null pointer. In each case, though, it would boil down to a peculiar default behaviour of some tool in the build processthe compiler, the linker, the dynamic loader. In each case, it would also always turn out that there was an option buried in the depths of the man page that would make the tool behave sensibly (where "sensibly" here means to behave like the equivalent tool on the other four platforms).
Thus the legend of the
--work-properly option was born.
The legend that whenever
isn't doing what it's supposed to, somewhere there's an option to
make it so.
And now, as I try to get
project up and running again, the hunt is on for the
--work-properly option for shared library generation.
[Edit: Nic helpfully points out that this page has some good stuff on OS X dylibs]