Makefile 17 KB

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