#******************************************************************************
#
#       Copyright:      2006-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 -> tcl3dFTGL
#       Filename:       Makefile
#
#       Author:         Paul Obermeier
#
#       Description:    Makefile for the tcl3dFTGL subpackage.
#                       The syntax is based on GNU make.
#
#******************************************************************************

.PHONY: all install clean distclean

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

# The key file name to detect whether Tcl3D could be wrapped
# with FTGL support. If this file does not exist, we can not wrap
# the FTGL library, even if WRAP_FTGL has been defined in make.wrap.
KEY_FTGL  = include/FTGL.h

HAVE_FTGL =
ifdef WRAP_FTGL
HAVE_FTGL = $(strip $(wildcard $(KEY_FTGL)))
endif

FTGLLIBS =
ifneq (,$(HAVE_FTGL))
PPDEFS += -DUSE_FTGL_IF
ifeq (win32,$(KERNEL))
FTGLLIBS = lib$(DSEP)ftgl$(LIBEXT)
else
ifeq (mingw,$(KERNEL))
FTGLLIBS = lib$(DSEP)ftgl$(LIBEXT)
else
FTGLLIBS = -L../extlibs/$(OS_TYPE) -lftgl -lfreetype -lz
endif
endif
endif

FTGL_INCDIR = include/FTGL
FT_INCDIR   = include/freetype2

WRAPOBJS = \
        tcl3dFTGL_wrap$(OBJEXT)

SWIG_FILES = \
        $(COMMON_SWIGFILES) \
        swigfiles/ftgl.i \
        swigfiles/tcl3dFTGL.i

WRAPSRCS = $(WRAPOBJS:$(OBJEXT)=.cpp)
ALL_SRCS = $(WRAPSRCS)

PKG_NAME = tcl3dFTGL
PKG_LIB  = $(PKG_NAME)$(SHLIBEXT)

CFLAGS = $(OPT) $(PPDEFS) -I$(GL_INCDIR) -I$(GLU_INCDIR) -Iinclude \
         -I$(FTGL_INCDIR) -I$(FT_INCDIR) $(INCL)

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

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

all:    $(PKG_LIB)

install: all
	-$(MKDIR) $(TCL3D_INSTLIB)
	-$(MKDIR) $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) $(PKG_LIB)                        $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dFTGLQuery.tcl $(TCL3D_INSTLIB)$(DSEP)$(PKG_NAME)
	$(CP) tclfiles$(DSEP)tcl3dFTGLUtil.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) $(VC_CLEANUP_FILES)

distclean: clean
	-$(RM) $(PKG_LIB)

tcl3dFTGL_wrap.cpp: $(SWIG_FILES)
	swig -c++ -tcl -pkgversion $(VERSION) $(PPDEFS) \
             -I../swigfiles -Iswigfiles -Iinclude -I$(FTGL_INCDIR) \
             -I$(GL_INCDIR) -I$(GLU_INCDIR) -I$(FT_INCDIR) $(INCL) \
             -o $@ swigfiles/tcl3dFTGL.i

tcl3dFTGL_wrap$(OBJEXT): tcl3dFTGL_wrap.cpp
	$(CXX) $(CFLAGS) $<

$(PKG_LIB): $(WRAPOBJS)
	$(SHLIB_LDXX) $(SHLIB_CFLAGS) $(LDOUT)$@ \
                    $(WRAPOBJS) \
                    $(TCLLIBS) $(FTGLLIBS) $(GLLIBS) $(SYSLIBS)
	$(MT32) -manifest $(PKG_LIB).manifest -outputresource:"$(PKG_LIB);2"
ifneq (,$(HAVE_FTGL))
	@echo Tcl3D built with FTGL support
else
	@echo Tcl3D built without FTGL support
endif
