Makefile 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710
  1. #
  2. # Makefile generated by fpcmake v0.99.15 [2000/05/26]
  3. #
  4. defaultrule: info
  5. #####################################################################
  6. # Autodetect OS (Linux or Dos or Windows NT)
  7. # define inlinux when running under linux
  8. # define inWinNT when running under WinNT
  9. #####################################################################
  10. # We need only / in the path
  11. override PATH:=$(subst \,/,$(PATH))
  12. # Search for PWD and determine also if we are under linux
  13. PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH)))))
  14. ifeq ($(PWD),)
  15. PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH)))))
  16. ifeq ($(PWD),)
  17. nopwd:
  18. @echo You need the GNU utils package to use this Makefile!
  19. @echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip
  20. @exit
  21. else
  22. inlinux=1
  23. endif
  24. else
  25. PWD:=$(firstword $(PWD))
  26. endif
  27. # Detect NT - NT sets OS to Windows_NT
  28. ifndef inlinux
  29. ifeq ($(OS),Windows_NT)
  30. inWinNT=1
  31. endif
  32. endif
  33. # Detect OS/2 - OS/2 has OS2_SHELL defined
  34. ifndef inlinux
  35. ifndef inWinNT
  36. ifdef OS2_SHELL
  37. inOS2=1
  38. endif
  39. endif
  40. endif
  41. # The extension of executables
  42. ifdef inlinux
  43. EXEEXT=
  44. else
  45. EXEEXT=.exe
  46. endif
  47. # The path which is searched separated by spaces
  48. ifdef inlinux
  49. SEARCHPATH=$(subst :, ,$(PATH))
  50. else
  51. SEARCHPATH=$(subst ;, ,$(PATH))
  52. endif
  53. # Base dir
  54. ifdef PWD
  55. BASEDIR:=$(shell $(PWD))
  56. else
  57. BASEDIR=.
  58. endif
  59. #####################################################################
  60. # FPC version/target Detection
  61. #####################################################################
  62. # What compiler to use ?
  63. ifndef FPC
  64. # Compatibility with old makefiles
  65. ifdef PP
  66. FPC=$(PP)
  67. else
  68. ifdef inOS2
  69. FPC=ppos2
  70. else
  71. FPC=ppc386
  72. endif
  73. endif
  74. endif
  75. override FPC:=$(subst $(EXEEXT),,$(FPC))
  76. override FPC:=$(subst \,/,$(FPC))$(EXEEXT)
  77. # Target OS
  78. ifndef OS_TARGET
  79. OS_TARGET:=$(shell $(FPC) -iTO)
  80. endif
  81. # Source OS
  82. ifndef OS_SOURCE
  83. OS_SOURCE:=$(shell $(FPC) -iSO)
  84. endif
  85. # Target CPU
  86. ifndef CPU_TARGET
  87. CPU_TARGET:=$(shell $(FPC) -iTP)
  88. endif
  89. # Source CPU
  90. ifndef CPU_SOURCE
  91. CPU_SOURCE:=$(shell $(FPC) -iSP)
  92. endif
  93. # FPC version
  94. ifndef FPC_VERSION
  95. FPC_VERSION:=$(shell $(FPC) -iV)
  96. endif
  97. export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
  98. #####################################################################
  99. # FPCDIR Setting
  100. #####################################################################
  101. # Test FPCDIR to look if the RTL dir exists
  102. ifdef FPCDIR
  103. override FPCDIR:=$(subst \,/,$(FPCDIR))
  104. ifeq ($(wildcard $(FPCDIR)/rtl),)
  105. ifeq ($(wildcard $(FPCDIR)/units),)
  106. override FPCDIR=wrong
  107. endif
  108. endif
  109. else
  110. override FPCDIR=wrong
  111. endif
  112. # Detect FPCDIR
  113. ifeq ($(FPCDIR),wrong)
  114. ifdef inlinux
  115. override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
  116. ifeq ($(wildcard $(FPCDIR)/units),)
  117. override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
  118. endif
  119. else
  120. override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
  121. override FPCDIR:=$(FPCDIR)/..
  122. ifeq ($(wildcard $(FPCDIR)/rtl),)
  123. ifeq ($(wildcard $(FPCDIR)/units),)
  124. override FPCDIR:=$(FPCDIR)/..
  125. ifeq ($(wildcard $(FPCDIR)/rtl),)
  126. ifeq ($(wildcard $(FPCDIR)/units),)
  127. override FPCDIR=c:/pp
  128. endif
  129. endif
  130. endif
  131. endif
  132. endif
  133. endif
  134. #####################################################################
  135. # User Settings
  136. #####################################################################
  137. # Targets
  138. # Clean
  139. # Install
  140. ZIPTARGET=install
  141. # Defaults
  142. # Directories
  143. # Packages
  144. # Libraries
  145. #####################################################################
  146. # Default extensions
  147. #####################################################################
  148. # Default needed extensions (Go32v2,Linux)
  149. LOADEREXT=.as
  150. PPLEXT=.ppl
  151. PPUEXT=.ppu
  152. OEXT=.o
  153. ASMEXT=.s
  154. SMARTEXT=.sl
  155. STATICLIBEXT=.a
  156. SHAREDLIBEXT=.so
  157. RSTEXT=.rst
  158. FPCMADE=fpcmade
  159. # Go32v1
  160. ifeq ($(OS_TARGET),go32v1)
  161. PPUEXT=.pp1
  162. OEXT=.o1
  163. ASMEXT=.s1
  164. SMARTEXT=.sl1
  165. STATICLIBEXT=.a1
  166. SHAREDLIBEXT=.so1
  167. FPCMADE=fpcmade.v1
  168. endif
  169. # Go32v2
  170. ifeq ($(OS_TARGET),go32v2)
  171. FPCMADE=fpcmade.dos
  172. endif
  173. # Linux
  174. ifeq ($(OS_TARGET),linux)
  175. FPCMADE=fpcmade.lnx
  176. endif
  177. # Win32
  178. ifeq ($(OS_TARGET),win32)
  179. PPUEXT=.ppw
  180. OEXT=.ow
  181. ASMEXT=.sw
  182. SMARTEXT=.slw
  183. STATICLIBEXT=.aw
  184. SHAREDLIBEXT=.dll
  185. FPCMADE=fpcmade.w32
  186. endif
  187. # OS/2
  188. ifeq ($(OS_TARGET),os2)
  189. PPUEXT=.ppo
  190. ASMEXT=.so2
  191. OEXT=.oo2
  192. SMARTEXT=.so
  193. STATICLIBEXT=.ao2
  194. SHAREDLIBEXT=.dll
  195. FPCMADE=fpcmade.os2
  196. endif
  197. # library prefix
  198. LIBPREFIX=lib
  199. ifeq ($(OS_TARGET),go32v2)
  200. LIBPREFIX=
  201. endif
  202. ifeq ($(OS_TARGET),go32v1)
  203. LIBPREFIX=
  204. endif
  205. # determine which .pas extension is used
  206. ifndef PASEXT
  207. ifdef EXEOBJECTS
  208. override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS)))))
  209. else
  210. override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS)))))
  211. endif
  212. ifeq ($(TESTPAS),)
  213. PASEXT=.pp
  214. else
  215. PASEXT=.pas
  216. endif
  217. endif
  218. #####################################################################
  219. # Default Directories
  220. #####################################################################
  221. # set the prefix directory where to install everything
  222. ifndef PREFIXINSTALLDIR
  223. ifdef inlinux
  224. PREFIXINSTALLDIR=/usr
  225. else
  226. PREFIXINSTALLDIR=/pp
  227. endif
  228. endif
  229. export PREFIXINSTALLDIR
  230. # Where to place the resulting zip files
  231. ifndef DESTZIPDIR
  232. DESTZIPDIR:=$(BASEDIR)
  233. endif
  234. export DESTZIPDIR
  235. #####################################################################
  236. # Redirection
  237. #####################################################################
  238. ifndef REDIRFILE
  239. REDIRFILE=log
  240. endif
  241. ifdef REDIR
  242. ifndef inlinux
  243. override FPC=redir -eo $(FPC)
  244. endif
  245. # set the verbosity to max
  246. override FPCOPT+=-va
  247. override REDIR:= >> $(REDIRFILE)
  248. endif
  249. #####################################################################
  250. # Standard rules
  251. #####################################################################
  252. #####################################################################
  253. # Local Makefile
  254. #####################################################################
  255. ifneq ($(wildcard fpcmake.loc),)
  256. include fpcmake.loc
  257. endif
  258. #####################################################################
  259. # Users rules
  260. #####################################################################
  261. .PHONY: all units tests cont_tests
  262. # For linux by default no graph tests
  263. ifdef inlinux
  264. NOGRAPH=1
  265. endif
  266. DIRS=tf ts tbs tbf test tesi to webtbs webtbf
  267. # defining NOGRAPH excludes tests using the graph unit, defining
  268. # GRAPH includes those tests.
  269. ifdef NOGRAPH
  270. include graph.lst
  271. endif
  272. ifdef GRAPH
  273. graphlst=
  274. endif
  275. all : info
  276. units :
  277. $(MAKE) -C units
  278. tests : clean all_compilations
  279. cont_tests : all_compilations
  280. setdate :
  281. $(FPC) setdate.pp
  282. setdate$(EXEEXT)
  283. call setdate.bat
  284. .PHONY : setdate
  285. getret$(EXEEXT) : getret.pp
  286. $(FPC) getret
  287. getreturncode : getret$(EXEEXT)
  288. ifndef inlinux
  289. redir -ea $(FILE).log -oa $(FILE).log getret $(COMMAND)
  290. cp retcode $(FILE).$(RESEXT)
  291. else
  292. getret $(COMMAND) > $(FILE).log 2>$(FILE).log
  293. cp retcode $(FILE).$(RESEXT)
  294. # @echo "Return code of $(FILE) is $(cat retcode)"
  295. endif
  296. # retcode should be between 0 and 255
  297. # 256 is for halt
  298. # 512+doserror if doserror<>0
  299. # 1024 RESFILE does not exist
  300. # 2048 RESFILE is not set
  301. ifndef RESFILE
  302. RETVAL=2048
  303. else
  304. ifeq ($(wildcard $(RESFILE)*),$(RESFILE))
  305. RETVAL=$(shell cat $(RESFILE))
  306. else
  307. RETVAL=1024
  308. endif
  309. endif
  310. ifeq ($(RETVAL),0)
  311. testsuccess:
  312. @echo "Test for $(FILE) success (compiles)"
  313. @echo "Test for $(FILE) success (compiles)" >>$(LOG)
  314. else
  315. testsuccess:
  316. @echo "Test for $(FILE) fails (does not compile) error $(RETVAL)"
  317. @echo "Test for $(FILE) fails (does not compile) error $(RETVAL)" >> $(LOG)
  318. ifdef LONGLOG
  319. @echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG)
  320. @echo "Test for $(FILE) fails (does not compile) error $(RETVAL)" >> $(LONGLOG)
  321. @echo "" >> $(LONGLOG)
  322. cat $(FILE).log >> $(LONGLOG)
  323. @echo "" >> $(LONGLOG)
  324. endif
  325. @echo $(FILE) does not compile >> ts_fail
  326. @echo $(FILE) does not compile error $(RETVAL) >> faillist
  327. endif
  328. ifdef EXCFILE
  329. ifeq ($(wildcard $(EXCFILE)*),$(EXCFILE))
  330. EXERETVAL:=$(shell cat $(EXCFILE))
  331. else
  332. EXERETVAL=$(EXCFILE) does not exist
  333. endif
  334. else
  335. EXERETVAL=No EXCFILE variable defined
  336. endif
  337. ifdef REEFILE
  338. ifeq ($(wildcard $(REEFILE)*),$(REEFILE))
  339. export EXPECTEDRETVAL:=$(strip $(shell cat $(REEFILE)))
  340. else
  341. export EXPECTEDRETVAL=0
  342. endif
  343. endif
  344. ifdef FILE
  345. ifneq ($(CFGFILE),$(FILE).cfg)
  346. ifneq ($(wildcard $(FILE).cfg),)
  347. export CFGFILE:=$(FILE).cfg
  348. export COMPILEROPT:=$(filter-out COMPILEROPT=,$(shell grep COMPILEROPT= $(CFGFILE)))
  349. export RUNARGS:=$(filter-out RUNARGS=,$(shell grep RUNARGS= $(CFGFILE)))
  350. export POSTPROCESS:=$(filter-out POSTPROCESS=,$(shell grep POSTPROCESS= $(CFGFILE)))
  351. else
  352. CFGFILE=
  353. COMPILEROPT=
  354. RUNARGS=
  355. POSTPROCESS=
  356. endif
  357. endif
  358. endif
  359. ifeq ($(EXERETVAL),$(EXPECTEDRETVAL))
  360. ifeq ($(EXPECTEDRETVAL),0)
  361. testexecsuccess:
  362. @echo "Test for exec $(FILE) success (runs without error)"
  363. @echo "Test for $(FILE) success (runs without error)" >> $(LOG)
  364. else
  365. testexecsuccess:
  366. @echo "Test for exec $(FILE) success (gives correct error $(EXERETVAL))"
  367. @echo "Test for $(FILE) success (gives correct error $(EXERETVAL))" >> $(LOG)
  368. endif
  369. else
  370. ifeq ($(EXPECTEDRETVAL),0)
  371. testexecsuccess:
  372. @echo "Test for exec $(FILE) fails exec error $(EXERETVAL)"
  373. @echo "Test for exec $(FILE) fails exec error $(EXERETVAL)" >> $(LOG)
  374. @echo "Running $(FILE) fails with error $(EXERETVAL)" >> faillist
  375. ifdef LONGLOG
  376. @echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG)
  377. @echo "Test for exec $(FILE) fails exec error $(EXERETVAL)" >> $(LONGLOG)
  378. @echo "" >> $(LONGLOG)
  379. cat $(FILE).elg >> $(LONGLOG)
  380. @echo $(FILE) >> ex_fail
  381. endif
  382. else
  383. testexecsuccess:
  384. @echo "Test for exec $(FILE) fails exec error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)"
  385. @echo "Test for exec $(FILE) fails exec error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" >> $(LOG)
  386. @echo "Running $(FILE) fails with error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" >> faillist
  387. ifdef LONGLOG
  388. @echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG)
  389. @echo "Test for exec $(FILE) fails exec error $(EXERETVAL) ($(EXPECTEDRETVAL) expected)" >> $(LONGLOG)
  390. @echo "" >> $(LONGLOG)
  391. cat $(FILE).elg >> $(LONGLOG)
  392. @echo $(FILE) >> ex_fail
  393. endif
  394. endif
  395. endif
  396. ifeq ($(wildcard $(FILE)$(EXEEXT)),$(FILE)$(EXEEXT))
  397. testexec:
  398. @echo "Testing $(FILE)$(EXEEXT)"
  399. ifdef NOREDIR
  400. getret $(FILE)$(EXEEXT)
  401. @echo CFGFILE is $(CFGFILE)
  402. ifdef POSTPROCESS
  403. echo Running post process
  404. -$(POSTPROCESS)
  405. endif
  406. else
  407. ifndef inlinux
  408. redir -e $(FILE).elg -o $(FILE).elg getret $(FILE)$(EXEEXT) $(RUNARGS)
  409. @echo CFGFILE is $(CFGFILE)
  410. ifdef POSTPROCESS
  411. @echo Running post process
  412. -redir -ea $(FILE).elg -oa $(FILE).elg $(POSTPROCESS)
  413. endif
  414. else
  415. getret $(FILE)$(EXEEXT) $(RUNARGS) > $(FILE).elg 2>$(FILE).elg
  416. @echo CFGFILE is $(CFGFILE)
  417. ifdef POSTPROCESS
  418. echo Running post process
  419. -$(POSTPROCESS) >> $(FILE).elg 2>> $(FILE).elg
  420. endif
  421. endif
  422. endif
  423. cp -f retcode $(FILE).exc
  424. $(MAKE) testexecsuccess 'FILE=$(FILE)' 'EXCFILE=$(FILE).exc' 'REEFILE=$(FILE).ree'
  425. else
  426. testexec:
  427. ifeq ($(wildcard $(FILE)$(PPUEXT)),$(FILE)$(PPUEXT))
  428. @echo "file is a unit $(FILE)$(PPUEXT)"
  429. @echo "unit" > $(FILE).elg
  430. else
  431. ifeq ($(wildcard $(FILE).dll),$(FILE).dll)
  432. @echo "file is a DLL $(FILE)$(PPUEXT)"
  433. @echo "DLL" > $(FILE).elg
  434. else
  435. @echo "No exefile $(FILE)$(EXEEXT)"
  436. ifdef LONGLOG
  437. @echo "No exefile $(FILE)$(EXEEXT) was generated" >> $(LONGLOG)
  438. endif
  439. endif
  440. endif
  441. endif
  442. test_exc :
  443. @echo $(wildcard $(FILE).exc*)
  444. @echo xx$(wildcard $(EXCFILE)*)xx xx$(EXCFILE)xx
  445. cat $(FILE).exc
  446. ifneq ($(RETVAL),0)
  447. testfail:
  448. @echo "Test for $(FILE) success (does not compile) error $(RETVAL)"
  449. @echo "Test for $(FILE) success (does not compile) error $(RETVAL)" >> $(LOG)
  450. else
  451. testfail:
  452. @echo "Test for $(FILE) fails (does compile and should not)"
  453. @echo "Test for $(FILE) fails (does compile and should not)" >> $(LOG)
  454. ifdef LONGLOG
  455. @echo "Test for $(FILE) fails (does compile and should not)" >> $(LONGLOG)
  456. endif
  457. @echo $(FILE) >> tf_fail
  458. @echo $(FILE) compiles >> faillist
  459. endif
  460. ifndef LONGLOG
  461. export LONGLOG:=longlog
  462. endif
  463. ifndef LOG
  464. export LOG:=log
  465. endif
  466. listcfg :
  467. @echo CFGFILE is "$(CFGFILE)"
  468. @echo COMPILEROPT is "$(COMPILEROPT)"
  469. @echo RUNARGS is "$(RUNARGS)"
  470. @echo EXPECTEDRETVAL is "$(EXPECTEDRETVAL)"
  471. @echo POSTPROCESS is "$(POSTPROCESS)"
  472. ifdef FILE
  473. OPTFILE=$(wildcard $(FILE).opt)
  474. endif
  475. ifdef OPTFILE
  476. override OPT+=$(OPTFILE)
  477. endif
  478. ifndef FILE
  479. FILE=ts/ts00001.pp
  480. endif
  481. testone :
  482. $(MAKE) getreturncode 'COMMAND=$(FPC) $(OPT) $(COMPILEROPT) $(FILE).pp' 'RESEXT=$(RESEXT)' 'FILE=$(FILE)'
  483. %.res : %.pp
  484. $(MAKE) testone 'FILE=$*' 'RESEXT=res'
  485. $(MAKE) testsuccess 'FILE=$*' 'RESFILE=$*.res'
  486. %.ref : %.pp
  487. $(MAKE) testone 'FILE=$*' 'RESEXT=ref'
  488. $(MAKE) testfail 'FILE=$*' 'RESFILE=$*.ref'
  489. # exec log files
  490. # creates two files
  491. # *.elg log file
  492. # *.exc exicode of program
  493. %.elg : %.res
  494. $(MAKE) testexec 'FILE=$*'
  495. %.eli : %.res
  496. $(MAKE) testexec 'FILE=$*' 'NOREDIR=YES'
  497. allts : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard ts/ts*.pp)))
  498. alltbs : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard tbs/tbs*.pp)))
  499. allwebtbs : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard webtbs/tbug*.pp)))
  500. tbs0to99 : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard tbs/tbs00*.pp)))
  501. tbs100to199 : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard tbs/tbs01*.pp)))
  502. tbs200to299 : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard tbs/tbs02*.pp)))
  503. tbs300to399 : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard tbs/tbs03*.pp)))
  504. alltest : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard test/test*.pp)))
  505. alltesi : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard tesi/tesi*.pp)))
  506. alltis : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard tis/tis*.pp)))
  507. alltf : $(patsubst %.pp,%.ref,$(filter-out $(graphlst),$(wildcard tf/tf*.pp)))
  508. alltbf : $(patsubst %.pp,%.ref,$(filter-out $(graphlst),$(wildcard tbf/tbf*.pp)))
  509. allwebtbf : $(patsubst %.pp,%.ref,$(filter-out $(graphlst),$(wildcard webtbf/tbug*.pp)))
  510. allto : $(patsubst %.pp,%.res,$(filter-out $(graphlst),$(wildcard to/to*.pp)))
  511. ifndef TS_FAIL_LIST
  512. ifeq ($(wildcard ts_fail*),ts_fail)
  513. TS_FAIL_LIST=$(shell cat ts_fail)
  514. export TS_FAIL_LIST
  515. endif
  516. endif
  517. ifndef TF_FAIL_LIST
  518. ifeq ($(wildcard tf_fail*),tf_fail)
  519. TF_FAIL_LIST=$(shell cat tf_fail)
  520. export TF_FAIL_LIST
  521. endif
  522. endif
  523. ifndef EXEC_FAIL_LIST
  524. ifeq ($(wildcard ex_fail*),ex_fail)
  525. EXEC_FAIL_LIST=$(shell cat ex_fail)
  526. export EXEC_FAIL_LIST
  527. endif
  528. endif
  529. clean_fail :
  530. -rm -f $(addsuffix .res,$(TS_FAIL_LIST))
  531. -rm -f $(addsuffix .ref,$(TF_FAIL_LIST))
  532. -rm -f $(addsuffix .res,$(EXEC_FAIL_LIST))
  533. -rm -f $(addsuffix .elg,$(EXEC_FAIL_LIST))
  534. # Test all failure of last time
  535. # don't forget to try to run them again
  536. again :
  537. $(MAKE) internal_again LOG=again.log LONGLOG=again.llg
  538. internal_again : clean_fail $(addsuffix .res,$(TS_FAIL_LIST)) \
  539. $(addsuffix .ref,$(TF_FAIL_LIST)) \
  540. $(addsuffix .elg,$(EXEC_FAIL_LIST) $(TS_FAIL_LIST))
  541. grep fails $(LOG)
  542. all_compilations : allts alltbs allwebtbs alltf alltbf allwebtbf allto alltest alltesi alltis
  543. grep fails $(LOG)
  544. allexec : alltsexec alltbsexec allwebtbsexec alltestexec
  545. grep fails $(LOG)
  546. alltestexec: $(patsubst %.pp,%.elg,$(wildcard test/test*.pp))
  547. allfails :
  548. grep fails $(LOG) > fails.log
  549. # these test are interactive
  550. # no redirection !!!
  551. alltesiexec: $(patsubst %.pp,%.eli,$(filter-out $(graphlst),$(wildcard tesi/tesi*.pp)))
  552. alltsexec: $(patsubst %.pp,%.elg,$(filter-out $(graphlst),$(wildcard ts/ts*.pp)))
  553. alltbsexec: $(patsubst %.pp,%.elg,$(filter-out $(graphlst),$(wildcard tbs/tbs*.pp)))
  554. allwebtbsexec: $(patsubst %.pp,%.elg,$(filter-out $(graphlst),$(wildcard webtbs/tbug*.pp)))
  555. tbsexec0to99 : $(patsubst %.pp,%.elg,$(filter-out $(graphlst),$(wildcard tbs/tbs00*.pp)))
  556. tbsexec100to199 : $(patsubst %.pp,%.elg,$(filter-out $(graphlst),$(wildcard tbs/tbs01*.pp)))
  557. tbsexec200to299 : $(patsubst %.pp,%.elg,$(filter-out $(graphlst),$(wildcard tbs/tbs02*.pp)))
  558. tbsexec300to399 : $(patsubst %.pp,%.elg,$(filter-out $(graphlst),$(wildcard tbs/tbs03*.pp)))
  559. alltisexec: $(patsubst %.pp,%.eli,$(filter-out $(graphlst),$(wildcard tis/tis*.pp)))
  560. clean:
  561. -rm -f $(addsuffix /*.ref,$(DIRS))
  562. -rm -f $(addsuffix /*.res,$(DIRS))
  563. -rm -f $(addsuffix /*$(PPUEXT),$(DIRS))
  564. -rm -f $(addsuffix /*$(OEXT),$(DIRS))
  565. -rm -f $(addsuffix /*.log,$(DIRS))
  566. -rm -f $(addsuffix /*.elg,$(DIRS))
  567. -rm -f $(addsuffix /*.exc,$(DIRS))
  568. ifdef inlinux
  569. -rm -f $(patsubst %.pp,%$(EXEEXT),$(wildcard $(addsuffix /t*.pp,$(DIRS))))
  570. else
  571. -rm -f $(addsuffix /*$(EXEEXT),$(DIRS))
  572. endif
  573. -rm -f *.tmp
  574. -rm -f $(LOG) $(LONGLOG) faillist ts_fail tf_fail ex_fail
  575. -rm -f fpcmaked ppas.sh ppas.bat retcode
  576. full : clean all_compilations allexec
  577. info :
  578. @echo This Makefile allows to test the compiler
  579. @echo compilation of 'ts*.pp' should succeed
  580. @echo compilation of 'tf*.pp' should fail
  581. @echo compilation of 'test*.pp' should succeed
  582. @echo 'to*.pp' files should also compile
  583. @echo simply run \'make tests\' to test all compilation
  584. @echo run \'make allexec\' to test also if the executables
  585. @echo created behave like the should
  586. @echo run \'make tesiexec\' to test executables
  587. @echo that require interactive mode