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.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. > > > > 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