.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) ifdef LINUX_TARGET SONAME = -Wl,-soname,$(LP)EcereAudio$(SO).0 endif _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 $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -Wall -DREPOSITORY_VERSION="\"$(REPOSITORY_VER)\"" 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 mkdir,$(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 rm,$(OBJ)symbols.lst) @$(call touch,$(OBJ)symbols.lst) $(call addtolistfile,$(SYMBOLS),$(OBJ)symbols.lst) $(call addtolistfile,$(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 rm,$(OBJ)objects.lst) @$(call touch,$(OBJ)objects.lst) $(call addtolistfile,$(OBJ)$(MODULE).main$(O),$(OBJ)objects.lst) $(call addtolistfile,$(ECOBJECTS),$(OBJ)objects.lst) ifndef STATIC_LIBRARY_TARGET $(CC) $(OFLAGS) @$(OBJ)objects.lst $(LIBS) -o $(TARGET) $(INSTALLNAME) $(SONAME) 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 rm,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S)) $(call rm,$(OBJ)symbols.lst) $(call rm,$(OBJ)objects.lst) $(call rm,$(TARGET)) ifdef SHARED_LIBRARY_TARGET ifdef LINUX_TARGET ifdef LINUX_HOST $(call rm,$(OBJ)$(LP)$(MODULE)$(SO)$(basename $(VER))) $(call rm,$(OBJ)$(LP)$(MODULE)$(SO)) endif endif endif clean: cleantarget $(call rm,$(_OBJECTS)) $(call rm,$(_ECOBJECTS)) $(call rm,$(_COBJECTS)) $(call rm,$(_BOWLS)) $(call rm,$(_IMPORTS)) $(call rm,$(_SYMBOLS)) realclean: cleantarget $(call rmr,$(OBJ)) distclean: $(_MAKE) -f $(_CF_DIR)Cleanfile distclean distclean_all_subdirs Makefile: ; $(_CF_DIR)crossplatform.mk: ; $(_CF_DIR)default.cf: ;