Re: [PATCH] ASoC: SOF: Fix build error with CONFIG_SND_SOC_SOF_NOCODEC=m

From: Takashi Iwai
Date: Fri May 10 2019 - 09:05:42 EST


On Fri, 10 May 2019 14:56:29 +0200,
Pierre-Louis Bossart wrote:
>
> On 5/10/19 2:12 AM, Takashi Iwai wrote:
> > On Fri, 10 May 2019 04:36:57 +0200,
> > YueHaibing wrote:
> >>
> >> Fix gcc build error while CONFIG_SND_SOC_SOF_NOCODEC=m
> >>
> >> sound/soc/sof/core.o: In function `snd_sof_device_probe':
> >> core.c:(.text+0x4af): undefined reference to `sof_nocodec_setup'
> >>
> >> Change SND_SOC_SOF_NOCODEC to bool to fix this.
> >>
> >> Reported-by: Hulk Robot <hulkci@xxxxxxxxxx>
> >> Fixes: c16211d6226d ("ASoC: SOF: Add Sound Open Firmware driver core")
> >> Signed-off-by: YueHaibing <yuehaibing@xxxxxxxxxx>
> >
> > This change would break things severely. This won't allow to build it
> > as a module any longer.
>
> Isn't this fixed already?
> See the patch 'ASoC: SOF: core: fix undefined nocodec reference' and
> Takashi's follow-up to fix the unused variable warning.

Possibly the problem still persists although I haven't seen through my
local build tests with randconfig. You can set SND_SOC_SOF=y and
SND_SOC_NOCODEC=m, i.e. built-in sof-core while nocodec is a module.


Takashi

> >
> > A better fix would be to somehow restrict the SND_SOC_SOF_NOCODEC to
> > align with SND_SOC_SOF, i.e. disallow SND_SOC_SOF=y &&
> > SND_SOC_SOF_NOCODEC=m. Because of the complex mix of select and
> > depends-on in SOF, I'm afraid that it's not that trivial, though.
> > There might be something I overlooked, hopefully...
> >
> > An easier alternative would be to replace
> > IS_ENABLED(CONFIG_SND_SOC_SOF_NOCODEC) with
> > IS_REACHABLE(CONFIG_SND_SOC_SOF_NOCODEC). This assures the condition
> > at the build time, although the error at probe might be a surprising
> > to some users that don't know this hidden dependency.
> >
> >
> > thanks,
> >
> > Takashi
> >
> >
> >> ---
> >> sound/soc/sof/Kconfig | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/sound/soc/sof/Kconfig b/sound/soc/sof/Kconfig
> >> index b204c65..9c280c9 100644
> >> --- a/sound/soc/sof/Kconfig
> >> +++ b/sound/soc/sof/Kconfig
> >> @@ -44,7 +44,7 @@ config SND_SOC_SOF_OPTIONS
> >> if SND_SOC_SOF_OPTIONS
> >> config SND_SOC_SOF_NOCODEC
> >> - tristate "SOF nocodec mode Support"
> >> + bool "SOF nocodec mode Support"
> >> help
> >> This adds support for a dummy/nocodec machine driver fallback
> >> option if no known codec is detected. This is typically only
> >> --
> >> 2.7.4
> >>
> >>
> >>
>