For every platform, one of the following variables must be set by cmake:
__lux64__, __lux32__ Linux
__win64__, __win32__ MS Windows
__mac__ Apple Mac OSX
Then you get: OS type:
__unix__ Unix
__lux__ Linux
__win__ Windows
Platform:
__win32__ Windows 32 bits (x86)
__win64__ Windows 64 bits (AMD)
__lux32__ Linux 32 bits (x86)
__lux64__ Linux 64 bits (AMD)
__mac__ Mac
__plfsubdir__ String like "win32", "lux32" etc.
__plfname__ String like "MS Windows 32 bits", "Linux 32 bits"
Compiler type:
__gnuc__ GNU gcc
__msvc__ MS Visual C++
Language:
__cpp__ C++ (else C)
Byte order:
__little__ little-endian
Always defined:
__islittle__ 'true' if little endian machine, false otherwise
__islinux__ 'true' on Linux, 'false' otherwise
__is32bits__ 'true' on 32 bits platforms, 'false' otherwise
__ismac__ 'true' on Mac, 'false' otherwise
__iswin__ 'true' on Windows, 'false' otherwise