linux mixed 32/64 systems

Currently the build systems sets ARCH based on the result of 'uname -m'. On a mixed 32/64 system (one with a 64-bit kernel and a 32-bit userspace) this will result in "x86_64" which is wrong.

We'd like the ARCH variable to represent the userspace we're compiling in/for, not what the kernel happens to be.

Does anyone know of a clean way to detect this sort of system configuration?

Nick Lewycky

Cleanest way is probably to explicitly test if __x86_64__ is defined, ie

      [[#ifndef __x86_64__
       error: Not x86-64 even if uname says so!

Or in the alternative you can always key off sizeof(void *) == 8.


Nathan Keynes wrote: