#
!include ..\include\$(ESP_ARCH).$(MSVC)
SDIR  = $(MAKEDIR)
EDIR  = $(SDIR)\..\src
UDIR  = $(SDIR)\..\util
INCD  = $(SDIR)\..\include
IDIR  = $(ESP_ROOT)\include
LDIR  = $(ESP_ROOT)\lib
!IFDEF ESP_BLOC
ODIR  = $(ESP_BLOC)\obj
!ELSE
ODIR  = .
!ENDIF

OBJS  = liteBase.obj liteMemory.obj liteGeom.obj liteTopo.obj liteAttrs.obj \
	liteImport.obj liteString.obj

!IFDEF ESP_BLOC
default:	start $(LDIR)\egadslite.dll $(LDIR)\egadslitestatic.lib end
!ELSE
default:	$(LDIR)\egadslite.dll $(LDIR)\egadslitestatic.lib
!ENDIF

start:
	cd $(ODIR)
	xcopy $(SDIR)\*.c                   /Q /Y
	xcopy $(SDIR)\*.h                   /Q /Y
	xcopy $(SDIR)\*.rc                  /Q /Y
	xcopy $(SDIR)\*.def                 /Q /Y
	xcopy $(SDIR)\..\src\*.h            /Q /Y
	xcopy $(SDIR)\..\src\egadsTess.c    /Q /Y
	xcopy $(SDIR)\..\src\egadsTris.c    /Q /Y
	xcopy $(SDIR)\..\src\egadsQuads.c   /Q /Y
	xcopy $(SDIR)\..\src\egadsTessInp.c /Q /Y
	xcopy $(SDIR)\..\src\egadsRobust.c  /Q /Y
	xcopy $(SDIR)\..\src\egadsEffect.c  /Q /Y
	xcopy $(UDIR)\emp.c                 /Q /Y
	xcopy $(UDIR)\evaluate.c            /Q /Y
	xcopy $(UDIR)\rational.c            /Q /Y
	xcopy $(UDIR)\regQuads.c            /Q /Y
	xcopy $(UDIR)\regQuads.h            /Q /Y
	xcopy $(UDIR)\uvmap\uvmap_struct.h  /Q /Y

$(LDIR)\egadslite.dll:	$(OBJS) liteTess.obj liteTris.obj liteQuads.obj \
			liteTessInp.obj emp.obj evaLite.obj ratLite.obj \
			egadsRobust.obj liteRegQuads.obj liteEffect.obj \
			liteUVmap.obj egadslite.res
	-del $(LDIR)\egadslite.dll $(LDIR)\egadslite.lib $(LDIR)\egadslite.exp
	link /out:$(LDIR)\egadslite.dll /dll /def:egadslite.def $(OBJS) \
		liteTess.obj liteTris.obj liteQuads.obj liteTessInp.obj \
		emp.obj evaLite.obj ratLite.obj egadsRobust.obj \
		liteRegQuads.obj liteEffect.obj liteUVmap.obj egadslite.res
        $(MCOMP) /manifest $(LDIR)\egadslite.dll.manifest \
                /outputresource:$(LDIR)\egadslite.dll;2

$(LDIR)/egadslitestatic.lib:	$(OBJS) liteTess.obj liteTris.obj \
				liteQuads.obj liteTessInp.obj emp.obj \
				evaLite.obj ratLite.obj liteRegQuads.obj \
				liteEffect.obj liteUVmap.obj
	-del $(LDIR)\egadslitestatic.lib
	lib /out:$(LDIR)\egadslitestatic.lib $(OBJS) liteTess.obj liteTris.obj \
		liteQuads.obj liteTessInp.obj egadsRobust.obj emp.obj \
		evaLite.obj ratLite.obj liteRegQuads.obj liteEffect.obj \
		liteUVmap.obj

egadslite.res:	egadslite.rc
	rc egadslite

$(OBJS):	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h liteDevice.h $(OBJS:.obj=.c)
	cl /c $(COPTS) $(DEFINE) $(XDEF) /I. /I$(INCD) /I$(EDIR) \
		/I..\util\uvmap $*.c

!IFDEF ESP_BLOC

