Browse Source

Make out of the box build on x86_64 system with complete 32 bit

userland possible
        * include/cln/config.h.in: Don't #define __x86_64__ when
        __i386__ is defined.
        * src/base/digitseq/cl_asm_x86_64_.cc: New file.
        * doc/cln.tex: Revert workaround description introduced 2005-05-02.
master
Richard Kreckel 20 years ago
parent
commit
2ebe834823
  1. 9
      ChangeLog
  2. 12
      doc/cln.tex
  3. 25
      include/cln/config.h.in
  4. 6
      src/base/digitseq/cl_asm_x86_64_.cc

9
ChangeLog

@ -1,3 +1,12 @@
2005-08-24 Richard B. Kreckel <kreckel@ginac.de>
Make out of the box build on x86_64 system with complete 32 bit
userland possible
* include/cln/config.h.in: Don't #define __x86_64__ when
__i386__ is defined.
* src/base/digitseq/cl_asm_x86_64_.cc: New file.
* doc/cln.tex: Revert workaround description introduced 2005-05-02.
2005-06-10 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* Makefile.in: Don't enter nonexisting directories.

12
doc/cln.tex

@ -438,18 +438,6 @@ on all architectures. Try disabling them if you run into linker
problems. Also, they are generally somewhat slower than static
libraries so runtime-critical applications should be linked statically.
If you are compiling on a 64-bit machine with 32-bit userland, you
might have to specify that explicitly while configuring the library.
For instance, the popular x86_64 architecture can host a 32-bit x86
operating system and toolchain on top of a 64-bit kernel. In such a
situation, you must explicitly tell configure @emph{not} to assume a
64-bit OS:
@example
$ ./configure --build=i686-pc-linux-gnu
@end example
If you forget about this, the build will fail because @code{uname -m}
will set x86_64 which conflicts with what the compiler knows.
If you use @code{g++} from gcc-3.1 with option @samp{-g}, you will need
some disk space: 335 MB for building as both a shared and a static library,
or 130 MB when building as a shared library only.

25
include/cln/config.h.in

@ -18,49 +18,68 @@
#ifndef __i386__
#undef __i386__
#endif
// Take care not to define both __i386__ and __x86_64__ on those systems with
// 64 bit kernel and 32 bit userland:
#ifndef __x86_64__
#ifndef __i386__
#undef __x86_64__
#endif
#endif
#ifndef __m68k__
#undef __m68k__
#endif
// NB: GCC def's __mips__ both on big-endian and little-endian systems.
#ifndef __mips__
#undef __mips__
#endif
#ifndef __mipsel__
#undef __mipsel__
#endif
#ifndef __mips64__
#undef __mips64__
#endif
#ifndef __sparc__
#undef __sparc__
#endif
#ifndef __sparc64__
#undef __sparc64__
#endif
#ifndef __alpha__
#undef __alpha__
#endif
#ifndef __hppa__
#undef __hppa__
#endif
#ifndef __arm__
#undef __arm__
#endif
#ifndef __rs6000__
#undef __rs6000__
#endif
#ifndef __m88k__
#undef __m88k__
#endif
#ifndef __convex__
#undef __convex__
#endif
#ifndef __ia64__
#undef __ia64__
#endif
#ifndef __x86_64__
#undef __x86_64__
#endif
#ifndef __s390__
#undef __s390__
#endif

6
src/base/digitseq/cl_asm_x86_64_.cc

@ -0,0 +1,6 @@
#ifdef __i386__
// This is most probably a x86_64 system with 32 bit userland.
#include "cl_asm_i386_.cc"
#else
// Nothing here yet.
#endif
Loading…
Cancel
Save