On Fri, 2017-09-01 at 11:04 +0100, Bruce Richardson wrote: > Support building igb_uio using meson and ninja. For this, we still > use the > kernel's kbuild system, by calling out to make, since it's safer and > easier > than trying to reproduce that in meson. A list of suitable file > dependencies is given so that we have a reasonable chance of a > rebuild when > necessary. > > Signed-off-by: Bruce Richardson <bruce.richard...@intel.com> > --- > lib/librte_eal/linuxapp/igb_uio/Kbuild | 1 + > lib/librte_eal/linuxapp/igb_uio/meson.build | 47 > +++++++++++++++++++++++++++++ > lib/librte_eal/linuxapp/meson.build | 10 ++++++ > meson_options.txt | 2 ++ > 4 files changed, 60 insertions(+) > create mode 100644 lib/librte_eal/linuxapp/igb_uio/Kbuild > create mode 100644 lib/librte_eal/linuxapp/igb_uio/meson.build > > diff --git a/lib/librte_eal/linuxapp/igb_uio/Kbuild > b/lib/librte_eal/linuxapp/igb_uio/Kbuild > new file mode 100644 > index 000000000..98c98fe52 > --- /dev/null > +++ b/lib/librte_eal/linuxapp/igb_uio/Kbuild > @@ -0,0 +1 @@ > +obj-m := igb_uio.o > diff --git a/lib/librte_eal/linuxapp/igb_uio/meson.build > b/lib/librte_eal/linuxapp/igb_uio/meson.build > new file mode 100644 > index 000000000..c046e1d66 > --- /dev/null > +++ b/lib/librte_eal/linuxapp/igb_uio/meson.build > @@ -0,0 +1,47 @@ > +# BSD LICENSE > +# > +# Copyright(c) 2017 Intel Corporation. All rights reserved. > +# All rights reserved. > +# > +# Redistribution and use in source and binary forms, with or > without > +# modification, are permitted provided that the following > conditions > +# are met: > +# > +# * Redistributions of source code must retain the above > copyright > +# notice, this list of conditions and the following > disclaimer. > +# * Redistributions in binary form must reproduce the above > copyright > +# notice, this list of conditions and the following disclaimer > in > +# the documentation and/or other materials provided with the > +# distribution. > +# * Neither the name of Intel Corporation nor the names of its > +# contributors may be used to endorse or promote products > derived > +# from this software without specific prior written > permission. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND > CONTRIBUTORS > +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT > NOT > +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND > FITNESS FOR > +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE > COPYRIGHT > +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, > INCIDENTAL, > +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF > USE, > +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND > ON ANY > +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR > TORT > +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF > THE USE > +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH > DAMAGE. > + > +mkfile = custom_target('igb_uio_makefile', > + output: 'Makefile', > + command: ['touch', '@OUTPUT@']) > + > +custom_target('igb_uio', > + input: ['igb_uio.c', 'Kbuild'], > + output: 'igb_uio.ko', > + command: ['make', '-C', kernel_dir, > + 'M=' + meson.current_build_dir(), > + 'src=' + meson.current_source_dir(), > + 'EXTRA_CFLAGS=-I' + meson.current_source_dir() + > + '/../../common/include', > + 'modules'], > + depends: mkfile, > + depend_files: [join_paths(kernel_dir, 'Kconfig')],
Can this be made optional somehow? There's no build/Kconfig on Debian: $ ls /lib/modules/4.9.0-3-amd64/build arch include Makefile Module.symvers scripts But the build works fine without that depend_files line. > + build_by_default: true) > diff --git a/lib/librte_eal/linuxapp/meson.build > b/lib/librte_eal/linuxapp/meson.build > index bc9f22175..2383bd368 100644 > --- a/lib/librte_eal/linuxapp/meson.build > +++ b/lib/librte_eal/linuxapp/meson.build > @@ -30,3 +30,13 @@ > # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH > DAMAGE. > > subdir('eal') > + > +if get_option('enable_kmods') > + kernel_dir = get_option('kernel_dir') > + if kernel_dir == '' > + kernel_version = run_command('uname', '- > r').stdout().strip() > + kernel_dir = '/lib/modules/' + kernel_version + > '/build' > + endif > + > + subdir('igb_uio') > +endif > diff --git a/meson_options.txt b/meson_options.txt > index c03b79fbd..9c45b8159 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -4,3 +4,5 @@ option('max_numa_nodes', type: 'string', value: '4', > description: 'maximum numbe > option('use_hpet', type: 'boolean', value: false, description: 'use > HPET timer in EAL') > option('allow_invalid_socket_id', type: 'boolean', value: false, > description: 'allow out-of-range NUMA socket id\'s for > platforms that don\'t report the value correctly') > +option('enable_kmods', type: 'boolean', value: true, description: > 'build kernel modules') > +option('kernel_dir', type: 'string', value: '', description: 'path > to the kernel for building kernel modules') -- Kind regards, Luca Boccassi