From: Steven Rostedt <rostedt@goodmis.org>
To: Daniel Wagner <dwagner@suse.de>
Cc: linux-trace-devel@vger.kernel.org
Subject: Re: [RFC v2] libtracefs: Add initial support for meson
Date: Fri, 25 Nov 2022 21:19:46 -0500 [thread overview]
Message-ID: <20221125211946.4e066aed@rorschach.local.home> (raw)
In-Reply-To: <20220707142744.8801-1-dwagner@suse.de>
On Thu, 7 Jul 2022 16:27:44 +0200
Daniel Wagner <dwagner@suse.de> wrote:
> Add support for building the project with meson. It's not complete
> yet, for example building and installing the documentation is missing.
>
> Obviously, meson is not make and there are some changes in how to use
> this build system. The meson documentation is outstanding good and
> usually has good tips and tricks to solve problems. But sure there is
> learning curve but hopefully not so step.
>
> Anyway, as pure user the build steps are (in source tree builds are
> not supported):
>
> # configure using .build as build directory and install destination
> # /tmp/test
> meson .build --prefix=/tmp/test
>
> # trigger the build
> ninja -C .build
>
> # install the library
> ninja -C .build install
>
> I am using an alias for 'ninja -C .build' which is called 'ni'. This
> makes way more convenient to use.
>
> Signed-off-by: Daniel Wagner <dwagner@suse.de>
> ---
>
> v2:
> - updated commit message
> - dropped the include path patch, the pkg-config
> from libtraceevent is including them
>
> v1:
> - initial version
>
> include/meson.build | 9 ++++++++
> meson.build | 32 +++++++++++++++++++++++++++
> src/meson.build | 53 +++++++++++++++++++++++++++++++++++++++++++++
> utest/meson.build | 14 ++++++++++++
> 4 files changed, 108 insertions(+)
> create mode 100644 include/meson.build
> create mode 100644 meson.build
> create mode 100644 src/meson.build
> create mode 100644 utest/meson.build
>
> diff --git a/include/meson.build b/include/meson.build
> new file mode 100644
> index 000000000000..1bbfe8afb280
> --- /dev/null
> +++ b/include/meson.build
> @@ -0,0 +1,9 @@
> +# SPDX-License-Identifier: LGPL-2.1
> +
> +headers = [
> + 'tracefs.h',
> +]
> +
> +foreach h : headers
> + install_headers(h, subdir : 'libtracefs')
> +endforeach
> diff --git a/meson.build b/meson.build
> new file mode 100644
> index 000000000000..2138d2f149f1
> --- /dev/null
> +++ b/meson.build
> @@ -0,0 +1,32 @@
> +# SPDX-License-Identifier: LGPL-2.1
> +
> +project(
> + 'libtracefs', ['c'],
> + meson_version: '>= 0.47.0',
> + license: 'LGPL-2.1',
> + version: '1.4.0',
> + default_options: [
> + 'c_std=gnu99',
> + 'buildtype=release',
> + 'prefix=/usr',
> + 'warning_level=1',
> + ]
> +)
> +
> +library_version = meson.project_version()
> +
> +libtraceevent_dep = dependency('libtraceevent', required: true)
Can the dependency also include a version? It will be needed here and
in trace-cmd.
-- Steve
> +cunit_dep = dependency('cunit', required : false)
> +
> +add_project_arguments(
> + [
> + '-D_GNU_SOURCE',
> + ],
> + language : 'c',
> +)
> +
> +incdir = include_directories(['include'])
> +
> +subdir('src')
> +subdir('include')
> +subdir('utest')
> diff --git a/src/meson.build b/src/meson.build
> new file mode 100644
> index 000000000000..36d3be359fae
> --- /dev/null
> +++ b/src/meson.build
> @@ -0,0 +1,53 @@
> +# SPDX-License-Identifier: LGPL-2.1
> +
> +sources= [
> + 'tracefs-dynevents.c',
> + 'tracefs-eprobes.c',
> + 'tracefs-events.c',
> + 'tracefs-filter.c',
> + 'tracefs-hist.c',
> + 'tracefs-instance.c',
> + 'tracefs-kprobes.c',
> + 'tracefs-marker.c',
> + 'tracefs-sqlhist.c',
> + 'tracefs-tools.c',
> + 'tracefs-uprobes.c',
> + 'tracefs-utils.c',
> +]
> +
> +flex = find_program('flex', required: true)
> +bison = find_program('bison', required: true)
> +
> +lgen = generator(flex,
> +output : '@PLAINNAME@.yy.c',
> +arguments : ['-o', '@OUTPUT@', '@INPUT@'])
> +
> +pgen = generator(bison,
> +output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
> +arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'])
> +
> +lfiles = lgen.process('sqlhist.l')
> +pfiles = pgen.process('sqlhist.y')
> +
> +libtracefs = library(
> + 'tracefs',
> + sources, lfiles, pfiles,
> + version: library_version,
> + dependencies: [libtraceevent_dep],
> + include_directories: [incdir],
> + install: true,
> +)
> +
> +pkg = import('pkgconfig')
> +pkg.generate(libtracefs,
> + filebase: meson.project_name(),
> + name: meson.project_name(),
> + version: meson.project_version(),
> + description: 'Manage trace fs',
> + url: 'https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/',
> +)
> +
> +libtracefs_dep = declare_dependency(
> + include_directories: ['.'],
> + link_with: libtracefs,
> +)
> diff --git a/utest/meson.build b/utest/meson.build
> new file mode 100644
> index 000000000000..07058afb5f9b
> --- /dev/null
> +++ b/utest/meson.build
> @@ -0,0 +1,14 @@
> +# SPDX-License-Identifier: LGPL-2.1
> +
> +source = [
> + 'trace-utest.c',
> + 'tracefs-utest.c',
> +]
> +
> +e = executable(
> + 'trace-utest',
> + source,
> + include_directories: [incdir],
> + dependencies: [libtracefs_dep, libtraceevent_dep, cunit_dep])
> +
> +test('trace-utest', e)
next prev parent reply other threads:[~2022-11-26 2:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-07 14:27 [RFC v2] libtracefs: Add initial support for meson Daniel Wagner
2022-11-26 2:19 ` Steven Rostedt [this message]
2022-12-19 13:03 ` Daniel Wagner
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=20221125211946.4e066aed@rorschach.local.home \
--to=rostedt@goodmis.org \
--cc=dwagner@suse.de \
--cc=linux-trace-devel@vger.kernel.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 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).