On Thu, 7 Jul 2022 16:27:44 +0200 Daniel Wagner <dwagner@xxxxxxx> 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@xxxxxxx> > --- > > 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)