[dpdk-dev] [PATCH 03/17] igb_uio: add igb_uio kmod to meson build

Bruce Richardson bruce.richardson at intel.com
Fri Sep 1 15:55:15 CEST 2017


On Fri, Sep 01, 2017 at 02:32:52PM +0100, Luca Boccassi wrote:
> 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.richardson at 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.
> 
Yep, definitely can be removed. I was just looking for some way to give
meson the smarts to know when the kmod needed to be recompiled, and it
seemed a likely candidate to watch for changes.

/Bruce


More information about the dev mailing list