[dpdk-dev] [PATCH 03/17] igb_uio: add igb_uio kmod to meson build
Luca Boccassi
luca.boccassi at gmail.com
Fri Sep 1 15:32:52 CEST 2017
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.
> + 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
More information about the dev
mailing list