Randy, All, On Wed, May 01, 2013 at 01:23:25PM -0700, Randy Dunlap wrote: > On 05/01/13 12:58, David Rientjes wrote: > > On Wed, 1 May 2013, Yann E. MORIN wrote: > > > >>> When CONFIG_SND=m and CONFIG_SND_AC97_CODEC=m and > >>> CONFIG_VIDEO_STK1160=y > >>> CONFIG_VIDEO_STK1160_AC97=y > >>> > >>> drivers/built-in.o: In function `stk1160_ac97_register': > >>> (.text+0x122706): undefined reference to `snd_card_create' > >>> drivers/built-in.o: In function `stk1160_ac97_register': > >>> (.text+0x1227b2): undefined reference to `snd_ac97_bus' > >>> drivers/built-in.o: In function `stk1160_ac97_register': > >>> (.text+0x1227cd): undefined reference to `snd_card_free' > >>> drivers/built-in.o: In function `stk1160_ac97_register': > >>> (.text+0x12281b): undefined reference to `snd_ac97_mixer' > >>> drivers/built-in.o: In function `stk1160_ac97_register': > >>> (.text+0x122832): undefined reference to `snd_card_register' > >>> drivers/built-in.o: In function `stk1160_ac97_unregister': > >>> (.text+0x12285e): undefined reference to `snd_card_free' > >>> > >>> > >>> This kconfig fragment: > >>> config VIDEO_STK1160_AC97 > >>> bool "STK1160 AC97 codec support" > >>> depends on VIDEO_STK1160 && SND BTW, can you check that: make silentoldconfig does not warn about unmet dependencies for those symbols? > > This doesn't depend on SND, it depends on SND=y. > > Maybe this option *should* depend on SND=y, but that's not what the > kconfig syntax says. I'd say Documentation/kbuild/kconfig-language.txt is not complete wrt the current syntax, grammar and semantics of the language. :-( > The kconfig language does not care if the variable is > a bool or a tristate when evaluating a depends expression AFAICT (but I am > only reading Documentation/kbuild/kconfig-language.txt, not the source code). Yes, it does, I've just tried with the following snippet: config MODULES bool "modules" config A tristate "A" config B tristate "B" depends on A config C tristate "C" config D bool "D" depends on C select B config E bool "E" depends on C=y select B As you can test, E will not be visible if C is not =y, while D will be visible if C is =m or =y. Also, if A=m (and C=n), then B can only be =n or =m. But with the test-case above, if C=y and ( D=y or E=y ), then B will be forced to =y, even though A might be unset, which means silentoldconfig would warn abount unmet dependencies: warning: (D && E) selects B which has unmet direct dependencies (A) Worse! With: A=m, C=y, D=y -> B is forced to =y, which is wrong because it can only be =n or =m (see above), but silentoldconfig will not warn about this situation. Sigh... :-( Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html