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
) lowlevel
15 ifeq ($(CONFIG_LOWLEVEL_SOUND
),y
)
17 MOD_IN_SUB_DIRS
+= lowlevel
22 # All of the (potential) objects that export symbols.
23 # This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
25 export-objs
:= ad1848.o audio_syms.o midi_syms.o mpu401.o \
26 msnd.o opl3.o sb_common.o sequencer_syms.o \
27 sound_core.o sound_syms.o uart401.o ad1816.o \
28 nm256_audio.o ac97.o ac97_codec.o
41 # Each configuration option enables a list of files.
43 obj-
$(CONFIG_SOUND
) += soundcore.o
44 obj-
$(CONFIG_DMASOUND
) += dmasound.o
45 obj-
$(CONFIG_SOUND_OSS
) += sound.o
46 obj-
$(CONFIG_SOUND_CS4232
) += cs4232.o ad1848.o
48 # Please leave it as is, cause the link order is significant !
50 obj-
$(CONFIG_SOUND_PSS
) += pss.o ad1848.o mpu401.o
51 obj-
$(CONFIG_SOUND_TRIX
) += trix.o ad1848.o sb_lib.o uart401.o
52 obj-
$(CONFIG_SOUND_OPL3SA1
) += opl3sa.o ad1848.o uart401.o
53 obj-
$(CONFIG_SOUND_SOFTOSS
) += softoss2.o
54 obj-
$(CONFIG_SOUND_SSCAPE
) += sscape.o ad1848.o mpu401.o
55 obj-
$(CONFIG_SOUND_MAD16
) += mad16.o ad1848.o sb_lib.o uart401.o
56 obj-
$(CONFIG_SOUND_CS4232
) += cs4232.o uart401.o
57 obj-
$(CONFIG_SOUND_OPL3SA2
) += opl3sa2.o ad1848.o uart401.o mpu401.o
58 obj-
$(CONFIG_SOUND_MSS
) += ad1848.o
59 obj-
$(CONFIG_SOUND_PAS
) += pas2.o sb_lib.o uart401.o
60 obj-
$(CONFIG_SOUND_SB
) += sb.o sb_lib.o uart401.o
61 obj-
$(CONFIG_SOUND_WAVEFRONT
) += wavefront.o
62 obj-
$(CONFIG_SOUND_MAUI
) += maui.o mpu401.o
63 obj-
$(CONFIG_SOUND_MPU401
) += mpu401.o
64 obj-
$(CONFIG_SOUND_UART6850
) += uart6850.o
65 obj-
$(CONFIG_SOUND_GUS
) += gus.o ad1848.o
66 obj-
$(CONFIG_SOUND_YM3812
) += adlib_card.o opl3.o
67 obj-
$(CONFIG_SOUND_VMIDI
) += v_midi.o
68 obj-
$(CONFIG_SOUND_VIDC
) += vidc_mod.o
69 obj-
$(CONFIG_SOUND_WAVEARTIST
) += waveartist.o
70 obj-
$(CONFIG_SOUND_SGALAXY
) += sgalaxy.o ad1848.o
71 obj-
$(CONFIG_SOUND_AD1816
) += ad1816.o
73 obj-
$(CONFIG_SOUND_VIA82CXXX
) += via82cxxx_audio.o sb_lib.o uart401.o ac97.o
74 obj-
$(CONFIG_SOUND_MSNDCLAS
) += msnd.o msnd_classic.o
75 obj-
$(CONFIG_SOUND_MSNDPIN
) += msnd.o msnd_pinnacle.o
76 obj-
$(CONFIG_SOUND_VWSND
) += vwsnd.o
77 obj-
$(CONFIG_SOUND_NM256
) += nm256_audio.o ac97.o
78 obj-
$(CONFIG_SOUND_SONICVIBES
) += sonicvibes.o
79 obj-
$(CONFIG_SOUND_CMPCI
) += cmpci.o
80 obj-
$(CONFIG_SOUND_ES1370
) += es1370.o
81 obj-
$(CONFIG_SOUND_ES1371
) += es1371.o ac97_codec.o
82 obj-
$(CONFIG_SOUND_ESSSOLO1
) += esssolo1.o
83 obj-
$(CONFIG_SOUND_MAESTRO
) += maestro.o
84 obj-
$(CONFIG_SOUND_TRIDENT
) += trident.o ac97_codec.o
86 # Declare multi-part drivers.
88 list-multi
:= sound.o gus.o pas2.o sb.o softoss2.o vidc_mod.o \
89 soundcore.o wavefront.o
92 dev_table.o soundcard.o sound_syms.o \
93 audio.o audio_syms.o dmabuf.o \
94 midi_syms.o midi_synth.o midibuf.o \
95 sequencer.o sequencer_syms.o sound_timer.o sys_timer.o
97 soundcore-objs
:= sound_core.o sound_firmware.o
99 gus-objs
:= gus_card.o gus_midi.o gus_vol.o gus_wave.o ics2101.o
100 pas2-objs
:= pas2_card.o pas2_midi.o pas2_mixer.o pas2_pcm.o
102 sb_lib-objs
:= sb_common.o sb_audio.o sb_midi.o sb_mixer.o sb_ess.o
103 softoss2-objs
:= softoss.o softoss_rs.o
104 vidc_mod-objs
:= vidc.o vidc_fill.o
105 wavefront-objs
:= wavfront.o wf_midi.o yss225.o
108 # Extract lists of the multi-part drivers.
109 # The 'int-*' lists are the intermediate files used to build the multi's.
111 multi-y
:= $(filter $(list-multi
), $(obj-y
))
112 multi-m
:= $(filter $(list-multi
), $(obj-m
))
113 int-y
:= $(sort $(foreach m
, $(multi-y
), $($(basename $(m
))-objs
)))
114 int-m
:= $(sort $(foreach m
, $(multi-m
), $($(basename $(m
))-objs
)))
118 # Files that are both resident and modular: remove from modular.
120 obj-m
:= $(filter-out $(obj-y
), $(obj-m
))
121 int-m
:= $(filter-out $(int-y
), $(int-m
))
124 # Take multi-part drivers out of obj-y and put components in.
126 obj-y
:= $(filter-out $(list-multi
), $(obj-y
)) $(int-y
)
130 # Translate to Rules.make lists.
132 O_TARGET
:= sounddrivers.o
133 # This is a nice idea but needs depmod altering
134 #MOD_LIST_NAME := SOUND_MODULES
136 O_OBJS
:= $(filter-out $(export-objs
), $(obj-y
))
137 OX_OBJS
:= $(filter $(export-objs
), $(obj-y
))
138 M_OBJS
:= $(sort $(filter-out $(export-objs
), $(obj-m
)))
139 MX_OBJS
:= $(sort $(filter $(export-objs
), $(obj-m
)))
140 #MI_OBJS := $(sort $(filter-out $(export-objs), $(int-m)))
141 #MIX_OBJS := $(sort $(filter $(export-objs), $(int-m)))
143 ifeq ($(CONFIG_LOWLEVEL_SOUND
),y
)
144 O_OBJS
+= lowlevel
/lowlevel.o
147 include $(TOPDIR
)/Rules.make
151 # Link rules for multi-part drivers.
153 sound.o
: $(sound-objs
)
154 $(LD
) -r
-o
$@
$(sound-objs
)
156 soundcore.o
: $(soundcore-objs
)
157 $(LD
) -r
-o
$@
$(soundcore-objs
)
160 $(LD
) -r
-o
$@
$(gus-objs
)
163 $(LD
) -r
-o
$@
$(pas2-objs
)
166 $(LD
) -r
-o
$@
$(sb-objs
)
168 sb_lib.o
: $(sb_lib-objs
)
169 $(LD
) -r
-o
$@
$(sb_lib-objs
)
171 softoss2.o
: $(softoss2-objs
)
172 $(LD
) -r
-o
$@
$(softoss2-objs
)
174 vidc_mod.o
: $(vidc_mod-objs
)
175 $(LD
) -r
-o
$@
$(vidc_mod-objs
)
177 wavefront.o
: $(wavefront-objs
)
178 $(LD
) -r
-o
$@
$(wavefront-objs
)
180 # Firmware files that need translation
182 # The translated files are protected by a file that keeps track
183 # of what name was used to build them. If the name changes, they
184 # will be forced to be remade.
186 # First make the utilities.
189 $(HOSTCC
) $(HOSTCFLAGS
) -o bin2hex bin2hex.c
192 $(HOSTCC
) $(HOSTCFLAGS
) -o hex2hex hex2hex.c
197 # Turtle Beach Maui / Tropez
201 ifeq ($(CONFIG_MAUI_HAVE_BOOT
),y
)
202 maui_boot.h
: $(patsubst "%", %, $(CONFIG_MAUI_BOOT_FILE
)) bin2hex
203 .
/bin2hex
-i maui_os
< $(CONFIG_MAUI_BOOT_FILE
) > $@
207 echo
'static unsigned char * maui_os = NULL;'; \
208 echo
'static int maui_osLen = 0;'; \
212 echo
'ifeq ($(strip $(CONFIG_MAUI_HAVE_BOOT) $(CONFIG_MAUI_BOOT_FILE)),$$(strip $$(CONFIG_MAUI_HAVE_BOOT) $$(CONFIG_MAUI_BOOT_FILE)))'; \
213 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
219 # Turtle Beach MultiSound
221 ifeq ($(CONFIG_MSNDCLAS_HAVE_BOOT
),y
)
222 msnd_classic.o
: msndperm.c msndinit.c
224 msndperm.c
: $(patsubst "%", %, $(CONFIG_MSNDCLAS_PERM_FILE
)) bin2hex
225 .
/bin2hex msndperm
< $(CONFIG_MSNDCLAS_PERM_FILE
) > $@
227 echo
'ifeq ($(strip $(CONFIG_MSNDCLAS_HAVE_BOOT) $(CONFIG_MSNDCLAS_PERM_FILE)),$$(strip $$(CONFIG_MSNDCLAS_HAVE_BOOT) $$(CONFIG_MSNDCLAS_PERM_FILE)))'; \
228 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
232 msndinit.c
: $(patsubst "%", %, $(CONFIG_MSNDCLAS_INIT_FILE
)) bin2hex
233 .
/bin2hex msndinit
< $(CONFIG_MSNDCLAS_INIT_FILE
) > $@
235 echo
'ifeq ($(strip $(CONFIG_MSNDCLAS_HAVE_BOOT) $(CONFIG_MSNDCLAS_INIT_FILE)),$$(strip $$(CONFIG_MSNDCLAS_HAVE_BOOT) $$(CONFIG_MSNDCLAS_INIT_FILE)))'; \
236 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
241 ifeq ($(CONFIG_MSNDPIN_HAVE_BOOT
),y
)
242 msnd_pinnacle.o
: pndsperm.c pndspini.c
244 pndsperm.c
: $(patsubst "%", %, $(CONFIG_MSNDPIN_PERM_FILE
)) bin2hex
245 .
/bin2hex pndsperm
< $(CONFIG_MSNDPIN_PERM_FILE
) > $@
247 echo
'ifeq ($(strip $(CONFIG_MSNDPIN_HAVE_BOOT) $(CONFIG_MSNDPIN_PERM_FILE)),$$(strip $$(CONFIG_MSNDPIN_HAVE_BOOT) $$(CONFIG_MSNDPIN_PERM_FILE)))'; \
248 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
252 pndspini.c
: $(patsubst "%", %, $(CONFIG_MSNDPIN_INIT_FILE
)) bin2hex
253 .
/bin2hex pndspini
< $(CONFIG_MSNDPIN_INIT_FILE
) > $@
255 echo
'ifeq ($(strip $(CONFIG_MSNDPIN_HAVE_BOOT) $(CONFIG_MSNDPIN_INIT_FILE)),$$(strip $$(CONFIG_MSNDPIN_HAVE_BOOT) $$(CONFIG_MSNDPIN_INIT_FILE)))'; \
256 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
267 ifeq ($(CONFIG_PSS_HAVE_BOOT
),y
)
268 pss_boot.h
: $(patsubst "%", %, $(CONFIG_PSS_BOOT_FILE
)) bin2hex
269 .
/bin2hex pss_synth
< $(CONFIG_PSS_BOOT_FILE
) > $@
273 echo
'static unsigned char * pss_synth = NULL;'; \
274 echo
'static int pss_synthLen = 0;'; \
278 echo
'ifeq ($(strip $(CONFIG_PSS_HAVE_BOOT) $(CONFIG_PSS_BOOT_FILE)),$$(strip $$(CONFIG_PSS_HAVE_BOOT) $$(CONFIG_PSS_BOOT_FILE)))'; \
279 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
285 # MediaTrix AudioTrix Pro
289 ifeq ($(CONFIG_TRIX_HAVE_BOOT
),y
)
290 trix_boot.h
: $(patsubst "%", %, $(CONFIG_TRIX_BOOT_FILE
)) hex2hex
291 .
/hex2hex
-i trix_boot
< $(CONFIG_TRIX_BOOT_FILE
) > $@
295 echo
'static unsigned char * trix_boot = NULL;'; \
296 echo
'static int trix_boot_len = 0;'; \
300 echo
'ifeq ($(strip $(CONFIG_TRIX_HAVE_BOOT) $(CONFIG_TRIX_BOOT_FILE)),$$(strip $$(CONFIG_TRIX_HAVE_BOOT) $$(CONFIG_TRIX_BOOT_FILE)))'; \
301 echo
'FILES_BOOT_UP_TO_DATE += $@'; \
307 # Find boot files whose source file names have changed and force rebuild.
309 FILES_BOOT_UP_TO_DATE
:=
311 FILES_BOOT_EXIST
:= $(wildcard .
*.boot
)
312 ifneq ($(FILES_BOOT_EXIST
),)
313 include $(FILES_BOOT_EXIST
)
316 FILES_BOOT_CHANGED
:= $(strip \
317 $(filter-out $(FILES_BOOT_UP_TO_DATE
), \
318 maui_boot.h pss_boot.h trix_boot.h
))
320 ifneq ($(FILES_BOOT_CHANGED
),)
321 $(FILES_BOOT_CHANGED
): dummy