# we do not build bochs related files for win64
!ifndef __AMD64__
_ALLDIRS=bochs_ctrl # list of subdirectories to run make
BOCHS_USER=bochs_user
!endif
ALLDIRS=windbg $(_ALLDIRS)
WINDBG_USER=windbg_user

# first build win32 local debugger plugin
PROC=win32_user
O1=win32_debmod
!ifdef __CEARM__
O2=wince_debmod
!undef ALLDIRS
DONT_BUILD_PLUGIN=1
MODULES=win32_server kdstub hwtest wincetst
!else
O2=pc_debmod
MODULES=win32_server win32_stub cfg \
        linux_stub                  \
        mac_stub                    \
        wince_stub                  \
        epoc_user                   \
        $(WINDBG_USER)              \
        iphone_stub                 \
        $(BOCHS_USER)               \
        tracer chktrk               \
        gdb_user
!endif
O3=debmod
ADDITIONAL_GOALS=$(ALLDIRS) $(MODULES)

!include ..\plugin.mak
!ifndef LINK_NOBOR
_LDFLAGS=-dwsock32.dll          # delayed import
#!else
#_LDFLAGS=/delayload:wsock32.dll /defaultlib:delayimp.lib /delay:nobind
!endif

!ifdef __AMD64__
__CFLAGS=-wd4505     # non used local(static) function removed
!endif

!ifdef MAKE_HERE
!undef R
!endif

.PHONY: $(ADDITIONAL_GOALS) kdstub chktrk

!ifndef __AMD64__
DEFFILE=..\plugin.def
!else
DEFFILE=..\plugin64.def
!endif

RPC_COMMON=$(F)rpc_hlp$(O) $(F)rpc_engine$(O) $(F)util$(O)
STUB_COMMON=$(RPC_COMMON) $(F)rpc_client$(O) $(F)rpc_debmod$(O) $(F)debmod$(O)
SERVER_COMMON=$(F)server$(O) $(RPC_COMMON) $(F)rpc_server$(O) $(DUMB) $(F)debmod$(O)
#----------------------------------------------------------------------------
!ifdef __AMD64__
WIN32SERVER=$(R)win64_remote$(B)
SERVER_TRANS=$(F)tcpip$(O)
SERVER_OBJS=$(OBJ2)
!else
!ifdef __CEARM__
WIN32SERVER=$(R)wince_remote_arm.dll
ARM_RTTI_LIB=ccrtrtti.lib
SERVER_TRANS=$(F)async$(O)
ACCESSCOPROC=xscale\$(F)accesscoproc$(O)
SERVER_OBJS=$(ACCESSCOPROC) $(F)wince_debmod$(O)
CREATE_DLL=/LD
CCL_LNK_OPT=/implib:$(OBJDIR)\wince_remote_arm.lib
kdstub $(ACCESSCOPROC):
	@cd xscale
	@$(MAKE)
	@cd ..

hwtest: hwtest.exe
hwtest.exe: $(F)hwtest$(O) $(ACCESSCOPROC) $(DUMB)
	$(CCL) $(OUTSW)$@ $(F)hwtest$(O) $(ACCESSCOPROC) $(L)pro$(A) $(DUMB) $(C_LIB) $(ARM_RTTI_LIB)
wincetst: wincetst.exe
wincetst.exe: $(F)wincetst$(O) $(F)winceasm$(O)
	$(CCL) $(OUTSW)$@ $(F)wincetst$(O) $(F)winceasm$(O) $(L)pro$(A) $(C_LIB) $(ARM_RTTI_LIB)
$(F)winceasm$(O): winceasm.s
        $(_ARMASM) -o $@ $?
!else
WIN32SERVER=$(R)win32_remote$(B)
SERVER_TRANS=$(F)tcpip$(O)
SERVER_OBJS=$(OBJ2)
!endif
!endif
WIN32_REMOTE_OBJ=$(SERVER_TRANS) $(SERVER_OBJS) $(SERVER_COMMON) \
                 $(F)win32_debmod$(O)
win32_server: $(WIN32SERVER)
tracer: tracer$(B)

$(WIN32SERVER): $(WIN32_REMOTE_OBJ) $(L)pro$(A)
!ifdef LINK_NOBOR
        $(CCL) $(CREATE_DLL) $(OUTSW)$@ $(WIN32_REMOTE_OBJ) $(L)pro$(A) $(C_LIB) $(ARM_RTTI_LIB)
