Makefile 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. UNAME := $(shell uname)
  2. ifeq ($(UNAME), Linux)
  3. ifndef PLATFORM
  4. PLATFORM = i686
  5. endif
  6. CC = $(PLATFORM)-w64-mingw32-g++
  7. CXX = $(PLATFORM)-w64-mingw32-g++
  8. LD = $(PLATFORM)-w64-mingw32-ld
  9. RC = $(PLATFORM)-w64-mingw32-windres
  10. else
  11. CC = g++
  12. CXX = g++
  13. LD = ld
  14. RC = rc
  15. endif
  16. RM = rm
  17. CFLAGS = -Wall -g
  18. LDFLAGS =
  19. RCFLAGS = -O coff
  20. ifdef UNICODE
  21. CFLAGS += -DUNICODE -D_UNICODE
  22. endif
  23. CFLAGS_DLL = -DSAMPLEDLL_EXPORTS
  24. CFLAGS_EXE =
  25. LDFLAGS_DLL = -shared
  26. LDFLAGS_EXE = -static
  27. TEST_DLLS = \
  28. test-align-128.dll \
  29. test-align-256.dll \
  30. test-align-512.dll \
  31. test-align-768.dll \
  32. test-align-1024.dll \
  33. test-align-2048.dll \
  34. test-align-3072.dll \
  35. test-align-4096.dll \
  36. test-align-100.dll \
  37. test-align-200.dll \
  38. test-align-300.dll \
  39. test-align-400.dll \
  40. test-align-500.dll \
  41. test-align-600.dll \
  42. test-align-800.dll \
  43. test-align-900.dll \
  44. test-relocate.dll \
  45. LOADDLL_OBJ = LoadDll.o ../MemoryModule.o
  46. DLL_OBJ = SampleDLL.o SampleDLL.res
  47. all: LoadDll.exe $(TEST_DLLS)
  48. LoadDll.exe: $(LOADDLL_OBJ)
  49. $(CC) $(LDFLAGS_EXE) $(LDFLAGS) -Wl,--image-base -Wl,0x20000000 -o LoadDll.exe $(LOADDLL_OBJ)
  50. LoadDll.o: LoadDll.cpp
  51. $(CXX) $(CFLAGS) $(CFLAGS_EXE) -c $<
  52. test-align-%.dll: $(DLL_OBJ)
  53. $(LD) $(LDFLAGS_DLL) $(LDFLAGS) --file-alignment $* --section-alignment $* -o $@ $(DLL_OBJ)
  54. test-relocate.dll: $(DLL_OBJ)
  55. $(CXX) $(LDFLAGS_DLL) $(LDFLAGS) -Wl,--image-base -Wl,0x20000000 -o $@ $(DLL_OBJ)
  56. %.o: %.cpp
  57. $(CXX) $(CFLAGS) $(CFLAGS_DLL) -c $<
  58. %.o: %.cc
  59. $(CC) $(CFLAGS) $(CFLAGS_DLL) -c $<
  60. %.res: %.rc
  61. $(RC) $(RCFLAGS) -o $*.res $<
  62. clean:
  63. $(RM) -rf LoadDll.exe $(TEST_DLLS) $(LOADDLL_OBJ) $(DLL_OBJ)
  64. test: all
  65. ./runtests.sh $(PLATFORM) "$(TEST_DLLS)"