# This makefile is to be used for compilation of Crafty 19.x with gcc
# under Windows. Tested with Crafty 19.2 and 19.6 and with Dev-C++
# 4.9.8.5, which includes gcc/g++ 3.2
all: NT_i386

NT_i386:
	$(MAKE) target=NT_i386 \
		CC=gcc CXX=g++ CYY=g++\
		CFLAGS='$(CFLAGS) -fomit-frame-pointer -O3' \
		CXFLAGS=$(CFLAGS) \
		LDFLAGS=$(LDFLAGS) \
		opt='$(opt) -DCOMPACT_ATTACKS -DUSE_ATTACK_FUNCTIONS \
		     -DUSE_ASSEMBLY_A -DUSE_ASSEMBLY_B' \
		asm='X86.o' \
		crafty-make

NT_i386_alt:
# an alternative, but I got slightly better results
# with AMD Athlon 900 and Win 2000 with the other option, see above.
	$(MAKE) target=NT_i386 \
		CC=gcc CXX=g++ CYY=g++\
		CFLAGS='$(CFLAGS) -fomit-frame-pointer -m486 -O3' \
		CXFLAGS=$(CFLAGS) \
		LDFLAGS=$(LDFLAGS) \
		opt='$(opt) -DCOMPACT_ATTACKS -DUSE_ATTACK_FUNCTIONS \
		     -DUSE_ASSEMBLY_A -DUSE_ASSEMBLY_B' \
		asm='X86.o' \
		crafty-make opts = $(opt) -D$(target)

opts = $(opt) -D$(target)

objects = searchr.o search.o thread.o searchmp.o repeat.o next.o nexte.o      \
       nextr.o history.o quiesce.o evaluate.o movgen.o make.o unmake.o hash.o \
       attacks.o swap.o boolean.o utility.o valid.o probe.o book.o data.o     \
       drawn.o edit.o epd.o epdglue.o init.o input.o interupt.o iterate.o     \
       main.o option.o output.o phase.o ponder.o preeval.o resign.o root.o    \
       learn.o setboard.o test.o testepd.o time.o validate.o annotate.o       \
       analyze.o evtest.o bench.o egtb.o dgt.o $(asm)
 
includes = data.h chess.h

epdincludes = epd.h epddefs.h epdglue.h

eval_users = data.o evaluate.o preeval.o 

crafty-make:
	@$(MAKE) \
		opt='$(opt)' asm='$(asm)' \
		crafty

crafty:	$(objects) 
	$(CYY) $(LDFLAGS) -o crafty $(objects)
#	$(CYY) $(LDFLAGS) -o crafty $(objects) -lm  $(LIBS)

dgt:    dgtdrv.o
	@cc -O -o dgt dgtdrv.c

egtb.o: egtb.cpp
	$(CXX) -c $(CXFLAGS) $(opts) egtb.cpp

clean:
	-rm -f *.o crafty X86-elf.X X86-aout.S

$(objects): $(includes)

$(eval_users): evaluate.h

epd.o epdglue.o option.o init.o : $(epdincludes)

.c.o:
	$(CC) $(CFLAGS) $(opts) -c $*.c

.s.o:
	$(AS) $(AFLAGS) --defsym ALIGN=4 -o $*.o $*.s 
