# (C) 2003 XDA Developers  itsme@xs4all.nl
#
# $Header: /var/db/cvs/xdautils/rilhook/Makefile,v 1.13 2005/01/19 11:25:37 itsme Exp $
#
# note: commands should contain forward slashes
#       double quoted strings may contain dos-type backslashes in paths
out=../build
obj=../build/ce

include ../local.mak

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

# compiler flags
pb300incs=/I "$(pbsrc300)\PRIVATE\WINCEOS\COREOS\NK\INC" /I "$(pbsrc300)\PUBLIC\COMMON\OAK\INC" /I "$(pbsrc300)\PUBLIC\COMMON\SDK\INC"
pb420incs=/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)" /I "..\include" /I "../libril" /I "../common" /I "../dll"
targetdefs=/D "ARM" /D "_ARM_" /D "ARMV4"
pmdef300=/D _WIN32_WCE=300 /D "WIN32_PLATFORM_PSPC=310" /D UNDER_CE=300
pmdef420=/D _WIN32_WCE=420 /D "WIN32_PLATFORM_PSPC=400" /D UNDER_CE=420
cdefs=$(targetdefs) /D "UNICODE" /D "_UNICODE"
dlldefs=/D "_USRDLL"

# linker flags
lddllflags=/entry:"_DllMainCRTStartup" /dll  /base:"0x00100000"
ldexeflags=/entry:"WinMainCRTStartup" /base:"0x00010000"
ldplatformflags=/subsystem:windowsce,3.00 /align:"4096" 
ldtargetflags=/MACHINE:ARM 
ldflags=/nologo /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

extralibs=toolhelp.lib 

# no implicit rules.
.SUFFIXES:

all: $(out)/extendril.dll $(out)/loadrilextension.exe $(out)/unloadrilextension.exe $(out)/riltest.exe $(out)/tstril2.exe

$(obj)/extendril.obj: extendril.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $(dlldefs) $^
$(obj)/debug.obj: ../common/debug.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $^
$(obj)/stringutils.obj: ../common/stringutils.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $^
$(obj)/RilClass.obj: RilClass.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) /D "_HAVE_RIL" $^

$(out)/extendril.dll: $(obj)/extendril.obj $(obj)/debug.obj $(obj)/stringutils.obj rilhook.o
	"$(ld)" $(libpaths) $(ldflags) $(nodeflib) $(lddllflags) /out:$@ $^

$(obj)/loadrilextension.obj: loadrilextension.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $^

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


$(obj)/tstril2.obj: tstril2.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $^

$(out)/tstril2.exe: $(obj)/tstril2.obj $(obj)/debug.obj $(obj)/stringutils.obj $(obj)/RilClass.obj  $(obj)/ril.lib
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) /out:$@ $^


$(obj)/unloadrilextension.obj: unloadrilextension.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $^

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

$(obj)/riltest.obj: riltest.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $^
$(obj)/ril.lib:
	make -C ../libril

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

# rilhook.o: rilhook.S
#     arm-coff-gcc -c  rilhook.S

clean:
	rm $(out)/itsutils.dll $(out)/sprapiutils.dll $(obj)/itsutils.obj $(obj)/debug.obj $(obj)/stringutils.obj $(obj)/gsmdevice.obj $(obj)/sprapiutils.obj

load: all
	pput -f $(out)/extendril.dll \windows
	pput -f $(out)/loadrilextension.exe \windows
	pdel \loadril.log \extendril.log
	prun loadrilextension

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

get:  getriltest getloadril getextendril

getriltest:
	echo -------------------------------------------
	-pget -f \riltest.log $(out)
	-cat $(out)/riltest.log

getloadril:
	echo -------------------------------------------
	-pget -f \loadril.log $(out)
	-cat $(out)/loadril.log

getextendril:
	echo -------------------------------------------
	-pget -f \extendril.log $(out)
	-cat $(out)/extendril.log

test2:
	pkill tstril2.exe
	pput -f $(out)/tstril2.exe \windows
	pdel \tstril2.log
	prun tstril2.exe

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


