# Please use nmake for this makefile

NAME  = protolin

CC    = cl /W3 /D_CRT_SECURE_NO_WARNINGS 

!IFDEF DEBUG
COPT  = /Od /Zi
LOPT  = /DEBUG
OF    = debug
TST   = debugTest
!ELSE
COPT  = /Gd /Ot
LOPT  =
OF    = release
TST   = releaseTest
!ENDIF

!IF ("$(PLATFORM)"=="x64")||("$(PLATFORM)"=="X64")
BIN   = $(NAME)64.dll
TEXE  = test64.exe
COPT  = $(COPT) /D_AMD64_=1
OF    = $(OF)64
TST   = $(TST)64
!ELSE
BIN   = $(NAME).dll
TEXE  = test.exe
COPT  = $(COPT) /D_X86_=1
!ENDIF

DIR      = {.;..;src}
INLCUDES = /I.. /Isrc


all: $(OF) $(OF)\$(BIN)
	copy $(OF)\$(BIN) .

$(OF):
	md $@

$(OF)\proto.obj : $(DIR)$$(@B).c        $(DIR)proto.h 
	$(CC) /c /Gs $(COPT) $(INLCUDES) /Fd$*.pdb /Fo$@ %s

$(OF)\protolin.obj : $(DIR)$$(@B).c     $(DIR)proto.h $(DIR)buffer.h $(DIR)generic.h $(DIR)protointerface.h $(DIR)ldf.h  $(DIR)ldf_parser.h $(DIR)protolin.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /Fd$*.pdb /Fo$@ %s

$(OF)\protointerface.obj:$(DIR)$$(@B).c $(DIR)proto.h $(DIR)buffer.h $(DIR)generic.h $(DIR)protointerface.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /Fd$*.pdb /Fo$@ %s

$(OF)\buffer.obj : $(DIR)$$(@B).c       $(DIR)buffer.h $(DIR)protointerface.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /Fd$*.pdb /Fo$@ %s

$(OF)\ldf.obj : $(DIR)$$(@B).c          $(DIR)ldf.h $(DIR)buffer.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /Fd$*.pdb /Fo$@ %s

$(OF)\ldf_parser.obj : $(DIR)$$(@B).c   $(DIR)ldf.h $(DIR)buffer.h $(DIR)generic.h $(DIR)ldf_parser.h $(DIR)protointerface.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /Fd$*.pdb /Fo$@ %s

$(OF)\$(BIN) : $(OF)\protolin.obj $(OF)\proto.obj $(OF)\protointerface.obj $(OF)\buffer.obj $(OF)\ldf.obj $(OF)\ldf_parser.obj
	link  $(LOPT) /def:..\proto.def /dll /out:"$@" $**


test: $(TST) $(TST)\$(TEXE)
	copy $(TST)\$(TEXE) .

$(TST):
	md $@

$(TST)\test.obj : $(DIR)$$(@B).c         $(DIR)ldf.h $(DIR)buffer.h $(DIR)generic.h $(DIR)ldf_parser.h $(DIR)protointerface_test.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /DTEST /Fd$*.pdb /Fo$@ %s

$(TST)\protointerface_test.obj : $(DIR)$$(@B).c $(DIR)protointerface_test.h $(DIR)generic.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /DTEST /Fd$*.pdb /Fo$@ %s

$(TST)\buffer.obj : $(DIR)$$(@B).c       $(DIR)buffer.h $(DIR)protointerface_test.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /DTEST /Fd$*.pdb /Fo$@ %s

$(TST)\ldf.obj : $(DIR)$$(@B).c          $(DIR)ldf.h $(DIR)buffer.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /DTEST /Fd$*.pdb /Fo$@ %s

$(TST)\ldf_parser.obj : $(DIR)$$(@B).c   $(DIR)ldf.h $(DIR)buffer.h $(DIR)generic.h $(DIR)ldf_parser.h $(DIR)protointerface_test.h
	$(CC) /c /Gs $(COPT) $(INLCUDES) /DTEST /Fd$*.pdb /Fo$@ %s

$(TST)\$(TEXE): $(TST)\test.obj $(TST)\protointerface_test.obj $(TST)\buffer.obj $(TST)\ldf.obj $(TST)\ldf_parser.obj
	link  $(LOPT) /out:"$@" $**

clean:
	-@if exist $(OF)  rd /s /q $(OF)  && echo Deleted $(OF)
	-@if exist $(TST) rd /s /q $(TST) && echo Deleted $(TST)
