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

Reply via email to