<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Both Mac OS X and iOS builds on the same foundation.</blockquote><div><br></div><div>True-ish, but they're not even slightly the same from a developer perspective. People often make that mistake, where technologies are similar, but neglect the fact that you have to do fundamentally different things on the devices.</div>
<div>They need to be distinguished. If darwin is defined, then it ALSO needs a OSX/iOS for disambiguation in addition.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I've been tinkering with PSP... what about Android, PS3, XBox(/360), etc...<br>
Some of these platforms exist on multiple architectures... how to<br>
distinguish the architecture from the platform? Standardisation of arch<br>
names?<br>
</blockquote>
<br></div>
There are version identifiers for different architectures as well, e.g. X86, X86_64 and so on.</blockquote><div><br></div><div>Yes, but they need to be declared standard, and listed somewhere. If they're not reliable, then you'll inevitably be in the same mess as cross platform C apps where you need a global header that parses and munges a huge pile of arbitrary defines into useful macros for your app.</div>
<div><br></div><div>For any platform/architecture, there should ALWAYS be available at least identifiers for PLATFORM, OS, and ARCHITECTURE.</div><div>An identifier for TOOLCHAIN is often useful too, since different toolchains for the same system might be slight different, eg. console game dev in particular... GCC, SN, Codewarrior, proprietary compilers; all target exactly the same thing, but require some toolchain specific code.</div>
<div><br></div><div>Basically I think if those three (I'd argue for 4) things aren't present, standardised, and dependable, there will always eventually be the mess we all love in the top of C header files.</div><div>
<br></div><div>For instance, the OSX example above, I'd suggest something like:</div><div> PLATFORM = darwin</div><div> OS = OSX/iOS</div><div> ARCHITECTURE = X86/PPC/ARM</div><div> TOOLCHAIN = [whatever]</div></div>