All of lore.kernel.org
 help / color / mirror / Atom feed
From: Darren Hart <dvhart@linux.intel.com>
To: Chris Larson <clarson@kergoth.com>
Cc: "poky@yoctoproject.org" <poky@yoctoproject.org>
Subject: Re: Library paths for Makefile based recipes
Date: Tue, 28 Dec 2010 16:58:06 -0800	[thread overview]
Message-ID: <4D1A879E.6060702@linux.intel.com> (raw)
In-Reply-To: <AANLkTinj7sVzHzDX9b09H+BQy4HDUvs-5kt8gehhOiZ2@mail.gmail.com>

On 12/28/2010 04:41 PM, Chris Larson wrote:
> On Tue, Dec 28, 2010 at 5:29 PM, Darren Hart<dvhart@linux.intel.com>  wrote:
>> I'm working on packaging kernelshark ("make gui" for the trace-cmd recipe
>> basically). It fails trying to link to -lgtk-x11-2.0. I have added gtk+
>> as a DEPENDS and the library does exist in the sysroots. I have also added
>> "inherit pkgconfig" as the project Makefile uses it extensively.
>>
>> gcc trace-view-main.o trace-view.o trace-view-store.o trace-filter.o trace-compat.o trace-hash.o libtracecmd.a -rdynamic -o trace-view -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0   -L. -ltracecmd -ldl
>> | /usr/bin/ld: cannot find -lgtk-x11-2.0
>> | collect2: ld returned 1 exit status
>> | make[1]: *** [trace-view] Error 1
>> | make[1]: *** Waiting for unfinished jobs....
>> | make: *** [gui] Error 2
>> | FATAL: oe_runmake failed
>> | ERROR: Task failed: ('function do_compile failed', '/vol/1/dvhart/poky.git/build/tmp/work/core2-poky-linux/kernelshark-1.0.4+git0+0d252224626bd6926324f023a65f20c165232891-r0/temp/log.do_compile.12830')
>> NOTE: package kernelshark-1.0.4+git0+0d252224626bd6926324f023a65f20c165232891-r0: task do_compile: Failed
>> ERROR: Task 8 (/home/dvhart/data/poky.git/meta/recipes-kernel/trace-cmd/kernelshark_git.bb, do_compile) failed with 1
>> ERROR: '/home/dvhart/data/poky.git/meta/recipes-kernel/trace-cmd/kernelshark_git.bb' failed
>>
>> Without the "gui" target, trace-cmd doesn't link against anything outside of
>> libc and ld, so the original recipe doesn't run into this.
>>
>> How does bitbake try to make the library path available to a make based
>> project? I've tried various incantations from other non-autotools gtk+
>> based recipes:
>>
>> do_compile_prepend = " \
>>         export LDFLAGS='${LDFLAGS} `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --libs`'; \
>>        export CFLAGS='${CFLAGS} -I./ `${STAGING_BINDIR_NATIVE}/pkg-config gtk+-2.0 --cflags`'; "
>

Turns out the project Makefile is doing this:

CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)ar

Removing those lines from the Makefile allows the project to build.


> This will only work if EXTRA_OEMAKE is default, by the way.  The
> default EXTRA_OEMAKE is "-e MAKEFLAGS=", which means "override all
> makefile variables with the values from the environment, if they
> exist, and don't pass the -e flag into submakes".
>
> In my opinion, the better bet is to be explicit -- pass variables into
> the make execution explicitly, rather than relying on exports and the
> environment to do so, e.g.:
>
> EXTRA_OEMAKE = "\
>      'CC=${CC}' \
>      'CFLAGS=${CFLAGS}' \
>      'LFLAGS=${LDFLAGS}' \
> "

The Makefile ignores LDFLAGS, but that doesn't appear to be necessary if
you actually use the right compiler :) Leaving the Makefile alone and 
trying something like the above works for me.

I'll be taking a closer look at the Makefile, it's a rather complex 
beast and I suspect more dragons are lurking.

Thanks!

-- 
Darren Hart
Yocto Linux Kernel


  reply	other threads:[~2010-12-29  0:58 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-29  0:29 Library paths for Makefile based recipes Darren Hart
2010-12-29  0:41 ` Chris Larson
2010-12-29  0:58   ` Darren Hart [this message]
2010-12-30 11:21     ` Richard Purdie
2010-12-30 14:11       ` Chris Larson
2010-12-30 16:33         ` Darren Hart
2010-12-30 16:32       ` Darren Hart
2010-12-29  0:43 ` Tian, Kevin
2010-12-29  0:54   ` Darren Hart
2010-12-30 21:08     ` Bruce Ashfield
2010-12-30 21:10       ` Bruce Ashfield
2010-12-30 22:31         ` Darren Hart
2010-12-31  6:11           ` Bruce Ashfield
2010-12-29  9:18 ` Koen Kooi
2010-12-29 16:19   ` Darren Hart
2010-12-30 10:24     ` Richard Purdie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D1A879E.6060702@linux.intel.com \
    --to=dvhart@linux.intel.com \
    --cc=clarson@kergoth.com \
    --cc=poky@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.