# (C) 2003 XDA Developers  itsme@xs4all.nl
#
# $Header: /var/db/cvs/xdautils/src/Makefile,v 1.23 2005/01/14 02:00:52 itsme Exp $
#
out=../build
obj=../build/w32

include ../local.mak

# problem with mspdb71.dll not found : 

cc=$(vc7)/bin/cl.exe
ld=$(vc7)/bin/link.exe

ccdefs=/D WIN32 /D NDEBUG /D _CONSOLE /D _DEBUG

ccincs=/I "$(mssdk)\include" /I "$(vc7)/include" /I "$(ActiveSyncSupport)/inc" /I "$(spipc)" /I "$(spcore)" /I "../dll" /I "../include" /I "../common" /I "$(boost)"

#   - add '/Zi' when debugging is needed
cflags=/Zi /Wall /wd4710 /wd4217 /wd4668 /wd4820 /wd4619 /EHsc /wd4127 /wd4061
#  4127 : conditional expression is constant
#  4061 : enumerate .. in switch not explicitly handled
#   - add '/debug' when debugging is needed
ldflags=/debug /incremental:no

libpaths= /libpath:"$(mssdk)/lib" /libpath:"$(vc7)/lib" /libpath:"$(ActiveSyncSupport)/lib"
extralibs=rapi.lib user32.lib  advapi32.lib

.SUFFIXES:
.SUFFIXES: .cpp .obj .exe

$(obj)/%.obj: %.cpp
	"$(cc)" $(cflags) /c $(ccdefs) $(ccincs) $< /Fo"$(obj)/"
$(obj)/%.obj: ../common/%.cpp
	"$(cc)" $(cflags) /c $(ccdefs) $(ccincs) $< /Fo"$(obj)/"

$(out)/%.exe: $(obj)/%.obj
	"$(ld)" $(ldflags) $(libpaths) $(extralibs) $^ /out:$@

all: \
    $(out)/dump.exe \
    $(out)/pps.exe \
    $(out)/pkill.exe \
    $(out)/pdel.exe \
	$(out)/pmemdump.exe \
	$(out)/pcalladdr.exe \
    $(out)/pdblist.exe \
    $(out)/pdir.exe \
    $(out)/pget.exe \
	$(out)/pput.exe \
    $(out)/pregdmp.exe \
    $(out)/prun.exe \
    $(out)/pmemmap.exe \
	$(out)/pspipcdump.exe \
    $(out)/pdebug.exe \
    $(out)/psdread.exe \
    $(out)/pdocread.exe \
	$(out)/psdwrite.exe \
    $(out)/psetmem.exe \
    $(out)/pgsmdump.exe \
	$(out)/pmkdir.exe \
    $(out)/pcmon.exe \
    $(out)/pnewbmp.exe \
	$(out)/pregutl.exe \
    $(out)/preboot.exe \
    $(out)/pnewbootloader.exe \
	$(out)/psynctime.exe \
    $(out)/ppostmsg.exe \
	$(out)/regutl.exe \
	$(out)/pflashrom.exe \
	$(out)/pgsmbuf.exe 

$(obj)/debug.obj:      ../common/debug.cpp
$(obj)/vectorutils.obj: ../common/vectorutils.cpp
$(obj)/stringutils.obj: ../common/stringutils.cpp
$(obj)/crc32.obj:      ../common/crc32.cpp
$(obj)/checkdll.obj:   checkdll.cpp
$(obj)/dump.obj:       dump.cpp
#$(obj)/tstaudio.obj:   tstaudio.cpp
$(obj)/pps.obj:        pps.cpp
$(obj)/pkill.obj:      pkill.cpp
$(obj)/psynctime.obj:      psynctime.cpp
$(obj)/preboot.obj:      preboot.cpp
$(obj)/ppostmsg.obj:      ppostmsg.cpp
$(obj)/pdel.obj:       pdel.cpp
$(obj)/pmemdump.obj:   pmemdump.cpp
$(obj)/pcalladdr.obj:   pcalladdr.cpp
$(obj)/pgsmbuf.obj:   pgsmbuf.cpp
$(obj)/rapiinit.obj:   rapiinit.cpp
$(obj)/pdblist.obj:    pdblist.cpp
$(obj)/pdir.obj:       pdir.cpp
$(obj)/pmkdir.obj:     pmkdir.cpp
$(obj)/pput.obj:       pput.cpp
$(obj)/pregdmp.obj:    pregdmp.cpp
$(obj)/pregutl.obj:    pregutl.cpp
	"$(cc)" /DWINCEREGUTL $(cflags) /c $(ccdefs) $(ccincs) $< /Fo"$@"
