# 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
