.SUFFIXES : .cxx .o
.SUFFIXES : .c .o

SHELL		= /bin/sh
CC		= g++
LINKCC		= g++
RM		= /bin/rm -rf
LOCAL		= /usr/local
OPTOPT		= -O
GRAMOPT		= -pedantic
WARNOPT		= -Wall -Wextra -Wshadow -Wpointer-arith -Wconversion \
			-Wredundant-decls -Woverloaded-virtual
EXTOPT		=
OPS		= $(OPTOPT) $(GRAMOPT) $(WARNOPT) $(EXTOPT)
BCCBASE		= C:/borland/bcc55
BCCINC		= -I$(BCCBASE)/Include
BCCLIB		= -L$(BCCBASE)/Lib -L$(BCCBASE)/Lib/PSDK
DXSDKPATH	= H:/DXSDK_Mar2008
POSTLINK	= :

#
SAMPLEHEADERS =
SAMPLESRCS = samp01.cxx samp02.cxx samp03.cxx samp04.cxx samp05.cxx \
		samp06.cxx samp07.cxx samp08.cxx samp09.cxx samp10.cxx \
		samp11.cxx samp12.cxx samp13.cxx samp14.cxx samp15.cxx \
		samp16.cxx samp17.cxx samp18.cxx samp19.cxx samp20.cxx \
		samp21.cxx samp22.cxx samp23.cxx samp24.cxx samp25.cxx \
		samp26.cxx samp27.cxx

SAMPLE = $(SAMPLESRCS:.cxx=)
SAMPLEEXE = $(SAMPLESRCS:cxx=exe)
SAMPLEAPPS = $(SAMPLESRCS:cxx=app)

ALLSRCS = $(SAMPLESRCS)

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

FKLIB		= -lFK2_fltkWin -lFK2_base -lFK2_fltkErr
FKLIB_G		= -lFK2_fltkWin_g -lFK2_base_g -lFK2_fltkErr_g
TFKLIB		= -lTinyFK
LINK		= $(TFKLIB) $(FKLIB) $(SYSLIBS)

TARGET		= target
OUTPUT		= -o $*

all:
	@echo "	FreeBSD:		make fb"
	@echo "	FreeBSD Debug:		make fb-g"
	@echo "	Cygwin-gcc:		make cw-gcc"
	@echo "	MinGW:			make ming"
	@echo "	MinGW D3D:		make ming-d3d"
	@echo "	Borland C++:		make bcc"
	@echo "	MacOS X:		make mac"
	@echo "	MacOS X Debug:		make mac-g"

fb:
	$(MAKE) $(TARGET) \
	"SYSOPS = -D_FREEBSD_" \
	"INCLDIRS = -I. -I.. -I../../FK -I/usr/X11R6/include" \
	"LFLAGS = -L../lib -L../../FK/lib -L/usr/X11R6/lib -L$(LOCAL)/lib" \
	"SYSLIBS = -limdkcv -lfltk_images -lfltk_forms -lfltk_gl -lfltk \
			-lfltk_jpeg -lfreetype -lpng -lGLU -lGL \
			-lXmu -lXt -lXext -lX11 -lm" \
	"RANLIB = ranlib"

fb-g:
	$(MAKE) $(TARGET) \
	"OPTOPT = -g" \
	"SYSOPS = -D_FREEBSD_" \
	"INCLDIRS = -I. -I.. -I../../FK_g -I/usr/X11R6/include" \
	"LFLAGS = -L../lib -L../../FK_g/lib -L/usr/X11R6/lib -L$(LOCAL)/lib" \
	"SYSLIBS = -limdkcv -lfltk_images -lfltk_forms -lfltk_gl -lfltk \
			-lfltk_jpeg -lfreetype -lpng -lGLU -lGL \
			-lXmu -lXt -lXext -lX11 -lm" \
	"RANLIB = ranlib" \
	"FKLIB = $(FKLIB_G)" \
	"TFKLIB = -lTinyFK_g"

cw-gcc:
	$(MAKE) $(TARGET) \
	"CC = g++" \
	"SYSOPS = -DWIN32 -D_CYGWIN_GCC_ \
		-mwindows -e _mainCRTStartup -mno-cygwin" \
	"INCLDIRS = -I.. -I../../FK -I../../FK_Cyg/include" \
	"LFLAGS = -L../lib -L../../FK/lib -L../../FK_Cyg/lib" \
	"SYSLIBS = -lfltk_gl -lfltk_jpeg -lfltk_png -lfltk_images \
		-lfltk_forms -lfltk \
		-lfreetype -limdkcv \
		-lwinmm -lole32 -luuid -lglu32 -lopengl32 \
		-limm32 -lgdi32 -lcomctl32 -lwsock32 -lsupc++ -lz" \
	"RANLIB = ranlib"

