On 2015-10-01 12:17, Daniel Vetter wrote:
On Thu, Oct 01, 2015 at 11:58:32AM +0200, Michal Marek wrote:
On 2015-10-01 10:19, Jani Nikula wrote:
On Thu, 01 Oct 2015, Daniel Vetter daniel.vetter@ffwll.ch wrote:
Surprisingly kbuild can't cope with tristates in the <module>-$(CONFIG_FOO) pattern. This patch hacks up a solution.
Given that it's two distinct Makefile variables (foo-y and foo-m) being assigned to, I don't really find this surprising. Maybe this could be made to work as a convenience, but there might be other, more surpising consequences.
I actually think that kbuild should be able to handle this. The likely reason why it is not doing it right now is that in an ideal world, modules are modules can be built out of tree against just the kernel and their static dependencies. In real world, we sometimes have features in modules that are enabled if other modules are enabled. I'll post a patch later. We also have lots of tests fo CONFIG_FOO || CONFIG_FOO_MODULE in built-in code, which is a similar case.
Cool. I'll keep this hack in drm-misc then. Please cc me on the proper solution so I know when I can revert it again.
It's not as trivial as it seemed, because there are at least three Makefiles that rely on the current behavior:
init/Makefile drivers/misc/ibmasm/Makefile fs/logfs/Makefile
While ibmasm and logfs can and probably should be fixed to work with modular 8250 and mtd, respectively, init/Makefile would need a workaround to only pick up do_mounts_rd.o and do_mounts_md.o if the respective block drivers are built-in. So we would be trading one hack for another.
Michal