linux-trace-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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)


  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).