Re: [PATCH] kunit: Fix 'hooks.o' build by recursing into kunit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Feb 24, 2023 at 5:45 PM David Gow <davidgow@xxxxxxxxxx> wrote:
>
> +# Some KUnit files (hooks.o) need to be built-in even when KUnit is a module,
> +# so we can't just use obj-$(CONFIG_KUNIT).
> +ifdef CONFIG_KUNIT
> +obj-y += kunit/
>  endif

We actually have a pattern for this, although I guess it's rare enough
that "pattern" isn't necessarily the right word.

But you can find things like the Hyper-V drivers having similar
issues, and so the driver Makefile has

    obj-$(subst m,y,$(CONFIG_HYPERV))       += hv/

See a few other cases with

    git grep "subst m,y,"

but I guess the "ifdef CONFIG_KUNIT" thing works too. I can only find
one case of that (in arch/mips/Kbuild).

Another way of dealing with this - that is more common for individual
object files rather than directories - is to just do

    kunit-dir-$(CONFIG_KUNIT) := kunit/
    obj-y += $(kunit-dir-y) $(kunit-dir-m)

which admittedly is also not a hugely common pattern, but does exist
in various places (see for example the 'sfp-bus.o' file and CONFIG_SFP
in drivers/net/phy/Makefile.

That last pattern is probably most common in scripts/Makefile.lib,
where we have things like

       hostprogs += $(hostprogs-always-y) $(hostprogs-always-m)

which is similar but not the exact same thing.

Anyway, I guess I'll just apply that patch as-is, I just wanted to
point out that the particular pattern it uses may be simple, but we've
generally tried to just do our Makefile evaluations with "arithmetic"
rather than conditionals.

              Linus




[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux