Makefile 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. GCC = gcc
  2. CFLAGS = -g -Wall -Wshadow
  3. OBJS = answer04.o pa04.o
  4. HDRS = pa04.h
  5. TARGET = pa04
  6. VALGRIND = valgrind --tool=memcheck --leak-check=full --verbose
  7. .PHONY : all test clean environment help test01 test02 test03 test04 test05 test06 test07 test08 test09 test10
  8. pa04: $(OBJS) $(HDRS)
  9. $(GCC) $(CFLAGS) $(OBJS) -o $@
  10. help:
  11. @echo
  12. @echo "make build $(TARGET)"
  13. @echo "make test run all testcases"
  14. @echo "make clean start from scratch"
  15. @echo
  16. @echo "make test01 normal case with fewer inputs"
  17. @echo "make test02 two empty array"
  18. @echo "make test03 arrays with value of 0"
  19. @echo "make test04 arrays with redundant index"
  20. @echo "make test05 identical arrays with inverse sign values"
  21. @echo "make test06 normal cases"
  22. @echo "make test07 normal cases"
  23. @echo "make test08 normal cases"
  24. @echo "make test09 normal cases"
  25. @echo "make test10 normal cases"
  26. test: | test01 test02 test03 test04 test05 test06 test07 test08 test09 test10
  27. test01: $(TARGET) | environment
  28. ./$(TARGET) inputs/input1 outputs/output1 >debug_files/debug01
  29. diff expected/output1 outputs/output1
  30. $(VALGRIND) --log-file=outputs/memoutput1 ./pa04 inputs/input1 outputs/output1 >/dev/null
  31. @bin/valgrind-checker.sh outputs/memoutput1
  32. test02: $(TARGET) | environment
  33. ./$(TARGET) inputs/input2 outputs/output2 >debug_files/debug02
  34. diff expected/output2 outputs/output2
  35. $(VALGRIND) --log-file=outputs/memoutput2 ./pa04 inputs/input2 outputs/output2 >/dev/null
  36. @bin/valgrind-checker.sh outputs/memoutput2
  37. test03: $(TARGET) | environment
  38. ./$(TARGET) inputs/input3 outputs/output3 >debug_files/debug03
  39. diff expected/output3 outputs/output3
  40. $(VALGRIND) --log-file=outputs/memoutput3 ./pa04 inputs/input3 outputs/output3 >/dev/null
  41. @bin/valgrind-checker.sh outputs/memoutput3
  42. test04: $(TARGET) | environment
  43. ./$(TARGET) inputs/input4 outputs/output4 >debug_files/debug04
  44. diff expected/output4 outputs/output4
  45. $(VALGRIND) --log-file=outputs/memoutput4 ./pa04 inputs/input4 outputs/output4 >/dev/null
  46. @bin/valgrind-checker.sh outputs/memoutput4
  47. test05: $(TARGET) | environment
  48. ./$(TARGET) inputs/input5 outputs/output5 >debug_files/debug05
  49. diff expected/output5 outputs/output5
  50. $(VALGRIND) --log-file=outputs/memoutput5 ./pa04 inputs/input5 outputs/output5 >/dev/null
  51. @bin/valgrind-checker.sh outputs/memoutput5
  52. test06: $(TARGET) | environment
  53. ./$(TARGET) inputs/input6 outputs/output6 >debug_files/debug06
  54. diff expected/output6 outputs/output6
  55. $(VALGRIND) --log-file=outputs/memoutput6 ./pa04 inputs/input6 outputs/output6 >/dev/null
  56. @bin/valgrind-checker.sh outputs/memoutput6
  57. test07: $(TARGET) | environment
  58. ./$(TARGET) inputs/input7 outputs/output7 >debug_files/debug07
  59. diff expected/output7 outputs/output7
  60. $(VALGRIND) --log-file=outputs/memoutput7 ./pa04 inputs/input7 outputs/output7 >/dev/null
  61. @bin/valgrind-checker.sh outputs/memoutput7
  62. test08: $(TARGET) | environment
  63. ./$(TARGET) inputs/input8 outputs/output8 >debug_files/debug08
  64. diff expected/output8 outputs/output8
  65. $(VALGRIND) --log-file=outputs/memoutput8 ./pa04 inputs/input8 outputs/output8 >/dev/null
  66. @bin/valgrind-checker.sh outputs/memoutput8
  67. test09: $(TARGET) | environment
  68. ./$(TARGET) inputs/input9 outputs/output9 >debug_files/debug09
  69. diff expected/output9 outputs/output9
  70. $(VALGRIND) --log-file=outputs/memoutput9 ./pa04 inputs/input9 outputs/output9 >/dev/null
  71. @bin/valgrind-checker.sh outputs/memoutput9
  72. test10: $(TARGET) | environment
  73. ./$(TARGET) inputs/input10 outputs/output10 >debug_files/debug10
  74. diff expected/output10 outputs/output10
  75. $(VALGRIND) --log-file=outputs/memoutput10 ./pa04 inputs/input10 outputs/output10 >/dev/null
  76. @bin/valgrind-checker.sh outputs/memoutput10
  77. environment:
  78. @mkdir -p outputs
  79. @mkdir -p debug_files
  80. .c.o:
  81. $(GCC) $(CFLAGS) -c $*.c
  82. clean:
  83. rm -f $(TARGET) $(OBJS) outputs/output* outputs/memoutput* debug_files/*