linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yicong Yang <yangyicong@huawei.com>
To: Namhyung Kim <namhyung@kernel.org>
Cc: <yangyicong@hisilicon.com>, <acme@kernel.org>,
	<peterz@infradead.org>, <mingo@redhat.com>,
	<linux-perf-users@vger.kernel.org>, <mark.rutland@arm.com>,
	<alexander.shishkin@linux.intel.com>, <jolsa@kernel.org>,
	<irogers@google.com>, <leo.yan@arm.com>, <amadio@gentoo.org>,
	<linuxarm@huawei.com>
Subject: Re: [PATCH] perf build: Add missing cflags when building with custom libtraceevent
Date: Wed, 30 Oct 2024 10:45:47 +0800	[thread overview]
Message-ID: <a8143fa2-d7e2-48d7-5c9b-2c00e2adbe9c@huawei.com> (raw)
In-Reply-To: <ZyF5_Hf1iL01kldE@google.com>

On 2024/10/30 8:12, Namhyung Kim wrote:
> Hello,
> 
> On Thu, Oct 24, 2024 at 09:32:36PM +0800, Yicong Yang wrote:
>> From: Yicong Yang <yangyicong@hisilicon.com>
>>
>> When building with custom libtraceevent, below errors occur:
>> $ make -C tools/perf NO_LIBPYTHON=1 PKG_CONFIG_PATH=<custom libtraceevent>
>> In file included from util/session.h:5,
>>                  from builtin-buildid-list.c:17:
>> util/trace-event.h:153:10: fatal error: traceevent/event-parse.h: No such file or directory
>>   153 | #include <traceevent/event-parse.h>
>>       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> <snip similar errors of missing headers>
>>
>> This is because the include path is missed in the cflags. Add it.
>>
>> Fixes: 0f0e1f445690 ("perf build: Use pkg-config for feature check for libtrace{event,fs}")
>> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
>> ---
>> Another problem occurs when building on my old Ubuntu 18.04.1 (4.15 kernel)
>> is that linux/mount.h (which is introduced in the later kernel version) is
>> missing. It's included in tools/include/uapi/linux/fs.h which header is
>> introduced recently. Does it make sense to have a copy of mount.h in tools/include?
>>
>>  tools/perf/Makefile.config | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
>> index 4ddb27a48eed..53fc5f787a77 100644
>> --- a/tools/perf/Makefile.config
>> +++ b/tools/perf/Makefile.config
>> @@ -1194,7 +1194,7 @@ endif
>>  ifneq ($(NO_LIBTRACEEVENT),1)
>>    $(call feature_check,libtraceevent)
>>    ifeq ($(feature-libtraceevent), 1)
>> -    CFLAGS += -DHAVE_LIBTRACEEVENT
>> +    CFLAGS += -DHAVE_LIBTRACEEVENT $(shell $(PKG_CONFIG) --cflags libtraceevent)
> 
> Does this solve the problem?  On my machine, it returns this:
> 
>   $ pkg-config --cflags libtraceevent
>   -I/usr/include/traceevent 
> 
>   $ ls /usr/include/traceevent/
>   event-parse.h  event-utils.h  kbuffer.h  trace-seq.h
> 
> So the include path should be "/usr/include" or we should include
> <event-parse.h> directly.  We may update the every include statements
> but just curious how it solved your problem.
> 

I think you're right, we should use the path according to the pkg-config outputs.
But it's a different problem, for me it's due to the missing of the include path
(my libtraceevent is not under the system path). With the fix you proposed and drop
the change in my patch:

$ PKG_CONFIG_PATH=/home/yangyicong/Community/libtraceevent/install/usr/local/lib/aarch64-linux-gnu/pkgconfig/ pkg-config --cflags-only-I libtraceevent
-I/home/yangyicong/Community/libtraceevent/install/usr/local/include/traceevent
$ PKG_CONFIG_PATH=/home/yangyicong/Community/libtraceevent/install/usr/local/lib/aarch64-linux-gnu/pkgconfig/ make -C tools/perf NO_LIBPYTHON=1
In file included from bench/../util/session.h:5,
                 from bench/synthesize.c:12:
bench/../util/trace-event.h:153:10: fatal error: event-parse.h: No such file or directory
  153 | #include <event-parse.h>
      |
[...]

Checked how we handle with libtracefs currently:
 ifeq ($(feature-libtracefs), 1)
    CFLAGS +=  $(shell $(PKG_CONFIG) --cflags libtracefs) # we've added the cflags from pkg-config
    LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-L libtracefs)

Thanks.

> Thanks,
> Namhyung
> 
> 
>>      LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-L libtraceevent)
>>      EXTLIBS += $(shell $(PKG_CONFIG) --libs-only-l libtraceevent)
>>      LIBTRACEEVENT_VERSION := $(shell $(PKG_CONFIG) --modversion libtraceevent).0.0
>> -- 
>> 2.24.0
>>
> .
> 

  reply	other threads:[~2024-10-30  2:45 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-24 13:32 [PATCH] perf build: Add missing cflags when building with custom libtraceevent Yicong Yang
2024-10-30  0:12 ` Namhyung Kim
2024-10-30  2:45   ` Yicong Yang [this message]
2024-10-30 11:04     ` Leo Yan
2024-11-02  6:23       ` Namhyung Kim
2024-11-04 10:47         ` Leo Yan
2024-11-04 12:51           ` Guilherme Amadio
2024-11-05  2:06             ` Yicong Yang
2024-11-05  6:08               ` Namhyung Kim
2024-11-05 16:41 ` Namhyung Kim

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=a8143fa2-d7e2-48d7-5c9b-2c00e2adbe9c@huawei.com \
    --to=yangyicong@huawei.com \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=amadio@gentoo.org \
    --cc=irogers@google.com \
    --cc=jolsa@kernel.org \
    --cc=leo.yan@arm.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=yangyicong@hisilicon.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).