86b1d1b6a9a154e98387bad11afa832d60605ca0
[sdk] / audio / Makefile
1 .PHONY: all objdir cleantarget clean realclean distclean
2
3 # CORE VARIABLES
4
5 MODULE := EcereAudio
6 VERSION := 0.44
7 CONFIG := release
8 ifndef COMPILER
9 COMPILER := default
10 endif
11
12 TARGET_TYPE = sharedlib
13
14 # FLAGS
15
16 ECFLAGS =
17 ifndef DEBIAN_PACKAGE
18 CFLAGS =
19 LDFLAGS =
20 endif
21 PRJ_CFLAGS =
22 CECFLAGS =
23 OFLAGS =
24 LIBS =
25
26 ifdef DEBUG
27 NOSTRIP := y
28 endif
29
30 CONSOLE = -mwindows
31
32 # INCLUDES
33
34 _CF_DIR = ../
35
36 include $(_CF_DIR)crossplatform.mk
37 include $(_CF_DIR)default.cf
38
39 # POST-INCLUDES VARIABLES
40
41 OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
42
43 RES = 
44
45 TARGET = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO)$(VER)
46
47 ifdef LINUX_TARGET
48 SONAME = -Wl,-soname,$(LP)EcereAudio$(SO).0
49 endif
50
51 _ECSOURCES = \
52         alsa.ec \
53         audio.ec \
54         dsound.ec \
55         mixer.ec
56
57 ECSOURCES = $(call shwspace,$(_ECSOURCES))
58
59 _COBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES))))
60
61 _SYMBOLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES))))
62
63 _IMPORTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES))))
64
65 _ECOBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES))))
66
67 _BOWLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES))))
68
69 COBJECTS = $(call shwspace,$(_COBJECTS))
70
71 SYMBOLS = $(call shwspace,$(_SYMBOLS))
72
73 IMPORTS = $(call shwspace,$(_IMPORTS))
74
75 ECOBJECTS = $(call shwspace,$(_ECOBJECTS))
76
77 BOWLS = $(call shwspace,$(_BOWLS))
78
79 OBJECTS = $(ECOBJECTS) $(OBJ)$(MODULE).main$(O)
80
81 SOURCES = $(ECSOURCES)
82
83 RESOURCES =
84
85 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
86
87 ifndef STATIC_LIBRARY_TARGET
88 LIBS += \
89         $(call _L,ecere)
90 endif
91
92 PRJ_CFLAGS += \
93          $(if $(WINDOWS_TARGET), \
94                          -I../deps/DirectX-9.0/include,) \
95          $(if $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -Wall -DREPOSITORY_VERSION="\"$(REPOSITORY_VER)\"" \
96                          -I../deps/DirectX-9.0/include
97
98 ECFLAGS += -module $(MODULE)
99 # PLATFORM-SPECIFIC OPTIONS
100
101 ifdef WINDOWS_TARGET
102
103 ifndef STATIC_LIBRARY_TARGET
104 LIBS += \
105         $(call _L,winmm) \
106         $(call _L,dsound) \
107         $(call _L,dxguid) \
108         $(call _L,uuid)
109 endif
110
111 else
112 ifdef LINUX_TARGET
113
114 ifndef STATIC_LIBRARY_TARGET
115 LIBS += \
116         $(call _L,asound)
117 endif
118
119 endif
120 endif
121
122 CECFLAGS += -cpp $(_CPP)
123
124 ifndef STATIC_LIBRARY_TARGET
125 OFLAGS += \
126          -L../obj/$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/bin \
127          -L../obj/$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/lib
128 endif
129
130 # TARGETS
131
132 all: objdir $(TARGET)
133
134 objdir:
135         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
136         $(if $(ECERE_SDK_SRC),$(if $(wildcard $(call escspace,$(ECERE_SDK_SRC)/crossplatform.mk)),,@$(call echo,Ecere SDK Source Warning: The value of ECERE_SDK_SRC is pointing to an incorrect ($(ECERE_SDK_SRC)) location.)),)
137         $(if $(ECERE_SDK_SRC),,$(if $(ECP_DEBUG)$(ECC_DEBUG)$(ECS_DEBUG),@$(call echo,ECC Debug Warning: Please define ECERE_SDK_SRC before using ECP_DEBUG, ECC_DEBUG or ECS_DEBUG),))
138
139 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
140         @$(call rmq,$(OBJ)symbols.lst)
141         @$(call touch,$(OBJ)symbols.lst)
142         @$(call echo,$(SYMBOLS)) >> $(OBJ)symbols.lst
143         @$(call echo,$(IMPORTS)) >> $(OBJ)symbols.lst
144         $(ECS) $(ARCH_FLAGS) $(ECSLIBOPT) @$(OBJ)symbols.lst -symbols obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(call quote_path,$@)
145
146 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
147         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
148         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(call quote_path,$@) -symbols $(OBJ)
149
150 $(SYMBOLS): | objdir
151 $(OBJECTS): | objdir
152 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
153         @$(call rmq,$(OBJ)objects.lst)
154         @$(call touch,$(OBJ)objects.lst)
155         @$(call echo,$(OBJ)$(MODULE).main$(O)) >> $(OBJ)objects.lst
156         @$(call echo,$(ECOBJECTS)) >> $(OBJ)objects.lst
157 ifndef STATIC_LIBRARY_TARGET
158         $(CC) $(OFLAGS) @$(OBJ)objects.lst $(LIBS) -o $(TARGET) $(INSTALLNAME) $(SONAME)
159 ifndef NOSTRIP
160         $(STRIP) $(STRIPOPT) $(TARGET)
161 endif
162 else
163         $(AR) rcs $(TARGET) @$(OBJ)objects.lst $(LIBS)
164 endif
165 ifdef SHARED_LIBRARY_TARGET
166 ifdef LINUX_TARGET
167 ifdef LINUX_HOST
168         $(if $(basename $(VER)),ln -sf $(LP)$(MODULE)$(SO)$(VER) $(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER)),)
169         $(if $(VER),ln -sf $(LP)$(MODULE)$(SO)$(VER) $(OBJ)$(LP)$(MODULE)$(SO),)
170 endif
171 endif
172 endif
173
174 # SYMBOL RULES
175
176 $(OBJ)alsa.sym: alsa.ec
177         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,alsa.ec) -o $(call quote_path,$@)
178
179 $(OBJ)audio.sym: audio.ec
180         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,audio.ec) -o $(call quote_path,$@)
181
182 $(OBJ)dsound.sym: dsound.ec
183         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,dsound.ec) -o $(call quote_path,$@)
184
185 $(OBJ)mixer.sym: mixer.ec
186         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,mixer.ec) -o $(call quote_path,$@)
187
188 # C OBJECT RULES
189
190 $(OBJ)alsa.c: alsa.ec $(OBJ)alsa.sym | $(SYMBOLS)
191         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,alsa.ec) -o $(call quote_path,$@) -symbols $(OBJ)
192
193 $(OBJ)audio.c: audio.ec $(OBJ)audio.sym | $(SYMBOLS)
194         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,audio.ec) -o $(call quote_path,$@) -symbols $(OBJ)
195
196 $(OBJ)dsound.c: dsound.ec $(OBJ)dsound.sym | $(SYMBOLS)
197         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,dsound.ec) -o $(call quote_path,$@) -symbols $(OBJ)
198
199 $(OBJ)mixer.c: mixer.ec $(OBJ)mixer.sym | $(SYMBOLS)
200         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,mixer.ec) -o $(call quote_path,$@) -symbols $(OBJ)
201
202 # OBJECT RULES
203
204 $(OBJ)alsa.o: $(OBJ)alsa.c
205         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)alsa.c) -o $(call quote_path,$@)
206
207 $(OBJ)audio.o: $(OBJ)audio.c
208         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)audio.c) -o $(call quote_path,$@)
209
210 $(OBJ)dsound.o: $(OBJ)dsound.c
211         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)dsound.c) -o $(call quote_path,$@)
212
213 $(OBJ)mixer.o: $(OBJ)mixer.c
214         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)mixer.c) -o $(call quote_path,$@)
215
216 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
217         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(call quote_path,$@)
218
219 cleantarget: objdir
220         $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
221         $(call rmq,$(OBJ)symbols.lst)
222         $(call rmq,$(OBJ)objects.lst)
223         $(call rmq,$(TARGET))
224 ifdef SHARED_LIBRARY_TARGET
225 ifdef LINUX_TARGET
226 ifdef LINUX_HOST
227         $(call rmq,$(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER)))
228         $(call rmq,$(OBJ)$(LP)$(MODULE)$(SO))
229 endif
230 endif
231 endif
232
233 clean: cleantarget
234         $(call rmq,$(_OBJECTS))
235         $(call rmq,$(_ECOBJECTS))
236         $(call rmq,$(_COBJECTS))
237         $(call rmq,$(_BOWLS))
238         $(call rmq,$(_IMPORTS))
239         $(call rmq,$(_SYMBOLS))
240
241 realclean: cleantarget
242         $(call rmrq,$(OBJ))
243
244 distclean: cleantarget
245         $(call rmrq,obj/)