!ifndef CCL_LNK_OPT
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!endif
!else
        $(LINKER) $(C_STARTUP) $(WIN32_REMOTE_OBJ) $(L)pro$(A),$@,,$(C_LIB)
!endif

TRACER_OBJS=$(F)tracer$(O) $(F)win32_debmod$(O) $(F)debmod$(O) $(F)pc_debmod$(O) $(DUMB)
tracer$(B): $(TRACER_OBJS) $(L)pro$(A)
!ifdef LINK_NOBOR
        $(CCL) $(OUTSW)$@ $(TRACER_OBJS) $(L)pro$(A)
!else
        $(LINKER) $(C_STARTUP) $(TRACER_OBJS) $(L)pro$(A),$@,,$(C_LIB)
!endif

#----------------------------------------------------------------------------
WIN32_STUB_OBJ=$(F)win32_rstub$(O) $(F)tcpip$(O) $(STUB_COMMON)
WIN32CLIENT=$(BIN_PATH)win32_stub$(PLUGIN)
win32_stub: $(WIN32CLIENT)

$(WIN32CLIENT): $(WIN32_STUB_OBJ) $(IDALIB) $(DEFFILE)
!ifdef LINK_NOBOR
	$(LINKER) $(LINKOPTS) /OUT:$@ $(WIN32_STUB_OBJ) $(IDALIB) user32.lib
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!else
	$(LINKER) @&&~
$(LINKOPTS) $(LDRSTUB) $(WIN32_STUB_OBJ)
$@

$(IDALIB) $(LIBS) $(IDPSLIB)
$(DEFFILE)
~
!ifndef __AMD64__
	$(PEUTIL) -d$(DEFFILE) $@
!endif
!endif

#----------------------------------------------------------------------------
WINCE_STUB_OBJ=$(F)wince_rstub$(O) $(F)async$(O) $(STUB_COMMON)
WINCECLIENT=$(BIN_PATH)wince_stub$(PLUGIN)
wince_stub: $(WINCECLIENT)

$(WINCECLIENT): $(WINCE_STUB_OBJ) $(IDALIB) $(DEFFILE)
!ifdef LINK_NOBOR
	$(LINKER) $(LINKOPTS) /OUT:$@ $(WINCE_STUB_OBJ) $(IDALIB) user32.lib
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!else
	$(LINKER) @&&~
$(LINKOPTS) $(LDRSTUB) $(WINCE_STUB_OBJ)
$@

$(IDALIB) $(LIBS) $(IDPSLIB)
$(DEFFILE)
~
!ifndef __AMD64__
	$(PEUTIL) -d$(DEFFILE) $@
!endif
!endif

#----------------------------------------------------------------------------
EPOC_STUB_OBJ=$(F)epoc_user$(O) $(F)epoc_debmod$(O) $(F)debmod$(O)
EPOCCLIENT=$(BIN_PATH)epoc_user$(PLUGIN)
epoc_user: $(EPOCCLIENT)

$(EPOCCLIENT): $(EPOC_STUB_OBJ) $(IDALIB) $(DEFFILE)
!ifdef LINK_NOBOR
	$(LINKER) $(LINKOPTS) /OUT:$@ $(EPOC_STUB_OBJ) $(IDALIB) user32.lib advapi32.lib
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!else
	$(LINKER) @&&~
$(LINKOPTS) $(LDRSTUB) $(EPOC_STUB_OBJ)
$@

$(IDALIB) $(LIBS) $(IDPSLIB)
$(DEFFILE)
~
!ifndef __AMD64__
	$(PEUTIL) -d$(DEFFILE) $@
!endif
!endif

CHKTRK_OBJS=$(F)chktrk$(O) $(L)dumb$(O) $(L)pro$(A)
chktrk: chktrk$(B)
chktrk$(B): $(F)chktrk$(O)
!ifdef LINK_NOBOR
        $(CCL) $(OUTSW)$@ $(CHKTRK_OBJS) advapi32.lib
!else
        $(LINKER) $(C_STARTUP) $(CHKTRK_OBJS),$@,,$(C_LIB)
!endif
#----------------------------------------------------------------------------
GDB_STUB_OBJ=$(F)gdb_user$(O) $(F)gdb_debmod$(O) $(F)gdbremote$(O) $(F)debmod$(O) \
	$(F)tcpip$(O) $(F)symelf$(O) $(F)symmacho$(O)
GDBCLIENT=$(BIN_PATH)gdb_user$(PLUGIN)
gdb_user: $(GDBCLIENT)