$(obj)/regutl.obj:    pregutl.cpp
	"$(cc)" /D_UNICODE /DUNICODE /DWIN32REGUTL $(cflags) /c $(ccdefs) $(ccincs) $< /Fo"$@"
$(obj)/prun.obj:       prun.cpp
$(obj)/pmemmap.obj:    pmemmap.cpp
$(obj)/pspipcdump.obj: pspipcdump.cpp
$(obj)/pdebug.obj:     pdebug.cpp
$(obj)/psdread.obj:    psdread.cpp
$(obj)/pdocread.obj:    pdocread.cpp
$(obj)/psetmem.obj:    psetmem.cpp
$(obj)/pcmon.obj:      pcmon.cpp
$(obj)/pnewbmp.obj:    pnewbmp.cpp
$(obj)/pnewbootloader.obj:    pnewbootloader.cpp

$(out)/dump.exe:       $(obj)/dump.obj       $(obj)/debug.obj $(obj)/stringutils.obj
#$(out)/tstaudio.exe:       $(obj)/tstaudio.obj       $(obj)/debug.obj $(obj)/stringutils.obj winmm.lib
$(out)/pps.exe:        $(obj)/pps.obj        $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pkill.exe:      $(obj)/pkill.obj      $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/psynctime.exe:      $(obj)/psynctime.obj      $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(ldflags) /subsystem:windows $(libpaths) $(extralibs) $^ /out:$@

$(out)/preboot.exe:      $(obj)/preboot.obj      $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/ppostmsg.exe:      $(obj)/ppostmsg.obj      $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pdel.exe:       $(obj)/pdel.obj       $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pmemdump.exe:   $(obj)/pmemdump.obj   $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pcalladdr.exe:   $(obj)/pcalladdr.obj   $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pgsmbuf.exe:   $(obj)/pgsmbuf.obj   $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj

$(out)/pgsmdump.exe:   $(obj)/pgsmdump.obj   $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pdblist.exe:    $(obj)/pdblist.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pdir.exe:       $(obj)/pdir.obj       $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pmkdir.exe:       $(obj)/pmkdir.obj       $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pget.exe:       $(out)/pput.exe
	cp $(out)/pput.exe $(out)/pget.exe
$(out)/pput.exe:       $(obj)/pput.obj       $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pregdmp.exe:    $(obj)/pregdmp.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pregutl.exe:    $(obj)/pregutl.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj $(obj)/vectorutils.obj
$(out)/regutl.exe:    $(obj)/regutl.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj $(obj)/vectorutils.obj
$(out)/prun.exe:       $(obj)/prun.obj       $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pmemmap.exe:    $(obj)/pmemmap.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pspipcdump.exe: $(obj)/pspipcdump.obj $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pdebug.exe:     $(obj)/pdebug.obj     $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pdocread.exe:    $(obj)/pdocread.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/psdread.exe:    $(obj)/psdread.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/psdwrite.exe:    $(out)/psdread.exe
	cp $(out)/psdread.exe $(out)/psdwrite.exe
$(out)/psetmem.exe:    $(obj)/psetmem.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pcmon.exe:      $(obj)/pcmon.obj      $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pnewbmp.exe:    $(obj)/pnewbmp.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pnewbootloader.exe: $(obj)/pnewbootloader.obj    $(obj)/checkdll.obj $(obj)/debug.obj $(obj)/stringutils.obj
$(out)/pflashrom.exe: $(out)/pnewbootloader.exe
	cp $(out)/pnewbootloader.exe $(out)/pflashrom.exe

clean:
	rm $(out)/*.exe $(out)/*.pdb $(obj)/*.obj

