From: Jeremy K. <jk...@oz...> - 2007-08-28 07:12:34
|
Hi all, > Anyway, apart from ranting I'd like to contribute some enhancement to > the Scontruct file to solve the lib/lib64 issue. > > Adding the following lines somewhere early does provide for means to > distinguish between various CPUs etc. It even works for xcompiles. [snip] > Later down you then can change > env['libdir'] =3D os.path.join( env['PREFIX'], "lib" ) > into > if config[config_cpu] =3D=3D 'x86_64': > =A0=A0=A0=A0=A0=A0=A0=A0env['libdir'] =3D os.path.join( env['PREFIX'], "l= ib64" ) > else: > =A0=A0=A0=A0=A0=A0=A0=A0env['libdir'] =3D os.path.join( env['PREFIX'], "l= ib" ) As the token powerpc user here, I feel its my duty to step in - we need=20 to be a little more careful with the issues here. =46irstly x86_64 isn't the only machine that'll support 64-bit binaries -=20 64-bit powerpc machines will run in both 32- and 64-bit modes, but it's=20 usually up to the distro to choose whether to provide 32- or 64-bit (or=20 both) userland environments. Some do 64-bit only, some 32, some provide=20 both, and use /lib & /lib64 to provide the namespace separation. And then you have the compilers - some will output 32-bit binaries, some=20 will output 64-bit binaries, some will depend on the -m64 or -m32 flag=20 to determine the target of generated files. So - $prefix/lib64 should only be used when the actual ELF output is=20 64-bit, and $prefix/lib for 32, regardless of the CPU type. For a=20 pure-64-bit machine, it's also OK to put 64-bit binaries in $prefix/lib=20 (ie, there's no reason to have anything other than one lib dir) So, one solution may be just to do nothing, and leave it up to the=20 distro packager to specify $libdir correctly when building for a=20 specific target. I think this is the best way to go, as it's really up=20 to the distro to specify the arrangements of libraries for different=20 targets. Otherwise, we'd need to determine whether this is a 32- or 64-bit build=20 (which isn't trivial), and then fiddle with the paths appropriately. Just a couple of thoughts :) Cheers, Jeremy |