PROJDIR := ../../.. SOURCEDIR := $(PROJDIR)/src BUILDDIR := $(PROJDIR)/build/dos16 TARGET = $(PROJDIR)/dist/dos16/labyrin.exe DIRS = common common/spc common/wall platforms/dos data_conversion SOURCEDIRS = $(foreach dir, $(DIRS), $(addprefix $(SOURCEDIR)/, $(dir))) TARGETDIRS = $(foreach dir, $(DIRS), $(addprefix $(BUILDDIR)/, $(dir))) INCLUDES = $(foreach dir, $(SOURCEDIRS), $(addprefix -I, $(dir))) VPATH = $(SOURCEDIRS) SOURCES = $(foreach dir,$(SOURCEDIRS),$(wildcard $(dir)/*.c)) OBJS := $(subst $(SOURCEDIR),$(BUILDDIR),$(SOURCES:.c=.o)) DEPS = $(OBJS:.o=.d) CC = owcc CFLAGS = -g -Wall -Werror -bDOS -march=i86 -D LARGER_SYSTEM define generateRules $(1)/%.o: %.c @echo -n "Compiling " @echo $$@... | cut -d/ -f6- @$(CC) -c $$(INCLUDES) $(CFLAGS) -o $$@ $$< -MMD @rm -f `basename $$@ .o`.d # FIXME Tell owcc not to generate deps files. endef .PHONY: all clean distclean directories clean-plat distclean-plat tgz all: @make --no-print-directory directories dos16 dos16: @rm -rf $(PROJDIR)/dist/dos16 @echo @echo Building for DOS 16-bit real mode... @make --no-print-directory directories $(TARGET) @echo Copying master data... @cd $(PROJDIR)/master_data && cp -rf * ../dist/dos16 $(TARGET): $(OBJS) @echo Linking DOS 16-bit real mode... @wcl -g -l=dos -fe=labyrin $(OBJS) | tail -n +15 @mv -f labyrin.exe $(TARGET) -include $(DEPS) $(foreach targetdir, $(TARGETDIRS), $(eval $(call generateRules, $(targetdir)))) directories: @mkdir -p $(TARGETDIRS) @mkdir -p `dirname $(TARGET)` clean: @make --no-print-directory ARCH=i386 clean-plat @make --no-print-directory ARCH=x86-64 clean-plat distclean: @make --no-print-directory ARCH=i386 distclean-plat @make --no-print-directory ARCH=x86-64 distclean-plat clean-plat: @rm -rf $(BUILDDIR) distclean-plat: clean-plat @rm -rf `dirname $(TARGET)` tgz: all @echo @echo -n "Creating distribution archives: " @cd $(PROJDIR)/dist && \ REV=`svn info http://svn.ocfco.net/public/DND/ -r 'HEAD' | grep "Last Changed Rev" | egrep -o "[0-9]+"` && \ for i in dos16 ; do \ echo -n "$$i "; \ zip --quiet -r Labyrinth-unstable$$REV-$$i.zip $$i; \ done; \ echo