1 .PHONY: all objdir cleantarget clean realclean distclean
12 TARGET_TYPE = sharedlib
36 include $(_CF_DIR)crossplatform.mk
37 include $(_CF_DIR)default.cf
39 # POST-INCLUDES VARIABLES
41 OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
45 TARGET = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO)$(VER)
48 SONAME = -Wl,-soname,$(LP)EcereAudio$(SO).0
57 ECSOURCES = $(call shwspace,$(_ECSOURCES))
59 _COBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES))))
61 _SYMBOLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES))))
63 _IMPORTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES))))
65 _ECOBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES))))
67 _BOWLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES))))
69 COBJECTS = $(call shwspace,$(_COBJECTS))
71 SYMBOLS = $(call shwspace,$(_SYMBOLS))
73 IMPORTS = $(call shwspace,$(_IMPORTS))
75 ECOBJECTS = $(call shwspace,$(_ECOBJECTS))
77 BOWLS = $(call shwspace,$(_BOWLS))
79 OBJECTS = $(ECOBJECTS) $(OBJ)$(MODULE).main$(O)
81 SOURCES = $(ECSOURCES)
85 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
87 ifndef STATIC_LIBRARY_TARGET
93 $(if $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -Wall -DREPOSITORY_VERSION="\"$(REPOSITORY_VER)\""
95 ECFLAGS += -module $(MODULE)
96 # PLATFORM-SPECIFIC OPTIONS
100 ifndef STATIC_LIBRARY_TARGET
111 ifndef STATIC_LIBRARY_TARGET
119 CECFLAGS += -cpp $(_CPP)
121 ifndef STATIC_LIBRARY_TARGET
123 -L../obj/$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/bin \
124 -L../obj/$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/lib
129 all: objdir $(TARGET)
132 $(if $(wildcard $(OBJ)),,$(call mkdirq,$(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),))
136 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
137 @$(call rmq,$(OBJ)symbols.lst)
138 @$(call touch,$(OBJ)symbols.lst)
139 @$(call echo,$(SYMBOLS)) >> $(OBJ)symbols.lst
140 @$(call echo,$(IMPORTS)) >> $(OBJ)symbols.lst
141 $(ECS) $(ARCH_FLAGS) $(ECSLIBOPT) @$(OBJ)symbols.lst -symbols obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(call quote_path,$@)
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)
149 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
150 @$(call rmq,$(OBJ)objects.lst)
151 @$(call touch,$(OBJ)objects.lst)
152 @$(call echo,$(OBJ)$(MODULE).main$(O)) >> $(OBJ)objects.lst
153 @$(call echo,$(ECOBJECTS)) >> $(OBJ)objects.lst
154 ifndef STATIC_LIBRARY_TARGET
155 $(CC) $(OFLAGS) @$(OBJ)objects.lst $(LIBS) -o $(TARGET) $(INSTALLNAME) $(SONAME)
157 $(STRIP) $(STRIPOPT) $(TARGET)
160 $(AR) rcs $(TARGET) @$(OBJ)objects.lst $(LIBS)
162 ifdef SHARED_LIBRARY_TARGET
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),)
173 $(OBJ)alsa.sym: alsa.ec
174 $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,alsa.ec) -o $(call quote_path,$@)
176 $(OBJ)audio.sym: audio.ec
177 $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,audio.ec) -o $(call quote_path,$@)
179 $(OBJ)dsound.sym: dsound.ec
180 $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,dsound.ec) -o $(call quote_path,$@)
182 $(OBJ)mixer.sym: mixer.ec
183 $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,mixer.ec) -o $(call quote_path,$@)
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)
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)
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)
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)
201 $(OBJ)alsa.o: $(OBJ)alsa.c
202 $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)alsa.c) -o $(call quote_path,$@)
204 $(OBJ)audio.o: $(OBJ)audio.c
205 $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)audio.c) -o $(call quote_path,$@)
207 $(OBJ)dsound.o: $(OBJ)dsound.c
208 $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)dsound.c) -o $(call quote_path,$@)
210 $(OBJ)mixer.o: $(OBJ)mixer.c
211 $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)mixer.c) -o $(call quote_path,$@)
213 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
214 $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(call quote_path,$@)
217 $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
218 $(call rmq,$(OBJ)symbols.lst)
219 $(call rmq,$(OBJ)objects.lst)
220 $(call rmq,$(TARGET))
221 ifdef SHARED_LIBRARY_TARGET
224 $(call rmq,$(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER)))
225 $(call rmq,$(OBJ)$(LP)$(MODULE)$(SO))
231 $(call rmq,$(_OBJECTS))
232 $(call rmq,$(_ECOBJECTS))
233 $(call rmq,$(_COBJECTS))
234 $(call rmq,$(_BOWLS))
235 $(call rmq,$(_IMPORTS))
236 $(call rmq,$(_SYMBOLS))
238 realclean: cleantarget
241 distclean: cleantarget