src = .

CROSS =
CC := $(CROSS)gcc -std=gnu89
CFLAGS = -Os -Wall
CPPFLAGS =
LDFLAGS =
LIBS =
INSTALL = install
WINDRES := $(CROSS)windres
ICON = $(src)/akf.ico

prefix = /usr/local
exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
datarootdir = $(prefix)/share
datadir = $(datarootdir)
mandir = $(datarootdir)/man
man6dir = $(mandir)/man6
mandir_de = $(mandir)/de
man6dir_de = $(mandir_de)/man6

all: row4t row4-web.cgi

coverage:
	$(MAKE) CC="gcc -std=gnu89 --coverage" CFLAGS="-O0 -g"

arm:
	$(MAKE) CROSS=arm-linux-gnueabihf- LDFLAGS="-s"

windows: windows32

windows32:
	$(MAKE) row4t.exe row4-web.exe CROSS=i686-w64-mingw32- \
	  LIBS="icon.o" LDFLAGS="-mconsole -s"

windows64:
	$(MAKE) row4t.exe row4-web.exe CROSS=x86_64-w64-mingw32- \
	  LIBS="icon.o" LDFLAGS="-mconsole -s"

dos:
	$(MAKE) row4t.com CC=bcc CFLAGS="-Md" LDFLAGS="-Md -i"


row4t row4t.exe: row4.o logic.o textmode.o messages.o $(LIBS)
	$(CC) row4.o logic.o textmode.o messages.o $(LIBS) $(LDFLAGS) -o $@

row4-web.cgi row4-web.exe: cgi.o logic.o $(LIBS)
	$(CC) cgi.o logic.o $(LIBS) $(LDFLAGS) -o $@

.c.o:
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@

row4.o logic.o textmode.o messages.o cgi.o: $(src)/row4.h

icon.o: $(ICON)
	echo "AppIcon ICON \"$(ICON)\"" >icon.rc
	$(WINDRES) -i icon.rc -o $@


# DOS

row4t.com: row4.o logic.o textmode.o messages.o bcc-syst.o bccmouse.o \
	   bccenv.o $(LIBS)
	$(CC) row4.o logic.o textmode.o messages.o bcc-syst.o bccmouse.o \
	  bccenv.o $(LIBS) $(LDFLAGS) -o $@

bcc-syst.o bccmouse.o: $(src)/row4.h $(src)/bcc-syst.h


install: install-strip

install-strip: row4t
	test -d $(DESTDIR)$(bindir) || $(INSTALL) -d $(DESTDIR)$(bindir)
	test -d $(DESTDIR)$(man6dir) || $(INSTALL) -d $(DESTDIR)$(man6dir)
	test -d $(DESTDIR)$(man6dir_de) || $(INSTALL) -d $(DESTDIR)$(man6dir_de)
	$(INSTALL) -c -s -m 0755 row4t $(DESTDIR)$(bindir)
	$(INSTALL) -c -m 0644 row4t-en.man $(DESTDIR)$(man6dir)/row4t.6
	$(INSTALL) -c -m 0644 row4t-de.man $(DESTDIR)$(man6dir_de)/row4t.6

clean:
	-$(RM) $(src)/*~
	-$(RM) *.[oO]
	-$(RM) *.gcda *.gcno *.gcov
	-$(RM) icon.rc
	-$(RM) row4? row4-web.cgi *.com *.exe
	-$(RM) ROW4 ROW4? ROW4-WEB.CGI *.COM *.EXE

distclean: clean
	-$(RM) $(src)/../linux/amd64/row4? $(src)/../linux/amd64/row4-web.cgi
	-$(RM) $(src)/../linux/ia32/row4? $(src)/../linux/ia32/row4-web.cgi
	-$(RM) $(src)/../dos/row4?.com
	-$(RM) $(src)/../windows/amd64/row4*.exe
	-$(RM) $(src)/../windows/ia32/row4*.exe

dist:
	$(MAKE) dos
	mv row4t.com $(src)/../dos/
	-$(RM) *.o
	$(MAKE) windows32
	mv row4t.exe row4-web.exe $(src)/../windows/ia32/
	-$(RM) *.o
	$(MAKE) windows64
	mv row4t.exe row4-web.exe $(src)/../windows/amd64/
	-$(RM) *.o icon.rc
	$(MAKE) CC="diet -Os gcc -m32" LDFLAGS="-static"
	mv row4t row4-web.cgi $(src)/../linux/ia32/
	-$(RM) *.o
	$(MAKE) CC="diet -Os gcc -m64" LDFLAGS="-static"
	mv row4t row4-web.cgi $(src)/../linux/amd64/
	-$(RM) *.o

	cd ../.. && $(RM) row4.zip && zip -r -9 row4.zip row4 \
	    -x "row4/.git/*" row4/.gitignore "*.[oOaA]" "*~" icon.rc

freedos: clean dos
	-$(RM) *.o
	-$(RM) -r /tmp/fdos
	mkdir /tmp/fdos
	mkdir /tmp/fdos/APPINFO
	mkdir /tmp/fdos/GAMES
	mkdir /tmp/fdos/GAMES/ROW4
	mkdir /tmp/fdos/LINKS
	mkdir /tmp/fdos/SOURCE
	mkdir /tmp/fdos/SOURCE/ROW4
	cp ../row4.lsm /tmp/fdos/APPINFO/
	mv row4t.com /tmp/fdos/GAMES/ROW4/
	cp ../COPYING.TXT /tmp/fdos/GAMES/ROW4/
	cp * /tmp/fdos/SOURCE/ROW4/
	groff -man -T utf8 row4t-en.man | col -bx | sed 's/\xC2\xA9/(c)/' \
	  | iconv -c -f UTF-8 -t IBM437 | todos \
	  > /tmp/fdos/GAMES/ROW4/ROW4T-EN.TXT
	groff -man -T utf8 row4t-de.man | col -bx | sed 's/\xC2\xA9/(c)/' \
	  | iconv -c -f UTF-8 -t IBM437 | todos \
	  > /tmp/fdos/GAMES/ROW4/ROW4T-DE.TXT
	echo "GAMES\\ROW4\\ROW4T" | todos > /tmp/fdos/LINKS/ROW4T.BAT
	cd /tmp/fdos && zip -9rk ROW4.ZIP APPINFO GAMES LINKS SOURCE
