On 07-11-2011 11:55, Manu wrote:
Both Mac OS X and iOS builds on the same foundation.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. They need to be distinguished. If darwin is defined, then it ALSO needs a OSX/iOS for disambiguation in addition. I've been tinkering with PSP... what about Android, PS3, XBox(/360), etc... Some of these platforms exist on multiple architectures... how to distinguish the architecture from the platform? Standardisation of arch names? There are version identifiers for different architectures as well, e.g. X86, X86_64 and so on. 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. For any platform/architecture, there should ALWAYS be available at least identifiers for PLATFORM, OS, and ARCHITECTURE. 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. 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. For instance, the OSX example above, I'd suggest something like: PLATFORM = darwin OS = OSX/iOS ARCHITECTURE = X86/PPC/ARM TOOLCHAIN = [whatever]
I'm not sure I see the idea in having a platform value separate from an OS value. Otherwise I agree; OS, architecture, and toolchain should always be identifiable.
- Alex
