all: fc-solve.exe fc-solve-debug.exe

OFLAGS=/Og2 /DFCS_STATE_STORAGE=FCS_STATE_STORAGE_INTERNAL_HASH /DWIN32
DFLAGS=$(OFLAGS) /DDEBUG
INCLUDES=card.h config.h fcs.h fcs_dm.h fcs_enums.h fcs_hash.h fcs_isa.h fcs_move.h fcs_user.h md5.h move.h preset.h state.h pqueue.h
CC=cl


caas.obj: caas.c $(INCLUDES)
	$(CC) /c /Focaas.obj $(OFLAGS) caas.c

caas-debug.obj: caas.c $(INCLUDES)
	$(CC) /c /Focaas-debug.obj $(DFLAGS) caas.c

card.obj: card.c $(INCLUDES)
	$(CC) /c /Focard.obj $(OFLAGS) card.c

card-debug.obj: card.c $(INCLUDES)
	$(CC) /c /Focard-debug.obj $(DFLAGS) card.c

fcs_dm.obj: fcs_dm.c $(INCLUDES)
	$(CC) /c /Fofcs_dm.obj $(OFLAGS) fcs_dm.c

fcs_dm-debug.obj: fcs_dm.c $(INCLUDES)
	$(CC) /c /Fofcs_dm-debug.obj $(DFLAGS) fcs_dm.c

fcs_hash.obj: fcs_hash.c $(INCLUDES)
	$(CC) /c /Fofcs_hash.obj $(OFLAGS) fcs_hash.c

fcs_hash-debug.obj: fcs_hash.c $(INCLUDES)
	$(CC) /c /Fofcs_hash-debug.obj $(DFLAGS) fcs_hash.c

fcs_isa.obj: fcs_isa.c $(INCLUDES)
	$(CC) /c /Fofcs_isa.obj $(OFLAGS) fcs_isa.c

fcs_isa-debug.obj: fcs_isa.c $(INCLUDES)
	$(CC) /c /Fofcs_isa-debug.obj $(DFLAGS) fcs_isa.c

freecell.obj: freecell.c $(INCLUDES)
	$(CC) /c /Fofreecell.obj $(OFLAGS) freecell.c

freecell-debug.obj: freecell.c $(INCLUDES)
	$(CC) /c /Fofreecell-debug.obj $(DFLAGS) freecell.c

intrface.obj: intrface.c $(INCLUDES)
	$(CC) /c /Fointrface.obj $(OFLAGS) intrface.c

intrface-debug.obj: intrface.c $(INCLUDES)
	$(CC) /c /Fointrface-debug.obj $(DFLAGS) intrface.c

main.obj: main.c $(INCLUDES)
	$(CC) /c /Fomain.obj $(OFLAGS) main.c

main-debug.obj: main.c $(INCLUDES)
	$(CC) /c /Fomain-debug.obj $(DFLAGS) main.c

md5c.obj: md5c.c $(INCLUDES)
	$(CC) /c /Fomd5c.obj $(OFLAGS) md5c.c

md5c-debug.obj: md5c.c $(INCLUDES)
	$(CC) /c /Fomd5c-debug.obj $(DFLAGS) md5c.c

move.obj: move.c $(INCLUDES)
	$(CC) /c /Fomove.obj $(OFLAGS) move.c

move-debug.obj: move.c $(INCLUDES)
	$(CC) /c /Fomove-debug.obj $(DFLAGS) move.c

preset.obj: preset.c $(INCLUDES)
	$(CC) /c /Fopreset.obj $(OFLAGS) preset.c

preset-debug.obj: preset.c $(INCLUDES)
	$(CC) /c /Fopreset-debug.obj $(DFLAGS) preset.c

scans.obj: scans.c $(INCLUDES)
	$(CC) /c /Foscans.obj $(OFLAGS) scans.c

scans-debug.obj: scans.c $(INCLUDES)
	$(CC) /c /Foscans-debug.obj $(DFLAGS) scans.c

state.obj: state.c $(INCLUDES)
	$(CC) /c /Fostate.obj $(OFLAGS) state.c

state-debug.obj: state.c $(INCLUDES)
	$(CC) /c /Fostate-debug.obj $(DFLAGS) state.c

pqueue.obj: pqueue.c $(INCLUDES)
	$(CC) /c /Fopqueue.obj $(OFLAGS) pqueue.c

pqueue-debug.obj: pqueue.c $(INCLUDES)
	$(CC) /c /Fopqueue-debug.obj $(DFLAGS) pqueue.c

fc-solve.exe: caas.obj card.obj fcs_dm.obj fcs_hash.obj fcs_isa.obj freecell.obj intrface.obj main.obj md5c.obj move.obj preset.obj scans.obj state.obj pqueue.obj
	$(CC) /Fefc-solve.exe /F0x2000000 caas.obj card.obj fcs_dm.obj fcs_hash.obj fcs_isa.obj freecell.obj intrface.obj main.obj md5c.obj move.obj preset.obj scans.obj state.obj pqueue.obj

fc-solve-debug.exe: caas-debug.obj card-debug.obj fcs_dm-debug.obj fcs_hash-debug.obj fcs_isa-debug.obj freecell-debug.obj intrface-debug.obj main-debug.obj md5c-debug.obj move-debug.obj preset-debug.obj scans-debug.obj state-debug.obj pqueue-debug.obj
	$(CC) /Fefc-solve-debug.exe /F0x2000000 caas-debug.obj card-debug.obj fcs_dm-debug.obj fcs_hash-debug.obj fcs_isa-debug.obj freecell-debug.obj intrface-debug.obj main-debug.obj md5c-debug.obj move-debug.obj preset-debug.obj scans-debug.obj state-debug.obj pqueue-debug.obj
clean: 	del *.obj *.exe
