1 # Makefile for the Linux sound card driver
3 # 18 Apr 1998, Michael Elizabeth Chastain, <mailto:mec@shout.net>
4 # Rewritten to use lists instead of if-statements.
13 ALL_SUB_DIRS
:= $(SUB_DIRS
) emu10k1
15 # All of the (potential) objects that export symbols.
16 # This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
18 export-objs
:= ad1848.o audio_syms.o midi_syms.o mpu401.o \
19 msnd.o opl3.o sb_common.o sequencer_syms.o \
20 sound_core.o sound_syms.o uart401.o \
21 nm256_audio.o ac97.o ac97_codec.o
34 # Each configuration option enables a list of files.
36 obj-
$(CONFIG_SOUND
) += soundcore.o
37 obj-
$(CONFIG_SOUND_OSS
) += sound.o
38 obj-
$(CONFIG_SOUND_CS4232
) += cs4232.o ad1848.o
40 # Please leave it as is, cause the link order is significant !
42 obj-
$(CONFIG_SOUND_AEDSP16
) += aedsp16.o
43 obj-
$(CONFIG_SOUND_PSS
) += pss.o ad1848.o mpu401.o
44 obj-
$(CONFIG_SOUND_TRIX
) += trix.o ad1848.o sb_lib.o uart401.o
45 obj-
$(CONFIG_SOUND_OPL3SA1
) += opl3sa.o ad1848.o uart401.o
46 obj-
$(CONFIG_SOUND_SOFTOSS
) += softoss2.o
47 obj-
$(CONFIG_SOUND_SSCAPE
) += sscape.o ad1848.o mpu401.o
48 obj-
$(CONFIG_SOUND_MAD16
) += mad16.o ad1848.o sb_lib.o uart401.o
49 obj-
$(CONFIG_SOUND_CS4232
) += cs4232.o uart401.o
50 obj-
$(CONFIG_SOUND_OPL3SA2
) += opl3sa2.o ad1848.o mpu401.o
51 obj-
$(CONFIG_SOUND_MSS
) += ad1848.o
52 obj-
$(CONFIG_SOUND_PAS
) += pas2.o sb_lib.o uart401.o
53 obj-
$(CONFIG_SOUND_SB
) += sb.o sb_lib.o uart401.o
54 obj-
$(CONFIG_SOUND_WAVEFRONT
) += wavefront.o
55 obj-
$(CONFIG_SOUND_MAUI
) += maui.o mpu401.o
56 obj-
$(CONFIG_SOUND_MPU401
) += mpu401.o
57 obj-
$(CONFIG_SOUND_UART6850
) += uart6850.o
58 obj-
$(CONFIG_SOUND_GUS
) += gus.o ad1848.o
59 obj-
$(CONFIG_SOUND_ADLIB
) += adlib_card.o opl3.o
60 obj-
$(CONFIG_SOUND_YM3812
) += opl3.o
61 obj-
$(CONFIG_SOUND_VMIDI
) += v_midi.o
62 obj-
$(CONFIG_SOUND_VIDC
) += vidc_mod.o
63 obj-
$(CONFIG_SOUND_WAVEARTIST
) += waveartist.o
64 obj-
$(CONFIG_SOUND_SGALAXY
) += sgalaxy.o ad1848.o
65 obj-
$(CONFIG_SOUND_AD1816
) += ad1816.o
66 obj-
$(CONFIG_SOUND_ACI_MIXER
) += aci.o
67 obj-
$(CONFIG_SOUND_AWE32_SYNTH
) += awe_wave.o
69 obj-
$(CONFIG_SOUND_VIA82CXXX
) += via82cxxx_audio.o ac97_codec.o
70 obj-
$(CONFIG_SOUND_YMPCI
) += ymf_sb.o sb_lib.o uart401.o
71 obj-
$(CONFIG_SOUND_MSNDCLAS
) += msnd.o msnd_classic.o
72 obj-
$(CONFIG_SOUND_MSNDPIN
) += msnd.o msnd_pinnacle.o
73 obj-
$(CONFIG_SOUND_VWSND
) += vwsnd.o
74 obj-
$(CONFIG_SOUND_NM256
) += nm256_audio.o ac97.o
75 obj-
$(CONFIG_SOUND_ICH
) += i810_audio.o ac97_codec.o
76 obj-
$(CONFIG_SOUND_SONICVIBES
) += sonicvibes.o
77 obj-
$(CONFIG_SOUND_CMPCI
) += cmpci.o
78 obj-
$(CONFIG_SOUND_ES1370
) += es1370.o
79 obj-
$(CONFIG_SOUND_ES1371
) += es1371.o ac97_codec.o
80 obj-
$(CONFIG_SOUND_ESSSOLO1
) += esssolo1.o
81 obj-
$(CONFIG_SOUND_FUSION
) += cs46xx.o ac97_codec.o
82 obj-
$(CONFIG_SOUND_MAESTRO
) += maestro.o
83 obj-
$(CONFIG_SOUND_TRIDENT
) += trident.o ac97_codec.o
85 ifeq ($(CONFIG_SOUND_EMU10K1
),y
)
87 obj-y
+= emu10k1
/emu10k1.o
89 ifeq ($(CONFIG_SOUND_EMU10K1
),m
)
90 MOD_SUB_DIRS
+= emu10k1
94 ifeq ($(CONFIG_DMASOUND
),y
)
96 MOD_IN_SUB_DIRS
+= dmasound
97 obj-y
+= dmasound
/dmasound.o
99 ifeq ($(CONFIG_DMASOUND
),m
)
100 MOD_IN_SUB_DIRS
+= dmasound
105 # Declare multi-part drivers.
107 list-multi
:= sound.o gus.o pas2.o sb.o sb_lib.o softoss2.o vidc_mod.o \
108 soundcore.o wavefront.o
111 dev_table.o soundcard.o sound_syms.o \
112 audio.o audio_syms.o dmabuf.o \
113 midi_syms.o midi_synth.o midibuf.o \
114 sequencer.o sequencer_syms.o sound_timer.o sys_timer.o
116 soundcore-objs
:= sound_core.o sound_firmware.o
118 gus-objs
:= gus_card.o gus_midi.o gus_vol.o gus_wave.o ics2101.o
119 pas2-objs
:= pas2_card.o pas2_midi.o pas2_mixer.o pas2_pcm.o
121 sb_lib-objs
:= sb_common.o sb_audio.o sb_midi.o sb_mixer.o sb_ess.o
122 softoss2-objs
:= softoss.o softoss_rs.o
123 vidc_mod-objs
:= vidc.o vidc_fill.o
124 wavefront-objs
:= wavfront.o wf_midi.o yss225.o
127 # Extract lists of the multi-part drivers.
128 # The 'int-*' lists are the intermediate files used to build the multi's.
130 multi-y
:= $(filter $(list-multi
), $(obj-y
))
131 multi-m
:= $(filter $(list-multi
), $(obj-m
))
132 int-y
:= $(sort $(foreach m
, $(multi-y
), $($(basename $(m
))-objs
)))
133 int-m
:= $(sort $(foreach m
, $(multi-m
), $($(basename $(m
))-objs
)))
137 # Files that are both resident and modular: remove from modular.
139 obj-m
:= $(filter-out $(obj-y
), $(obj-m
))
140 int-m
:= $(filter-out $(int-y
), $(int-m
))
143 # Take multi-part drivers out of obj-y and put components in.
145 obj-y
:= $(filter-out $(list-multi
), $(obj-y
)) $(int-y
)
149 # Translate to Rules.make lists.
151 O_TARGET
:= sounddrivers.o
153 O_OBJS
:= $(filter-out $(export-objs
), $(obj-y
))
154 OX_OBJS
:= $(filter $(export-objs
), $(obj-y
))
155 M_OBJS
:= $(sort $(filter-out $(export-objs
), $(obj-m
)))
156 MX_OBJS
:= $(sort $(filter $(export-objs
), $(obj-m
)))
157 MI_OBJS
:= $(sort $(filter-out $(export-objs
), $(int-m
)))
158 MIX_OBJS
:= $(sort $(filter $(export-objs
), $(int-m
)))
160 include $(TOPDIR
)/Rules.make
164 # Link rules for multi-part drivers.
166 sound.o
: $(sound-objs
)
167 $(LD
) -r
-o
$@
$(sound-objs
)
169 soundcore.o
: $(soundcore-objs
)
170 $(LD
) -r
-o
$@
$(soundcore-objs
)
173 $(LD
) -r
-o
$@
$(gus-objs
)
176 $(LD
) -r
-o
$@
$(pas2-objs
)
179 $(LD
) -r
-o
$@
$(sb-objs
)
181 sb_lib.o
: $(sb_lib-objs
)
182 $(LD
) -r
-o
$@
$(sb_lib-objs
)
184 softoss2.o
: $(softoss2-objs
)
185 $(LD
) -r
-o
$@
$(softoss2-objs
)
187 vidc_mod.o
: $(vidc_mod-objs
)
188 $(LD
) -r
-o
$@
$(vidc_mod-objs
)
190 wavefront.o
: $(wavefront-objs
)
191 $(LD
) -r
-o
$@
$(wavefront-objs
)
193 # Firmware files that need translation
195 # The translated files are protected by a file that keeps track
196 # of what name was used to build them. If the name changes, they
197 # will be forced to be remade.
199 # First make the utilities.
202 $(HOSTCC
) $(HOSTCFLAGS
) -o bin2hex bin2hex.c
205 $(HOSTCC
) $(HOSTCFLAGS
) -o hex2hex hex2hex.c
210 # Turtle Beach Maui / Tropez
214 ifeq ($(CONFIG_MAUI_HAVE_BOOT
),y
)
215 maui_boot.h
: $(patsubst "%", %, $(CONFIG_MAUI_BOOT_FILE
)) bin2hex
216 .
/bin2hex
-i maui_os
< $(CONFIG_MAUI_BOOT_FILE
) > $@
220 echo
'static unsigned char * maui_os = NULL;'; \
221 echo
'static int maui_osLen = 0;'; \
225 echo
'ifeq ($(strip $(CONFIG_MAUI_HAVE_BOOT) $(CONFIG_MAUI_BOOT_FILE)),$$(strip $$(CONFIG_MAUI_HAVE_BOOT) $$(CONFIG_MAUI_BOOT_FILE)))'; \
226 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
232 # Turtle Beach MultiSound
234 ifeq ($(CONFIG_MSNDCLAS_HAVE_BOOT
),y
)
235 msnd_classic.o
: msndperm.c msndinit.c
237 msndperm.c
: $(patsubst "%", %, $(CONFIG_MSNDCLAS_PERM_FILE
)) bin2hex
238 .
/bin2hex msndperm
< $(CONFIG_MSNDCLAS_PERM_FILE
) > $@
240 echo
'ifeq ($(strip $(CONFIG_MSNDCLAS_HAVE_BOOT) $(CONFIG_MSNDCLAS_PERM_FILE)),$$(strip $$(CONFIG_MSNDCLAS_HAVE_BOOT) $$(CONFIG_MSNDCLAS_PERM_FILE)))'; \
241 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
245 msndinit.c
: $(patsubst "%", %, $(CONFIG_MSNDCLAS_INIT_FILE
)) bin2hex
246 .
/bin2hex msndinit
< $(CONFIG_MSNDCLAS_INIT_FILE
) > $@
248 echo
'ifeq ($(strip $(CONFIG_MSNDCLAS_HAVE_BOOT) $(CONFIG_MSNDCLAS_INIT_FILE)),$$(strip $$(CONFIG_MSNDCLAS_HAVE_BOOT) $$(CONFIG_MSNDCLAS_INIT_FILE)))'; \
249 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
254 ifeq ($(CONFIG_MSNDPIN_HAVE_BOOT
),y
)
255 msnd_pinnacle.o
: pndsperm.c pndspini.c
257 pndsperm.c
: $(patsubst "%", %, $(CONFIG_MSNDPIN_PERM_FILE
)) bin2hex
258 .
/bin2hex pndsperm
< $(CONFIG_MSNDPIN_PERM_FILE
) > $@
260 echo
'ifeq ($(strip $(CONFIG_MSNDPIN_HAVE_BOOT) $(CONFIG_MSNDPIN_PERM_FILE)),$$(strip $$(CONFIG_MSNDPIN_HAVE_BOOT) $$(CONFIG_MSNDPIN_PERM_FILE)))'; \
261 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
265 pndspini.c
: $(patsubst "%", %, $(CONFIG_MSNDPIN_INIT_FILE
)) bin2hex
266 .
/bin2hex pndspini
< $(CONFIG_MSNDPIN_INIT_FILE
) > $@
268 echo
'ifeq ($(strip $(CONFIG_MSNDPIN_HAVE_BOOT) $(CONFIG_MSNDPIN_INIT_FILE)),$$(strip $$(CONFIG_MSNDPIN_HAVE_BOOT) $$(CONFIG_MSNDPIN_INIT_FILE)))'; \
269 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
280 ifeq ($(CONFIG_PSS_HAVE_BOOT
),y
)
281 pss_boot.h
: $(patsubst "%", %, $(CONFIG_PSS_BOOT_FILE
)) bin2hex
282 .
/bin2hex pss_synth
< $(CONFIG_PSS_BOOT_FILE
) > $@
286 echo
'static unsigned char * pss_synth = NULL;'; \
287 echo
'static int pss_synthLen = 0;'; \
291 echo
'ifeq ($(strip $(CONFIG_PSS_HAVE_BOOT) $(CONFIG_PSS_BOOT_FILE)),$$(strip $$(CONFIG_PSS_HAVE_BOOT) $$(CONFIG_PSS_BOOT_FILE)))'; \
292 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
298 # MediaTrix AudioTrix Pro
302 ifeq ($(CONFIG_TRIX_HAVE_BOOT
),y
)
303 trix_boot.h
: $(patsubst "%", %, $(CONFIG_TRIX_BOOT_FILE
)) hex2hex
304 .
/hex2hex
-i trix_boot
< $(CONFIG_TRIX_BOOT_FILE
) > $@
308 echo
'static unsigned char * trix_boot = NULL;'; \
309 echo
'static int trix_boot_len = 0;'; \
313 echo
'ifeq ($(strip $(CONFIG_TRIX_HAVE_BOOT) $(CONFIG_TRIX_BOOT_FILE)),$$(strip $$(CONFIG_TRIX_HAVE_BOOT) $$(CONFIG_TRIX_BOOT_FILE)))'; \
314 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
320 # Find boot files whose source file names have changed and force rebuild.
322 FILES_BOOT_UP_TO_DATE
:=
324 FILES_BOOT_EXIST
:= $(wildcard .
*.boot
)
325 ifneq ($(FILES_BOOT_EXIST
),)
326 include $(FILES_BOOT_EXIST
)
329 FILES_BOOT_CHANGED
:= $(strip \
330 $(filter-out $(FILES_BOOT_UP_TO_DATE
), \
331 maui_boot.h pss_boot.h trix_boot.h
))
333 ifneq ($(FILES_BOOT_CHANGED
),)
334 $(FILES_BOOT_CHANGED
): dummy