On Fri, Apr 10, 2020 at 07:04:27PM +0000, Saeed Mahameed wrote: > On Fri, 2020-04-10 at 14:13 -0300, Jason Gunthorpe wrote: > > On Fri, Apr 10, 2020 at 02:40:42AM +0000, Saeed Mahameed wrote: > > > > > This assumes that the module using FOO has its own flag > > > representing > > > FOO which is not always the case. > > > > > > for example in mlx5 we use VXLAN config flag directly to compile > > > VXLAN > > > related files: > > > > > > mlx5/core/Makefile: > > > > > > obj-$(CONFIG_MLX5_CORE) += mlx5_core.o > > > > > > mlx5_core-y := mlx5_core.o > > > mlx5_core-$(VXLAN) += mlx5_vxlan.o > > > > > > and in mlx5_main.o we do: > > > > Does this work if VXLAN = m ? > > Yes, if VXLAN IS_REACHABLE to MLX5, mlx5_vxlan.o will be > compiled/linked. So mlx5_core-m does the right thing somehow? > > > > > if (IS_ENABLED(VXLAN)) > > > mlx5_vxlan_init() > > > > > > after the change in imply semantics: > > > our options are: > > > > > > 1) use IS_REACHABLE(VXLAN) instead of IS_ENABLED(VXLAN) > > > > > > 2) have MLX5_VXLAN in mlx5 Kconfig and use IS_ENABLED(MLX5_VXLAN) > > > config MLX5_VXLAN > > > depends on VXLAN || !VXLAN > > > bool > > > > Does this trick work when vxlan is a bool not a tristate? > > > > Why not just put the VXLAN || !VXLAN directly on MLX5_CORE? > > > > so force MLX5_CORE to n if vxlan is not reachable ? IIRC that isn't what the expression does, if vxlan is 'n' then n || !n == true The other version of this is (m || VXLAN != m) Basically all it does is prevent MLX5_CORE=y && VXLAN=m > and how do we compile mlx5_vxlan.o wihout a single flag > can i do in Makefile : > mlx5_core-$(VXLAN || !VXLAN) += mlx5_vxlan.o ?? No, you just use VXLAN directly, it will be m, n or y, but it won't be m if mlx5_core is y Jason