# (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/ce-hookapi

include ../local.mak

# /Zi /Od /Fd"$(out)" for debugging
# /O2      for release
cflags=/nologo /W3 /O2 /c /Fo"$(obj)/" /I "..\include" /I "../dll" /I "../libril" /I "../common" /EHsc /I "../include/msvc"
targetdefs=/D "ARM" /D "_ARM_" /D "ARMV4"
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=/entry:"_DllMainCRTStartup" /dll 
ldexeflags=/entry:"WinMainCRTStartup" /debug
ldplatformflags=/subsystem:windowsce,4.20 /align:"4096" 
ldflags=/nologo /base:"0x00100000" /stack:0x10000,0x1000 $(celdtargetflags) $(ldplatformflags)
libpaths=/libpath:"$(celib)" /libpath:"$(ppclib)"

extralibs+=toolhelp.lib 

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

# no implicit rules.
.SUFFIXES:

all: $(obj) $(out)/hookapi.exe

../dll/cever_deps.h: ../dll/cever_deps.cpp
	perl generate_cever_h.pl ../dll/cever_deps.cpp > ../dll/cever_deps.h

$(obj):
	mkdir -p $(obj)

$(obj)/hookapi.obj: hookapi.cpp
	@"$(cecc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $^
$(obj)/debug.obj: ../common/debug.cpp
	@"$(cecc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $^
$(obj)/stringutils.obj: ../common/stringutils.cpp
	@"$(cecc)" $(cflags) $(cdefs) $(pmdef420) $(pb420incs) $^

$(out)/hookapi.exe: $(obj)/hookapi.obj $(obj)/debug.obj $(obj)/stringutils.obj  $(obj)/kernelmisc.obj  $(obj)/cever_deps300.obj $(obj)/cever_deps420.obj $(obj)/cever_deps500.obj $(obj)/MemoryUsage.obj
	@"$(celd)" $(libpaths) $(ldflags) $(extralibs) coredll.lib corelibc.lib toolhelp.lib /out:$@ $^
	@$(SIGNIT) $@

$(obj)/MemoryUsage.obj: ../dll/MemoryUsage.cpp
	@"$(cecc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) ../dll/MemoryUsage.cpp
$(obj)/kernelmisc.obj: ../dll/kernelmisc.cpp
	@"$(cecc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) ../dll/kernelmisc.cpp
$(obj)/cever_deps300.obj: ../dll/cever_deps.cpp
	@"$(cecc)" $(cflags) $(cdefs) $(pmdef300) $(dlldefs) $(pb300incs) ../dll/cever_deps.cpp /Fo"$(obj)/cever_deps300.obj"
$(obj)/cever_deps420.obj: ../dll/cever_deps.cpp
	@"$(cecc)" $(cflags) $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) ../dll/cever_deps.cpp /Fo"$(obj)/cever_deps420.obj"
$(obj)/cever_deps500.obj: ../dll/cever_deps.cpp
	@"$(cecc)" $(cflags) $(cdefs) $(pmdef500) $(dlldefs) $(pb500incs) ../dll/cever_deps.cpp /Fo"$(obj)/cever_deps500.obj"


clean:
	-rm $(out)/hookapi.exe
	rm -rf $(obj)

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

