# Define rules and targets for Yoink.
#
-OBJS_$(d) := \
- $(d)/Animation.o \
- $(d)/Character.o \
- $(d)/GameLayer.o \
- $(d)/Heroine.o \
- $(d)/Hud.o \
- $(d)/Main.o \
- $(d)/Scene.o \
- $(d)/TilemapFont.o \
- $(d)/TitleLayer.o \
- $(d)/Typesetter.o \
- $(d)/version.o \
- $(_END_)
-
-ifeq ($(HOST),win32)
-OBJS_$(d) += $(d)/yoink.o
-endif
+OBJECTS_$(d) := $(patsubst %.c,%.o,$(wildcard $(d)/*.c)) \
+ $(patsubst %.cc,%.o,$(wildcard $(d)/*.cc))
+D_FILES_$(d) := $(OBJECTS_$(d):%=%.d)
-TGTS_$(d) := $(d)/yoink$(EXEEXT)
-DEPS_$(d) := $(OBJS_$(d):%=%.d)
+ifeq ($(PLATFORM),win32)
+OBJECTS_$(d) += $(d)/yoink.o
+endif
-TGT_BIN := $(TGT_BIN) $(TGTS_$(d))
-CLEAN := $(CLEAN) $(OBJS_$(d)) $(DEPS_$(d)) $(TGTS_$(d))
+PROGRAM_$(d) := $(call add_exe_suffix,$(d)/yoink)
+BINARIES := $(BINARIES) $(PROGRAM_$(d))
+CLEAN := $(CLEAN) $(OBJECTS_$(d)) $(D_FILES_$(d)) $(PROGRAM_$(d))
-$(OBJS_$(d)): CF_TGT := -I$(d)
-$(OBJS_$(d)): $(d)/rules.mk
+$(OBJECTS_$(d)): CF_TGT := -I$(d)
+$(OBJECTS_$(d)): $(d)/rules.mk
-$(TGTS_$(d)): $(OBJS_$(d)) $(d)/moof/libmoof.a $(d)/stlplus/libstlplus.a
+$(PROGRAM_$(d)): $(OBJECTS_$(d)) $(d)/moof/libmoof.a $(d)/stlplus/libstlplus.a
$(DO_LDX)
YOINK_ENVIRONMENT = YOINK_DATADIR="./data"
.PHONY: run
-run: $(TGTS_$(d))
+run: $(PROGRAM_$(d))
@$(YOINK_ENVIRONMENT) $< $(YOINK_OPTS)
.PHONY: debug
-debug: $(TGTS_$(d))
+debug: $(PROGRAM_$(d))
@$(YOINK_ENVIRONMENT) gdb $<
-#######################
--include $(DEPS_$(d))
+########################
+-include $(D_FILES_$(d))
d := $(dirstack_$(sp))
sp := $(basename $(sp))
-#######################
+########################