#**************************************************************************
# Project: Nintendo DS Emulator [dsemu]                                   *
# Author:  Imran Nazar, 2004                                              *
# File:    Makefile, Windows [Makefile.win]                               *
#**************************************************************************

CLPATH = E:\vc7
PSDKPATH = E:\vc7\psdk
INCFILES = /I$(CLPATH)\include /I$(PSDKPATH)\include
LIBFILES = /libpath:$(CLPATH)\lib /libpath:$(PSDKPATH)\lib

CC = cl /c /Ox /Yd /nologo $(INCFILES)
LINK = link /nologo $(LIBFILES)
LINKDBG = link /debug /nologo $(LIBFILES)
RC = rc $(INCFILES)
DELTREE = del /s /q

all: config.h dsemu.exe log.dll gba.dll ds.dll logfile

logfile:
	copy dsemu.ini ..\bin
	copy bioshack.bin ..\bin
	cd ..\bin && del *.lib *.exp *.ilk *.pdb

config.h:
	echo #define __CONFIG_H_ > config.h
	echo #define WORDS_BIGENDIAN 0 >> config.h
	echo #define DSEMU_VERSION_STR "DSemu v0.0.3c" >> config.h
	if not exist ..\bin mkdir ..\bin

dsemu.exe: main.obj main.res plugin.obj win.obj
	$(DELTREE) ..\bin
	$(LINKDBG) /out:..\bin\$@ $** kernel32.lib user32.lib gdi32.lib ole32.lib comdlg32.lib oleaut32.lib comctl32.lib winmm.lib shell32.lib

gba.dll: glgba.obj gba.res arm7x86.obj mmu.obj dma.obj int.obj arm7dasm.obj dbgout.obj gladius-gpu.obj unzip.obj
	$(LINKDBG) /dll /out:..\bin\$@ /def:gba.def $** opengl32.lib glu32.lib glaux.lib kernel32.lib gdi32.lib user32.lib

ds.dll: glds.obj ds.res arm9x86.obj arm7x86.obj dsmmumain.obj dsmmusub.obj dsdma.obj dsint.obj arm9dasm.obj arm7dasm.obj dbgout.obj gladius-dsgpu.obj unzip.obj
	$(LINKDBG) /dll /out:..\bin\$@ /def:ds.def $** opengl32.lib glu32.lib glaux.lib kernel32.lib gdi32.lib user32.lib

log.dll: log.obj log.res
	$(LINKDBG) /dll /out:..\bin\$@ /def:log.def $** kernel32.lib user32.lib


main.obj: main.c log.h vtbl.h
	$(CC) main.c

plugin.obj: plugin.c plugin.h vtbl.h
	$(CC) plugin.c

win.obj: win.c win.h res.h
	$(CC) win.c

main.res: main.rc
	$(RC) main.rc

arm7dasm.obj: arm7dasm.c arm7dasm.h
	$(CC) arm7dasm.c

arm9dasm.obj: arm9dasm.c arm9dasm.h
	$(CC) arm9dasm.c

arm7.obj: arm7.c arm.h arm7.h arm7func.h vtbl.h defs.h cache.h
	$(CC) arm7.c

arm7x86.obj: arm7x86.c thumb7x86.c arm.h arm7.h arm7func.h vtbl.h defs.h cache.h
	$(CC) arm7x86.c

arm9x86.obj: arm9x86.c thumb9x86.c arm.h arm7.h arm9func.h vtbl.h defs.h cache.h
	$(CC) arm9x86.c

mmu.obj: mmu.c mmu.h vtbl.h defs.h cache.h
	$(CC) mmu.c

dsmmumain.obj: dsmmumain.c dsmmumain.h vtbl.h defs.h cache.h
	$(CC) dsmmumain.c

dsmmusub.obj: dsmmusub.c dsmmusub.h vtbl.h defs.h cache.h
	$(CC) dsmmusub.c

dma.obj: dma.c dma.h
	$(CC) dma.c

dsdma.obj: dsdma.c dma.h
	$(CC) dsdma.c

int.obj: int.c int.h
	$(CC) int.c

dsint.obj: dsint.c int.h
	$(CC) dsint.c

dbgout.obj: dbgout.c dbgout.h font5x7.h
	$(CC) dbgout.c

gba.obj: gba.c gba.h key.h ioreg.h
	$(CC) gba.c

glgba.obj: glgba.c gba.h key.h ioreg.h
	$(CC) glgba.c

ds.obj: ds.c gba.h key.h ioreg.h
	$(CC) ds.c

glds.obj: glds.c gba.h key.h ioreg.h
	$(CC) glds.c

gpu.obj: gpu.c gpu.h vtbl.h defs.h font5x7.h res.h
	$(CC) gpu.c

dsgpu.obj: dsgpu.c gpu.h vtbl.h defs.h font5x7.h res.h
	$(CC) dsgpu.c

gladius-gpu.obj: gladius-gpu.c gpu.h vtbl.h defs.h font5x7.h res.h
	$(CC) gladius-gpu.c

gladius-dsgpu.obj: gladius-dsgpu.c gpu.h vtbl.h defs.h font5x7.h res.h
	$(CC) gladius-dsgpu.c

unzip.obj: unzip.cpp unzip.h
	$(CC) unzip.cpp

gba.res: gba.rc
	$(RC) gba.rc

ds.res: ds.rc
	$(RC) ds.rc

log.obj: log.c log.h
	$(CC) log.c

log.res: log.rc
	$(RC) log.rc

clean:
	del config.h *.obj *.lib *.exp *.res
	$(DELTREE) ..\bin
	rmdir ..\bin

#release:
#	$(DELTREE) ..\bin
#	$(LINK) /out:..\bin\dsemu.exe main.obj main.res plugin.obj win.obj kernel32.lib user32.lib gdi32.lib ole32.lib comdlg32.lib oleaut32.lib comctl32.lib winmm.lib shell32.lib
#	$(LINK) /dll /def:gba.def /out:..\bin\gba.dll glgba.obj gba.res arm7x86.obj mmu.obj dma.obj int.obj arm7dasm.obj dbgout.obj gladius-gpu.obj unzip.obj opengl32.lib glu32.lib glaux.lib kernel32.lib gdi32.lib user32.lib
#	$(LINK) /dll /def:ds.def  /out:..\bin\ds.dll glds.obj ds.res arm7x86.obj dsmmu.obj dsdma.obj dsint.obj arm7dasm.obj dbgout.obj gladius-dsgpu.obj unzip.obj opengl32.lib glu32.lib glaux.lib kernel32.lib gdi32.lib user32.lib
#	$(LINK) /dll /def:log.def /out:..\bin\log.dll log.obj log.res kernel32.lib user32.lib
#	copy dsemu.ini ..\bin
#	copy bioshack.bin ..\bin

#***EOF********************************************************************

