Makefile.fpc 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  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. ifndef DOTEST
  53. DOTEST=./dotest$(EXEEXT)
  54. DOTESTDEP+=$(DOTEST)
  55. $(DOTEST) : units utils/dotest.pp utils/redir.pp utils/teststr.pp
  56. $(FPC) -n -Fuunits -FE. utils/dotest.pp
  57. $(FPC) -n -Fuunits -FE. utils/fail.pp
  58. $(FPC) -n -Fuunits -FE. utils/testfail.pp
  59. endif
  60. ifneq ($(wildcard ./testfail$(SRCEXEEXT)),)
  61. TESTCOMSPECRES:=$(shell ./testfail$(SRCEXEEXT))
  62. endif
  63. ifneq ($(TESTCOMSPECRES),)
  64. NOCOMSPEC=1
  65. endif
  66. #
  67. # Digest program
  68. #
  69. ifeq ($(USESQL),YES)
  70. ifndef DBDIGEST
  71. DBDIGEST=./dbdigest$(EXEEXT)
  72. DIGESTDEP+=$(DBDIGEST)
  73. $(DBDIGEST) : units utils/dbdigest.pp utils/teststr.pp utils/testu.pp utils/dbtests.pp
  74. $(FPC) -n $(OPT) -Fuunits -Fu../packages/base/mysql -FE. utils/dbdigest.pp
  75. endif
  76. endif
  77. ifndef DIGEST
  78. DIGEST=./digest$(EXEEXT)
  79. DIGESTDEP+=$(DIGEST)
  80. $(DIGEST) : units utils/digest.pp utils/teststr.pp utils/testu.pp
  81. $(FPC) -n -Fuunits -FE. utils/digest.pp
  82. endif
  83. ifndef DIGESTVER
  84. DIGESTVER=$(FPC_VERSION)
  85. endif
  86. testcheck: units allpreps $(DOTESTDEP)
  87. #
  88. # Dotest options
  89. #
  90. ifneq ($(FPC),ppc386$(EXEEXT))
  91. ifeq ($(findstring -c$(FPC),$(DOTESTOPT)),)
  92. override DOTESTOPT+=-c$(FPC)
  93. endif
  94. endif
  95. ifdef GRAPH
  96. override DOTESTOPT+=-g
  97. endif
  98. ifdef INTERACTIVE
  99. override DOTESTOPT+=-i
  100. endif
  101. ifdef DOALL
  102. override DOTESTOPT+=-a
  103. endif
  104. ifdef NOCOMSPEC
  105. override DOTESTOPT+=-x
  106. endif
  107. #
  108. # Test run targets
  109. #
  110. DIRS=webtbs webtbf tbs tbf test test/cg test/units/system test/units/dos test/units/objects
  111. %.log : %.pp $(DOTESTDEP)
  112. $(DOTEST) $(DOTESTOPT) $<
  113. %.elg : %.pp $(DOTESTDEP)
  114. $(DOTEST) $(DOTESTOPT) -e $<
  115. #
  116. # Preparations for tests:
  117. #
  118. # 1. Copy target dependent ctest.o to test/cg
  119. #
  120. .PHONY: allpreps
  121. ifdef CCOMPILER
  122. test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o : test/cg/obj/ctest.c
  123. -$(CCOMPILER) -c -o test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o test/cg/obj/ctest.c
  124. endif
  125. allpreps: allpreps-stamp.$(OS_TARGET)
  126. allpreps-stamp.$(OS_TARGET):
  127. $(FPC) -FE. -Fuunits test/cg/ptest.pp
  128. $(COPY) test/cg/obj/$(OS_TARGET)/$(CPU_TARGET)/ctest.o test/cg
  129. $(COPY) test/units/system/test*.txt .
  130. $(ECHO) $(DATE) > allpreps-stamp.$(OS_TARGET)
  131. #
  132. # Compile tests
  133. #
  134. .PHONY: alltbs alltbf allwebtbs allwebtbf alltest alltests
  135. alltbs : testcheck $(patsubst %.pp,%.log,$(wildcard tbs/t*.pp))
  136. alltbf : testcheck $(patsubst %.pp,%.log,$(wildcard tbf/t*.pp))
  137. allwebtbs : testcheck $(patsubst %.pp,%.log,$(wildcard webtbs/t*.pp))
  138. allwebtbf : testcheck $(patsubst %.pp,%.log,$(wildcard webtbf/t*.pp))
  139. alltest : testcheck $(patsubst %.pp,%.log,$(wildcard $(addsuffix /t*.pp,$(TESTDIRS))))
  140. alltests: alltest alltbs alltbf allwebtbs allwebtbf
  141. #
  142. # Compile and Run tests
  143. #
  144. .PHONY: allexectbs allexectbf allexecwebtbs allexecwebtbf allexectest allexectests
  145. allexectbs : testcheck $(patsubst %.pp,%.elg,$(wildcard tbs/t*.pp))
  146. allexectbf : testcheck $(patsubst %.pp,%.elg,$(wildcard tbf/t*.pp))
  147. allexecwebtbs : testcheck $(patsubst %.pp,%.elg,$(wildcard webtbs/t*.pp))
  148. allexecwebtbf : testcheck $(patsubst %.pp,%.elg,$(wildcard webtbf/t*.pp))
  149. allexectest : testcheck $(patsubst %.pp,%.elg,$(wildcard $(addsuffix /t*.pp,$(TESTDIRS))))
  150. allexectests: allexectest allexectbs allexectbf allexecwebtbs allexecwebtbf
  151. #
  152. # Clean
  153. #
  154. .PHONY: clean distclean
  155. clean:
  156. -rm -f $(addsuffix /*$(PPUEXT),$(DIRS))
  157. -rm -f $(addsuffix /*$(OEXT),$(DIRS))
  158. -rm -f $(addsuffix /*.rst,$(DIRS))
  159. -rm -f $(addsuffix /*$(SHAREDLIBEXT),$(DIRS))
  160. -rm -f $(addsuffix /*.log,$(DIRS))
  161. -rm -f $(addsuffix /*.elg,$(DIRS))
  162. ifeq ($(EXEEXT),)
  163. -rm -f $(wildcard $(patsubst %.pp,%$(EXEEXT),$(wildcard $(addsuffix /t*.pp,$(DIRS)))))
  164. else
  165. -rm -f $(addsuffix /*$(EXEEXT),$(DIRS))
  166. endif
  167. -rm -f test*.txt *.tmp *$(SHAREDLIBEXT) *$(OEXT) *$(PPUEXT) core
  168. -rm -f $(LOG) $(LONGLOG) $(FAILLIST)
  169. -rm -f ptest.* ppas.sh ppas.bat gmon.out allpreps-stamp.$(OS_TARGET)
  170. $(MAKE) -C units clean
  171. distclean: clean
  172. -rm -f dotest$(EXEEXT) digest$(EXEEXT) dbdigest$(EXEEXT)
  173. #
  174. # Main rules
  175. #
  176. .PHONY: all full rundigest dailytest onlyknown onlygraph onlyinteractive
  177. rundigest : $(DIGESTDEP)
  178. -$(DIGEST)
  179. ifeq ($(USESQL),YES)
  180. -$(DBDIGEST) -v $(DIGESTVER) -o $(OS_TARGET) -c $(CPU_TARGET) $(DBDIGESTOPT)
  181. endif
  182. all : allexectests
  183. full : clean allexectests rundigest
  184. onlyknown :
  185. $(MAKE) full "DOTESTOPT= $(DOTESTOPT) -k-"
  186. onlygraph :
  187. $(MAKE) full "DOTESTOPT= $(DOTESTOPT) -g-"
  188. onlyinteractive :
  189. $(MAKE) "DOTESTOPT= $(DOTESTOPT) -i-"
  190. info :
  191. @echo This Makefile allows to test the compiler
  192. @echo
  193. @echo Targets:
  194. @echo " all - continue all tests"
  195. @echo " full - clean and run all tests"
  196. @echo " dailytest - run full and save results"
  197. @echo " in files having the date as extension"
  198. @echo " onlyknown - run only known bugs"
  199. @echo " onlygraph - run only graph tests"
  200. @echo " onlyinteractive - run only interactive tests"
  201. @echo Done using FPC=$(FPC)
  202. ifdef COMSPEC
  203. @echo And using COMSPEC=$(COMSPEC)
  204. endif
  205. override DATESUFFIX:=$(shell $(DATE) +%Y.%m.%d)
  206. ifneq ($(wildcard log.$(DATESUFFIX)),)
  207. override DATESUFFIX=$(shell $(DATE) +%Y.%m.%d.%H.%M)
  208. endif
  209. ifneq ($(wildcard lastdate.txt),)
  210. LASTDATESUFFIX:=$(shell cat lastdate.txt)
  211. endif
  212. dailytest : full
  213. $(COPY) faillist faillist.$(DATESUFFIX)
  214. $(COPY) log log.$(DATESUFFIX)
  215. $(COPY) longlog longlog.$(DATESUFFIX)
  216. -$(DIGEST) > digest.$(DATESUFFIX)
  217. ifdef LASTDATESUFFIX
  218. -diff -u log.$(LASTDATESUFFIX) log.$(DATESUFFIX) > difflog.$(DATESUFFIX)
  219. -diff -u digest.$(LASTDATESUFFIX) digest.$(DATESUFFIX) > diffdigest.$(DATESUFFIX)
  220. -diff -u faillist.$(LASTDATESUFFIX) faillist.$(DATESUFFIX) > difflist.$(DATESUFFIX)
  221. endif
  222. @echo $(DATESUFFIX) > lastdate.txt