$(GDBCLIENT): $(GDB_STUB_OBJ) $(IDALIB) $(DEFFILE)
!ifdef LINK_NOBOR
	$(LINKER) $(LINKOPTS) /OUT:$@ $(GDB_STUB_OBJ) $(IDALIB) user32.lib advapi32.lib
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!else
	$(LINKER) @&&~
$(LINKOPTS) $(LDRSTUB) $(GDB_STUB_OBJ)
$@

$(IDALIB) $(LIBS) $(IDPSLIB)
$(DEFFILE)
~
!ifndef __AMD64__
	$(PEUTIL) -d$(DEFFILE) $@
!endif
!endif

$(F)symmacho$(O): $(I)area.hpp $(I)auto.hpp $(I)diskio.hpp $(I)fpro.h       \
	          $(I)help.h $(I)ida.hpp $(I)kernwin.hpp $(I)llong.hpp      \
	          $(I)pro.h ../../ldr/mach-o/common.cpp                     \
	          ../../ldr/mach-o/common.h symelf.hpp symmacho.cpp         \
	          symmacho.hpp
!ifdef __VC__
        $(CC) $(CFLAGS) -c -I../../ldr/mach-o/h -D__arm__ /Fo$@ symmacho.cpp
!else
        $(CC) $(CFLAGS) -c -I../../ldr/mach-o/h -D__arm__       symmacho.cpp
!endif

GDBTEST_OBJS=$(F)gdb_test$(O) $(F)gdbremote$(O) $(F)tcpip$(O) $(L)dumb$(O) $(L)pro$(A)
gdbtest: gdbtest$(B)
gdbtest$(B): $(F)gdb_test$(O)
!ifdef LINK_NOBOR
        $(CCL) $(OUTSW)$@ $(GDBTEST_OBJS) advapi32.lib
!else
        $(LINKER) $(C_STARTUP) $(GDBTEST_OBJS),$@,,$(C_LIB)
!endif
#----------------------------------------------------------------------------
LINUX_STUB_OBJ=$(F)linux_rstub$(O) $(F)tcpip$(O) $(STUB_COMMON)
LINUXCLIENT=$(BIN_PATH)linux_stub$(PLUGIN)
linux_stub: $(LINUXCLIENT)

$(LINUXCLIENT): $(LINUX_STUB_OBJ) $(IDALIB) $(DEFFILE)
!ifdef LINK_NOBOR
	$(LINKER) $(LINKOPTS) /OUT:$@ $(LINUX_STUB_OBJ) $(IDALIB) user32.lib
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!else
	$(LINKER) @&&~
$(LINKOPTS) $(LDRSTUB) $(LINUX_STUB_OBJ)
$@

$(IDALIB) $(LIBS) $(IDPSLIB)
$(DEFFILE)
~
!ifndef __AMD64__
	$(PEUTIL) -d$(DEFFILE) $@
!endif
!endif

#----------------------------------------------------------------------------
MAC_STUB_OBJ=$(F)mac_rstub$(O) $(F)tcpip$(O) $(F)symmacho$(O) $(STUB_COMMON)
MACCLIENT=$(BIN_PATH)mac_stub$(PLUGIN)
mac_stub: $(MACCLIENT)

$(MACCLIENT): $(MAC_STUB_OBJ) $(IDALIB) $(DEFFILE)
!ifdef LINK_NOBOR
	$(LINKER) $(LINKOPTS) /OUT:$@ $(MAC_STUB_OBJ) $(IDALIB) user32.lib
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!else
	$(LINKER) @&&~
$(LINKOPTS) $(LDRSTUB) $(MAC_STUB_OBJ)
$@

$(IDALIB) $(LIBS) $(IDPSLIB)
$(DEFFILE)
~
!ifndef __AMD64__
	$(PEUTIL) -d$(DEFFILE) $@
!endif
!endif

$(F)mac_rstub$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)err.h $(I)fpro.h $(I)funcs.hpp         \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp               \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          async.h common_local_impl.cpp common_stub_impl.cpp        \
	          consts.h deb_pc.hpp debmod.h mac_local_impl.cpp           \
	          mac_rstub.cpp pc_local_impl.cpp rapi/ceapimap.h           \
	          rapi/rapi.h rpc_client.h rpc_debmod.h rpc_engine.h        \
	          rpc_hlp.h tcpip.h
