
#	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-
#
#	Gerbil
#
#	Copyright (c) 2001, Bruce Moreland.  All rights reserved.
#
#	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-
#
#	This file is part of the Gerbil chess program project.
#
#	Gerbil is free software; you can redistribute it and/or modify it under
#	the terms of the GNU General Public License as published by the Free
#	Software Foundation; either version 2 of the License, or (at your option)
#	any later version.
#
#	Gerbil is distributed in the hope that it will be useful, but WITHOUT ANY
#	WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
#	FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
#	details.
#
#	You should have received a copy of the GNU General Public License along
#	with Gerbil; if not, write to the Free Software Foundation, Inc.,
#	59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-

!include "paths.mak"

!if "$(DEBUG)" == ""
CFLAGS = -nologo -WX -W3 -Oax2 -I $(INCLUDE) -I $(SRC) -I $(ENGINE) -Zi
OUTD = $(ROOT)\ship
!else
CFLAGS = -nologo -WX -W3 -Od -DDEBUG -Zi -I $(INCLUDE) -I $(SRC) -I $(ENGINE)
OUTD = $(ROOT)\debug
!endif

!if "$(COD)" != ""
CFLAGS = $(CFLAGS) -Fc
!endif

!if "$(ASM)" != ""
CFLAGS = $(CFLAGS) -Fa
!endif

GERBIL = gerbil

!if "$(LOSERS)" != ""
CFLAGS = $(CFLAGS) -DLOSERS
OUTD = $(ROOT)\losers
GERBIL = lgerbil
!endif

GOAL =		$(OUTD)\$(GERBIL).exe $(OUTD)\epd2wb.exe

OCORE = 	$(OUTD)\engine.obj $(OUTD)\initcon.obj $(OUTD)\debug.obj \
			$(OUTD)\static.obj $(OUTD)\attack.obj $(OUTD)\makemove.obj \
			$(OUTD)\hash.obj $(OUTD)\prot_e.obj $(OUTD)\book.obj \
			$(OUTD)\think.obj $(OUTD)\gen.obj $(OUTD)\winlayer.obj

OIFACE =	$(OUTD)\winboard.obj $(OUTD)\ethread.obj $(OUTD)\prot_i.obj

ONORMAL =	$(OUTD)\search.obj $(OUTD)\eval.obj $(OUTD)\pawns.obj

OLOSERS =	$(OUTD)\losers.obj

!if "$(LOSERS)" == ""
OBJ =		$(OCORE) $(OIFACE) $(ONORMAL)
!else
OBJ =		$(OCORE) $(OIFACE) $(OLOSERS)
!endif

goal:		$(GOAL)

ENGINE = $(SRC)\engine
WINBOARD = $(SRC)\winboard
UTIL = $(SRC)\util
LOSERSD = $(SRC)\losers

$(OUTD)\engine.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\winlayer.obj: $(ENGINE)\$$(@B).c $(ENGINE)\engine.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\initcon.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\debug.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\static.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\gen.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\attack.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\makemove.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\pawns.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\eval.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\search.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\think.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\winboard.obj:	$(WINBOARD)\$$(@B).c $(SRC)\gproto.h \
	$(WINBOARD)\winboard.h
	cl -c $(CFLAGS) $(WINBOARD)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\ethread.obj:	$(WINBOARD)\$$(@B).c $(SRC)\gproto.h \
	$(WINBOARD)\winboard.h
	cl -c $(CFLAGS) $(WINBOARD)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\prot_e.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\prot_i.obj:	$(WINBOARD)\$$(@B).c $(WINBOARD)\winboard.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(WINBOARD)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\book.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\hash.obj:	$(ENGINE)\$$(@B).c $(ENGINE)\engine.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(ENGINE)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\losers.obj:	$(LOSERSD)\$$(@B).c $(ENGINE)\engine.h $(SRC)\gproto.h
	cl -c $(CFLAGS) $(LOSERSD)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\$(GERBIL).exe:	$(OBJ)
	link $(OBJ) -libpath:$(LIB) -subsystem:console -out:$(OUTD)\$(GERBIL).exe /DEBUG /DEBUGTYPE:CV /FIXED:no /MAP

$(OUTD)\epd2wb.obj:	$(UTIL)\$$(@B).c
	cl -c $(CFLAGS) $(UTIL)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\answer.obj:	$(UTIL)\$$(@B).c
	cl -c $(CFLAGS) $(UTIL)\$(@B).c /Fo$(OUTD)\$(@B)

$(OUTD)\epd2wb.exe:	$(OUTD)\$$(@B).obj $(OUTD)\answer.obj
	link $(OUTD)\$(@B).obj $(OUTD)\answer.obj -libpath:$(LIB) -subsystem:console -out:$(OUTD)\$(@B).exe /DEBUG /DEBUGTYPE:CV

clean:
	-del $(OUTD)\*.obj $(OUTD)\*.ilk $(OUTD)\*.opt
	-del $(OUTD)\*.map $(OUTD)\*.pdb
	-del $(GOAL)
