On Sat, 28 Feb 2004, Brian Kendig wrote:

> I've found what I believe might be a bug in the Alsa code in the Linux 
> 2.6.[0-3] kernel, or at least is a problem with the Makefile.  The 
> problem is that if (in 'make menuconfig') I specify that the sequencer 
> should be a module, I get a bunch of errors when I try to make the 
> kernel.  If I say that the sequencer should be built-in, then 
> compilation works fine.
> 
> The particular option in question in .config is 
> 'CONFIG_SND_SEQUENCER=m'.  With that set, when I compile the kernel, I 
> get a whole bunch of 'undefined reference' errors in sound/built-in.o.  
> Changing that to 'CONFIG_SND_SEQUENCER=y' allows the kernel to compile 
> cleanly.  I'm setting it by using 'make menuconfig', which is supposed 
> to prevent me from setting it to something it shouldn't be set to, 
> right?
> 
> A copy of my .config which causes the error is at:
> http://www.enchanter.net/linuxhelp/dot.config
> 
> And a log of the failed compile is at:
> http://www.enchanter.net/linuxhelp/make.errors
> 
> It's odd that the errors all involve functions named 'snd_opl3_...'  I 
> don't have any OPL3 settings in my .config file.
> 
> Is this really a problem with the build process?  Who should I report 
> it to?  Or is it something I'm doing wrong?

Wrong Makefiles. Try attached patch.

                                                Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs
===== sound/drivers/opl3/Makefile 1.14 vs edited =====
--- 1.14/sound/drivers/opl3/Makefile    Fri Jun  6 11:58:32 2003
+++ edited/sound/drivers/opl3/Makefile  Sun Feb 29 11:04:02 2004
@@ -10,36 +10,66 @@
 endif
 
 OPL3_OBJS = snd-opl3-lib.o
-ifeq ($(subst m,y,$(CONFIG_SND_SEQUENCER)),y)
-OPL3_OBJS += snd-opl3-synth.o
-endif
+OPL3_SYNTH_OBJS = snd-opl3-synth.o
+
+#
+# this function returns:
+#   "m" - CONFIG_SND_SEQUENCER is m
+#   <empty string> - CONFIG_SND_SEQUENCER is undefined
+#   otherwise parameter #1 value
+#
+sequencer = $(if $(subst y,,$(CONFIG_SND_SEQUENCER)),$(if $(1),m),$(if 
$(CONFIG_SND_SEQUENCER),$(1)))
 
 # Toplevel Module Dependency
 obj-$(CONFIG_SND_ALS100) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_ALS100)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_AZT2320) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_AZT2320)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_AZT3328) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_AZT3328)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_DT019X) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_DT019X)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_ES18XX) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_ES18XX)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_OPL3SA2) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_OPL3SA2)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_AD1816A) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_AD1816A)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_CS4232) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_CS4232)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_PC98_CS4232) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_PC98_CS4232)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_CS4236) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_CS4236)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_ES1688) += $(OPL3_OBJS)
-obj-$(CONFIG_SND_GUSEXTREME) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_GUSEXTREME)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_OPTI92X_AD1848) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_OPTI92X_AD1848)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_OPTI92X_CS4231) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_OPTI92X_CS4231)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_OPTI93X) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_OPTI93X)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_SB8) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_SB8)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_SB16) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_SB16)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_SBAWE) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_SBAWE)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_WAVEFRONT) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_WAVEFRONT)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_ALS4000) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_ALS4000)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_CMIPCI) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_CMIPCI)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_CS4281) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_CS4281)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_ES1938) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_ES1938)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_FM801) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_FM801)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_SONICVIBES) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_SONICVIBES)) += $(OPL3_SYNTH_OBJS)
 obj-$(CONFIG_SND_YMFPCI) += $(OPL3_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_YMFPCI)) += $(OPL3_SYNTH_OBJS)
 
 obj-m := $(sort $(obj-m))
===== sound/drivers/opl4/Makefile 1.1 vs edited =====
--- 1.1/sound/drivers/opl4/Makefile     Sun Jun  1 20:47:59 2003
+++ edited/sound/drivers/opl4/Makefile  Sun Feb 29 11:07:42 2004
@@ -7,9 +7,19 @@
 snd-opl4-synth-objs := opl4_seq.o opl4_synth.o yrw801.o
 
 OPL4_OBJS := snd-opl4-lib.o
-ifeq ($(subst m,y,$(CONFIG_SND_SEQUENCER)),y)
-  OPL4_OBJS += snd-opl4-synth.o
-endif
+OPL4_SYNTH_OBJS := snd-opl4-synth.o
+
+#
+# this function returns:
+#   "m" - CONFIG_SND_SEQUENCER is m
+#   <empty string> - CONFIG_SND_SEQUENCER is undefined
+#   otherwise parameter #1 value
+#
+sequencer = $(if $(subst y,,$(CONFIG_SND_SEQUENCER)),$(if $(1),m),$(if 
$(CONFIG_SND_SEQUENCER),$(1)))
 
 obj-$(CONFIG_SND_OPTI92X_AD1848) += $(OPL4_OBJS)
+obj-$(call sequencer,$(CONFIG_SND_OPTI92X_AD1848)) += $(OPL4_SYNTH_OBJS)
 obj-$(CONFIG_SND_OPTI92X_CS4231) += $(OPL4_OBJS)
+obj-$(call sequencer,$CONFIG_SND_OPTI92X_CS4231)) += $(OPL4_SYNTH_OBJS)
+
+obj-m := $(sort $(obj-m))
===== sound/synth/Makefile 1.12 vs edited =====
--- 1.12/sound/synth/Makefile   Mon Feb  3 23:19:39 2003
+++ edited/sound/synth/Makefile Sun Feb 29 11:09:41 2004
@@ -5,10 +5,16 @@
 
 snd-util-mem-objs := util_mem.o
 
+#
+# this function returns:
+#   "m" - CONFIG_SND_SEQUENCER is m
+#   <empty string> - CONFIG_SND_SEQUENCER is undefined
+#   otherwise parameter #1 value
+#
+sequencer = $(if $(subst y,,$(CONFIG_SND_SEQUENCER)),$(if $(1),m),$(if 
$(CONFIG_SND_SEQUENCER),$(1)))
+
 # Toplevel Module Dependency
 obj-$(CONFIG_SND_EMU10K1) += snd-util-mem.o
 obj-$(CONFIG_SND_TRIDENT) += snd-util-mem.o
-ifdef CONFIG_SND_SEQUENCER
-  obj-$(CONFIG_SND_SBAWE) += snd-util-mem.o
-  obj-$(CONFIG_SND) += emux/
-endif
+obj-$(call sequencer,$(CONFIG_SND_SBAWE)) += snd-util-mem.o
+obj-$(call sequencer,$(CONFIG_SND)) += emux/

Reply via email to