+.PHONY: all objdir cleantarget clean realclean distclean
+
+# CORE VARIABLES
+
+MODULE := EcereAudio
+VERSION := 0.44
+CONFIG := release
+ifndef COMPILER
+COMPILER := default
+endif
+
+TARGET_TYPE = sharedlib
+
+# FLAGS
+
+ECFLAGS =
+ifndef DEBIAN_PACKAGE
+CFLAGS =
+LDFLAGS =
+endif
+PRJ_CFLAGS =
+CECFLAGS =
+OFLAGS =
+LIBS =
+
+ifdef DEBUG
+NOSTRIP := y
+endif
+
+CONSOLE = -mwindows
+
+# INCLUDES
+
+_CF_DIR = ../../
+
+include $(_CF_DIR)crossplatform.mk
+include $(_CF_DIR)default.cf
+
+# POST-INCLUDES VARIABLES
+
+OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
+
+RES =
+
+TARGET = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO)$(VER)
+
+_ECSOURCES = \
+ alsa.ec \
+ audio.ec \
+ dsound.ec \
+ mixer.ec
+
+ECSOURCES = $(call shwspace,$(_ECSOURCES))
+
+_COBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES))))
+
+_SYMBOLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES))))
+
+_IMPORTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES))))
+
+_ECOBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES))))
+
+_BOWLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES))))
+
+COBJECTS = $(call shwspace,$(_COBJECTS))
+
+SYMBOLS = $(call shwspace,$(_SYMBOLS))
+
+IMPORTS = $(call shwspace,$(_IMPORTS))
+
+ECOBJECTS = $(call shwspace,$(_ECOBJECTS))
+
+BOWLS = $(call shwspace,$(_BOWLS))
+
+OBJECTS = $(ECOBJECTS) $(OBJ)$(MODULE).main$(O)
+
+SOURCES = $(ECSOURCES)
+
+RESOURCES =
+
+LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
+
+ifndef STATIC_LIBRARY_TARGET
+LIBS += \
+ $(call _L,ecere)
+endif
+
+PRJ_CFLAGS += \
+ $(if $(WINDOWS_TARGET), \
+ -I../../deps/DirectX-9.0/include,) \
+ $(if $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -Wall -DREPOSITORY_VERSION="\"$(REPOSITORY_VER)\"" \
+ -I../../deps/DirectX-9.0/include
+
+ECFLAGS += -module $(MODULE)
+# PLATFORM-SPECIFIC OPTIONS
+
+ifdef WINDOWS_TARGET
+
+ifndef STATIC_LIBRARY_TARGET
+LIBS += \
+ $(call _L,winmm) \
+ $(call _L,dsound) \
+ $(call _L,dxguid) \
+ $(call _L,uuid)
+endif
+
+else
+ifdef LINUX_TARGET
+
+ifndef STATIC_LIBRARY_TARGET
+LIBS += \
+ $(call _L,asound)
+endif
+
+endif
+endif
+
+CECFLAGS += -cpp $(_CPP)
+
+ifndef STATIC_LIBRARY_TARGET
+OFLAGS += \
+ -L../../obj/$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/bin \
+ -L../../obj/$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/lib
+endif
+
+# TARGETS
+
+all: objdir $(TARGET)
+
+objdir:
+ $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
+ $(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.)),)
+ $(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),))
+
+$(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
+ @$(call rmq,$(OBJ)symbols.lst)
+ @$(call touch,$(OBJ)symbols.lst)
+ @$(call echo,$(SYMBOLS)) >> $(OBJ)symbols.lst
+ @$(call echo,$(IMPORTS)) >> $(OBJ)symbols.lst
+ $(ECS) $(ARCH_FLAGS) $(ECSLIBOPT) @$(OBJ)symbols.lst -symbols obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(call quote_path,$@)
+
+$(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
+ $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
+ $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(call quote_path,$@) -symbols $(OBJ)
+
+$(SYMBOLS): | objdir
+$(OBJECTS): | objdir
+$(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
+ @$(call rmq,$(OBJ)objects.lst)
+ @$(call touch,$(OBJ)objects.lst)
+ @$(call echo,$(OBJ)$(MODULE).main$(O)) >> $(OBJ)objects.lst
+ @$(call echo,$(ECOBJECTS)) >> $(OBJ)objects.lst
+ifndef STATIC_LIBRARY_TARGET
+ $(CC) $(OFLAGS) @$(OBJ)objects.lst $(LIBS) -o $(TARGET) $(INSTALLNAME)
+ifndef NOSTRIP
+ $(STRIP) $(STRIPOPT) $(TARGET)
+endif
+else
+ $(AR) rcs $(TARGET) @$(OBJ)objects.lst $(LIBS)
+endif
+ifdef SHARED_LIBRARY_TARGET
+ifdef LINUX_TARGET
+ifdef LINUX_HOST
+ $(if $(basename $(VER)),ln -sf $(LP)$(MODULE)$(SO)$(VER) $(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER)),)
+ $(if $(VER),ln -sf $(LP)$(MODULE)$(SO)$(VER) $(OBJ)$(LP)$(MODULE)$(SO),)
+endif
+endif
+endif
+
+# SYMBOL RULES
+
+$(OBJ)alsa.sym: alsa.ec
+ $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,alsa.ec) -o $(call quote_path,$@)
+
+$(OBJ)audio.sym: audio.ec
+ $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,audio.ec) -o $(call quote_path,$@)
+
+$(OBJ)dsound.sym: dsound.ec
+ $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,dsound.ec) -o $(call quote_path,$@)
+
+$(OBJ)mixer.sym: mixer.ec
+ $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,mixer.ec) -o $(call quote_path,$@)
+
+# C OBJECT RULES
+
+$(OBJ)alsa.c: alsa.ec $(OBJ)alsa.sym | $(SYMBOLS)
+ $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,alsa.ec) -o $(call quote_path,$@) -symbols $(OBJ)
+
+$(OBJ)audio.c: audio.ec $(OBJ)audio.sym | $(SYMBOLS)
+ $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,audio.ec) -o $(call quote_path,$@) -symbols $(OBJ)
+
+$(OBJ)dsound.c: dsound.ec $(OBJ)dsound.sym | $(SYMBOLS)
+ $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,dsound.ec) -o $(call quote_path,$@) -symbols $(OBJ)
+
+$(OBJ)mixer.c: mixer.ec $(OBJ)mixer.sym | $(SYMBOLS)
+ $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,mixer.ec) -o $(call quote_path,$@) -symbols $(OBJ)
+
+# OBJECT RULES
+
+$(OBJ)alsa.o: $(OBJ)alsa.c
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)alsa.c) -o $(call quote_path,$@)
+
+$(OBJ)audio.o: $(OBJ)audio.c
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)audio.c) -o $(call quote_path,$@)
+
+$(OBJ)dsound.o: $(OBJ)dsound.c
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)dsound.c) -o $(call quote_path,$@)
+
+$(OBJ)mixer.o: $(OBJ)mixer.c
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,$(OBJ)mixer.c) -o $(call quote_path,$@)
+
+$(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(call quote_path,$@)
+
+cleantarget: objdir
+ $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
+ $(call rmq,$(OBJ)symbols.lst)
+ $(call rmq,$(OBJ)objects.lst)
+ $(call rmq,$(TARGET))
+ifdef SHARED_LIBRARY_TARGET
+ifdef LINUX_TARGET
+ifdef LINUX_HOST
+ $(call rmq,$(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER)))
+ $(call rmq,$(OBJ)$(LP)$(MODULE)$(SO))
+endif
+endif
+endif
+
+clean: cleantarget
+ $(call rmq,$(_OBJECTS))
+ $(call rmq,$(_ECOBJECTS))
+ $(call rmq,$(_COBJECTS))
+ $(call rmq,$(_BOWLS))
+ $(call rmq,$(_IMPORTS))
+ $(call rmq,$(_SYMBOLS))
+
+realclean: cleantarget
+ $(call rmrq,$(OBJ))
+
+distclean: cleantarget
+ $(call rmrq,obj/)