Makefile 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # Binaries that should generate the same output every time
  2. EXPECT_BINS=\
  3. atof \
  4. atoi \
  5. brk \
  6. args \
  7. create \
  8. ctype \
  9. dup \
  10. error \
  11. fchdir \
  12. fcntl \
  13. fsync \
  14. ftruncate \
  15. link \
  16. math \
  17. mem \
  18. pipe \
  19. printf \
  20. rmdir \
  21. sleep \
  22. sprintf \
  23. stdlib/strtol \
  24. stdlib/a64l \
  25. string/strncmp \
  26. string/strcspn \
  27. string/strchr \
  28. string/strrchr \
  29. string/strspn \
  30. string/strstr \
  31. string/strpbrk \
  32. unlink \
  33. write
  34. # Binaries that may generate varied output
  35. BINS=\
  36. $(EXPECT_BINS) \
  37. alloc \
  38. chdir \
  39. getid \
  40. setid
  41. all: $(BINS)
  42. clean:
  43. rm -f $(BINS) *.out
  44. run: $(BINS)
  45. for bin in $^; \
  46. do \
  47. echo "# $${bin} #"; \
  48. "./$${bin}" test args || exit $$?; \
  49. done
  50. expected: $(EXPECT_BINS)
  51. rm -rf expected
  52. mkdir -p expected
  53. for bin in $^; \
  54. do \
  55. echo "# $${bin} #"; \
  56. mkdir -p expected/`dirname $${bin}`; \
  57. "./$${bin}" test args > "expected/$${bin}.stdout" 2> "expected/$${bin}.stderr" || exit $$?; \
  58. done
  59. verify: $(EXPECT_BINS)
  60. rm -rf gen
  61. mkdir -p gen
  62. for bin in $^; \
  63. do \
  64. echo "# $${bin} #"; \
  65. mkdir -p gen/`dirname $${bin}`; \
  66. "./$${bin}" test args > "gen/$${bin}.stdout" 2> "gen/$${bin}.stderr" || exit $$?; \
  67. diff -u "gen/$${bin}.stdout" "expected/$${bin}.stdout" || exit $$?; \
  68. diff -u "gen/$${bin}.stderr" "expected/$${bin}.stderr" || exit $$?; \
  69. done
  70. GCCHEAD=\
  71. -nostdinc \
  72. -nostdlib \
  73. -I ../include \
  74. -I ../target/include \
  75. -I ../openlibm/include \
  76. -I ../openlibm/src \
  77. ../target/debug/libcrt0.a
  78. GCCTAIL=\
  79. ../target/debug/libc.a \
  80. ../openlibm/libopenlibm.a
  81. %: %.c
  82. gcc -fno-stack-protector -Wall $(GCCHEAD) "$<" $(GCCTAIL) -o "$@"