!ifdef __VC__
        $(CC) $(CFLAGS) -c -I../../ldr/mach-o/h -D__i386__ /Fo$@ mac_rstub.cpp
!else
        $(CC) $(CFLAGS) -c -I../../ldr/mach-o/h -D__i386__       mac_rstub.cpp
!endif

#----------------------------------------------------------------------------
BOCHS_USER_OBJ=$(F)bochs_user$(O) $(F)bochs_debmod$(O) $(F)debmod$(O)
BOCHSLIB=$(L)bochs$(A)
BOCHSCLIENT=$(BIN_PATH)bochs_user$(PLUGIN)
bochs_user: $(BOCHSCLIENT)

$(BOCHSCLIENT): $(BOCHS_USER_OBJ) $(IDALIB) $(BOCHSLIB) $(DEFFILE)
!ifdef LINK_NOBOR
	$(LINKER) $(LINKOPTS) /OUT:$@ $(BOCHS_USER_OBJ) $(IDALIB) $(BOCHSLIB) user32.lib advapi32.lib
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!else
	$(LINKER) @&&~
$(LINKOPTS) $(LDRSTUB) $(BOCHS_USER_OBJ)
$@

$(BOCHSLIB) $(IDALIB) $(LIBS) $(IDPSLIB)
$(DEFFILE)
~
!ifndef __AMD64__
	$(PEUTIL) -d$(DEFFILE) $@
!endif
!endif

#----------------------------------------------------------------------------
WINDBG_USER_OBJ=$(F)windbg_user$(O) $(F)windbg_debmod$(O) $(F)debmod$(O)
DBGLIBS=$(L)windbg$(A)
WINDBGCLIENT=$(BIN_PATH)windbg_user$(PLUGIN)
windbg_user: $(WINDBGCLIENT)

$(WINDBGCLIENT): $(WINDBG_USER_OBJ) $(IDALIB) $(DBGLIBS) $(DEFFILE)
!ifdef LINK_NOBOR
	$(LINKER) $(LINKOPTS) /OUT:$@ $(WINDBG_USER_OBJ) $(IDALIB) $(DBGLIBS) user32.lib advapi32.lib
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!else
	$(LINKER) @&&~
$(LINKOPTS) $(LDRSTUB) $(WINDBG_USER_OBJ)
$@

$(DBGLIBS) $(IDALIB) $(LIBS) $(IDPSLIB)
$(DEFFILE)
~
!ifndef __AMD64__
	$(PEUTIL) -d$(DEFFILE) $@
!endif
!endif

#----------------------------------------------------------------------------
IPHONE_STUB_OBJ=$(F)iphone_rstub$(O) $(F)tcpip$(O) $(STUB_COMMON)
IPHONECLIENT=$(BIN_PATH)iphone_stub$(PLUGIN)
iphone_stub: $(IPHONECLIENT)

$(IPHONECLIENT): $(IPHONE_STUB_OBJ) $(IDALIB) $(DEFFILE)
!ifdef LINK_NOBOR
	$(LINKER) $(LINKOPTS) /OUT:$@ $(IPHONE_STUB_OBJ) $(IDALIB) user32.lib
        -@$(RM) $(@R).exp
        -@$(RM) $(@R).lib
!else
	$(LINKER) @&&~
$(LINKOPTS) $(LDRSTUB) $(IPHONE_STUB_OBJ)
$@

$(IDALIB) $(LIBS) $(IDPSLIB)
$(DEFFILE)
~
!ifndef __AMD64__
	$(PEUTIL) -d$(DEFFILE) $@
!endif
!endif

$(F)iphone_rstub$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)err.h $(I)fpro.h $(I)funcs.hpp         \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp               \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          arm_local_impl.cpp async.h common_local_impl.cpp          \
	          common_stub_impl.cpp consts.h deb_arm.hpp debmod.h        \
	          iphone_rstub.cpp mac_local_impl.cpp rapi/ceapimap.h       \
	          rapi/rapi.h rpc_client.h rpc_debmod.h rpc_engine.h        \
	          rpc_hlp.h tcpip.h
!ifdef __VC__
        $(CC) $(CFLAGS) -c -I../../ldr/mach-o/h -D__i386__ /Fo$@ iphone_rstub.cpp
!else
        $(CC) $(CFLAGS) -c -I../../ldr/mach-o/h -D__i386__       iphone_rstub.cpp
!endif

#----------------------------------------------------------------------------
cfg: $(C)exceptions.cfg $(C)dbg_wince.cfg $(C)dbg_bochs.cfg $(C)dbg_gdb.cfg \
	$(C)bochsrc.cfg $(C)dbg_windbg.cfg

