[oe] [vdr] TARGET_CXXFLAGS do not include CXX_FLAGS from Makefile

Paul Menzel paulepanter at users.sourceforge.net
Wed Jan 13 10:44:47 UTC 2010


Am Mittwoch, den 13.01.2010, 02:27 -0800 schrieb Khem Raj:
> On (12/01/10 12:36), Paul Menzel wrote:
> > Am Montag, den 11.01.2010, 23:42 +0100 schrieb Paul Menzel:
> > 
> > […]
> > 
> > > Putting
> > > 
> > >         PREFERRED_VERSION_binutils               = "2.20"
> > >         PREFERRED_VERSION_binutils-cross         = "2.20"
> > >         PREFERRED_VERSION_binutils-cross-sdk     = "2.20"
> > >         
> > >         PREFERRED_VERSION_gcc                    = "4.4.2"
> > >         PREFERRED_VERSION_gcc-cross              = "4.4.2"
> > >         PREFERRED_VERSION_gcc-cross-sdk          = "4.4.2"
> > >         PREFERRED_VERSION_gcc-cross-initial      = "4.4.2"
> > >         PREFERRED_VERSION_gcc-cross-intermediate = "4.4.2"
> > > 
> > > in my `local.conf` and running `bitbake vdr` gave me an error in
> > > `do_compile` for `libcap_1.10.bb`.
> > > 
> > >         arm-angstrom-linux-gnueabi-ld -soname libcap.so.1 -x -shared -o libcap.so.1.10 cap_alloc.o cap_proc.o cap_extint.o cap_flag.o cap_text.o cap_sys.o
> > >         arm-angstrom-linux-gnueabi-ld: cap_text.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
> > 
> > I opened a new thread for this [2].
> > 
> > Anyways compiling the plugins for VDR in `do_install` [3]
> > 
> >         do_install () {
> >               oe_runmake 'DESTDIR=${D}' \
> >                          'PREFIX=${prefix}' \
> >                          'CONFDIR=${sysconfdir}/vdr' \
> >                          'VIDEODIR=/var/lib/vdr/video' \
> >                          'PLUGINLIBDIR=${PLUGINDIR}' \
> >                          'LOCDIR=${datadir}/locale' \
> >                          install
> >         }
> > 
> > I also get the same error which I did not get before with GCC 4.1.1.
> 
> Older versions of binutils/ld can not detect MOVT/MOVW relocations which
> are absolute and cant be used in PIC code.
> hence even if the error was there it remained latent.

Sorry for the noob question. In earlier versions would the resulting
binaries/packages have been buggy?

> > 
> >         /oe/tangstrom-dev/cross/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.4.2/../../../../arm-angstrom-linux-gnueabi/bin/ld: hello.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
> >         hello.o: could not read symbols: Bad value
> >         collect2: ld returned 1 exit status
> >         make[1]: *** [libvdr-hello.so] Error 1
> >         make[1]: Leaving directory `/oe/tangstrom-dev/work/armv7a-angstrom-linux-gnueabi/vdr-1.7.10-r3/vdr-1.7.10/PLUGINS/src/hello'
> >         
> >         [… same for all other plugins]
> > 
> > The thing that puzzles me is, that in the plugin’s Makefile [4] `-fPIC`
> > is specified
> > 
> >         CXX      ?= g++
> >         CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
> >         LIBS     ?= ${LDFLAGS}
> > 
> > but in the above command it is not included.
> 
> These are conditional so may be you already have defined CXXFLAGS in
> your environment infact bitbake will do it for you.

I did not define any CXXFLAGS. It looks like BitBake is setting them and
not respecting those in the Makefile.

> >         arm-angstrom-linux-gnueabi-g++ -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -isystem/oe/tangstrom-dev/staging/armv7a-angstrom-linux-gnueabi/usr/include -fexpensive-optimizations -frename-registers -fomit-frame-pointer -O2 -ggdb3 -fpermissive -fvisibility-inlines-hidden -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"hello"' -I../../../include hello.c
> > 
> > Looking at `run.do_install.28829` I cannot see find the `-fPIC` in
> > there. So my question is, why is it not included. Is it because of »?=«?
> > How do I get it included?
> 
> you could do CXXFLAGS_append = ... in the recipe.

Is that the recommended behavior? Is `oe_runmake` maybe not the correct
command to use? As written above, it is very strange for me, that
BitBake does not respect the flags in the Makefile automatically,
because I think it is common in upstream Makefiles to use »?=«, is not
is?

Or is that the default behavior running `oe_runmake` in `do_install`?


Thanks,

Paul
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Dies ist ein digital signierter Nachrichtenteil
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20100113/a4b49bf8/attachment-0002.sig>


More information about the Openembedded-devel mailing list