# (C) 2003 XDA Developers  itsme@xs4all.nl
#
# $Header: /var/db/cvs/xdautils/leds/Makefile,v 1.14 2005/01/19 10:58:56 itsme Exp $
#
# note: commands should contain forward slashes
#       double quoted strings may contain dos-type backslashes in paths
#
# currently you have to manually switch the '300' and '420' in this file
# to switch between a ppc2002/ce3.00 and ppc2003/ce4.20 version of testpi.exe
#
out=../build
obj=../build/ce

include ../local.mak

cc=$(cesdk)/bin/clarm.exe
rc=$(cetools)/bin/rc.exe
#!!! do not name this variable 'link', it confuses the linker.
ld=$(cesdk)/bin/link.exe
libtool=$(cesdk)/bin/lib.exe

#!!!  no armv4 for 2002 sdk
include=$(ppcsdk)\include\armv4
lib=$(ppcsdk)\lib\armv4

# compiler flags
pbincs=/I "$(pbsrc420)\PRIVATE\WINCEOS\COREOS\NK\INC" /I "$(pbsrc420)\PUBLIC\COMMON\OAK\INC" /I "$(pbsrc420)\PUBLIC\COMMON\SDK\INC"

# /Zi /Od /Fd"$(out)" for debugging
# /O2      for release
cflags=/nologo /W3 /O2 /MC /c /Fo"$(obj)/" /I "$(stlevc)" $(pbincs) /I "..\include" /I "../dll" /I "../common"  /Fc"$(obj)/"
targetdefs=/D "ARM" /D "_ARM_" /D "SA1100" /D "ARMV4"
platformdefs=/D _WIN32_WCE=420 /D "WIN32_PLATFORM_PSPC=310" /D UNDER_CE=420 /D "UNICODE" /D "_UNICODE"
cdefs=/D "DEBUG" $(targetdefs) $(platformdefs)
dlldefs=/D "_USRDLL"

# linker flags
lddllflags=/entry:"_DllMainCRTStartup" /dll 
ldexeflags=/entry:"WinMainCRTStartup"
ldplatformflags=/subsystem:windowsce,3.00 /align:"4096" 
ldtargetflags=/MACHINE:ARM 
ldflags=/nologo /base:"0x00100000" /stack:0x10000,0x1000 $(ldtargetflags) $(ldplatformflags)
libpaths=/libpath:"$(lib)"

nodeflib=/nodefaultlib:libc.lib /nodefaultlib:libcd.lib /nodefaultlib:libcmt.lib /nodefaultlib:libcmtd.lib /nodefaultlib:msvcrt.lib /nodefaultlib:msvcrtd.lib /nodefaultlib:oldnames.lib

# rc flags
rcflags= /l 0x409 /d UNDER_CE=300 /d _WIN32_WCE=300 /d UNICODE /d _UNICODE /d NDEBUG /d WIN32_PLATFORM_PSPC=310 /d ARM /d _ARM_ 

all: \
	$(out)/ledtest.exe \
	$(out)/regbk.exe \
	$(out)/opendisk.exe \
	$(out)/tstbkl.exe \
	$(out)/vibrate.exe \
	$(out)/batt.exe \
	$(out)/setdevdata.exe \
	$(out)/tsttffs.exe \
	$(out)/tsttffswork.exe \
	$(out)/tststores.exe \
	$(out)/tstcpu.exe \
	$(out)/testpi.exe \
	$(out)/tstdsk.exe \
	$(out)/tstreg.exe \
	$(out)/tstdb.exe \
	$(out)/tstitsutils.exe

$(obj)/debug.obj: ../common/debug.cpp
	"$(cc)" $(cflags) $(cdefs) $^
$(obj)/stringutils.obj: ../common/stringutils.cpp
	"$(cc)" $(cflags) $(cdefs) $^
$(obj)/vectorutils.obj: ../common/vectorutils.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(obj)/vibrate.obj: vibrate.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/vibrate.exe: $(obj)/vibrate.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/tstbkl.obj: tstbkl.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/tstbkl.exe: $(obj)/tstbkl.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/opendisk.obj: opendisk.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/opendisk.exe: $(obj)/opendisk.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/regbk.obj: regbk.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/regbk.exe: $(obj)/regbk.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/ledtest.obj: ledtest.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/ledtest.exe: $(obj)/ledtest.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/batt.obj: batt.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/batt.exe: $(obj)/batt.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/tstitsutils.obj: tstitsutils.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/tstitsutils.exe: $(obj)/tstitsutils.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/tstdb.obj: tstdb.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/tstdb.exe: $(obj)/tstdb.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/tstreg.obj: tstreg.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/tstreg.exe: $(obj)/tstreg.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/tstdsk.obj: tstdsk.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/tstdsk.exe: $(obj)/tstdsk.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/tstcpu.obj: tstcpu.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(obj)/dotst.obj: dotst.S
	arm-wince-pe-gcc -c -o $@ $<

$(out)/tstcpu.exe: $(obj)/tstcpu.obj $(obj)/debug.obj $(obj)/stringutils.obj  $(obj)/dotst.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/tststores.obj: tststores.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/tststores.exe: $(obj)/tststores.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/tsttffswork.obj: tsttffswork.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/tsttffswork.exe: $(obj)/tsttffswork.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/tsttffs.obj: tsttffs.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/tsttffs.exe: $(obj)/tsttffs.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^

$(obj)/testpi.obj: testpi.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/testpi.exe: $(obj)/testpi.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) toolhelp.lib $(nodeflib) /out:$@ $^

$(obj)/setdevdata.obj: setdevdata.cpp
	"$(cc)" $(cflags) $(cdefs) $^

$(out)/setdevdata.exe: $(obj)/setdevdata.obj $(obj)/debug.obj $(obj)/stringutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^


clean:
	rm $(out)/ledtest.* $(obj)/ledtest.*

test:
	pput -f $(out)/ledtest.exe \windows
	prun ledtest.exe

get:
	pget -f \ledtest.log $(out)
	cat $(out)/ledtest.log

btest:
	pput -f $(out)/batt.exe \windows
	prun batt.exe

bget:
	pget -f \batt.log $(out)
	cat $(out)/batt.log

ptest:
	pput -f $(out)/testpi.exe \windows
	pdel \testpi.log
	prun testpi.exe

pget:
	pget -f \testpi.log $(out)
	cat $(out)/testpi.log

dtest:
	pput -f $(out)/tstdsk.exe \windows
	pdel \tstdsk.log
	prun tstdsk.exe

dget:
	pget -f \tstdsk.log $(out)
	cat $(out)/tstdsk.log

ftest:
	pput -f $(out)/tsttffs.exe \windows
	pdel \tsttffs.log
	prun tsttffs.exe

fget:
	pget -f \tsttffs.log $(out)
	cat $(out)/tsttffs.log

sdtest:
	pput -f $(out)/setdevdata.exe \windows
	-pdel \setdevdata.log
	-rm $(out)/setdevdata.log
	prun setdevdata.exe
	sleep 2
	prun setdevdata.exe -o TMOBILE -l ENG
	sleep 2
	pget -f \setdevdata.log $(out)
	cat $(out)/setdevdata.log


vtest:
	pput -f $(out)/vibrate.exe \windows
	prun vibrate.exe

