-.PHONY: all clean realclean distclean emptyoutput prepinstall actualinstall install copyonlyinstall uninstall troubleshoot outputdirs bootstrap deps ecere ecerecom ecerevanilla ear compiler prepbinaries epj2make ide documentor eda prepcodeguard codeguard fixprecompile cleantarget pots installer regenbootstrap updatebootstrap update_ecere update_libec update_ecp update_ecc update_ecs
+.PHONY: all clean realclean distclean emptyoutput prepinstall actualinstall install copyonlyinstall uninstall troubleshoot outputdirs bootstrap deps ecere ecerecom ecerevanilla ear compiler prepbinaries epj2make ide documentor eda prepcodeguard codeguard fixprecompile cleantarget pots installer regenbootstrap updatebootstrap update_ecere update_libec update_ecp update_ecc update_ecs ecereaudio
ifneq "$V" "1"
.SILENT:
endif
LIBVER := .0.44
+ifneq "$ECERE_AUDIO" "n"
+ifdef WINDOWS_TARGET
+ECERE_AUDIO := y
+endif
+
+ifdef LINUX_TARGET
+ECERE_AUDIO := y
+endif
+endif
+
ifdef WINDOWS_HOST
HOST_SOV := $(HOST_SO)
else
XOBJBINDIR := $(OBJDIR)$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/bin/
XOBJLIBDIR := $(OBJDIR)$(HOST_PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/lib/
-all: prepbinaries ide epj2make documentor eda codeguard
+all: prepbinaries ide epj2make documentor eda codeguard ecereaudio
@$(call echo,The Ecere SDK is fully built.)
outputdirs:
@$(call echo,Building epj2make...)
cd epj2make && $(MAKE)
+ecereaudio: prepbinaries
+ifdef ECERE_AUDIO
+ @$(call echo,Building EcereAudio...)
+ cd extras/audio && $(MAKE)
+endif
+
ide: prepbinaries
@$(call echo,Building IDE...)
cd ide && $(MAKE)
ifdef EDASQLiteCipher
$(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO))
endif
+ifdef ECERE_AUDIO
+ $(call rmq,$(SODESTDIR)$(LP)EcereAudio$(SO))
+endif
ifdef LINUX_TARGET
$(call rmq,$(SODESTDIR)$(LP)ecere$(SO).0)
$(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SO).0)
ifdef EDASQLiteCipher
$(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO).0)
endif
+ifdef ECERE_AUDIO
+ $(call rmq,$(SODESTDIR)$(LP)EcereAudio$(SO).0)
+endif
$(call rmq,$(SODESTDIR)$(LP)ecere$(SOV))
$(call rmq,$(SODESTDIR)$(LP)ecereCOM$(SOV))
$(call rmq,$(SODESTDIR)$(LP)ec$(SOV))
ifdef EDASQLiteCipher
$(call rmq,$(SODESTDIR)$(LP)EDASQLiteCipher$(SOV))
endif
+ifdef ECERE_AUDIO
+ $(call rmq,$(SODESTDIR)$(LP)EcereAudio$(SOV))
+endif
endif
$(call rmq,$(OBJBINDIR)ear$(E))
$(call rmq,$(OBJBINDIR)ecc$(E))
$(call rmq,$(OBJBINDIR)epj2make$(E))
$(call rmq,$(OBJBINDIR)ide$(E))
$(call rmq,$(OBJBINDIR)documentor$(E))
-ifdef EDASQLiteCipher
+ifdef CodeGuard
$(call rmq,$(OBJBINDIR)CodeGuard$(E))
endif
eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV) \
eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV)
+ifdef ECERE_AUDIO
+BINARIES += extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV)
+endif
+
ifdef CodeGuard
BINARIES += codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E)
endif
$(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJBINDIR))
$(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJBINDIR))
$(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJBINDIR))
+ifdef ECERE_AUDIO
+ $(call cpq,extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJBINDIR))
+endif
ifdef EDASQLiteCipher
$(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJBINDIR))
endif
$(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SOV),$(OBJLIBDIR))
$(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SOV),$(OBJLIBDIR))
$(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SOV),$(OBJLIBDIR))
+ifdef ECERE_AUDIO
+ $(call cpq,extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SOV),$(OBJLIBDIR))
+endif
ifdef EDASQLiteCipher
$(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SOV),$(OBJLIBDIR))
endif
$(call cpq,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
$(call cpq,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
$(call cpq,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
+ifdef ECERE_AUDIO
+ $(call cpq,extras/audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
+endif
ifdef EDASQLiteCipher
$(call cpq,eda/drivers/sqliteCipher/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLiteCipher$(SO),$(OBJLIBDIR))
endif
ifdef EDASQLiteCipher
$(call cpq,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
endif
+ifdef ECERE_AUDIO
+ $(call cpq,$(OBJBINDIR)$(LP)EcereAudio$(SO),"$(DESTLIBDIR)/")
+endif
$(call cpq,$(OBJBINDIR)ide$(E),"$(BINDIR)/")
$(call cpq,$(OBJBINDIR)ear$(E),"$(BINDIR)/")
$(call cpq,$(OBJBINDIR)ecc$(E),"$(BINDIR)/")
ifdef EDASQLiteCipher
install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
endif
+ifdef ECERE_AUDIO
+ install $(OBJBINDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/
+endif
install $(OBJBINDIR)ide$(E) $(BINDIR)/
install $(OBJBINDIR)ear$(E) $(BINDIR)/
install $(OBJBINDIR)ecc$(E) $(BINDIR)/
ifdef EDASQLiteCipher
install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)
endif
+ifdef ECERE_AUDIO
+ install $(INSTALL_FLAGS) $(OBJBINDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SOV)
+endif
ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO).0
ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO).0
ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO).0
ifdef EDASQLiteCipher
ln -sf $(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SO).0
endif
+ifdef ECERE_AUDIO
+ ln -sf $(LP)EcereAudio$(SOV) $(DESTLIBDIR)/ec/$(LP)EcereAudio$(SO).0
+endif
ln -sf $(LP)ecere$(SOV) $(DESTLIBDIR)/$(LP)ecere$(SO)
ln -sf $(LP)ecereCOM$(SOV) $(DESTLIBDIR)/$(LP)ecereCOM$(SO)
ln -sf $(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SO)
install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)
endif
endif
+ifdef ECERE_AUDIO
+ install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EcereAudio$(SO) $(DESTLIBDIR)/$(LP)EcereAudio$(SO)
+endif
install $(INSTALL_FLAGS) $(OBJBINDIR)ide$(E) $(BINDIR)/ide$(E)
install $(INSTALL_FLAGS) $(OBJBINDIR)ear$(E) $(BINDIR)/ear$(E)
install $(INSTALL_FLAGS) $(OBJBINDIR)ecc$(E) $(BINDIR)/ecc$(E)
ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libeda0/
mkdir -p $(DESTDIR)$(prefix)/share/doc/libedasqlite0
ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libedasqlite0/
+ mkdir -p $(DESTDIR)$(prefix)/share/doc/libecereaudio0
+ ln -sf ../libecere0/changelog.gz $(DESTDIR)$(prefix)/share/doc/libecereaudio/
endif
endif
endif
ifdef EDASQLiteCipher
$(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
endif
+ifdef ECERE_AUDIO
+ $(call rmq,"$(DESTLIBDIR)/$(LP)EcereAudio$(SO)")
+endif
$(call rmq,"$(BINDIR)/ide$(E)")
$(call rmq,"$(BINDIR)/ear$(E)")
$(call rmq,"$(BINDIR)/ecc$(E)")
ifdef EDASQLiteCipher
$(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO).0")
endif
+ $(call rmq,"$(DESTLIBDIR)/$(LP)EcereaAudio$(SO).0")
$(call rmq,"$(DESTLIBDIR)/$(LP)ecere$(SOV)")
$(call rmq,"$(DESTLIBDIR)/$(LP)ecereCOM$(SOV)")
$(call rmq,"$(DESTLIBDIR)/$(LP)ec$(SOV)")
ifdef EDASQLiteCipher
$(call rmq,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SOV)")
endif
+ifdef ECERE_AUDIO
+ $(call rmq,"$(DESTLIBDIR)/$(LP)EcereAudio$(SOV)")
+endif
$(call rmq,"$(DESTDIR)$(prefix)/share/pixmaps/ecere.png")
$(call rmq,"$(DESTDIR)$(prefix)/share/applications/ecere.desktop")
endif
{
"Version" : 0.2,
"ModuleName" : "EcereAudio",
+ "ModuleVersion" : "0.44",
"Options" : {
"Warnings" : "All",
"TargetType" : "SharedLibrary",
--- /dev/null
+.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/)