######################################################
#
# Space Plumber Makefile
#
# (Para GNU Make)
#
######################################################

# Compilador (gcc, por supuesto)
CC=gcc

# Opciones de compilacin
COMMONFLAGS=-O3 -m486
CFLAGS=$(COMMONFLAGS)
OCFLAGS=$(COMMONFLAGS) -fomit-frame-pointer -finline-functions -funroll-loops

#
# Sistema operativo: elegir entre
#
# OS_TARGET=DOS 		: DJGPP
# OS_TARGET=LINUX_SVGALIB	: Linux + svgalib
# OS_TARGET=UNIX_X11		: Unix + X11 (slo probado en Linux)
#
# Nota:
# DJGPP define la macro 'DJGPP' y gcc de Linux la macro 'linux'
#

OS_TARGET=DOS

#
# Condicionales
#

ifeq ($(OS_TARGET),DOS)
	
	DEFS=
	LIBS=
	DIST=dosdist
	XPCK=graph/*.* sound/*.* etc/*.* extern/*.*
	RM=del
	VERS=105
	DISTFILE=splum$(VERS).zip
endif

ifeq ($(OS_TARGET),LINUX_SVGALIB)

	DEFS=-DLINUX_SVGALIB
	LIBS=-lvga -lm
	DIST=linuxdist
	XPCK=graph/*.* etc/*.* extern/*.*
	RM=rm
	VERS=1.0.5
	BINS=ELF
	DISTFILE=splumber-$(VERS).$(BINS).tar.gz
endif

ifeq ($(OS_TARGET),UNIX_X11)

	DEFS=-DUNIX_X11
	LIBS=-L/usr/X11R6/lib -lX11 -lm
	DIST=linuxdist
	XPCK=graph/*.* etc/*.* extern/*.*
	RM=rm
	VERS=1.0.5
	BINS=X11
	DISTFILE=splumber-$(VERS).$(BINS).tar.gz
endif


######################################################

# General

all: xpal xpck splumber splumber.pck


# Componentes

sp_supp.o: src/sp_supp.c src/sp_supp.h
	$(CC) $(DEFS) $(OCFLAGS) -c src/sp_supp.c

sp_sb.o: src/sp_sb.c src/sp_sb.h
	$(CC) $(DEFS) $(OCFLAGS) -c src/sp_sb.c

sp_kbd.o: src/sp_kbd.c src/sp_kbd.h
	$(CC) $(DEFS) $(OCFLAGS) -c src/sp_kbd.c

sp_grx.o: src/sp_grx.c src/sp_grx.h
	$(CC) $(DEFS) $(OCFLAGS) -c src/sp_grx.c

sp_ray.o: src/sp_ray.c src/sp_ray.h
	$(CC) $(DEFS) $(OCFLAGS) -c src/sp_ray.c

sp_map.o: src/sp_map.c src/sp_map.h
	$(CC) $(DEFS) $(OCFLAGS) -c src/sp_map.c

sp_maze.o: src/sp_maze.c src/sp_maze.h
	$(CC) $(DEFS) $(OCFLAGS) -c src/sp_maze.c

sp_param.o: src/sp_param.c src/sp_param.h
	$(CC) $(DEFS) $(OCFLAGS) -c src/sp_param.c

sp_play.o: src/sp_play.c src/sp_play.h
	$(CC) $(DEFS) $(OCFLAGS) -c src/sp_play.c

splumber: src/splumber.c sp_supp.o sp_grx.o sp_kbd.o sp_sb.o sp_ray.o sp_map.o sp_maze.o sp_param.o sp_play.o
	$(CC) $(DEFS) $(CFLAGS) src/splumber.c sp_supp.o sp_grx.o sp_kbd.o sp_sb.o sp_ray.o sp_map.o sp_maze.o sp_param.o sp_play.o $(LIBS) -o splumber


# Utilidades

xpal: src/xpal.c
	$(CC) src/xpal.c -o xpal

xpck: src/xpck.c
	$(CC) src/xpck.c -o xpck


# Ficheros pack

splumber.pck:
	./xpck splumber.pck $(XPCK)

# Otros

clean:
	-$(RM) *.o
	-$(RM) *.exe
	-$(RM) splumber.pck
	-$(RM) xpck xpal splumber
	-$(RM) $(DISTFILE)

dosdist: all
	-$(RM) $(DISTFILE)
	-djp splumber.exe
	zip -9 -j -A $(DISTFILE) /djgpp/bin/cwsdpmi.exe splumber.exe splumber.pck doc/splumber.txt
	zipnote -w $(DISTFILE) < doc/splumber.not

linuxdist: all
	-$(RM) $(DISTFILE)
	-strip splumber
	chmod 4777 splumber
	tar czvf $(DISTFILE) splumber splumber.pck doc/splumber.txt doc/splumber-$(VERS).$(BINS).lsm

cddist: all
	copy \djgpp\bin\cwsdpmi.exe cd
	copy splumber.exe cd
	copy splumber.pck cd
	copy doc\splumber.txt cd

dist: $(DIST)

# Instalacin en floppies (slo DOS)
flopdist: dosdist
	mkdir flopdist
	copy /b c:\tools\unzipsfx.exe splum$(VERS).zip flopdist\splum$(VERS).exe

	echo @echo off > flopdist\kbackrun.bat
	echo splum$(VERS) >> flopdist\kbackrun.bat
	echo del splum$(VERS).exe >> flopdist\kbackrun.bat
	echo cls >> flopdist\kbackrun.bat
	echo echo Para empezar, teclear SPLUMBER >> flopdist\kbackrun.bat
	echo @echo off > a:instalar.bat
	echo cls >> a:instalar.bat
	echo a: >> a:instalar.bat
	echo echo ############################### >> a:instalar.bat
	echo echo # Space Plumber - INSTALACION # >> a:instalar.bat
	echo echo ############################### >> a:instalar.bat
	echo krestore c:\splumber\ >> a:instalar.bat
	copy c:\tools\krestore.exe a:
	kback b flopdist\*.* a:
	echo @echo Insertar disco 1> a:instalar.bat
	del flopdist\kbackrun.bat
	del flopdist\splum$(VERS).exe
	rmdir flopdist

# Instalacin en floppies 2 (con kback+gzip)
flopdist2:
	mkdir flopdist
	copy d:\djgpp\bin\cwsdpmi.exe flopdist
	copy splumber.exe flopdist
	copy splumber.pck flopdist
	copy doc\splumber.txt flopdist
	echo @echo off > flopdist\kbackrun.bat
	echo cls >> flopdist\kbackrun.bat
	echo echo Para empezar, teclear SPLUMBER >> flopdist\kbackrun.bat
	echo @echo off > a:instalar.bat
	echo cls >> a:instalar.bat
	echo a: >> a:instalar.bat
	echo echo ############################### >> a:instalar.bat
	echo echo # Space Plumber - INSTALACION # >> a:instalar.bat
	echo echo ############################### >> a:instalar.bat
	echo krestore c:\splumber\ >> a:instalar.bat
	copy c:\tools\krestore.exe a:
	copy c:\tools\gzip.exe a:
	kback z flopdist\*.* a:
	echo @echo Insertar disco 1> a:instalar.bat
	copy c:\tools\gzip.exe a:
	del flopdist\kbackrun.bat
	del flopdist\cwsdpmi.exe
	del flopdist\splumber.exe
	del flopdist\splumber.pck
	del flopdist\splumber.txt
	rmdir flopdist

# Fuentes y grficos
spsrc:
	zip -9 spsrc.zip makefile src\*.* graph\*.* sound\*.* extern\*.* etc\*.* doc\*.* pov\*.*

# c2html
c2html:
	c2html src/sp_types.h src/sp_supp.h src/sp_sb.h src/sp_kbd.h > spsrc.htm
	c2html src/sp_grx.h src/sp_ray.h src/sp_map.h src/sp_maze.h >> spsrc.htm
	c2html src/sp_param.h src/sp_play.h src/sp_supp.c src/sp_sb.c >> spsrc.htm
	c2html src/sp_kbd.c src/sp_grx.c src/sp_ray.c src/sp_map.c >> spsrc.htm
	c2html src/sp_maze.c src/sp_param.c src/sp_play.c src/splumber.c >> spsrc.htm
	c2html src/xpal.c src/xpck.c >> spsrc.htm

# Distribucin para Stratos
stratos:
	-$(RM) splumstr.zip
	-djp splumber.exe
	zip -9 -j -A splumstr.zip /djgpp/bin/cwsdpmi.exe splumber.exe splumber.pck doc/spdoc.* doc/splumber.* www/screen*.gif

# distribucin en fuentes
srcdist:
	cd .. ; \
	tar czvf splumber/splumber-$(VERS).src.tar.gz \
	splumber/README splumber/COPYING \
	splumber/makefile splumber/src/* splumber/graph/* splumber/sound/* \
	splumber/extern/* splumber/etc/*
