Makefile.fpc 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. #
  2. # Makefile.fpc for Free Pascal Tests directory
  3. #
  4. [install]
  5. fpcpackage=y
  6. [default]
  7. fpcdir=..
  8. rule=allexectests
  9. [rules]
  10. # Subdirs available in the test subdir
  11. TESTSUBDIRS=cg cg/cdecl units/system units/dos units/crt units/objects
  12. # All full dirnames in the test/ dir including the subdir self
  13. TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS))
  14. # Unix like OS ?
  15. ifeq ($(OS_TARGET),linux)
  16. INUNIX=1
  17. endif
  18. ifeq ($(OS_TARGET),freebsd)
  19. INUNIX=1
  20. endif
  21. # For linux by default no graph tests
  22. ifdef INUNIX
  23. NOGRAPH=1
  24. endif
  25. #
  26. # Tools
  27. #
  28. ifndef FAILLIST
  29. export FAILLIST:=faillist
  30. endif
  31. ifndef LONGLOG
  32. export LONGLOG:=longlog
  33. endif
  34. ifndef LOG
  35. export LOG:=log
  36. endif
  37. units : units/$(FPCMADE)
  38. units/$(FPCMADE):
  39. $(MAKE) -C units
  40. DOTEST=./dotest$(EXEEXT)
  41. $(DOTEST) : units utils/dotest.pp utils/redir.pp utils/teststr.pp
  42. $(FPC) -Fuunits -FE. utils/dotest.pp
  43. DIGEST=./digest$(EXEEXT)
  44. $(DIGEST) : units utils/digest.pp utils/teststr.pp
  45. $(FPC) -Fuunits -FE. utils/digest.pp
  46. testcheck: units allpreps $(DOTEST)
  47. #
  48. # Dotest options
  49. #
  50. ifneq ($(FPC),ppc386$(EXEEXT))
  51. override DOTESTOPT+=-c$(FPC)
  52. endif
  53. ifdef GRAPH
  54. override DOTESTOPT+=-g
  55. endif
  56. ifdef INTERACTIVE
  57. override DOTESTOPT+=-i
  58. endif
  59. #
  60. # Test run targets
  61. #
  62. DIRS=webtbs webtbf tbs tbf test test/cg test/units/system test/units/dos test/units/objects
  63. %.log : %.pp
  64. $(DOTEST) $(DOTESTOPT) $<
  65. %.elg : %.pp
  66. $(DOTEST) $(DOTESTOPT) -e $<
  67. #
  68. # Preparations for tests:
  69. #
  70. # 1. Copy target dependent ctest.o to test/cg
  71. #
  72. .PHONY: allpreps
  73. allpreps: allpreps-stamp.$(OS_TARGET)
  74. allpreps-stamp.$(OS_TARGET):
  75. $(FPC) -FE. -Fuunits test/cg/ptest.pp
  76. $(COPY) test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o test/cg
  77. $(COPY) test/units/system/test*.txt .
  78. $(ECHO) $(DATE) > allpreps-stamp.$(OS_TARGET)
  79. #
  80. # Compile tests
  81. #
  82. .PHONY: alltbs alltbf allwebtbs allwebtbf alltest alltests
  83. alltbs : testcheck $(patsubst %.pp,%.log,$(wildcard tbs/t*.pp))
  84. alltbf : testcheck $(patsubst %.pp,%.log,$(wildcard tbf/t*.pp))
  85. allwebtbs : testcheck $(patsubst %.pp,%.log,$(wildcard webtbs/t*.pp))
  86. allwebtbf : testcheck $(patsubst %.pp,%.log,$(wildcard webtbf/t*.pp))
  87. alltest : testcheck $(patsubst %.pp,%.log,$(wildcard $(addsuffix /t*.pp,$(TESTDIRS))))
  88. alltests: alltest alltbs alltbf allwebtbs allwebtbf
  89. #
  90. # Compile and Run tests
  91. #
  92. .PHONY: allexectbs allexectbf allexecwebtbs allexecwebtbf allexectest allexectests
  93. allexectbs : testcheck $(patsubst %.pp,%.elg,$(wildcard tbs/t*.pp))
  94. allexectbf : testcheck $(patsubst %.pp,%.elg,$(wildcard tbf/t*.pp))
  95. allexecwebtbs : testcheck $(patsubst %.pp,%.elg,$(wildcard webtbs/t*.pp))
  96. allexecwebtbf : testcheck $(patsubst %.pp,%.elg,$(wildcard webtbf/t*.pp))
  97. allexectest : testcheck $(patsubst %.pp,%.elg,$(wildcard $(addsuffix /t*.pp,$(TESTDIRS))))
  98. allexectests: allexectest allexectbs allexectbf allexecwebtbs allexecwebtbf
  99. #
  100. # Clean
  101. #
  102. .PHONY: clean distclean
  103. clean:
  104. -rm -f $(addsuffix /*$(PPUEXT),$(DIRS))
  105. -rm -f $(addsuffix /*$(OEXT),$(DIRS))
  106. -rm -f $(addsuffix /*.rst,$(DIRS))
  107. -rm -f $(addsuffix /*$(SHAREDLIBEXT),$(DIRS))
  108. -rm -f $(addsuffix /*.log,$(DIRS))
  109. -rm -f $(addsuffix /*.elg,$(DIRS))
  110. ifdef INUNIX
  111. -rm -f $(wildcard $(patsubst %.pp,%$(EXEEXT),$(wildcard $(addsuffix /t*.pp,$(DIRS)))))
  112. else
  113. -rm -f $(addsuffix /*$(EXEEXT),$(DIRS))
  114. endif
  115. -rm -f *.tmp core
  116. -rm -f $(LOG) $(LONGLOG) $(FAILLIST)
  117. -rm -f ppas.sh ppas.bat gmon.out allpreps-stamp.$(OS_TARGET)
  118. -rm -f test*.txt
  119. $(MAKE) -C units clean
  120. distclean: clean
  121. -rm -f dotest$(EXEEXT) dotest$(OEXT) redir$(PPUEXT) redir$(OEXT)
  122. -rm -f teststr$(PPUEXT) teststr$(OEXT) digest$(EXEEXT) digest$(OEXT)
  123. #
  124. # Main rules
  125. #
  126. .PHONY: all full rundigest dailytest
  127. rundigest :
  128. -$(DIGEST)
  129. all : allexectests
  130. full : clean allexectests rundigest
  131. info :
  132. @echo This Makefile allows to test the compiler
  133. @echo
  134. @echo Targets:
  135. @echo all - continue all tests
  136. @echo full - clean and run all tests
  137. @echo dailytest - run full and save results
  138. @echo in files having the date as extension
  139. @echo
  140. override DATESUFFIX:=$(shell $(DATE) +%Y.%m.%d)
  141. ifneq ($(wildcard log.$(DATESUFFIX)),)
  142. override DATESUFFIX=$(shell $(DATE) +%Y.%m.%d.%H.%M)
  143. endif
  144. ifneq ($(wildcard lastdate.txt),)
  145. LASTDATESUFFIX:=$(shell cat lastdate.txt)
  146. endif
  147. dailytest : full
  148. $(COPY) faillist faillist.$(DATESUFFIX)
  149. $(COPY) log log.$(DATESUFFIX)
  150. $(COPY) longlog longlog.$(DATESUFFIX)
  151. -$(DIGEST) > digest.$(DATESUFFIX)
  152. ifdef LASTDATESUFFIX
  153. -diff -u log.$(LASTDATESUFFIX) log.$(DATESUFFIX) > difflog.$(DATESUFFIX)
  154. -diff -u digest.$(LASTDATESUFFIX) digest.$(DATESUFFIX) > diffdigest.$(DATESUFFIX)
  155. -diff -u faillist.$(LASTDATESUFFIX) faillist.$(DATESUFFIX) > difflist.$(DATESUFFIX)
  156. endif
  157. @echo $(DATESUFFIX) > lastdate.txt