#! gmake
#

# ===========================================================
# change the directory if they are different from your system
# ===========================================================
XHOME = /usr/X11R6

OGL_INCDIR = /usr/local/include
OGL_LIBDIR = /usr/local/lib

CGAL_INCDIR = /usr/local/include
CGAL_LIBDIR = /usr/local/lib

BLITZ_INCDIR = /usr/local/include
BLITZ_LIBDIR = /usr/local/lib
# ===========================================================

SHELL  = /bin/bash

GMAFDIR = $(shell pwd)

BINDIR = ${GMAFDIR}/bin
SRCDIR = ${GMAFDIR}
OBJDIR = ${SRCDIR}

OGLDIR = ${APPDIR}/OGLExample

APPDIR = ${SRCDIR}/MainProgram
DSDIR  = ${SRCDIR}/DataStructure
ALGODIR = ${SRCDIR}/Algorithm
CGALEDIR = ${SRCDIR}/CgalExtension
BLITZEDIR = ${SRCDIR}/BlitzExtension

MAM_VERSION = -D_MAM_VERSION
OGL_VERSION = -D_OGL_VERSION
QT_SUPPORT = -D_GUI_QT

CC = g++
CXX = g++
SHAREDSUFFIX = so

INCPATH = -I${SRCDIR} -I${OGL_INCDIR} -I${CGAL_INCDIR} -I${BLITZ_INCDIR}
OPTIMIZER = -g -D_DEBUG -DBZ_DEBUG
CFLAGS = #-Wall
CXXFLAGS = ${CFLAGS} ${MAM_VERSION} ${QT_SUPPORT} ${OPTIMIZER} ${INCPATH}

MV = cp
RM = rm -f

#------------------------------------------------------------------------
VPATH = ${ALGODIR}:${ALGODIR}/CCSubdivision:${ALGODIR}/PCCM:${DSDIR}

XLIB = -lX11 -lXi -lXm
GLLIB = -lGL -lGLU -lglut
CGALLIB = -lCGAL
MISCLIB = -lblitz -lm

LIBPATH = -L${CGAL_LIBDIR} -L${BLITZ_LIBDIR} -L${XHOME}/lib
LIBS    = ${CGALLIB} ${GLLIB} ${XLIB} ${MISCLIB}

LDFLAGS = ${LIBPATH} ${LIBS}
CXXFLAGS = ${CFLAGS} ${OGL_VERSION} ${OPTIMIZER} ${INCPATH}
#------------------------------------------------------------------------
TARGET = ${BINDIR}/pccm

CCSUB = gmafCCSubdivision.cc gmafQuad.cc gmafQuadMap.cc gmafQuadVertex.cc gmafCCSubVisualObject.cc
PCCM = gmafPCCM.cc gmafPCCMQuad.cc gmafPCCMQuadMap.cc gmafPCCMVisualObject.cc
ALGORITHM = gmafAlgorithm.cc gmafVisualObject.cc ${CCSUB} ${PCCM}
DATASTRUCTURE = gmafDataStructure.cc gmafDataStructureManager.cc gmafPolyhedron.cc
MAIN = main.cc pccmOGL.cc

SRC = ${ALGORITHM} ${DATASTRUCTURE} ${MAIN}
OBJ = ${SRC:.cc=.o}

CLEAN	= *.bak *~ makefile core ${OBJ} ${TARGET}

#------------------------------------------------------------------------
.PHONY:	all clean help

all: ${TARGET}
	chmod 775 ${TARGET}

${TARGET}: ${OBJ}
	${CXX} ${OBJ} ${LDFLAGS} -o ${TARGET}

%.o: %.cc
	${CXX} -c ${CXXFLAGS} ${INCPATH} $< 

TAGS: ${SRC}
	etags ${SRC}

clean:
	${RM} ${CLEAN}
