TYPE=lx64

TARGET=minimalist-escape
ZIPFILE=mjau-ld11-$(TARGET)

CC_lx64=gcc
CFLAGS_lx64=-W -Wall -O2 `sdl-config --cflags`
LDFLAGS_lx64=`sdl-config --libs` -lSDL_image -lSDL_mixer -llua
RUN_lx64=./
EXT_lx64=

CC_debug=gcc
CFLAGS_debug=-W -Wall -ggdb `sdl-config --cflags`
LDFLAGS_debug=`sdl-config --libs` -lSDL_image -lSDL_mixer -llua
RUN_debug=gdb ./
EXT_debug=

CC_win32=i486-mingw32-gcc
CFLAGS_win32=-W -Wall -O2 `i486-mingw32-sdl-config --cflags` -Iext/lua-5.1.3.win32/src
LDFLAGS_win32=`i486-mingw32-sdl-config --libs` -lSDL_image -lSDL_mixer -Lext/lua-5.1.3.win32/src -llua51
RUN_win32="swine "
EXT_win32=.exe

CC=$(CC_$(TYPE))
CFLAGS=$(CFLAGS_$(TYPE))
LDFLAGS=$(LDFLAGS_$(TYPE))
RUN=$(RUN_$(TYPE))
EXT=$(EXT_$(TYPE))

SRCDIR=src
OBJDIR=build/$(TYPE)
RESDIR=res
RESSRCDIR=res-src

SOURCES=$(wildcard $(SRCDIR)/*.c)
OBJECTS=$(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
HEADS=$(wildcard $(SRCDIR)/*.h)
SRCRESOURCES=$(wildcard $(RESSRCDIR)/*)
RESOURCES=$(SRCRESOURCES:$(RESSRCDIR)/%.wav=$(RESDIR)/%.ogg)

$(TARGET).$(TYPE)$(EXT): $(OBJECTS) $(RESOURCES)
	$(CC) $(OBJECTS) $(LDFLAGS) -o $@

$(OBJDIR)/%.o: $(SRCDIR)/%.c $(HEADS) $(OBJDIR)/.keep
	$(CC) $(CFLAGS) -o $@ -c $<

$(OBJDIR)/.keep:
	mkdir -p $(OBJDIR)
	touch $(OBJDIR)/.keep

$(RESDIR)/%.ogg: $(RESSRCDIR)/%.wav
	oggenc -o $@ $<

test: $(TARGET).$(TYPE)$(EXT)
	$(RUN)$(TARGET).$(TYPE)$(EXT)

ci:
	svn ci
	svn update

zip:
	make TYPE=win32
	rm -rf $(ZIPFILE) $(ZIPFILE).zip
	mkdir $(ZIPFILE)
	cp minimalist-escape.win32.exe $(ZIPFILE)/minimalist-escape.exe
	cp -r src res Makefile *.txt *.dll $(ZIPFILE)
	find $(ZIPFILE) -name .svn | xargs rm -rf
	zip -r9 $(ZIPFILE).zip $(ZIPFILE)
	rm -rf $(ZIPFILE)

.PHONY: ci test zip
