On 9/1/20 5:17 PM, Jakub Kicinski wrote: > On Tue, 1 Sep 2020 23:48:52 +0200 Andrew Lunn wrote: >> On Tue, Sep 01, 2020 at 03:22:31PM -0500, Alex Elder wrote: >>> Jakub, you suggested/requested that the Qualcomm IPA driver get >>> built when the COMPILE_TEST config option is enabled. I started >>> working on this a few months ago but didn't finish, and picked >>> it up again today. I'd really like to get this done soon. >>> >>> The QCOM_IPA config option depends on and selects other things, >>> and those other things depend on and select still more config >>> options. I've worked through some of these, but now question >>> whether this is even the right approach. Should I try to ensure >>> all the code the IPA driver depends on and selects *also* gets >>> built when COMPILE_TEST is enabled? Or should I try to minimize >>> the impact on other code by making IPA config dependencies and >>> selections also depend on the value of COMPILE_TEST? >>> >>> Is there anything you know of that describes best practice for >>> enabling a config option when COMPILE_TEST is enabled? >> >> Hi Alex >> >> In general everything which can be build with COMPILE_TEST should be >> built with COMPILE_TEST. So generally it just works, because >> everything selected should already be selected because they already >> have COMPILE_TEST. >> >> Correctly written drivers should compile for just about any >> architecture. If they don't it suggests they are not using the APIs >> correctly, and should be fixed. >> >> If the dependencies have not had COMPILE_TEST before, you are probably >> in for some work, but in the end all the drivers will be of better >> quality, and get build tested a lot more. > > Nothing to add :) I'm not aware of any codified best practices. >
I have a little to add, but maybe some can complete this more than I can. Several subsystem header files add stubs for when that subsystem is not enabled. I know <linux/of.h> works with CONFIG_OF=y or =n, with lots of stubs. Same is true for <linux/gpio.h> and CONFIG_GPIOLIB. It would be good to know which other CONFIG symbols and header files are known to work (or expected to work) like this. Having these stubs allows us to always either omit e.g. depends on GPIOLIB or make it say depends on GPIOLIB || COMPILE_TEST Also, there are $ARCH conditions whose drivers also usually could benefit from COMPILE_TEST, so we often see for a driver: depends on MIPS || COMPILE_TEST or depends on ARCH_some_arm_derivative || COMPILE_TEST or depends on *PLATFORM* || COMPILE_TEST or depends on ARCH_TEGRA || COMPILE_TEST So if a driver is destined (or designed) for one h/w environment, we very much want to build it with COMPILE_TEST for other h/w platforms. HTH. -- ~Randy