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

Luca Boccassi luca.boccassi at gmail.com
Fri Sep 1 16:27:57 CEST 2017


On Fri, 2017-09-01 at 14:55 +0100, Bruce Richardson wrote:
> 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

Thanks. This is the content of build/ and the parent directory in
Debian, in case you want to try and find some common ground:

$ ls -la /lib/modules/4.9.0-3-amd64/
total 4120
drwxr-xr-x  4 root root    4096 Aug 15 11:13 .
drwxr-xr-x  4 root root    4096 Aug 25 17:55 ..
lrwxrwxrwx  1 root root      36 May  2 16:21 build -> /usr/src/linux-
headers-4.9.0-3-amd64
drwxr-xr-x 12 root root    4096 May 17 18:58 kernel
-rw-r--r--  1 root root 1009588 Aug 15 11:13 modules.alias
-rw-r--r--  1 root root  968576 Aug 15 11:13 modules.alias.bin
-rw-r--r--  1 root root    4018 Aug  6 05:24 modules.builtin
-rw-r--r--  1 root root    5327 Aug 15 11:13 modules.builtin.bin
-rw-r--r--  1 root root  400037 Aug 15 11:13 modules.dep
-rw-r--r--  1 root root  551081 Aug 15 11:13 modules.dep.bin
-rw-r--r--  1 root root     402 Aug 15 11:13 modules.devname
-rw-r--r--  1 root root  133512 Aug  6 05:24 modules.order
-rw-r--r--  1 root root     523 Aug 15 11:13 modules.softdep
-rw-r--r--  1 root root  495231 Aug 15 11:13 modules.symbols
-rw-r--r--  1 root root  610575 Aug 15 11:13 modules.symbols.bin
lrwxrwxrwx  1 root root      37 May  2 16:21 source -> /usr/src/linux-
headers-4.9.0-3-common
drwxr-xr-x  3 root root    4096 May 17 18:58 updates

$ ls -la /lib/modules/4.9.0-3-amd64/build/
total 1460
drwxr-xr-x 4 root root    4096 Aug  7 10:27 .
drwxr-xr-x 9 root root    4096 Aug 25 17:55 ..
drwxr-xr-x 3 root root    4096 May 17 18:58 arch
-rw-r--r-- 1 root root  186386 Aug  6 05:24 .config
drwxr-xr-x 4 root root    4096 May 17 18:58 include
-rw-r--r-- 1 root root     242 Aug  6 05:24 .kernelvariables
-rw-r--r-- 1 root root     304 Aug  6 05:24 Makefile
-rw-r--r-- 1 root root 1278637 Aug  6 05:24 Module.symvers
lrwxrwxrwx 1 root root      34 May  2 16:21 scripts -> ../../lib/linux-
kbuild-4.9/scripts

-- 
Kind regards,
Luca Boccassi


More information about the dev mailing list