# Makefile for Win32

!include <win32.mak>

.SUFFIXES : .cc

TOP = ..

GLU_SRCS_CC = \
	libnurbs\interface\bezierEval.cc \
	libnurbs\interface\bezierPatch.cc \
	libnurbs\interface\bezierPatchMesh.cc \
	libnurbs\interface\glcurveval.cc \
	libnurbs\interface\glinterface.cc \
	libnurbs\interface\glrenderer.cc \
	libnurbs\interface\glsurfeval.cc \
	libnurbs\interface\incurveeval.cc \
	libnurbs\interface\insurfeval.cc \
	libnurbs\internals\arc.cc \
	libnurbs\internals\arcsorter.cc \
	libnurbs\internals\arctess.cc \
	libnurbs\internals\backend.cc \
	libnurbs\internals\basiccrveval.cc \
	libnurbs\internals\basicsurfeval.cc \
	libnurbs\internals\bin.cc \
	libnurbs\internals\bufpool.cc \
	libnurbs\internals\cachingeval.cc \
	libnurbs\internals\ccw.cc \
	libnurbs\internals\coveandtiler.cc \
	libnurbs\internals\curve.cc \
	libnurbs\internals\curvelist.cc \
	libnurbs\internals\curvesub.cc \
	libnurbs\internals\dataTransform.cc \
	libnurbs\internals\displaylist.cc \
	libnurbs\internals\flist.cc \
	libnurbs\internals\flistsorter.cc \
	libnurbs\internals\hull.cc \
	libnurbs\internals\intersect.cc \
	libnurbs\internals\knotvector.cc \
	libnurbs\internals\mapdesc.cc \
	libnurbs\internals\mapdescv.cc \
	libnurbs\internals\maplist.cc \
	libnurbs\internals\mesher.cc \
	libnurbs\internals\monoTriangulationBackend.cc \
	libnurbs\internals\monotonizer.cc \
	libnurbs\internals\mycode.cc \
	libnurbs\internals\nurbsinterfac.cc \
	libnurbs\internals\nurbstess.cc \
	libnurbs\internals\patch.cc \
	libnurbs\internals\patchlist.cc \
	libnurbs\internals\quilt.cc \
	libnurbs\internals\reader.cc \
	libnurbs\internals\renderhints.cc \
	libnurbs\internals\slicer.cc \
	libnurbs\internals\sorter.cc \
	libnurbs\internals\splitarcs.cc \
	libnurbs\internals\subdivider.cc \
	libnurbs\internals\tobezier.cc \
	libnurbs\internals\trimline.cc \
	libnurbs\internals\trimregion.cc \
	libnurbs\internals\trimvertpool.cc \
	libnurbs\internals\uarray.cc \
	libnurbs\internals\varray.cc \
	libnurbs\nurbtess\directedLine.cc \
	libnurbs\nurbtess\gridWrap.cc \
	libnurbs\nurbtess\monoChain.cc \
	libnurbs\nurbtess\monoPolyPart.cc \
	libnurbs\nurbtess\monoTriangulation.cc \
	libnurbs\nurbtess\partitionX.cc \
	libnurbs\nurbtess\partitionY.cc \
	libnurbs\nurbtess\polyDBG.cc \
	libnurbs\nurbtess\polyUtil.cc \
	libnurbs\nurbtess\primitiveStream.cc \
	libnurbs\nurbtess\quicksort.cc \
	libnurbs\nurbtess\rectBlock.cc \
	libnurbs\nurbtess\sampleComp.cc \
	libnurbs\nurbtess\sampleCompBot.cc \
	libnurbs\nurbtess\sampleCompRight.cc \
	libnurbs\nurbtess\sampleCompTop.cc \
	libnurbs\nurbtess\sampleMonoPoly.cc \
	libnurbs\nurbtess\sampledLine.cc \
	libnurbs\nurbtess\searchTree.cc

GLU_SRCS = \
	libtess\dict.c \
	libtess\geom.c \
	libtess\memalloc.c \
	libtess\mesh.c \
	libtess\normal.c \
	libtess\priorityq.c \
	libtess\render.c \
	libtess\sweep.c \
	libtess\tess.c \
	libtess\tessmono.c \
	libutil\error.c \
	libutil\glue.c \
	libutil\mipmap.c \
	libutil\project.c \
	libutil\quad.c \
	libutil\registry.c

SRCS	= $(GLU_SRCS)

all	: gludll

!include "$(TOP)/mesawin32.mak"

gludll	: $(GLUDLL)

CFLAGS	= $(cvarsdll) $(CFLAGS) -D_OPENGL32_ -Iinclude -DBUILD_GL32 -DLIBRARYBUILD
LFLAGS	= $(dlllflags) $(lcommon) $(LFLAGS)

LIBS	= ../lib/$(MESALIB) winmm.lib $(guilibsdll)

OBJS	= $(GLU_SRCS_CC:.cc=.obj) $(GLU_SRCS:.c=.obj)
NURBSINC = -Ilibnurbs\interface -Ilibnurbs\internals -Ilibnurbs\nurbtess 
CFLAGS  = $(CFLAGS) $(NURBSINC)

$(GLUDLL): $(OBJS) glu.def
	$(link) $(LFLAGS) -out:$(GLUDLL) -def:glu.def $(OBJS) $(LIBS)
	@echo "copying Mesa GLU dynamic link library to library directory..."
	-copy $(GLUDLL) $(TOP)\lib
	@echo "copying Mesa GLU import library to library directory..."
	-copy $(GLULIB) $(TOP)\lib

install	: $(GLUDLL) $(GLULIB)
	@echo "copying Mesa GLU dynamic link library to system directory..."
	-copy $(GLUDLL) $(DLLINSTALL)
	@echo "copying Mesa GLU header files to include directory..."
	-copy ..\..\include\GL\glu.h $(INCLUDEINSTALL)
	@echo "copying Mesa GLU import library to system library directory..."
	-copy $(GLULIB) $(LIBINSTALL)

clean	::
	@del /f libtess\*.obj libutil\*.obj 
	@del /f libnurbs\interface\*.obj libnurbs\internals\*.obj 
	@del /f libnurbs\nurbtess\*.obj

# override default inference rule with one that writes the object to
# the same subdir as the c file. 

.c.obj	:
	$(cc) $(CFLAGS) -I. $< /Fo$*.obj

# /TP is needed for C++ files because MS compiler
# does not recognize .cc as a C++ file.

.cc.obj	:
	$(cc) $(CFLAGS) -I. $< /TP /Fo$*.obj