Hardcoded value of GMP_LIMB_BITS impedes bi-arch builds
Niels Möller
nisse at lysator.liu.se
Wed Sep 30 15:14:27 UTC 2020
Jan Engelhardt <jengelh at inai.de> writes:
> When ./configure has run, the GMP_LIMB_BITS define in gmp.h is hardcoded
> to 32 or 64, depending on arch. This makes it impossible to use that
> header file for a x86_64-driven build with gcc -m32.
For what it's worth, debian multilib installs would have two separate
header files,
/usr/include/x86_64-linux-gnu/gmp.h
/usr/include/i386-linux-gnu/gmp.h
belonging to different arch versions of the packages, libgmp-dev:amd64
and libgmp-dev:i386, respectively.
> #define GMP_LIMB_BITS (sizeof(mp_limb_t) * CHAR_BIT)
As Torbjörn said, that doesn't work, since GMP_LIMB_BITS is expected to
be a constant known to the preprocessor, which is ignorant of C things
like types and sizeof. You'd need a gmp-h.in with something like
#ifdef @ALT_ARCH@
#define GMP_LIMB_BITS @ALT_GMP_LIMB_BITS@
#else
#define GMP_LIMB_BITS @GMP_LIMB_BITS@
#endif
and corresponding configure.ac setup. Not sure it's worth the effort,
since the multilib organization works fine, and works for *all*
libraries with arch-dependent headers.
Regards,
/Niels
--
Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677.
Internet email is subject to wholesale government surveillance.
More information about the gmp-bugs
mailing list