$(C)exceptions.cfg:  exceptions.cfg
!ifndef MAKE_HERE
        $(CP) $? $@
!endif

$(C)dbg_wince.cfg: dbg_wince.cfg
        $(CP) $? $@

$(C)dbg_windbg.cfg: dbg_windbg.cfg
        $(CP) $? $@

$(C)dbg_bochs.cfg: dbg_bochs.cfg
        $(CP) $? $@

$(C)dbg_gdb.cfg: dbg_gdb.cfg
        $(CP) $? $@

$(C)bochsrc.cfg: bochsrc.cfg
        $(CP) $? $@

!ifdef ALLDIRS
!include ../../alldirs.mk
!endif
# MAKEDEP dependency list ------------------
$(F)async$(O)   : $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          async.cpp async.h consts.h rapi/ceapimap.h rapi/rapi.h
$(F)bochs_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)expr.hpp $(I)fpro.h $(I)funcs.hpp      \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp  \
	          $(I)name.hpp $(I)netnode.hpp $(I)pro.h $(I)segment.hpp    \
	          $(I)ua.hpp $(I)xref.hpp ../../ldr/bochsrc/common.cpp      \
	          bochs_config.h bochs_ctrl/baseldr.h                       \
	          bochs_ctrl/bochs_ctrl.h bochs_ctrl/bochs_parser.h         \
	          bochs_ctrl/bochs_types.h                                  \
	          bochs_ctrl/buffer_list_builder.hpp                        \
	          bochs_ctrl/dskimgldr.h bochs_ctrl/ldr_types.h             \
	          bochs_ctrl/ldr_util.h bochs_ctrl/page_translation.h       \
	          bochs_ctrl/pm32ldr.h bochs_ctrl/serialization.hpp         \
	          bochs_ctrl/x86types.hpp bochs_debmod.cpp bochs_debmod.h   \
	          bochsext.h consts.h deb_pc.hpp debmod.h
$(F)bochs_user$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)fpro.h $(I)funcs.hpp $(I)help.h $(I)ida.hpp           \
	          $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp $(I)lines.hpp     \
	          $(I)llong.hpp $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp    \
	          $(I)netnode.hpp $(I)pro.h $(I)segment.hpp $(I)ua.hpp      \
	          $(I)xref.hpp bochs_config.h bochs_ctrl/baseldr.h          \
	          bochs_ctrl/bochs_ctrl.h bochs_ctrl/bochs_parser.h         \
	          bochs_ctrl/bochs_types.h bochs_ctrl/ldr_types.h           \
	          bochs_debmod.h bochs_local_impl.cpp bochs_user.cpp        \
	          common_local_impl.cpp common_stub_impl.cpp consts.h       \
	          deb_pc.hpp debmod.h pc_local_impl.cpp
$(F)chktrk$(O)  : $(I)area.hpp $(I)auto.hpp $(I)diskio.hpp $(I)err.h        \
	          $(I)fpro.h $(I)help.h $(I)ida.hpp $(I)kernwin.hpp         \
	          $(I)llong.hpp $(I)pro.h chktrk.cpp metrotrk.cpp           \
	          metrotrk.h
$(F)debmod$(O)  : $(I)area.hpp $(I)auto.hpp $(I)diskio.hpp $(I)err.h        \
	          $(I)fpro.h $(I)help.h $(I)ida.hpp $(I)idd.hpp             \
	          $(I)kernwin.hpp $(I)llong.hpp $(I)pro.h consts.h          \
	          debmod.cpp debmod.h
$(F)epoc_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)srarea.hpp $(I)ua.hpp       \
	          $(I)xref.hpp consts.h debmod.h epoc_debmod.cpp            \
	          epoc_debmod.h metrotrk.cpp metrotrk.h
$(F)epoc_user$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)err.h $(I)fpro.h $(I)funcs.hpp         \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp               \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          arm_local_impl.cpp common_local_impl.cpp                  \
	          common_stub_impl.cpp consts.h deb_arm.hpp debmod.h        \
	          epoc_debmod.h epoc_local_impl.cpp epoc_user.cpp           \
	          metrotrk.h
