On Sun, Jun 11, 2006 at 05:18:17PM +0200, Steinar H. Gunderson wrote:
> Not good, not good. (I might add that a build system signalling "can't build
> shared libraries" by "no .css files" might not be perceived as very robust,
> though! :-) )
Right - I, for sure, know the bigloo build system does not exactly
meets the criteria to get labelled as robust, and stderr regularly
getting thrown to /dev/null really does not help...
> More tracing leads to the following invocation from configure:
>
> ./autoconf/ldshare --user=root --tmp=/tmp --cc=gcc --ld=ld --ldopt=
> --ldlibs=-lc --sharedsuffix=so
>
> which seems to do a test if it can compile a shared library, using a command
> line that boils down to this:
>
> + ld -shared -o actestroot.so actestroot-lib.o -lc
> ld: actestroot-lib.o: relocation R_X86_64_32 against `a local symbol' can
> not be used when making a shared object; recompile with -fPIC
> actestroot-lib.o: could not read symbols: Bad value
>
> In other words, it fails due to missing -fPIC on compiling a C library. But
> the build logs seem to indicate that it can indeed use -fPIC; but for some
> reason, on my amd64, it adds -DBGL_NO_PIC instead of -fPIC. More delving into
> the configure system indicates that this is governed by a "$cpicflags". This
> is by default "demanded" and then attempted figured out by the following
> evilness:
>
> # The -pic C compiler options
> if [ "$cpicflags" = "no" ]; then
> cpicflags=""
> else
> if [ "$ldopt" = "no-share" ]; then
> cpicflags="" [later gets changed to -DBGL_NO_PIC]
> else
> [stuff to run autoconf/ccpic here]
>
> Full circle -- it sets ldopt="no-share" because it fails due to missing
> -fPIC, and it won't add -fPIC since ldopt is "no-share".
>
> It seems to be the best thing to do would be to help it on its way, and set
> cpicflags="-fPIC" from the start. Now, this is already done in debian/rules
> for arm:
>
> ARCH=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
> ifeq (${ARCH},arm)
> #CC=gcc-3.2
> EXTRA_CONFIG_FLAGS += --coflags=-O2 --cpicflags=-fPIC
> else
> #CC=gcc
> endif
>
> Makes me wonder why it's not default, if it's a known problem. Simply
> removing the if test and always send -fPIC seems to be the most sane solution
> to me. Any objections?
Well, the whole PIC issue is quite messy and has a heavy history in
this package. The whole idea behind this test was, IIRC, that non-PIC
code is really faster, and upstream really makes lots of such perf
tuning.
But I thought this test was completely uneffective these days, since
all platforms got built with -fPIC - possibly I got it wrong. Forcing
-fPIC may be the easy way out.
Best regards,
--
Yann Dirson <[EMAIL PROTECTED]> |
Debian-related: <[EMAIL PROTECTED]> | Support Debian GNU/Linux:
| Freedom, Power, Stability, Gratis
http://ydirson.free.fr/ | Check <http://www.debian.org/>
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]