ZLIB_DIR=../../../zlib
CC=gcc
OPTS=-m486 -O3 -finline-functions   \
   -Wall -Wcast-align -Wmissing-prototypes -Winline \
   -Wpointer-arith -Wstrict-prototypes
LINKOPTS=-s
OBJS=iter.o png.o files.o colors.o calculat.o qmath.o
LIBS=-lz -lm
# use this for mingw32 (seems to include math library libm.a into standard lib)
#LIBS=-lz
WINEDIR=/app/wine-980712
WINEINCLUDE=$(WINEDIR)/include

all:
	@echo QUAT - compilation
	@echo " "
	@echo decide which version to compile:
	@echo make winver
	@echo "  "compiles a version for Win32 using MINGW32, a port of GCC
	@echo make dosver
	@echo "  "this is a text version which is interruptable for DOS
	@echo make textver
	@echo "  "this makes a version that has no graphic output, but creates the PNG file
	@echo make guilib
	@echo "  "this makes a library that is used by X11 version with Qt.
	@echo "  "This option is used by top-level Makefile. To compile
	@echo "  "X11 version, go to source root directory, usually .. ,  
	@echo "  "and do a make x11ver

winver: $(OBJS) quat_gui.o winver.o win2.o title.o quat.res
	$(CC) -mwindows $(LINKOPTS) $(OBJS)  quat_gui.o winver.o win2.o title.o -o quat -L$(ZLIB_DIR) $(OPTS) $(LIBS) 
	d:\\mingw32\\bin\\rsrc quat.res quat.exe

dosver: $(OBJS) quat_txt.o dosver.o
	$(CC) $(LINKOPTS) $(OBJS) quat_txt.o dosver.o -o quat -L$(ZLIB_DIR) $(OPTS) $(LIBS) 
	rem coff2exe -s d:/gcc/bin/go32.exe quat

textver: $(OBJS) quat_txt.o textver.o
	$(CC) $(LINKOPTS) $(OBJS) quat_txt.o textver.o -o ../quat -L$(ZLIB_DIR) $(OPTS) $(LIBS)  

winever: $(OBJS) quat_gui.o winever.o wine2.o quat.o
	$(CC) $(LINKOPTS) $(OBJS) quat_gui.o winever.o wine2.o quat.o $(WINEDIR)/library/winestub.o -o winequat -L$(ZLIB_DIR) $(OPTS) $(LIBS) -lwine -L$(WINEDIR) -L/usr/local/lib -L/usr/X11R6/lib -lXpm -lSM -lICE -lXext -lX11 -lXxf86dga 

guilib: $(OBJS) quat_gui.o title.o 
	ar r libquat_gui.a $(OBJS) quat_gui.o title.o

quat_gui.o: quat.c quat.h common.h png.h iter.h files.h colors.h calculat.h winver.h
	$(CC) -c quat.c -o quat_gui.o $(OPTS) -I$(ZLIB_DIR) -DGUI

quat_txt.o: quat.c quat.h common.h png.h iter.h files.h colors.h calculat.h textver.h
	$(CC) -c quat.c -o quat_txt.o $(OPTS) -I$(ZLIB_DIR)

title.o: title.c
	$(CC) -c title.c -o title.o

title.c: ../util/titcomp 
	../util/titcomp -f title.png

../util/titcomp: png.o ../util/titcomp.o
	$(CC) ../util/titcomp.o png.o -o ../util/titcomp $(LIBS) -L$(ZLIB_DIR)

../util/titcomp.o: ../util/titcomp.c
	$(CC) -I$(ZLIB_DIR) -I. -c ../util/titcomp.c -o ../util/titcomp.o

textver.o: textver.c quat.h common.h png.h textver.h
	$(CC) -c textver.c -o textver.o $(OPTS) -I$(ZLIB_DIR) -DTEXTVER

dosver.o: textver.c quat.h common.h png.h textver.h
	$(CC) -c textver.c -o dosver.o $(OPTS) -I$(ZLIB_DIR) -DTEXTVER -DGCC_DOS

winver.o: winver.c resource.h quat.h common.h png.h winver.h win2.h
	$(CC) -mwindows -c winver.c -o winver.o $(OPTS) -I$(ZLIB_DIR) 

win2.o: win2.c quat.h common.h png.h qmath.h iter.h colors.h win2.h calculat.h winver.h resource.h
	$(CC) -mwindows -c win2.c -o win2.o $(OPTS) -I$(ZLIB_DIR) 

wine2.o: win2.c quat.h common.h png.h qmath.h iter.h colors.h win2.h calculat.h winver.h resource.h
	$(CC) -c win2.c -o wine2.o $(OPTS) -DWINELIB -DWIN32 -DWINELIB32 -I$(WINEINCLUDE) -I$(ZLIB_DIR)

iter.o: iter.c common.h iter.h qmath.h
	$(CC) -c iter.c $(OPTS) 

png.o: png.c png.h
	$(CC) -c png.c $(OPTS) -I$(ZLIB_DIR) 

files.o: files.c quat.h common.h png.h files.h
	$(CC) -c files.c $(OPTS) -I$(ZLIB_DIR) 

colors.o: colors.c common.h colors.h
	$(CC) -c colors.c $(OPTS) 

x11ver.o: x11ver.c colors.h
	$(CC) -c x11ver.c $(OPTS)

winever.o: winver.c quat.h winver.h win2.h
	$(CC) -c winver.c -o winever.o $(OPTS) -DWINELIB -DWIN32 -DWINELIB32 -I$(WINEINCLUDE)

calculat.o: calculat.c calculat.h
	$(CC) -c calculat.c $(OPTS) 

qmath.o: qmath.c common.h qmath.h
	$(CC) -c qmath.c $(OPTS) 

iter.h: vector.h
files.h: png.h
quat.h: common.h
quat.res: quat.rc
	d:\\mssdk\\bin\\rc /i d:\\msvc\\mfc\\include quat.rc
