# (C) 2003 XDA Developers  itsme@xs4all.nl
#
# $Header$
#
# note: commands should contain forward slashes
#       double quoted strings may contain dos-type backslashes in paths
out=../build
obj=../build/itsutils_dll$(if $(D),d)

include ../local.mak

# /Zi /Od /Fd"$(out)" for debugging
# /O2      for release
cflags=/nologo /W3 /c /Fo"$(obj)/" /I "../include" /I "../libril" /I "../common" /EHsc /FI ../common/nowarn.h  /I ../include/msvc /I "$(boost)" /I "$(ActiveSyncSupport)/inc" /I . /D_BOOST_LITE /DNOMINMAX
cflags+=$(if $(D),-DWITHDEBUG)

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
pmdef500=/D _WIN32_WCE=500 /D "WIN32_PLATFORM_PSPC" /D UNDER_CE=500
cdefs=$(targetdefs) /D "UNICODE" /D "_UNICODE" /D "NDEBUG"
cdefs+=/D _CRT_SECURE_NO_WARNINGS /D _SECURE_SCL=0 /D _HAS_ITERATOR_DEBUGGING=0
dlldefs=/D "_USRDLL"

# linker flags
lddllflags= /dll  /base:"0x00100000"
ldexeflags=/entry:"WinMainCRTStartup" /base:"0x00010000"
ldplatformflags=/subsystem:windowsce,3.00 /align:"4096" 
ldflags=/nologo /stack:0x10000,0x1000 $(celdtargetflags) $(ldplatformflags)
libpaths=/libpath:"$(celib)" /libpath:"$(ppclib)"

extralibs+=coredll.lib corelibc.lib

all: $(obj) $(out)/itsutils$(if $(D),d).dll
$(obj):
	mkdir -p $(obj)

$(obj)/%.obj: ../common/%.cpp
	@"$(cecc)" $(pb420incs) $(cflags) $(cdefs) $(pmdef420) $(dlldefs) /D "ITSUTILS_EXPORTS" $^
$(obj)/%.obj: %.cpp
	@"$(cecc)" $(pb420incs) $(cflags) $(cdefs) $(pmdef420) $(dlldefs) /D "ITSUTILS_EXPORTS" $^

cever_deps.h: cever_deps.cpp
	perl generate_cever_h.pl cever_deps.cpp > cever_deps.h
# NOTE: these are the only files with relevant diferences between ce4.20 and ce3.00
#     ( or ppc2003 and ppc2002 )
$(obj)/cever_deps300.obj: cever_deps.cpp cever_deps.h
	@"$(cecc)" $(pb300incs) $(cflags) $(cdefs) $(pmdef300) $(dlldefs) cever_deps.cpp /Fo"$(obj)/cever_deps300.obj"
$(obj)/cever_deps420.obj: cever_deps.cpp cever_deps.h
	@"$(cecc)" $(pb420incs) $(cflags) $(cdefs) $(pmdef420) $(dlldefs) cever_deps.cpp /Fo"$(obj)/cever_deps420.obj"
$(obj)/cever_deps500.obj: cever_deps.cpp cever_deps.h
	@"$(cecc)" $(pb500incs) $(cflags) $(cdefs) $(pmdef500) $(dlldefs) cever_deps.cpp /Fo"$(obj)/cever_deps500.obj"

$(obj)/PoomInterface.obj: PoomInterface.cpp
	@"$(cecc)" $(pb500incs) $(cflags) $(cdefs) $(pmdef500) $(dlldefs) /D "ITSUTILS_EXPORTS" PoomInterface.cpp

ITSOBJS=cever_deps500.obj cever_deps420.obj  cever_deps300.obj itsutils.obj dllmain.obj gsmdevice.obj debug.obj stringutils.obj vectorutils.obj DiskReader.obj PoomInterface.obj kernelmisc.obj wintrace.obj MemoryUsage.obj FlashDrvReader.obj OnDiskReader.obj TffsDiskReader.obj WinDiskReader.obj RegistryFunctions.obj StoreInfo.obj PatchFunctions.obj FileFunctions.obj streammultiplex.obj debugger.obj utfcvutils.obj processutils.obj memutils.obj sdutils.obj wallabyutils.obj timeutils.obj xiputils.obj handleutils.obj compressutils.obj windowutils.obj

# for .pdb
ldflags+=/debug  
ifndef DEBUG
cflags+=/O2
else
cflags+=/Zi /Od
endif
#     $(obj)/ril.lib -- removed to be more non-phone edition device compatible
$(out)/itsutils$(if $(D),d).dll: $(addprefix $(obj)/,$(ITSOBJS))
	@"$(celd)" $(libpaths) $(ldflags) $(extralibs) $(lddllflags) /out:$@ $^
	@$(SIGNIT) $@

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

clean:
	-rm $(out)/itsutils.*
	rm -rf $(obj)


