Makefile.fpc 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. #
  2. # Makefile.fpc for Free Pascal Tests directory
  3. #
  4. [install]
  5. fpcpackage=y
  6. [default]
  7. fpcdir=..
  8. rule=allexectests
  9. [require]
  10. packages_win32=mysql
  11. packages_linux=mysql
  12. [rules]
  13. # Subdirs available in the test subdir
  14. TESTSUBDIRS=cg cg/cdecl units/system units/dos units/crt units/objects
  15. # All full dirnames in the test/ dir including the subdir self
  16. TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS))
  17. # Unix like OS ?
  18. ifeq ($(OS_TARGET),linux)
  19. INUNIX=1
  20. endif
  21. ifeq ($(OS_TARGET),freebsd)
  22. INUNIX=1
  23. endif
  24. # For linux by default no graph tests
  25. ifdef INUNIX
  26. NOGRAPH=1
  27. endif
  28. #
  29. # Tools
  30. #
  31. ifndef FAILLIST
  32. export FAILLIST:=faillist
  33. endif
  34. ifndef LONGLOG
  35. export LONGLOG:=longlog
  36. endif
  37. ifndef LOG
  38. export LOG:=log
  39. endif
  40. ifndef CCOMPILER
  41. CCOMPILER:=$(strip $(wildcard $(addsuffix /gcc$(SRCEXEEXT),$(SEARCHPATH))))
  42. ifneq ($(CCOMPILER),)
  43. CCOMPILER:=$(firstword $(CCOMPILER))
  44. endif
  45. endif
  46. units : units/$(FPCMADE)
  47. units/$(FPCMADE):
  48. $(MAKE) -C units
  49. ifeq ($(OS_TARGET),win32)
  50. $(FPC) -n -Fuunits -FEunits utils/win32err.pp
  51. endif
  52. DOTEST=./dotest$(EXEEXT)
  53. $(DOTEST) : units utils/dotest.pp utils/redir.pp utils/teststr.pp
  54. $(FPC) -n -Fuunits -FE. utils/dotest.pp
  55. $(FPC) -n -Fuunits -FE. utils/fail.pp
  56. $(FPC) -n -Fuunits -FE. utils/testfail.pp
  57. ifneq ($(wildcard ./testfail$(SRCEXEEXT)),)
  58. TESTCOMSPECRES:=$(shell ./testfail$(SRCEXEEXT))
  59. endif
  60. ifneq ($(TESTCOMSPECRES),)
  61. NOCOMSPEC=1
  62. endif
  63. #
  64. # Digest program
  65. #
  66. ifeq ($(USESQL),YES)
  67. DIGEST=./dbdigest$(EXEEXT)
  68. else
  69. DIGEST=./digest$(EXEEXT)
  70. endif
  71. ./digest$(EXEEXT) : units utils/digest.pp utils/teststr.pp utils/testu.pp
  72. $(FPC) -n -Fuunits -FE. utils/digest.pp
  73. ./dbdigest$(EXEEXT) : units utils/dbdigest.pp utils/teststr.pp utils/testu.pp utils/dbtests.pp
  74. $(FPC) -n -Fuunits -Fu../packages/base/mysql -FE. utils/dbdigest.pp
  75. testcheck: units allpreps $(DOTEST)
  76. #
  77. # Dotest options
  78. #
  79. ifneq ($(FPC),ppc386$(EXEEXT))
  80. ifeq ($(findstring -c$(FPC),$(DOTESTOPT)),)
  81. override DOTESTOPT+=-c$(FPC)
  82. endif
  83. endif
  84. ifdef GRAPH
  85. override DOTESTOPT+=-g
  86. endif
  87. ifdef INTERACTIVE
  88. override DOTESTOPT+=-i
  89. endif
  90. ifdef DOALL
  91. override DOTESTOPT+=-a
  92. endif
  93. ifdef NOCOMSPEC
  94. override DOTESTOPT+=-x
  95. endif
  96. #
  97. # Test run targets
  98. #
  99. DIRS=webtbs webtbf tbs tbf test test/cg test/units/system test/units/dos test/units/objects
  100. %.log : %.pp $(DOTEST)
  101. $(DOTEST) $(DOTESTOPT) $<
  102. %.elg : %.pp $(DOTEST)
  103. $(DOTEST) $(DOTESTOPT) -e $<
  104. #
  105. # Preparations for tests:
  106. #
  107. # 1. Copy target dependent ctest.o to test/cg
  108. #
  109. .PHONY: allpreps
  110. ifdef CCOMPILER
  111. test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o : test/cg/obj/ctest.c
  112. -$(CCOMPILER) -c -o test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o test/cg/obj/ctest.c
  113. endif
  114. allpreps: allpreps-stamp.$(OS_TARGET)
  115. allpreps-stamp.$(OS_TARGET):
  116. $(FPC) -FE. -Fuunits test/cg/ptest.pp
  117. $(COPY) test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o test/cg
  118. $(COPY) test/units/system/test*.txt .
  119. $(ECHO) $(DATE) > allpreps-stamp.$(OS_TARGET)
  120. #
  121. # Compile tests
  122. #
  123. .PHONY: alltbs alltbf allwebtbs allwebtbf alltest alltests
  124. alltbs : testcheck $(patsubst %.pp,%.log,$(wildcard tbs/t*.pp))
  125. alltbf : testcheck $(patsubst %.pp,%.log,$(wildcard tbf/t*.pp))
  126. allwebtbs : testcheck $(patsubst %.pp,%.log,$(wildcard webtbs/t*.pp))
  127. allwebtbf : testcheck $(patsubst %.pp,%.log,$(wildcard webtbf/t*.pp))
  128. alltest : testcheck $(patsubst %.pp,%.log,$(wildcard $(addsuffix /t*.pp,$(TESTDIRS))))
  129. alltests: alltest alltbs alltbf allwebtbs allwebtbf
  130. #
  131. # Compile and Run tests
  132. #
  133. .PHONY: allexectbs allexectbf allexecwebtbs allexecwebtbf allexectest allexectests
  134. allexectbs : testcheck $(patsubst %.pp,%.elg,$(wildcard tbs/t*.pp))
  135. allexectbf : testcheck $(patsubst %.pp,%.elg,$(wildcard tbf/t*.pp))
  136. allexecwebtbs : testcheck $(patsubst %.pp,%.elg,$(wildcard webtbs/t*.pp))
  137. allexecwebtbf : testcheck $(patsubst %.pp,%.elg,$(wildcard webtbf/t*.pp))
  138. allexectest : testcheck $(patsubst %.pp,%.elg,$(wildcard $(addsuffix /t*.pp,$(TESTDIRS))))
  139. allexectests: allexectest allexectbs allexectbf allexecwebtbs allexecwebtbf
  140. #
  141. # Clean
  142. #
  143. .PHONY: clean distclean
  144. clean:
  145. -rm -f $(addsuffix /*$(PPUEXT),$(DIRS))
  146. -rm -f $(addsuffix /*$(OEXT),$(DIRS))
  147. -rm -f $(addsuffix /*.rst,$(DIRS))
  148. -rm -f $(addsuffix /*$(SHAREDLIBEXT),$(DIRS))
  149. -rm -f $(addsuffix /*.log,$(DIRS))
  150. -rm -f $(addsuffix /*.elg,$(DIRS))
  151. ifeq ($(EXEEXT),)
  152. -rm -f $(wildcard $(patsubst %.pp,%$(EXEEXT),$(wildcard $(addsuffix /t*.pp,$(DIRS)))))
  153. else
  154. -rm -f $(addsuffix /*$(EXEEXT),$(DIRS))
  155. endif
  156. -rm -f test*.txt *.tmp *$(SHAREDLIBEXT) *$(OEXT) *$(PPUEXT) core
  157. -rm -f $(LOG) $(LONGLOG) $(FAILLIST)
  158. -rm -f ptest.* ppas.sh ppas.bat gmon.out allpreps-stamp.$(OS_TARGET)
  159. $(MAKE) -C units clean
  160. distclean: clean
  161. -rm -f dotest$(EXEEXT) digest$(EXEEXT)
  162. #
  163. # Main rules
  164. #
  165. .PHONY: all full rundigest dailytest onlyknown onlygraph onlyinteractive
  166. rundigest : $(DIGEST)
  167. -$(DIGEST)
  168. all : allexectests
  169. full : clean allexectests rundigest
  170. onlyknown :
  171. $(MAKE) full "DOTESTOPT= $(DOTESTOPT) -k-"
  172. onlygraph :
  173. $(MAKE) full "DOTESTOPT= $(DOTESTOPT) -g-"
  174. onlyinteractive :
  175. $(MAKE) "DOTESTOPT= $(DOTESTOPT) -i-"
  176. info :
  177. @echo This Makefile allows to test the compiler
  178. @echo
  179. @echo Targets:
  180. @echo " all - continue all tests"
  181. @echo " full - clean and run all tests"
  182. @echo " dailytest - run full and save results"
  183. @echo " in files having the date as extension"
  184. @echo " onlyknown - run only known bugs"
  185. @echo " onlygraph - run only graph tests"
  186. @echo " onlyinteractive - run only interactive tests"
  187. @echo Done using FPC=$(FPC)
  188. ifdef COMSPEC
  189. @echo And using COMSPEC=$(COMSPEC)
  190. endif
  191. override DATESUFFIX:=$(shell $(DATE) +%Y.%m.%d)
  192. ifneq ($(wildcard log.$(DATESUFFIX)),)
  193. override DATESUFFIX=$(shell $(DATE) +%Y.%m.%d.%H.%M)
  194. endif
  195. ifneq ($(wildcard lastdate.txt),)
  196. LASTDATESUFFIX:=$(shell cat lastdate.txt)
  197. endif
  198. dailytest : full
  199. $(COPY) faillist faillist.$(DATESUFFIX)
  200. $(COPY) log log.$(DATESUFFIX)
  201. $(COPY) longlog longlog.$(DATESUFFIX)
  202. -$(DIGEST) > digest.$(DATESUFFIX)
  203. ifdef LASTDATESUFFIX
  204. -diff -u log.$(LASTDATESUFFIX) log.$(DATESUFFIX) > difflog.$(DATESUFFIX)
  205. -diff -u digest.$(LASTDATESUFFIX) digest.$(DATESUFFIX) > diffdigest.$(DATESUFFIX)
  206. -diff -u faillist.$(LASTDATESUFFIX) faillist.$(DATESUFFIX) > difflist.$(DATESUFFIX)
  207. endif
  208. @echo $(DATESUFFIX) > lastdate.txt