Makefile 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624
  1. #
  2. # Makefile generated by fpcmake v0.99.13 [2000/01/06]
  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. #####################################################################
  54. # FPC version/target Detection
  55. #####################################################################
  56. # What compiler to use ?
  57. ifndef FPC
  58. # Compatibility with old makefiles
  59. ifdef PP
  60. FPC=$(PP)
  61. else
  62. ifdef inOS2
  63. FPC=ppos2$(EXEEXT)
  64. else
  65. FPC=ppc386$(EXEEXT)
  66. endif
  67. endif
  68. endif
  69. # Target OS
  70. ifndef OS_TARGET
  71. OS_TARGET:=$(shell $(FPC) -iTO)
  72. endif
  73. # Source OS
  74. ifndef OS_SOURCE
  75. OS_SOURCE:=$(shell $(FPC) -iSO)
  76. endif
  77. # Target CPU
  78. ifndef CPU_TARGET
  79. CPU_TARGET:=$(shell $(FPC) -iTP)
  80. endif
  81. # Source CPU
  82. ifndef CPU_SOURCE
  83. CPU_SOURCE:=$(shell $(FPC) -iSP)
  84. endif
  85. # FPC version
  86. ifndef FPC_VERSION
  87. FPC_VERSION:=$(shell $(FPC) -iV)
  88. endif
  89. export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
  90. # Test FPCDIR to look if the RTL dir exists
  91. ifdef FPCDIR
  92. override FPCDIR:=$(subst \,/,$(FPCDIR))
  93. ifeq ($(wildcard $(FPCDIR)/rtl),)
  94. override FPCDIR=wrong
  95. endif
  96. else
  97. override FPCDIR=wrong
  98. endif
  99. # Detect FPCDIR
  100. ifeq ($(FPCDIR),wrong)
  101. ifdef inlinux
  102. override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
  103. else
  104. override FPCDIR:=$(subst /$(FPC)$(EXEEXT),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC)$(EXEEXT),$(SEARCHPATH))))))
  105. endif
  106. endif
  107. ifndef PACKAGEDIR
  108. PACKAGEDIR=$(FPCDIR)/packages
  109. endif
  110. ifndef COMPONENTDIR
  111. COMPONENTDIR=$(FPCDIR)/components
  112. endif
  113. # Create units dir
  114. ifneq ($(FPCDIR),.)
  115. UNITSDIR=$(FPCDIR)/units/$(OS_TARGET)
  116. endif
  117. # Check if the dirs really exists, else turn it off
  118. ifeq ($(wildcard $(UNITSDIR)),)
  119. UNITSDIR=
  120. endif
  121. ifeq ($(wildcard $(PACKAGEDIR)),)
  122. PACKAGEDIR=
  123. endif
  124. ifeq ($(wildcard $(COMPONENTDIR)),)
  125. COMPONENTDIR=
  126. endif
  127. #####################################################################
  128. # Default Settings
  129. #####################################################################
  130. # Release ? Then force OPT and don't use extra opts via commandline
  131. ifndef REDIRFILE
  132. REDIRFILE=log
  133. endif
  134. ifdef REDIR
  135. ifndef inlinux
  136. override FPC=redir -eo $(FPC)
  137. endif
  138. # set the verbosity to max
  139. override OPT+=-va
  140. override REDIR:= >> $(REDIRFILE)
  141. endif
  142. #####################################################################
  143. # User Settings
  144. #####################################################################
  145. # Targets
  146. # Clean
  147. # Install
  148. ZIPTARGET=install
  149. # Defaults
  150. # Directories
  151. # Packages
  152. override PACKAGES+=rtl
  153. ifneq ($(wildcard $(FPCDIR)/rtl),)
  154. ifneq ($(wildcard $(FPCDIR)/rtl/$(OS_TARGET)),)
  155. PACKAGEDIR_RTL=$(FPCDIR)/rtl/$(OS_TARGET)
  156. else
  157. PACKAGEDIR_RTL=$(FPCDIR)/rtl
  158. endif
  159. UNITDIR_RTL=$(PACKAGEDIR_RTL)
  160. else
  161. PACKAGEDIR_RTL=
  162. ifneq ($(wildcard $(UNITSDIR)/rtl),)
  163. ifneq ($(wildcard $(UNITSDIR)/rtl/$(OS_TARGET)),)
  164. UNITDIR_RTL=$(UNITSDIR)/rtl/$(OS_TARGET)
  165. else
  166. UNITDIR_RTL=$(UNITSDIR)/rtl
  167. endif
  168. else
  169. UNITDIR_RTL=
  170. endif
  171. endif
  172. ifdef UNITDIR_RTL
  173. override NEEDUNITDIR+=$(UNITDIR_RTL)
  174. endif
  175. # Libraries
  176. #####################################################################
  177. # Default extensions
  178. #####################################################################
  179. # Default needed extensions (Go32v2,Linux)
  180. LOADEREXT=.as
  181. PPLEXT=.ppl
  182. PPUEXT=.ppu
  183. OEXT=.o
  184. ASMEXT=.s
  185. SMARTEXT=.sl
  186. STATICLIBEXT=.a
  187. SHAREDLIBEXT=.so
  188. RSTEXT=.rst
  189. PACKAGESUFFIX=
  190. FPCMADE=fpcmade
  191. # Go32v1
  192. ifeq ($(OS_TARGET),go32v1)
  193. PPUEXT=.pp1
  194. OEXT=.o1
  195. ASMEXT=.s1
  196. SMARTEXT=.sl1
  197. STATICLIBEXT=.a1
  198. SHAREDLIBEXT=.so1
  199. PACKAGESUFFIX=v1
  200. FPCMADE=fpcmade.v1
  201. endif
  202. # Go32v2
  203. ifeq ($(OS_TARGET),go32v2)
  204. PACKAGESUFFIX=go32
  205. FPCMADE=fpcmade.dos
  206. endif
  207. # Linux
  208. ifeq ($(OS_TARGET),linux)
  209. PACKAGESUFFIX=linux
  210. FPCMADE=fpcmade.lnx
  211. endif
  212. # Win32
  213. ifeq ($(OS_TARGET),win32)
  214. PPUEXT=.ppw
  215. OEXT=.ow
  216. ASMEXT=.sw
  217. SMARTEXT=.slw
  218. STATICLIBEXT=.aw
  219. SHAREDLIBEXT=.dll
  220. PACKAGESUFFIX=win32
  221. FPCMADE=fpcmade.w32
  222. endif
  223. # OS/2
  224. ifeq ($(OS_TARGET),os2)
  225. PPUEXT=.ppo
  226. ASMEXT=.so2
  227. OEXT=.oo2
  228. SMARTEXT=.so
  229. STATICLIBEXT=.ao2
  230. SHAREDLIBEXT=.dll
  231. PACKAGESUFFIX=os2
  232. FPCMADE=fpcmade.os2
  233. endif
  234. # library prefix
  235. LIBPREFIX=lib
  236. ifeq ($(OS_TARGET),go32v2)
  237. LIBPREFIX=
  238. endif
  239. ifeq ($(OS_TARGET),go32v1)
  240. LIBPREFIX=
  241. endif
  242. # determine which .pas extension is used
  243. ifndef PASEXT
  244. ifdef EXEOBJECTS
  245. override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS)))))
  246. else
  247. override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS)))))
  248. endif
  249. ifeq ($(TESTPAS),)
  250. PASEXT=.pp
  251. else
  252. PASEXT=.pas
  253. endif
  254. endif
  255. #####################################################################
  256. # Standard rules
  257. #####################################################################
  258. ifdef PACKAGERTL
  259. ifneq ($(wildcard $(PACKAGEDIR_RTL)),)
  260. ifeq ($(wildcard $(PACKAGEDIR_RTL)/$(FPCMADE)),)
  261. override COMPILEPACKAGES+=rtl
  262. rtl_package:
  263. $(MAKE) -C $(PACKAGEDIR_RTL) all
  264. endif
  265. endif
  266. endif
  267. PACKAGERTL=1
  268. ifdef PACKAGERTL
  269. ifneq ($(wildcard $(PACKAGEDIR_RTL)),)
  270. ifeq ($(wildcard $(PACKAGEDIR_RTL)/$(FPCMADE)),)
  271. override COMPILEPACKAGES+=rtl
  272. rtl_package:
  273. $(MAKE) -C $(PACKAGEDIR_RTL) all
  274. endif
  275. endif
  276. endif
  277. .PHONY: rtl_package rtl_package
  278. #####################################################################
  279. # Users rules
  280. #####################################################################
  281. DIRS=tf ts tbs tbf test tesi to webtbs webtbf
  282. all : info
  283. tests : clean all_compilations
  284. cont_tests : all_compilations
  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) >> ts_fail
  326. @echo $(FILE) >> 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. ifeq ($(EXERETVAL),0)
  338. testexecsuccess:
  339. @echo "Test for exec $(FILE) success (runs without error)"
  340. @echo "Test for $(FILE) success (runs without error)" >> $(LOG)
  341. else
  342. testexecsuccess:
  343. @echo "Test for exec $(FILE) fails exec error $(EXERETVAL)"
  344. @echo "Test for exec $(FILE) fails exec error $(EXERETVAL)" >> $(LOG)
  345. ifdef LONGLOG
  346. @echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $(LONGLOG)
  347. @echo "Test for exec $(FILE) fails exec error $(EXERETVAL)" >> $(LONGLOG)
  348. @echo "" >> $(LONGLOG)
  349. cat $(FILE).elg >> $(LONGLOG)
  350. @echo $(FILE) >> ex_fail
  351. endif
  352. endif
  353. ifeq ($(wildcard $(FILE)$(EXEEXT)),$(FILE)$(EXEEXT))
  354. testexec:
  355. @echo "Testing $(FILE)$(EXEEXT)"
  356. ifdef NOREDIR
  357. getret $(FILE)$(EXEEXT)
  358. else
  359. ifndef inlinux
  360. redir -e $(FILE).elg -o $(FILE).elg getret $(FILE)$(EXEEXT)
  361. else
  362. getret $(FILE)$(EXEEXT) > $(FILE).elg 2>$(FILE).elg
  363. endif
  364. endif
  365. cp -f retcode $(FILE).exc
  366. $(MAKE) testexecsuccess 'FILE=$(FILE)' 'EXCFILE=$(FILE).exc'
  367. else
  368. testexec:
  369. ifeq ($(wildcard $(FILE)$(PPUEXT)),$(FILE)$(PPUEXT))
  370. @echo "file is a unit $(FILE)$(PPUEXT)"
  371. else
  372. @echo "No exefile $(FILE)$(EXEEXT)"
  373. @echo $(FILE) >> faillist
  374. ifdef LONGLOG
  375. @echo "No exefile $(FILE)$(EXEEXT) was generated" >> $(LONGLOG)
  376. endif
  377. endif
  378. endif
  379. test_exc :
  380. @echo $(wildcard $(FILE).exc*)
  381. @echo xx$(wildcard $(EXCFILE)*)xx xx$(EXCFILE)xx
  382. cat $(FILE).exc
  383. ifneq ($(RETVAL),0)
  384. testfail:
  385. @echo "Test for $(FILE) success (does not compile) error $(RETVAL)"
  386. @echo "Test for $(FILE) success (does not compile) error $(RETVAL)" >> $(LOG)
  387. else
  388. testfail:
  389. @echo "Test for $(FILE) fails (does compile and should not)"
  390. @echo "Test for $(FILE) fails (does compile and should not)" >> $(LOG)
  391. ifdef LONGLOG
  392. @echo "Test for $(FILE) fails (does compile and should not)" >> $(LONGLOG)
  393. endif
  394. @echo $(FILE) >> tf_fail
  395. @echo $(FILE) >> faillist
  396. endif
  397. ifndef LONGLOG
  398. export LONGLOG:=longlog
  399. endif
  400. ifndef LOG
  401. export LOG:=log
  402. endif
  403. ifdef FILE
  404. OPTFILE=$(wildcard $(FILE).opt)
  405. endif
  406. ifdef OPTFILE
  407. override OPT+=$(OPTFILE)
  408. endif
  409. ifndef FILE
  410. FILE=ts/ts00001.pp
  411. endif
  412. testone :
  413. $(MAKE) getreturncode 'COMMAND=$(FPC) $(OPT) $(FILE).pp' 'RESEXT=$(RESEXT)' 'FILE=$(FILE)'
  414. %.res : %.pp
  415. $(MAKE) testone 'FILE=$*' 'RESEXT=res'
  416. $(MAKE) testsuccess 'FILE=$*' 'RESFILE=$*.res'
  417. %.ref : %.pp
  418. $(MAKE) testone 'FILE=$*' 'RESEXT=ref'
  419. $(MAKE) testfail 'FILE=$*' 'RESFILE=$*.ref'
  420. # exec log files
  421. # creates two files
  422. # *.elg log file
  423. # *.exc exicode of program
  424. %.elg : %.res
  425. $(MAKE) testexec 'FILE=$*'
  426. %.eli : %.res
  427. $(MAKE) testexec 'FILE=$*' 'NOREDIR=YES'
  428. allts : $(patsubst %.pp,%.res,$(wildcard ts/ts*.pp))
  429. alltbs : $(patsubst %.pp,%.res,$(wildcard tbs/tbs*.pp))
  430. allwebtbs : $(patsubst %.pp,%.res,$(wildcard webtbs/tbug*.pp))
  431. tbs0to99 : $(patsubst %.pp,%.res,$(wildcard tbs/tbs00*.pp))
  432. tbs100to199 : $(patsubst %.pp,%.res,$(wildcard tbs/tbs01*.pp))
  433. tbs200to299 : $(patsubst %.pp,%.res,$(wildcard tbs/tbs02*.pp))
  434. tbs300to399 : $(patsubst %.pp,%.res,$(wildcard tbs/tbs03*.pp))
  435. alltest : $(patsubst %.pp,%.res,$(wildcard test/test*.pp))
  436. alltesi : $(patsubst %.pp,%.res,$(wildcard tesi/tesi*.pp))
  437. alltis : $(patsubst %.pp,%.res,$(wildcard tis/tis*.pp))
  438. alltf : $(patsubst %.pp,%.ref,$(wildcard tf/tf*.pp))
  439. alltbf : $(patsubst %.pp,%.ref,$(wildcard tbf/tbf*.pp))
  440. allwebtbf : $(patsubst %.pp,%.ref,$(wildcard webtbf/tbug*.pp))
  441. allto : $(patsubst %.pp,%.res,$(wildcard to/to*.pp))
  442. ifndef TS_FAIL_LIST
  443. ifeq ($(wildcard ts_fail*),ts_fail)
  444. TS_FAIL_LIST=$(shell cat ts_fail)
  445. export TS_FAIL_LIST
  446. endif
  447. endif
  448. ifndef TF_FAIL_LIST
  449. ifeq ($(wildcard tf_fail*),tf_fail)
  450. TF_FAIL_LIST=$(shell cat tf_fail)
  451. export TF_FAIL_LIST
  452. endif
  453. endif
  454. ifndef EXEC_FAIL_LIST
  455. ifeq ($(wildcard ex_fail*),ex_fail)
  456. EXEC_FAIL_LIST=$(shell cat ex_fail)
  457. export EXEC_FAIL_LIST
  458. endif
  459. endif
  460. clean_fail :
  461. -rm -f $(addsuffix .res,$(TS_FAIL_LIST))
  462. -rm -f $(addsuffix .ref,$(TF_FAIL_LIST))
  463. -rm -f $(addsuffix .res,$(EXEC_FAIL_LIST))
  464. -rm -f $(addsuffix .elg,$(EXEC_FAIL_LIST))
  465. # Test all failure of last time
  466. # don't forget to try to run them again
  467. again :
  468. $(MAKE) internal_again LOG=again.log LONGLOG=again.llg
  469. internal_again : clean_fail $(addsuffix .res,$(TS_FAIL_LIST)) \
  470. $(addsuffix .ref,$(TF_FAIL_LIST)) \
  471. $(addsuffix .elg,$(EXEC_FAIL_LIST) $(TS_FAIL_LIST))
  472. grep fails $(LOG)
  473. all_compilations : allts alltbs allwebtbs alltf alltbf allwebtbf allto alltest alltesi alltis
  474. grep fails $(LOG)
  475. allexec : alltsexec alltbsexec allwebtbsexec alltestexec
  476. grep fails $(LOG)
  477. alltestexec: $(patsubst %.pp,%.elg,$(wildcard test/test*.pp))
  478. allfails :
  479. grep fails $(LOG) > fails.log
  480. # these test are interactive
  481. # no redirection !!!
  482. alltesiexec: $(patsubst %.pp,%.eli,$(wildcard tesi/tesi*.pp))
  483. alltsexec: $(patsubst %.pp,%.elg,$(wildcard ts/ts*.pp))
  484. alltbsexec: $(patsubst %.pp,%.elg,$(wildcard tbs/tbs*.pp))
  485. allwebtbsexec: $(patsubst %.pp,%.elg,$(wildcard webtbs/tbug*.pp))
  486. tbsexec0to99 : $(patsubst %.pp,%.elg,$(wildcard tbs/tbs00*.pp))
  487. tbsexec100to199 : $(patsubst %.pp,%.elg,$(wildcard tbs/tbs01*.pp))
  488. tbsexec200to299 : $(patsubst %.pp,%.elg,$(wildcard tbs/tbs02*.pp))
  489. tbsexec300to399 : $(patsubst %.pp,%.elg,$(wildcard tbs/tbs03*.pp))
  490. alltisexec: $(patsubst %.pp,%.eli,$(wildcard tis/tis*.pp))
  491. clean:
  492. -rm -f $(addsuffix /*.re*,$(DIRS))
  493. -rm -f $(addsuffix /*$(PPUEXT),$(DIRS))
  494. -rm -f $(addsuffix /*$(OEXT),$(DIRS))
  495. -rm -f $(addsuffix /*.log,$(DIRS))
  496. -rm -f $(addsuffix /*.elg,$(DIRS))
  497. -rm -f $(addsuffix /*.exc,$(DIRS))
  498. ifdef inlinux
  499. -rm -f $(patsubst %.pp,%$(EXEEXT),$(wildcard $(addsuffix /t*.pp,$(DIRS))))
  500. else
  501. -rm -f $(addsuffix /*$(EXEEXT),$(DIRS))
  502. endif
  503. -rm -f $(LOG) $(LONGLOG) faillist ts_fail tf_fail
  504. -rm -f fpcmaked ppas.sh ppas.bat retcode
  505. info :
  506. @echo This Makefile allows to test the compiler
  507. @echo compilation of 'ts*.pp' should succeed
  508. @echo compilation of 'tf*.pp' should fail
  509. @echo compilation of 'test*.pp' should succeed
  510. @echo 'to*.pp' files should also compile
  511. @echo simply run \'make tests\' to test all compilation
  512. @echo run \'make allexec\' to test also if the executables
  513. @echo created behave like the should
  514. @echo run \'make tesiexec\' to test executables
  515. @echo that require interactive mode