$(F)gdb_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)exehdr.h $(I)expr.hpp $(I)fpro.h            \
	          $(I)funcs.hpp $(I)help.h $(I)ida.hpp $(I)idd.hpp          \
	          $(I)idp.hpp $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp   \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          ../../ldr/pe/pe.h consts.h deb_arm.hpp deb_pc.hpp         \
	          debmod.h gdb-signals.h gdb_debmod.cpp gdb_debmod.h        \
	          gdbremote.h symelf.hpp symmacho.hpp tcpip.h
$(F)gdb_test$(O): $(I)area.hpp $(I)err.h $(I)help.h $(I)idd.hpp             \
	          $(I)llong.hpp $(I)pro.h consts.h gdb_test.cpp             \
	          gdbremote.h tcpip.h
$(F)gdb_user$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)err.h $(I)fpro.h $(I)funcs.hpp         \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp               \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          arm_local_impl.cpp common_local_impl.cpp                  \
	          common_stub_impl.cpp consts.h deb_arm.hpp deb_pc.hpp      \
	          debmod.h gdb_debmod.h gdb_local_impl.cpp gdb_user.cpp     \
	          gdbremote.h pc_local_impl.cpp symelf.hpp symmacho.hpp     \
	          tcpip.h
$(F)gdbremote$(O): $(I)area.hpp $(I)auto.hpp $(I)err.h $(I)fpro.h            \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)kernwin.hpp        \
	          $(I)llong.hpp $(I)pro.h consts.h gdbremote.cpp            \
	          gdbremote.h tcpip.h
$(F)hwtest$(O)  : $(I)llong.hpp $(I)pro.h hwtest.cpp xscale/breakpoint.h
$(F)linux_check$(O): linux_check.c
$(F)linux_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)loader.hpp $(I)nalt.hpp   \
	          $(I)name.hpp $(I)netnode.hpp $(I)pro.h $(I)segment.hpp    \
	          $(I)ua.hpp $(I)xref.hpp consts.h deb_pc.hpp debmod.h      \
	          linux_debmod.cpp linux_debmod.h linux_threads.cpp         \
	          pc_debmod.h symelf.hpp
$(F)linux_rstub$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)err.h $(I)fpro.h $(I)funcs.hpp         \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp               \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          async.h common_local_impl.cpp common_stub_impl.cpp        \
	          consts.h deb_pc.hpp debmod.h linux_local_impl.cpp         \
	          linux_rstub.cpp pc_local_impl.cpp rapi/ceapimap.h         \
	          rapi/rapi.h rpc_client.h rpc_debmod.h rpc_engine.h        \
	          rpc_hlp.h tcpip.h
$(F)linux_user$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)fpro.h $(I)funcs.hpp $(I)help.h $(I)ida.hpp           \
	          $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp $(I)lines.hpp     \
	          $(I)llong.hpp $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp    \
	          $(I)netnode.hpp $(I)pro.h $(I)segment.hpp $(I)ua.hpp      \
	          $(I)xref.hpp common_local_impl.cpp common_stub_impl.cpp   \
	          consts.h deb_pc.hpp debmod.h linux_debmod.h               \
	          linux_local_impl.cpp linux_user.cpp pc_debmod.h           \
	          pc_local_impl.cpp
$(F)mac_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)loader.hpp $(I)nalt.hpp   \
	          $(I)name.hpp $(I)netnode.hpp $(I)pro.h $(I)segment.hpp    \
	          $(I)ua.hpp $(I)xref.hpp ../../ldr/mach-o/common.h         \
	          consts.h deb_arm.hpp deb_pc.hpp debmod.h mac_debmod.cpp   \
	          mac_debmod.h pc_debmod.h symelf.hpp symmacho.hpp
$(F)mac_user$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)err.h $(I)fpro.h $(I)funcs.hpp         \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp               \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          common_local_impl.cpp common_stub_impl.cpp consts.h       \
	          deb_arm.hpp deb_pc.hpp debmod.h mac_debmod.h              \
	          mac_local_impl.cpp mac_user.cpp pc_debmod.h               \
	          pc_local_impl.cpp symelf.hpp symmacho.hpp
$(F)pc_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)fpro.h $(I)help.h           \
	          $(I)ida.hpp $(I)idd.hpp $(I)kernwin.hpp $(I)lines.hpp     \
	          $(I)llong.hpp $(I)pro.h $(I)ua.hpp $(I)xref.hpp consts.h  \
	          deb_pc.hpp debmod.h pc_debmod.cpp pc_debmod.h
