signhome=$(SIGNINGKEYS) smtools=C:/Program Files/Microsoft Visual Studio 8/Common7/Tools/Bin pfxfile=$(signhome)\\codesign-itsutils.pfx out=../build obj=../build/apihook src=. commonsrc=../common include ../local.mak all: OBJS=debug.obj stringutils.obj kernelmisc.obj define link_ce_exe @mkdir -p "$(dir $1)" echo building exe $1 echo from $2 echo @"$(celd)" \ /libpath:"$(ppclib)" \ /libpath:"$(celib)" \ /nologo \ /pdb:"$(subst .exe,.pdb,$1)" \ /stack:0x10000,0x1000 \ $(celdtargetflags) \ /subsystem:windowsce,4.20 \ /align:"4096" \ /out:"$1" \ /debug \ /map \ coredll.lib \ corelibc.lib \ ccrtrtti.lib \ secchk.lib \ $2 endef define link_ce_dll @mkdir -p "$(dir $1)" echo building dll $1 echo from $2 echo @"$(celd)" \ /libpath:"$(ppclib)" \ /libpath:"$(celib)" \ /nologo \ /pdb:"$(subst .dll,.pdb,$1)" \ /stack:0x10000,0x1000 \ $(celdtargetflags) \ /subsystem:windowsce,4.20 \ /align:"4096" \ /entry:"_DllMainCRTStartup" \ /dll \ /out:"$1" \ /debug \ /map \ coredll.lib \ corelibc.lib \ ccrtrtti.lib \ secchk.lib \ $2 endef define compile_ce_obj @mkdir -p "$(dir $1)" echo building obj $1 echo from $2 echo @"$(cecc)" \ /I "z:\home\sources\wince500\PRIVATE\WINCEOS\COREOS\NK\INC" \ /I "z:\home\sources\wince500\PUBLIC\COMMON\OAK\INC" \ /I "$(cesdk)\include" \ /I "$(ceinclude)" \ /I "z:\home\sources\wince500\PUBLIC\COMMON\SDK\INC" \ /I "$(commonsrc)" \ /I "../dll" \ /nologo \ /W3 \ /O2 \ /c \ /Zi \ /EHsc \ /MT \ /D APIHOOK_EXPORTS \ /D "ARM" /D "_ARM_" /D "ARMV4" \ /D _WIN32_WCE=501 /D "WIN32_PLATFORM_PSPC=400" /D UNDER_CE=501 \ /D "UNICODE" /D "_UNICODE" \ /D _CRT_SECURE_NO_WARNINGS /D _SECURE_SCL=0 /D _HAS_ITERATOR_DEBUGGING=0 \ $(cflags_$(basename $(notdir $1))) \ /Fo"$1" \ $2 endef define sign_binary @"$(smtools)/signtool" sign -f "$(pfxfile)" $1 endef 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 /D NOMINMAX /D _AA_WITH_WINMAIN 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 cflags:=/Zi /nologo /W3 /O2 /c /Fo"$(obj)/" /I "..\include" /I "../dll" /I "../common" /EHsc /FI ../common/nowarn.h /I ../include/msvc $(obj)/cever_deps300.obj: ../dll/cever_deps.cpp @"$(cecc)" $(cdefs) $(pmdef300) $(dlldefs) $(pb300incs) $(cflags) $^ /Fo"$@" $(obj)/cever_deps420.obj: ../dll/cever_deps.cpp @"$(cecc)" $(cdefs) $(pmdef420) $(dlldefs) $(pb420incs) $(cflags) $^ /Fo"$@" $(obj)/cever_deps500.obj: ../dll/cever_deps.cpp @"$(cecc)" $(cdefs) $(pmdef500) $(dlldefs) $(pb500incs) $(cflags) $^ /Fo"$@" TARGETLIST+=$(out)/loadhook.exe LOADHOOK_OBJS=loadhook.obj $(OBJS) cever_deps300.obj cever_deps420.obj cever_deps500.obj MemoryUsage.obj $(out)/loadhook.exe: $(addprefix $(obj)/,$(LOADHOOK_OBJS)) $(call link_ce_exe,$@,$^) $(call sign_binary,$@) vpath .cpp $(src) vpath .cpp $(commonsrc) vpath .cpp ../dll $(obj)/%.obj: $(src)/%.cpp $(call compile_ce_obj,$@,$^) $(obj)/%.obj: $(commonsrc)/%.cpp $(call compile_ce_obj,$@,$^) $(obj)/%.obj: ../dll/%.cpp $(call compile_ce_obj,$@,$^) TARGETLIST+=$(out)/apihookgdi.dll APIHOOKgdi_OBJS=apihookgdi.obj $(OBJS) $(out)/apihookgdi.dll: $(addprefix $(obj)/,$(APIHOOKgdi_OBJS)) $(call link_ce_dll,$@,$^) $(call sign_binary,$@) cflags_apihookgdi=-D HOOKGDI -D_USE_KLOG $(obj)/apihookgdi.obj: $(src)/apihook.cpp $(call compile_ce_obj,$@,$^) TARGETLIST+=$(out)/apihookw32a.dll APIHOOKw32a_OBJS=apihookw32a.obj $(OBJS) $(out)/apihookw32a.dll: $(addprefix $(obj)/,$(APIHOOKw32a_OBJS)) $(call link_ce_dll,$@,$^) $(call sign_binary,$@) cflags_apihookw32a=-D HOOKW32A -D_USE_KLOG $(obj)/apihookw32a.obj: $(src)/apihook.cpp $(call compile_ce_obj,$@,$^) TARGETLIST+=$(out)/apihookw32h.dll APIHOOKw32h_OBJS=apihookw32h.obj $(OBJS) $(out)/apihookw32h.dll: $(addprefix $(obj)/,$(APIHOOKw32h_OBJS)) $(call link_ce_dll,$@,$^) $(call sign_binary,$@) cflags_apihookw32h=-D HOOKW32H -D_USE_KLOG $(obj)/apihookw32h.obj: $(src)/apihook.cpp $(call compile_ce_obj,$@,$^) TARGETLIST+=$(out)/apihookdboa.dll APIHOOKdboa_OBJS=apihookdboa.obj $(OBJS) $(out)/apihookdboa.dll: $(addprefix $(obj)/,$(APIHOOKdboa_OBJS)) $(call link_ce_dll,$@,$^) $(call sign_binary,$@) cflags_apihookdboa=-D HOOKDBOA -D_USE_KLOG $(obj)/apihookdboa.obj: $(src)/apihook.cpp $(call compile_ce_obj,$@,$^) TARGETLIST+=$(out)/apihookw32s.dll APIHOOKw32s_OBJS=apihookw32s.obj $(OBJS) $(out)/apihookw32s.dll: $(addprefix $(obj)/,$(APIHOOKw32s_OBJS)) $(call link_ce_dll,$@,$^) $(call sign_binary,$@) cflags_apihookw32s=-D HOOKW32S -D_USE_KLOG $(obj)/apihookw32s.obj: $(src)/apihook.cpp $(call compile_ce_obj,$@,$^) TARGETLIST+=$(out)/apihookwmgr.dll APIHOOKwmgr_OBJS=apihookwmgr.obj $(OBJS) $(out)/apihookwmgr.dll: $(addprefix $(obj)/,$(APIHOOKwmgr_OBJS)) $(call link_ce_dll,$@,$^) $(call sign_binary,$@) cflags_apihookwmgr=-D HOOKWMGR -D_USE_KLOG $(obj)/apihookwmgr.obj: $(src)/apihook.cpp $(call compile_ce_obj,$@,$^) all: $(TARGETLIST) install: $(TARGETLIST) pput -f $(TARGETLIST) /windows clean: -rm -rf $(obj) -rm -f $(addsuffix .*,$(basename $(TARGETLIST)))