# (C) 2003 XDA Developers  itsme@xs4all.nl
#
# $Header: /var/db/cvs/xdautils/dll/Makefile,v 1.11 2005/01/14 02:00:21 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"
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 

all: $(out)/itsutils.dll $(out)/sprapiutils.dll

$(obj)/itsutils.obj: itsutils.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) /D "ITSUTILS_EXPORTS" ItsUtils.cpp

$(obj)/debug.obj: ../common/debug.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) ../common/debug.cpp

$(obj)/stringutils.obj: ../common/stringutils.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) ../common/stringutils.cpp

$(obj)/vectorutils.obj: ../common/vectorutils.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) ../common/vectorutils.cpp

$(obj)/gsmdevice.obj: gsmdevice.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) gsmdevice.cpp

# NOTE: these are the only files with relevant diferences between ce4.20 and ce3.00
#     ( or ppc2003 and ppc2002 )
$(obj)/kernelinfo420.obj: kernelinfo.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) kernelinfo.cpp /Fo"$(obj)/kernelinfo420.obj"
$(obj)/kernelinfo300.obj: kernelinfo.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef300) $(dlldefs) $(pb300incs) kernelinfo.cpp /Fo"$(obj)/kernelinfo300.obj"

$(obj)/tffsreader.obj: tffsreader.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) /D "ITSUTILS_EXPORTS" tffsreader.cpp

$(obj)/sprapiutils.obj: sprapiutils.cpp
	"$(cc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) /D "SPRAPIUTILS_EXPORTS" sprapiutils.cpp


#  /pdb:"build/itsutils.pdb" /debug  
#     $(obj)/ril.lib -- removed to be more non-phone edition device compatible
$(out)/itsutils.dll: $(obj)/itsutils.obj $(obj)/gsmdevice.obj $(obj)/debug.obj $(obj)/stringutils.obj $(obj)/kernelinfo420.obj  $(obj)/kernelinfo300.obj $(obj)/tffsreader.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) $(lddllflags) /out:$@ $^

$(out)/sprapiutils.dll: $(obj)/sprapiutils.obj
	"$(ld)" $(libpaths) $(ldflags) $(extralibs) $(nodeflib) $(lddllflags) /out:$@ $^

#$(obj)/ril.lib:
#	make -C ../libril

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