$(F)rpc_client$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp $(I)name.hpp     \
	          $(I)netnode.hpp $(I)pro.h $(I)segment.hpp $(I)ua.hpp      \
	          $(I)xref.hpp async.h consts.h debmod.h rapi/ceapimap.h    \
	          rapi/rapi.h rpc_client.cpp rpc_client.h rpc_engine.h      \
	          rpc_hlp.h tcpip.h
$(F)rpc_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          async.h consts.h debmod.h rapi/ceapimap.h rapi/rapi.h     \
	          rpc_client.h rpc_debmod.cpp rpc_debmod.h rpc_engine.h     \
	          rpc_hlp.h tcpip.h
$(F)rpc_engine$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          async.h consts.h debmod.h rapi/ceapimap.h rapi/rapi.h     \
	          rpc_engine.cpp rpc_engine.h rpc_hlp.h tcpip.h util.h
$(F)rpc_hlp$(O) : $(I)area.hpp $(I)auto.hpp $(I)fpro.h $(I)help.h           \
	          $(I)ida.hpp $(I)idd.hpp $(I)kernwin.hpp $(I)lines.hpp     \
	          $(I)llong.hpp $(I)pro.h $(I)ua.hpp $(I)xref.hpp consts.h  \
	          rpc_hlp.cpp rpc_hlp.h
$(F)rpc_server$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          async.h consts.h debmod.h rapi/ceapimap.h rapi/rapi.h     \
	          rpc_engine.h rpc_hlp.h rpc_server.cpp rpc_server.h        \
	          tcpip.h
$(F)server$(O)  : $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          async.h consts.h debmod.h rapi/ceapimap.h rapi/rapi.h     \
	          rpc_engine.h rpc_hlp.h rpc_server.h server.cpp tcpip.h    \
	          util.h
$(F)symelf$(O)  : $(I)area.hpp $(I)auto.hpp $(I)diskio.hpp $(I)fpro.h       \
	          $(I)help.h $(I)ida.hpp $(I)kernwin.hpp $(I)llong.hpp      \
	          $(I)pro.h ../../ldr/elf/common.cpp ../../ldr/elf/elf.h    \
	          ../../ldr/elf/elfbase.h symelf.cpp symelf.hpp
$(F)tcpip$(O)   : $(I)area.hpp $(I)auto.hpp $(I)err.h $(I)fpro.h            \
	          $(I)help.h $(I)ida.hpp $(I)kernwin.hpp $(I)llong.hpp      \
	          $(I)pro.h consts.h tcpip.cpp tcpip.h
$(F)tracer$(O)  : $(I)area.hpp $(I)auto.hpp $(I)diskio.hpp $(I)fpro.h       \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)kernwin.hpp        \
	          $(I)lines.hpp $(I)llong.hpp $(I)pro.h $(I)ua.hpp          \
	          $(I)xref.hpp ../../ldr/pe/pe.h consts.h deb_arm.hpp       \
	          deb_pc.hpp debmod.h pc_debmod.h tracer.cpp                \
	          win32_debmod.h wince.hpp wince_debmod.h
$(F)util$(O)    : $(I)fpro.h $(I)ida.hpp $(I)llong.hpp $(I)pro.h util.cpp   \
	          util.h
$(F)win32_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)exehdr.h $(I)fpro.h $(I)funcs.hpp           \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp  \
	          $(I)netnode.hpp $(I)pro.h $(I)prodir.h $(I)segment.hpp    \
	          $(I)ua.hpp $(I)xref.hpp ../../ldr/pe/common.cpp           \
	          ../../ldr/pe/common.h ../../ldr/pe/pe.h async.h consts.h  \
	          dbghlp_bor55.h deb_arm.hpp deb_pc.hpp debmod.h            \
	          pc_debmod.h rapi/ceapimap.h rapi/rapi.h rpc_engine.h      \
	          rpc_hlp.h rpc_server.h tcpip.h win32_debmod.cpp           \
	          win32_debmod.h win32_debmod_impl.cpp win32_util_impl.cpp  \
	          wince.hpp wince_debmod.h wince_debmod_impl.cpp            \
	          xscale/breakpoint.h
$(F)win32_rstub$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)err.h $(I)fpro.h $(I)funcs.hpp         \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp               \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          ../../ldr/pe/pe.h async.h common_local_impl.cpp           \
	          common_stub_impl.cpp consts.h deb_pc.hpp debmod.h         \
	          pc_local_impl.cpp rapi/ceapimap.h rapi/rapi.h             \
	          rpc_client.h rpc_debmod.h rpc_engine.h rpc_hlp.h tcpip.h  \
	          win32_local_impl.cpp win32_rstub.cpp
