#******************************************************************************
#
#       Copyright:      2005-2010 Paul Obermeier (obermeier@tcl3d.org)
#
#                       See the file "Tcl3D_License.txt" for information on
#                       usage and redistribution of this file, and for a
#                       DISCLAIMER OF ALL WARRANTIES.
#
#       Module:         Tcl3D -> tcl3dOgl
#       Filename:       Makefile
#
#       Author:         Paul Obermeier
#
#       Description:    Makefile for the tcl3dOgl subpackage.
#                       The syntax is based on GNU make.
#
#******************************************************************************

.PHONY: all install clean distclean

include ../make.oscheck
include ../make.macros
include ../make.wrap

GLEWOBJS = \
        glew$(OBJEXT)

TOGLOBJS = \
        togl$(OBJEXT) \
        toglFont$(OBJEXT)

TOGLHDRS = \
	Togl$(DSEP)togl.h \
       	Togl$(DSEP)toglFont.h

UTILOBJS = \
	tcl3dDemoOglLogo$(OBJEXT) \
	tcl3dDemoReadRedBookImg$(OBJEXT) \
	tcl3dModel$(OBJEXT) \
	tcl3dModelFmtObj$(OBJEXT) \
	tcl3dModelFmtSab$(OBJEXT) \
	tcl3dModelFmtPof$(OBJEXT) \
        tcl3dShapesGlut$(OBJEXT) \
	tcl3dShapesMisc$(OBJEXT) \
        tcl3dShapesTeapot$(OBJEXT) \
	tcl3dUtilArcBall$(OBJEXT) \
	tcl3dUtilFractal$(OBJEXT) \
	tcl3dUtilPortable$(OBJEXT) \
	tcl3dUtilRandom$(OBJEXT) \
	tcl3dUtilStopWatch$(OBJEXT) \
	tcl3dUtilTrackball$(OBJEXT) \
	tcl3dVecMath$(OBJEXT) \
	tcl3dViewMath$(OBJEXT)

UTILHDRS = \
	tcl3dDemoOglLogo.h \
	tcl3dDemoReadRedBookImg.h \
	tcl3dModel.h \
	tcl3dModelFmtObj.h \
	tcl3dModelFmtSab.h \
	tcl3dModelFmtPof.h \
	tcl3dShapesGlut.h \
	tcl3dShapesMisc.h \
	tcl3dUtilArcBall.h \
	tcl3dUtilFractal.h \
	tcl3dUtilPortable.h \
	tcl3dUtilRandom.h \
	tcl3dUtilStopWatch.h \
	tcl3dUtilTrackball.h \
	tcl3dVecMath.h \
	tcl3dViewMath.h

WRAPOBJS = \
        tcl3dOgl_wrap$(OBJEXT) 

SWIG_FILES = \
        $(COMMON_SWIGFILES) \
        swigfiles/bytearray.i \
        swigfiles/glew.i \
        swigfiles/glewfuncs.i \
        swigfiles/glu.i \
        swigfiles/heightmap.i \
        swigfiles/list2vector.i \
        swigfiles/tcl3dOgl.i \
        swigfiles/tkphoto.i \
        swigfiles/util.i \
        swigfiles/vector.i

GLEWSRCS = $(GLEWOBJS:$(OBJEXT)=.c)
TOGLSRCS = $(TOGLOBJS:$(OBJEXT)=.c)
UTILSRCS = $(UTILOBJS:$(OBJEXT)=.c)
WRAPSRCS = $(WRAPOBJS:$(OBJEXT)=.c)
ALL_SRCS = $(WRAPSRCS) $(UTILSRCS) $(GLEWSRCS) $(TOGLSRCS)

PKG_NAME = tcl3dOgl
PKG_LIB  = $(PKG_NAME)$(SHLIBEXT)

CFLAGS = $(OPT) $(PPDEFS) -I$(GL_INCDIR) -I$(GLU_INCDIR) $(INCL)

.SUFFIXES:                  # Delete the default suffixes.
.SUFFIXES: .c $(OBJEXT) .h  # Install our own suffixes.

.c$(OBJEXT):
	$(CC) $(CFLAGS) $<