ming:
	$(MAKE) $(TARGET) \
	"CC = g++" \
	"SYSOPS = -DWIN32 -D_MINGW_ \
		-mwindows -e _mainCRTStartup -mno-cygwin" \
	"INCLDIRS = -I.. -I../../FK -I../../FK_Ming/include" \
	"LFLAGS = -L../lib -L../../FK/lib -L../../FK_Ming/lib" \
	"SYSLIBS = -lfltk_gl -lfltk_jpeg -lfltk_png -lfltk_images \
		-lfltk_forms -lfltk -lfltk_z \
		-lfreetype -limdkcv \
		-lwinmm -lole32 -luuid -lglu32 -lopengl32 \
		-limm32 -lgdi32 -lcomctl32 -lwsock32 -lsupc++" \
	"RANLIB = ranlib"

ming-d3d:
	$(MAKE) $(TARGET) \
	"CC = g++" \
	"GRAMOPT = " \
	"SYSOPS = -DWIN32 -D_MINGW_ -DFK_D3D \
		-mwindows -e _mainCRTStartup -mno-cygwin" \
	"INCLDIRS = -I.. -I../../FK_D3D -I../../FK_Ming/include \
		-I$(DXSDKPATH)/Include" \
	"LFLAGS = -L../lib -L../../FK_D3D/lib -L../../FK_Ming/lib \
		-L$(DXSDKPATH)/Lib/x86" \
	"SYSLIBS = -lfltk_gl -lfltk_jpeg -lfltk_png -lfltk_images \
		-lfltk_forms -lfltk -lfltk_z \
		-lfreetype -limdkcv \
		-lwinmm -lole32 -luuid -lglu32 -lopengl32 \
		-ld3dx9 -ld3d9 \
		-limm32 -lgdi32 -lcomctl32 -lwsock32 -lsupc++" \
	"RANLIB = ranlib"

bcc:
	$(MAKE) $(TARGET) \
	"CC = bcc32" \
	"SHELL = " \
	"OPTOPT = -O2 -Hc -Vx -Ve -6" \
	"GRAMOPT = -P" \
	"WARNOPT = -q -w-8004 -w-8057" \
	"SYSOPS = -DWIN32 -DBORLAND" \
	"INCLDIRS = -I.. -I../../FK_s -I../../FK_BCC/include $(BCCINC)" \
	"DEPENDDIRS = " \
	"LFLAGS = -L../lib -L../../FK_s/lib -L../../FK_BCC/lib $(BCCLIB)" \
	"TFKLIB = tinyfk.lib" \
	"FKLIB = fk2_fltkWin.lib fk2_base.lib fk2_fltkErr.lib" \
	"SYSLIBS = fltk.lib freetype.lib imdkcv.lib" \
	"OUTPUT = "

mac:
	$(MAKE) $(TARGET) \
	"CC = c++" \
	"OPTOPT = -O -pipe" \
	"SYSOPS = -D_MACOSX_ -isysroot /Developer/SDKs/MacOSX10.5.sdk \
		-arch i386 -arch ppc" \
	"INCLDIRS = -I. -I.. -I../../FK -I../../include -I$(LOCAL)/include" \
	"LFLAGS = -L../lib -L../../FK/lib -L../../lib -L$(LOCAL)/lib" \
	"SYSLIBS = -limdkcv -lfltk_gl -lfltk_forms \
		-lfltk_images -lfltk_jpeg -lfltk \
		-lpng -lfreetype -lz \
		-framework AGL -framework OpenGL \
		-framework Carbon -framework ApplicationServices" \
	"RANLIB = ranlib" \
	"POSTLINK = ../../FK/FK/appmake.pl"

mac-g:
	$(MAKE) $(TARGET) \
	"CC = c++" \
	"OPTOPT = -g" \
	"SYSOPS = -D_MACOSX_ -isysroot /Developer/SDKs/MacOSX10.5.sdk \
		-arch i386 -arch ppc" \
	"INCLDIRS = -I. -I.. -I../../FK_g -I../../include -I$(LOCAL)/include" \
	"LFLAGS = -L../lib -L../../FK_g/lib -L../../lib -L$(LOCAL)/lib" \
	"SYSLIBS = -limdkcv -lfltk_gl -lfltk_forms \
		-lfltk_images -lfltk_jpeg -lfltk \
		-lpng -lfreetype -lz \
		-framework AGL -framework OpenGL \
		-framework Carbon -framework ApplicationServices" \
	"RANLIB = ranlib" \
	"FKLIB = $(FKLIB_G)" \
	"TFKLIB = -lTinyFK_g" \
	"POSTLINK = ../../FK/FK/appmake.pl"

CFLAGS = $(OPS) $(SYSOPS) $(INCLDIRS)

target : $(SAMPLE)

clean:
	$(RM) $(SAMPLE) $(SAMPLEEXE) Makefile.bak \
		$(SAMPLESRCS:cxx=obj) $(SAMPLESRCS:cxx=tds) \
		$(SAMPLESRCS:cxx=o) $(SAMPLEAPPS) \
		*.out core *.core *~ #*# 

###
%.app : %.cxx
	$(CC) -c $(CFLAGS) $< -o $*.o
	$(LINKCC) $(LFLAGS) $*.o $(LINK) -o $*
	$(POSTLINK) $*

.cxx:
	$(CC) $(CFLAGS) $(LFLAGS) $< $(OUTPUT) $(LINK)
	$(POSTLINK) $*

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