
DMD = dmd
PHOBOS = /opt/dmd/src/phobos
DUI = /opt/dmd/src/dui

DUI_LIBS = -L/opt/dmd/src/dui -ldui

SRCDIR = .
OBJDIR = ../obj
INCLUDES = -I$(PHOBOS):$(DUI):$(SRCDIR)
NC_INCLUDES = -I$(PHOBOS):$(SRCDIR)

DFLAGS = -inline -release -O

VERSION = -version=stdout -version=ncurses -version=dui

SRC = $(SRCDIR)/isix.d     \
      $(SRCDIR)/imports.d  \
      $(SRCDIR)/stdout.d   \
      $(SRCDIR)/ncurses.d  \
      $(SRCDIR)/args.d     \
      $(SRCDIR)/cell.d     \
      $(SRCDIR)/declares.d \
      $(SRCDIR)/rules.d    \
      $(SRCDIR)/dui.d

NC_SRC = $(SRCDIR)/isix.d  \
      $(SRCDIR)/imports.d  \
      $(SRCDIR)/stdout.d   \
      $(SRCDIR)/ncurses.d  \
      $(SRCDIR)/args.d     \
      $(SRCDIR)/cell.d     \
      $(SRCDIR)/declares.d \
      $(SRCDIR)/rules.d

STD_SRC = $(SRCDIR)/isix.d \
      $(SRCDIR)/imports.d  \
      $(SRCDIR)/stdout.d   \
      $(SRCDIR)/args.d     \
      $(SRCDIR)/cell.d     \
      $(SRCDIR)/declares.d \
      $(SRCDIR)/rules.d

ARCHIVENAME = isix-`date +%F-%HH%Mm`.tbz2

all: clean
	mkdir -p obj
	cd src ; $(DMD) $(SRC) -c $(DFLAGS) $(INCLUDES) $(VERSION) -od$(OBJDIR) -op
	gcc obj/*.o -o isix  \
	-lphobos -lpthread -lm \
	-lncurses \
	-lgconf-2 $(DUI_LIBS) \
	`pkg-config --libs gtk+-2.0` \
	`pkg-config --libs gthread-2.0` \
	-lstdc++ -DGTK

ncurses: clean
	mkdir -p obj
	cd src ; $(DMD) $(NC_SRC) -c $(DFLAGS) $(NC_INCLUDES) -version=ncurses -version=stdout -od$(OBJDIR) -op
	gcc obj/*.o -o isix \
	-lphobos -lpthread -lm \
	-lncurses

stdout: clean
	mkdir -p obj
	cd src ; $(DMD) $(STD_SRC) -c $(DFLAGS) $(NC_INCLUDES) -version=stdout -od$(OBJDIR) -op
	gcc obj/*.o -o isix \
	-lphobos -lpthread -lm

archive:
	tar jcf $(ARCHIVENAME) src
	mv $(ARCHIVENAME) versions
	
clean:
	rm -rf obj/*
	rmdir obj
