* [RFC v2] libtracefs: Add initial support for meson
@ 2022-07-07 14:27 Daniel Wagner
2022-11-26 2:19 ` Steven Rostedt
0 siblings, 1 reply; 3+ messages in thread
From: Daniel Wagner @ 2022-07-07 14:27 UTC (permalink / raw)
To: linux-trace-devel; +Cc: Daniel Wagner
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)
+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)
--
2.36.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [RFC v2] libtracefs: Add initial support for meson
2022-07-07 14:27 [RFC v2] libtracefs: Add initial support for meson Daniel Wagner
@ 2022-11-26 2:19 ` Steven Rostedt
2022-12-19 13:03 ` Daniel Wagner
0 siblings, 1 reply; 3+ messages in thread
From: Steven Rostedt @ 2022-11-26 2:19 UTC (permalink / raw)
To: Daniel Wagner; +Cc: linux-trace-devel
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)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-12-19 13:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-07 14:27 [RFC v2] libtracefs: Add initial support for meson Daniel Wagner
2022-11-26 2:19 ` Steven Rostedt
2022-12-19 13:03 ` Daniel Wagner
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).