ecere/gui/GuiApplication: Fixed OS X compilation
[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 $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -Wall -DREPOSITORY_VERSION="\"$(REPOSITORY_VER)\""
94
95 ECFLAGS += -module $(MODULE)
96 # PLATFORM-SPECIFIC OPTIONS
97
98 ifdef WINDOWS_TARGET
99
100 ifndef STATIC_LIBRARY_TARGET
101 LIBS += \
102         $(call _L,winmm) \
103         $(call _L,dsound) \
104         $(call _L,dxguid) \
105         $(call _L,uuid)
106 endif
107
108 else
109 ifdef LINUX_TARGET
110
111 ifndef STATIC_LIBRARY_TARGET
112 LIBS += \
113         $(call _L,asound)
114 endif
115
116 endif
117 endif
118
119 CECFLAGS += -cpp $(_CPP)
120
121 ifndef STATIC_LIBRARY_TARGET
122 OFLAGS += \
123          -L../obj/$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/bin \
124          -L../obj/$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/lib
125 endif
126
127 # TARGETS
128
129 all: objdir $(TARGET)
130
131 objdir:
132         $(if $(wildcard $(OBJ)),,$(call mkdir,$(OBJ)))
133         $(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.)),)
134         $(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),))
135
136 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
137         @$(call rm,$(OBJ)symbols.lst)
138         @$(call touch,$(OBJ)symbols.lst)
139         $(call addtolistfile,$(SYMBOLS),$(OBJ)symbols.lst)
140         $(call addtolistfile,$(IMPORTS),$(OBJ)symbols.lst)
141         $(ECS) $(ARCH_FLAGS) $(ECSLIBOPT) @$(OBJ)symbols.lst -symbols obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(call quote_path,$@)
142
143 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
144         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
145         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(call quote_path,$@) -symbols $(OBJ)
146
147 $(SYMBOLS): | objdir
148 $(OBJECTS): | objdir
149 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
150         @$(call rm,$(OBJ)objects.lst)
151         @$(call touch,$(OBJ)objects.lst)
152         $(call addtolistfile,$(OBJ)$(MODULE).main$(O),$(OBJ)objects.lst)
153         $(call addtolistfile,$(ECOBJECTS),$(OBJ)objects.lst)
154 ifndef STATIC_LIBRARY_TARGET
155         $(CC) $(OFLAGS) @$(OBJ)objects.lst $(LIBS) -o $(TARGET) $(INSTALLNAME) $(SONAME)
156 ifndef NOSTRIP
157         $(STRIP) $(STRIPOPT) $(TARGET)
158 endif
159 else
160         $(AR) rcs $(TARGET) @$(OBJ)objects.lst $(LIBS)
161 endif
162 ifdef SHARED_LIBRARY_TARGET
163 ifdef LINUX_TARGET
164 ifdef LINUX_HOST
165         $(if $(basename $(VER)),ln -sf $(LP)$(MODULE)$(SO)$(VER) $(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER)),)
166         $(if $(VER),ln -sf $(LP)$(MODULE)$(SO)$(VER) $(OBJ)$(LP)$(MODULE)$(SO),)
167 endif
168 endif
169 endif
170
171 # SYMBOL RULES
172
173 $(OBJ)alsa.sym: alsa.ec
174         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,alsa.ec) -o $(call quote_path,$@)
175
176 $(OBJ)audio.sym: audio.ec
177         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,audio.ec) -o $(call quote_path,$@)
178
179 $(OBJ)dsound.sym: dsound.ec
180         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,dsound.ec) -o $(call quote_path,$@)
181
182 $(OBJ)mixer.sym: mixer.ec
183         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,mixer.ec) -o $(call quote_path,$@)
184
185 # C OBJECT RULES
186
187 $(OBJ)alsa.c: alsa.ec $(OBJ)alsa.sym | $(SYMBOLS)
188         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,alsa.ec) -o $(call quote_path,$@) -symbols $(OBJ)
189
190 $(OBJ)audio.c: audio.ec $(OBJ)audio.sym | $(SYMBOLS)
191         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,audio.ec) -o $(call quote_path,$@) -symbols $(OBJ)
192
193 $(OBJ)dsound.c: dsound.ec $(OBJ)dsound.sym | $(SYMBOLS)
194         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,dsound.ec) -o $(call quote_path,$@) -symbols $(OBJ)
195
196 $(OBJ)mixer.c: mixer.ec $(OBJ)mixer.sym | $(SYMBOLS)
197         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,mixer.ec) -o $(call quote_path,$@) -symbols $(OBJ)
198
199 # OBJECT RULES
200
201 $(OBJ)alsa.o: $(OBJ)alsa.c
202         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)alsa.c) -o $(call quote_path,$@)
203
204 $(OBJ)audio.o: $(OBJ)audio.c
205         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)audio.c) -o $(call quote_path,$@)
206
207 $(OBJ)dsound.o: $(OBJ)dsound.c
208         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)dsound.c) -o $(call quote_path,$@)
209
210 $(OBJ)mixer.o: $(OBJ)mixer.c
211         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)mixer.c) -o $(call quote_path,$@)
212
213 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
214         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(call quote_path,$@)
215
216 cleantarget: objdir
217         $(call rm,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
218         $(call rm,$(OBJ)symbols.lst)
219         $(call rm,$(OBJ)objects.lst)
220         $(call rm,$(TARGET))
221 ifdef SHARED_LIBRARY_TARGET
222 ifdef LINUX_TARGET
223 ifdef LINUX_HOST
224         $(call rm,$(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER)))
225         $(call rm,$(OBJ)$(LP)$(MODULE)$(SO))
226 endif
227 endif
228 endif
229
230 clean: cleantarget
231         $(call rm,$(_OBJECTS))
232         $(call rm,$(_ECOBJECTS))
233         $(call rm,$(_COBJECTS))
234         $(call rm,$(_BOWLS))
235         $(call rm,$(_IMPORTS))
236         $(call rm,$(_SYMBOLS))
237
238 realclean: cleantarget
239         $(call rmr,$(OBJ))
240
241 distclean:
242         $(_MAKE) -f $(_CF_DIR)Cleanfile distclean distclean_all_subdirs
243
244 Makefile: ;
245 $(_CF_DIR)crossplatform.mk: ;
246 $(_CF_DIR)default.cf: ;