$(F)win32_user$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)fpro.h $(I)funcs.hpp $(I)help.h $(I)ida.hpp           \
	          $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp $(I)lines.hpp     \
	          $(I)llong.hpp $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp    \
	          $(I)netnode.hpp $(I)pro.h $(I)segment.hpp $(I)ua.hpp      \
	          $(I)xref.hpp ../../ldr/pe/pe.h common_local_impl.cpp      \
	          common_stub_impl.cpp consts.h deb_arm.hpp deb_pc.hpp      \
	          debmod.h pc_debmod.h pc_local_impl.cpp win32_debmod.h     \
	          win32_local_impl.cpp win32_user.cpp wince.hpp             \
	          wince_debmod.h
$(F)wince_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)diskio.hpp    \
	          $(I)err.h $(I)fpro.h $(I)funcs.hpp $(I)help.h             \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)kernwin.hpp       \
	          $(I)lines.hpp $(I)llong.hpp $(I)nalt.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          ../../ldr/pe/pe.h async.h consts.h deb_arm.hpp debmod.h   \
	          rapi/ceapimap.h rapi/rapi.h rpc_engine.h rpc_hlp.h        \
	          rpc_server.h tcpip.h wince.hpp wince_debmod.cpp           \
	          wince_debmod.h xscale/breakpoint.h
$(F)wince_rstub$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)err.h $(I)fpro.h $(I)funcs.hpp         \
	          $(I)help.h $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp            \
	          $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp               \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)pro.h $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp         \
	          ../../ldr/pe/pe.h arm_local_impl.cpp async.h              \
	          common_local_impl.cpp common_stub_impl.cpp consts.h       \
	          deb_arm.hpp debmod.h rapi/ceapimap.h rapi/rapi.h          \
	          rpc_client.h rpc_debmod.h rpc_engine.h rpc_hlp.h tcpip.h  \
	          win32_local_impl.cpp wince.hpp wince_rstub.cpp
$(F)wincetst$(O): wincetst.cpp
$(F)windbg_debmod$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)diskio.hpp $(I)err.h $(I)expr.hpp $(I)fpro.h          \
	          $(I)funcs.hpp $(I)help.h $(I)ida.hpp $(I)idd.hpp          \
	          $(I)idp.hpp $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp   \
	          $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp $(I)pro.h       \
	          $(I)segment.hpp $(I)ua.hpp $(I)xref.hpp                   \
	          ../../ldr/windmp/common.h ../../ldr/windmp/dbgeng.h       \
	          consts.h dbghlp_bor55.h deb_pc.hpp debmod.h               \
	          win32_util_impl.cpp windbg/debeng_class.h                 \
	          windbg/spy/logwindowlib.h windbg_debmod.cpp               \
	          windbg_debmod.h
$(F)windbg_user$(O): $(I)area.hpp $(I)auto.hpp $(I)bytes.hpp $(I)dbg.hpp       \
	          $(I)demangle.hpp $(I)diskio.hpp $(I)err.h $(I)fixup.hpp   \
	          $(I)fpro.h $(I)frame.hpp $(I)funcs.hpp $(I)help.h         \
	          $(I)ida.hpp $(I)idd.hpp $(I)idp.hpp $(I)ieee.h            \
	          $(I)ints.hpp $(I)kernwin.hpp $(I)lines.hpp $(I)llong.hpp  \
	          $(I)loader.hpp $(I)nalt.hpp $(I)name.hpp $(I)netnode.hpp  \
	          $(I)offset.hpp $(I)pro.h $(I)queue.hpp $(I)segment.hpp    \
	          $(I)srarea.hpp $(I)struct.hpp $(I)typeinf.hpp $(I)ua.hpp  \
	          $(I)xref.hpp ../../ldr/pe/pe.h                            \
	          ../../ldr/windmp/common.cpp ../../ldr/windmp/common.h     \
	          ../../ldr/windmp/dbgeng.h ../../module/pc/../idaidp.hpp   \
	          ../../module/pc/areg.hpp ../../module/pc/ins.hpp          \
	          ../../module/pc/intel.hpp common_local_impl.cpp           \
	          common_stub_impl.cpp consts.h deb_pc.hpp debmod.h         \
	          pc_local_impl.cpp win32_local_impl.cpp                    \
	          windbg/debeng_class.h windbg_debmod.h windbg_user.cpp
