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_SSCAPE
) += sscape.o ad1848.o mpu401.o
47 obj-
$(CONFIG_SOUND_MAD16
) += mad16.o ad1848.o sb_lib.o uart401.o
48 obj-
$(CONFIG_SOUND_CS4232
) += cs4232.o uart401.o
49 obj-
$(CONFIG_SOUND_OPL3SA2
) += opl3sa2.o ad1848.o mpu401.o
50 obj-
$(CONFIG_SOUND_MSS
) += ad1848.o
51 obj-
$(CONFIG_SOUND_PAS
) += pas2.o sb_lib.o uart401.o
52 obj-
$(CONFIG_SOUND_SB
) += sb.o sb_lib.o uart401.o
53 obj-
$(CONFIG_SOUND_WAVEFRONT
) += wavefront.o
54 obj-
$(CONFIG_SOUND_MAUI
) += maui.o mpu401.o
55 obj-
$(CONFIG_SOUND_MPU401
) += mpu401.o
56 obj-
$(CONFIG_SOUND_UART6850
) += uart6850.o
57 obj-
$(CONFIG_SOUND_GUS
) += gus.o ad1848.o
58 obj-
$(CONFIG_SOUND_ADLIB
) += adlib_card.o opl3.o
59 obj-
$(CONFIG_SOUND_YM3812
) += opl3.o
60 obj-
$(CONFIG_SOUND_VMIDI
) += v_midi.o
61 obj-
$(CONFIG_SOUND_VIDC
) += vidc_mod.o
62 obj-
$(CONFIG_SOUND_WAVEARTIST
) += waveartist.o
63 obj-
$(CONFIG_SOUND_SGALAXY
) += sgalaxy.o ad1848.o
64 obj-
$(CONFIG_SOUND_AD1816
) += ad1816.o
65 obj-
$(CONFIG_SOUND_ACI_MIXER
) += aci.o
66 obj-
$(CONFIG_SOUND_AWE32_SYNTH
) += awe_wave.o
68 obj-
$(CONFIG_SOUND_VIA82CXXX
) += via82cxxx_audio.o ac97_codec.o
69 obj-
$(CONFIG_SOUND_YMPCI
) += ymf_sb.o sb_lib.o uart401.o
70 obj-
$(CONFIG_SOUND_YMFPCI
) += ymfpci.o ac97_codec.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_CS4281
) += cs4281.o
83 obj-
$(CONFIG_SOUND_MAESTRO
) += maestro.o
84 obj-
$(CONFIG_SOUND_TRIDENT
) += trident.o ac97_codec.o
86 ifeq ($(CONFIG_SOUND_EMU10K1
),y
)
88 obj-y
+= emu10k1
/emu10k1.o
90 ifeq ($(CONFIG_SOUND_EMU10K1
),m
)
91 MOD_SUB_DIRS
+= emu10k1
95 ifeq ($(CONFIG_DMASOUND
),y
)
97 MOD_IN_SUB_DIRS
+= dmasound
98 obj-y
+= dmasound
/dmasound.o
100 ifeq ($(CONFIG_DMASOUND
),m
)
101 MOD_IN_SUB_DIRS
+= dmasound
106 # Declare multi-part drivers.
108 list-multi
:= sound.o gus.o pas2.o sb.o sb_lib.o vidc_mod.o \
109 soundcore.o wavefront.o
112 dev_table.o soundcard.o sound_syms.o \
113 audio.o audio_syms.o dmabuf.o \
114 midi_syms.o midi_synth.o midibuf.o \
115 sequencer.o sequencer_syms.o sound_timer.o sys_timer.o
117 soundcore-objs
:= sound_core.o sound_firmware.o
119 gus-objs
:= gus_card.o gus_midi.o gus_vol.o gus_wave.o ics2101.o
120 pas2-objs
:= pas2_card.o pas2_midi.o pas2_mixer.o pas2_pcm.o
122 sb_lib-objs
:= sb_common.o sb_audio.o sb_midi.o sb_mixer.o sb_ess.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 vidc_mod.o
: $(vidc_mod-objs
)
185 $(LD
) -r
-o
$@
$(vidc_mod-objs
)
187 wavefront.o
: $(wavefront-objs
)
188 $(LD
) -r
-o
$@
$(wavefront-objs
)
190 # Firmware files that need translation
192 # The translated files are protected by a file that keeps track
193 # of what name was used to build them. If the name changes, they
194 # will be forced to be remade.
196 # First make the utilities.
199 $(HOSTCC
) $(HOSTCFLAGS
) -o bin2hex bin2hex.c
202 $(HOSTCC
) $(HOSTCFLAGS
) -o hex2hex hex2hex.c
207 # Turtle Beach Maui / Tropez
211 ifeq ($(CONFIG_MAUI_HAVE_BOOT
),y
)
212 maui_boot.h
: $(patsubst "%", %, $(CONFIG_MAUI_BOOT_FILE
)) bin2hex
213 .
/bin2hex
-i maui_os
< $(CONFIG_MAUI_BOOT_FILE
) > $@
217 echo
'static unsigned char * maui_os = NULL;'; \
218 echo
'static int maui_osLen = 0;'; \
222 echo
'ifeq ($(strip $(CONFIG_MAUI_HAVE_BOOT) $(CONFIG_MAUI_BOOT_FILE)),$$(strip $$(CONFIG_MAUI_HAVE_BOOT) $$(CONFIG_MAUI_BOOT_FILE)))'; \
223 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
229 # Turtle Beach MultiSound
231 ifeq ($(CONFIG_MSNDCLAS_HAVE_BOOT
),y
)
232 msnd_classic.o
: msndperm.c msndinit.c
234 msndperm.c
: $(patsubst "%", %, $(CONFIG_MSNDCLAS_PERM_FILE
)) bin2hex
235 .
/bin2hex msndperm
< $(CONFIG_MSNDCLAS_PERM_FILE
) > $@
237 echo
'ifeq ($(strip $(CONFIG_MSNDCLAS_HAVE_BOOT) $(CONFIG_MSNDCLAS_PERM_FILE)),$$(strip $$(CONFIG_MSNDCLAS_HAVE_BOOT) $$(CONFIG_MSNDCLAS_PERM_FILE)))'; \
238 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
242 msndinit.c
: $(patsubst "%", %, $(CONFIG_MSNDCLAS_INIT_FILE
)) bin2hex
243 .
/bin2hex msndinit
< $(CONFIG_MSNDCLAS_INIT_FILE
) > $@
245 echo
'ifeq ($(strip $(CONFIG_MSNDCLAS_HAVE_BOOT) $(CONFIG_MSNDCLAS_INIT_FILE)),$$(strip $$(CONFIG_MSNDCLAS_HAVE_BOOT) $$(CONFIG_MSNDCLAS_INIT_FILE)))'; \
246 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
251 ifeq ($(CONFIG_MSNDPIN_HAVE_BOOT
),y
)
252 msnd_pinnacle.o
: pndsperm.c pndspini.c
254 pndsperm.c
: $(patsubst "%", %, $(CONFIG_MSNDPIN_PERM_FILE
)) bin2hex
255 .
/bin2hex pndsperm
< $(CONFIG_MSNDPIN_PERM_FILE
) > $@
257 echo
'ifeq ($(strip $(CONFIG_MSNDPIN_HAVE_BOOT) $(CONFIG_MSNDPIN_PERM_FILE)),$$(strip $$(CONFIG_MSNDPIN_HAVE_BOOT) $$(CONFIG_MSNDPIN_PERM_FILE)))'; \
258 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
262 pndspini.c
: $(patsubst "%", %, $(CONFIG_MSNDPIN_INIT_FILE
)) bin2hex
263 .
/bin2hex pndspini
< $(CONFIG_MSNDPIN_INIT_FILE
) > $@
265 echo
'ifeq ($(strip $(CONFIG_MSNDPIN_HAVE_BOOT) $(CONFIG_MSNDPIN_INIT_FILE)),$$(strip $$(CONFIG_MSNDPIN_HAVE_BOOT) $$(CONFIG_MSNDPIN_INIT_FILE)))'; \
266 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
277 ifeq ($(CONFIG_PSS_HAVE_BOOT
),y
)
278 pss_boot.h
: $(patsubst "%", %, $(CONFIG_PSS_BOOT_FILE
)) bin2hex
279 .
/bin2hex pss_synth
< $(CONFIG_PSS_BOOT_FILE
) > $@
283 echo
'static unsigned char * pss_synth = NULL;'; \
284 echo
'static int pss_synthLen = 0;'; \
288 echo
'ifeq ($(strip $(CONFIG_PSS_HAVE_BOOT) $(CONFIG_PSS_BOOT_FILE)),$$(strip $$(CONFIG_PSS_HAVE_BOOT) $$(CONFIG_PSS_BOOT_FILE)))'; \
289 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
295 # MediaTrix AudioTrix Pro
299 ifeq ($(CONFIG_TRIX_HAVE_BOOT
),y
)
300 trix_boot.h
: $(patsubst "%", %, $(CONFIG_TRIX_BOOT_FILE
)) hex2hex
301 .
/hex2hex
-i trix_boot
< $(CONFIG_TRIX_BOOT_FILE
) > $@
305 echo
'static unsigned char * trix_boot = NULL;'; \
306 echo
'static int trix_boot_len = 0;'; \
310 echo
'ifeq ($(strip $(CONFIG_TRIX_HAVE_BOOT) $(CONFIG_TRIX_BOOT_FILE)),$$(strip $$(CONFIG_TRIX_HAVE_BOOT) $$(CONFIG_TRIX_BOOT_FILE)))'; \
311 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
317 # Find boot files whose source file names have changed and force rebuild.
319 FILES_BOOT_UP_TO_DATE
:=
321 FILES_BOOT_EXIST
:= $(wildcard .
*.boot
)
322 ifneq ($(FILES_BOOT_EXIST
),)
323 include $(FILES_BOOT_EXIST
)
326 FILES_BOOT_CHANGED
:= $(strip \
327 $(filter-out $(FILES_BOOT_UP_TO_DATE
), \
328 maui_boot.h pss_boot.h trix_boot.h
))
330 ifneq ($(FILES_BOOT_CHANGED
),)
331 $(FILES_BOOT_CHANGED
): dummy