all: swigfiles$(DSEP)glewfuncs.i tclfiles$(DSEP)tcl3dOglHelp.tcl $(PKG_LIB)

install: all
	-$(MKDIR) $(TCL3D_INSTLIB)
	-$(MKDIR) $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) $(PKG_LIB)                             $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dDemoHeightMap.tcl  $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dGuiConsole.tcl     $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dGuiDirSelect.tcl   $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dGuiAutoscroll.tcl  $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dGuiToolhelp.tcl    $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dGuiWidgets.tcl     $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dOglStateList.tcl   $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dOglQuery.tcl       $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dOglUtil.tcl        $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dOglShaderUtil.tcl  $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dOglHelp.tcl        $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dOglFormats.tcl     $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dShapesGlus.tcl     $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dShapesGlut.tcl     $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dUtilCapture.tcl    $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dUtilColors.tcl     $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dUtilFile.tcl       $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dUtilImg.tcl        $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dUtilInfo.tcl       $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dUtilLogo.tcl       $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dUtilTrackball.tcl  $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dVector.tcl         $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dVecMath.tcl        $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)pkgIndex.tcl            $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) ..$(DSEP)pkgIndex.tcl                  $(TCL3D_INSTLIB)

clean:
	-$(RM) $(WRAPOBJS)
	-$(RM) $(WRAPSRCS)
	-$(RM) $(UTILOBJS)
	-$(RM) $(TOGLOBJS)
	-$(RM) $(GLEWOBJS)
	-$(RM) $(VC_CLEANUP_FILES)

distclean: clean
	-$(RM) $(PKG_LIB)
	-$(RM) tclfiles$(DSEP)tcl3dOglHelp.tcl
	-$(RM) swigfiles$(DSEP)glewfuncs.i
	-$(RM) swigfiles$(DSEP)glewdefs.i
	-$(RM) GLSpec$(DSEP)glExtUrlList.txt

tcl3dOgl_wrap.c: $(SWIG_FILES) $(UTILHDRS)
	swig -tcl -pkgversion $(VERSION) $(PPDEFS) \
             -I../swigfiles -Iswigfiles -I$(GL_INCDIR) -I$(GLU_INCDIR) $(INCL) \
             -o $@ swigfiles/tcl3dOgl.i

$(PKG_LIB): $(GLEWOBJS) $(TOGLOBJS) $(UTILOBJS) $(WRAPOBJS)
	$(SHLIB_LD) $(SHLIB_CFLAGS) $(LDOUT)$@ \
                    $(WRAPOBJS) $(UTILOBJS) $(GLEWOBJS) $(TOGLOBJS) \
                    $(TCLLIBS) $(GLLIBS) $(SYSLIBS)
	$(MT32) -manifest $(PKG_LIB).manifest -outputresource:"$(PKG_LIB);2"

glew$(OBJEXT): GL$(DSEP)glew.h glew.c

GLSpec$(DSEP)glExtUrlList.txt: GLSpec$(DSEP)glExtUrlList.html \
                               createExtUrlList.tcl
	$(TCLSH) createExtUrlList.tcl

swigfiles$(DSEP)glewfuncs.i: GL$(DSEP)glew.h GLSpec$(DSEP)gl.spec \
                             GLSpec$(DSEP)glFuncUrlList.txt \
			     GLSpec$(DSEP)glExtUrlList.txt \
			     createSwigAndHelpFile.tcl
	$(TCLSH) createSwigAndHelpFile.tcl -swig

tclfiles$(DSEP)tcl3dOglHelp.tcl: GL$(DSEP)glew.h GLSpec$(DSEP)gl.spec \
                                 GLSpec$(DSEP)glFuncUrlList.txt \
				 GLSpec$(DSEP)glExtUrlList.txt \
                                 GLSpec$(DSEP)tcl3dOglHelp.txt \
				 createSwigAndHelpFile.tcl
	$(TCLSH) createSwigAndHelpFile.tcl -help

togl$(OBJEXT): Togl$(DSEP)togl.c $(TOGLHDRS)
	$(CC) $(CFLAGS) $<

toglFont$(OBJEXT): Togl$(DSEP)toglFont.c $(TOGLHDRS)
	$(CC) $(CFLAGS) $<
