Makefile 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. ##############################################################################
  2. ##
  3. ## Makefile for Detours.
  4. ##
  5. ## Microsoft Research Detours Package, Version 2.1.
  6. ##
  7. ## Copyright (c) Microsoft Corporation. All rights reserved.
  8. ##
  9. ##############################################################################
  10. ROOT = ..
  11. INCD = $(ROOT)\include
  12. LIBD = $(ROOT)\lib
  13. BIND = $(ROOT)\bin
  14. !IF "$(DETOURS_SOURCE_BROWSING)" == ""
  15. DETOURS_SOURCE_BROWSING = 0
  16. !ENDIF
  17. ############################################## Determine Processor Build Type.
  18. ##
  19. !IF "$(DETOURS_TARGET_PROCESSOR)" == ""
  20. DETOURS_TARGET_PROCESSOR = $(PROCESSOR_ARCHITEW6432)
  21. !ENDIF
  22. !IF "$(DETOURS_TARGET_PROCESSOR)" == ""
  23. DETOURS_TARGET_PROCESSOR = $(PROCESSOR_ARCHITECTURE)
  24. !ENDIF
  25. !IF "$(DETOURS_TARGET_PROCESSOR)" == "x86"
  26. DETOURS_TARGET_PROCESSOR=X86
  27. !ENDIF
  28. !IF "$(DETOURS_TARGET_PROCESSOR)" == "AMD64"
  29. #!MESSAGE Building for 64-bit AMD64.
  30. DETOURS_TARGET_PROCESSOR=X64
  31. !ENDIF
  32. !IF "$(DETOURS_TARGET_PROCESSOR)" == "X64"
  33. !MESSAGE Building for 64-bit X64.
  34. DETOURS_SOURCE_BROWSING = 0
  35. !ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "IA64"
  36. !MESSAGE Building for 64-bit IA64.
  37. !ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "X86"
  38. !MESSAGE Building for 32-bit X86.
  39. !ELSE
  40. !MESSAGE Note: To select the target processor architecture set either
  41. !MESSAGE PROCESSOR_ARCHITECTURE or DETOURS_TARGET_PROCESSOR.
  42. !MESSAGE
  43. !ERROR Unknown target processor: $(DETOURS_TARGET_ARCHITECTURE)
  44. !ENDIF
  45. ##############################################################################
  46. ##
  47. CFLAGS=/nologo /W4 /WX /Zi /MTd /Gy /Gm- /Zl /O1
  48. !IF $(DETOURS_SOURCE_BROWSING)==1
  49. CFLAGS=$(CFLAGS) /FR
  50. !ELSE
  51. CFLAGS=$(CFLAGS) /DWIN32_LEAN_AND_MEAN /D_WIN32_WINNT=0x403
  52. !ENDIF
  53. #/D_CRT_INSECURE_DEPRECATE
  54. LIBFLAGS=/nologo
  55. LINKFLAGS=/release
  56. !IF "$(DETOURS_TARGET_PROCESSOR)" == "X86"
  57. CFLAGS=$(CFLAGS) /Gs /DDETOURS_X86=1 /D_X86_
  58. LIBFLAGS=$(LIBFLAGS) /debug
  59. DLLENTRY=_DllMainCRTStartup@12
  60. LINKFLAGS=$(LINKFLAGS) /machine:x86
  61. !ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "X64"
  62. CFLAGS=$(CFLAGS) /D_WIN64 /DDETOURS_X64=1 /D_AMD64_ /Wp64
  63. LIBFLAGS=$(LIBFLAGS)
  64. DLLENTRY=_DllMainCRTStartup
  65. LINKFLAGS=$(LINKFLAGS) /machine:amd64
  66. !ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "IA64"
  67. CFLAGS=$(CFLAGS) /D_WIN64 /DDETOURS_IA64=1 /D_IA64_ /wd4163 /Wp64
  68. LIBFLAGS=$(LIBFLAGS)
  69. DLLENTRY=_DllMainCRTStartup
  70. LINKFLAGS=$(LINKFLAGS) /machine:ia64
  71. !ENDIF
  72. OBJS = \
  73. detours.obj \
  74. modules.obj \
  75. disasm.obj \
  76. image.obj \
  77. creatwth.obj \
  78. ##############################################################################
  79. ##
  80. .SUFFIXES: .cpp .h .obj
  81. .cpp.obj:
  82. $(CC) /nologo $(CFLAGS) "/Fd$(LIBD)\detours.pdb" /Fo$*.obj /c "$(MAKEDIR)\$*.cpp"
  83. ##############################################################################
  84. all: dirs \
  85. "$(BIND)\detoured.dll" \
  86. "$(LIBD)\detours.lib" \
  87. "$(INCD)\detours.h" \
  88. !IF $(DETOURS_SOURCE_BROWSING)==1
  89. detours.bsc \
  90. !endif
  91. ##############################################################################
  92. clean:
  93. @-del *.obj *.pdb *.ilk *.exe *.sbr *.bsc *.res *~ 2>nul
  94. @-del $(LIBD)\detours.pdb $(LIBD)\detours.lib 2>nul
  95. @-del $(BIND)\detoured.pdb $(BIND)\detoured.pdb 2>nul
  96. ##############################################################################
  97. dirs:
  98. if not exist "$(INCD)" mkdir "$(INCD)"
  99. if not exist "$(LIBD)" mkdir "$(LIBD)"
  100. if not exist "$(BIND)" mkdir "$(BIND)"
  101. detours.bsc : $(OBJS)
  102. bscmake /v /n /o $@ $(OBJS:.obj=.sbr)
  103. "$(ROOT)\lib\detours.lib" : $(OBJS)
  104. lib $(LIBFLAGS) /out:$@ $(OBJS)
  105. "$(ROOT)\include\detours.h" : detours.h
  106. copy detours.h $@
  107. detoured.res : detoured.rc
  108. rc detoured.rc
  109. $(BIND)\detoured.dll: detoured.cpp detoured.res
  110. cl /LD $(CFLAGS) /Fe$@ /Fd$(BIND)\detoured.pdb detoured.cpp \
  111. /link $(LINKFLAGS) /base:0xf000000 /incremental:no /subsystem:console \
  112. /entry:DllMain /implib:$(LIBD)\detoured.lib \
  113. /export:Detoured kernel32.lib detoured.res
  114. $(BIND)\detoured.bsc : detoured.obj
  115. bscmake /v /n /o $@ detoured.sbr
  116. detours.obj : detours.cpp detours.h
  117. modules.obj : modules.cpp detours.h
  118. disasm.obj : disasm.cpp detours.h
  119. image.obj : image.cpp detours.h
  120. creatwth.obj : creatwth.cpp detours.h
  121. test: all
  122. cd $(MAKEDIR)\..\samples\slept
  123. nmake /nologo test
  124. cd $(MAKEDIR)
  125. ################################################################# End of File.