liteTess.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h egadsTess.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		egadsTess.c /FoliteTess.obj

liteTris.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h egadsTris.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		egadsTris.c /FoliteTris.obj

liteQuads.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h egadsQuads.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /I. /I$(INCD) /I$(EDIR) egadsQuads.c \
		/FoliteQuads.obj

liteTessInp.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
			$(INCD)\egadsTypes.h liteClasses.h egadsTessInp.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		egadsTessInp.c /FoliteTessInp.obj

liteEffect.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h egadsEffect.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		egadsEffect.c /FoliteEffect.obj

liteUVmap.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h liteUVmap.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		/I$(UDIR)\uvmap liteUVmap.c /FoliteUVmap.obj

emp.obj:	emp.c
	cl /c $(COPTS) $(DEFINE) /I$(INCD) emp.c

evaLite.obj:	evaluate.c
	cl /c $(COPTS) $(DEFINE) /DLITE /I$(INCD) evaluate.c /FoevaLite.obj

ratLite.obj:	rational.c
	cl /c $(COPTS) $(DEFINE) /DLITE rational.c /ForatLite.obj

liteRegQuads.obj:	regQuads.c regQuads.h
	cl /c $(COPTS) $(DEFINE) /DLITE /I$(INCD) /I. regQuads.c \
		/FoliteRegQuads.obj

egadsRobust.obj:	egadsRobust.c
	cl /c $(COPTS) $(DEFINE) egadsRobust.c

!ELSE

liteTess.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h ..\src\egadsTess.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		..\src\egadsTess.c /FoliteTess.obj

liteTris.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h ..\src\egadsTris.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		..\src\egadsTris.c /FoliteTris.obj

liteQuads.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h ..\src\egadsQuads.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /I. /I$(INCD) /I$(EDIR) \
		..\src\egadsQuads.c /FoliteQuads.obj

liteTessInp.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
			$(INCD)\egadsTypes.h liteClasses.h ..\src\egadsTessInp.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		/I..\util ..\src\egadsTessInp.c /FoliteTessInp.obj

liteEffect.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h ..\src\egadsEffect.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		..\src\egadsEffect.c /FoliteEffect.obj

liteUVmap.obj:	$(INCD)\egadsErrors.h $(EDIR)\egadsInternals.h \
		$(INCD)\egadsTypes.h liteClasses.h liteUVmap.c
	cl /c $(COPTS) $(DEFINE) $(XDEF) /DLITE /I. /I$(INCD) /I$(EDIR) \
		/I..\util\uvmap liteUVmap.c /FoliteUVmap.obj

emp.obj:	..\util\emp.c
	cl /c $(COPTS) $(DEFINE) /I$(INCD) ..\util\emp.c

evaLite.obj:	..\util\evaluate.c
	cl /c $(COPTS) $(DEFINE) /DLITE /I$(INCD) /I$(EDIR) /I. \
		..\util\evaluate.c /FoevaLite.obj

ratLite.obj:	..\util\rational.c
	cl /c $(COPTS) $(DEFINE) /DLITE ..\util\rational.c /ForatLite.obj

liteRegQuads.obj:	..\util\regQuads.c ..\util\regQuads.h
	cl /c $(COPTS) $(DEFINE) /DLITE /I$(INCD) /I. ..\util\regQuads.c \
		/FoliteRegQuads.obj

egadsRobust.obj:	..\src\egadsRobust.c
	cl /c $(COPTS) $(DEFINE) ..\src\egadsRobust.c

!ENDIF

end:
	-del *.c *.h *.rc *.def *.manifest
	cd $(SDIR)

clean:
	cd $(ODIR)
	-del $(OBJS) liteTess.obj liteTris.obj liteQuads.obj liteTessInp.obj \
		liteRegQuads.obj liteEffect.obj liteUVmap.obj
	cd $(SDIR)

cleanall:	clean
	-del $(LDIR)\egadslite.dll $(LDIR)\egadslite.lib $(LDIR)\egadslite.exp
	-del $(LDIR)\egadslite.res $(LDIR)\egadslite.dll.manifest
	-del $(LDIR)\egadslitestatic.lib
