Makefile 81 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011
  1. #
  2. # Don't edit, this file is generated by FPCMake Version 2.0.0
  3. #
  4. default: allexectests
  5. MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-netbsd m68k-amiga m68k-atari m68k-palmos m68k-macosclassic m68k-embedded m68k-sinclairql m68k-human68k powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macosclassic powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-haiku x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-android x86_64-aros x86_64-dragonfly arm-linux arm-netbsd arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros arm-freertos arm-ios powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android mips64-linux mips64el-linux jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-freebsd aarch64-darwin aarch64-win64 aarch64-embedded aarch64-iphonesim aarch64-android aarch64-ios wasm32-embedded wasm32-wasi sparc64-linux riscv32-linux riscv32-embedded riscv32-freertos riscv64-linux riscv64-embedded xtensa-linux xtensa-embedded xtensa-freertos z80-embedded z80-zxspectrum z80-msxdos z80-amstradcpc loongarch64-linux
  6. BSDs = freebsd netbsd openbsd darwin dragonfly
  7. UNIXs = linux $(BSDs) solaris qnx haiku aix
  8. LIMIT83fs = go32v2 os2 emx watcom msdos win16 atari human68k
  9. OSNeedsComspecToRunBatch = go32v2 watcom
  10. FORCE:
  11. .PHONY: FORCE
  12. lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
  13. override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
  14. ifneq ($(findstring darwin,$(OSTYPE)),)
  15. inUnix=1 #darwin
  16. SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
  17. else
  18. ifeq ($(findstring ;,$(PATH)),)
  19. inUnix=1
  20. SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
  21. else
  22. SEARCHPATH:=$(subst ;, ,$(PATH))
  23. endif
  24. endif
  25. SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
  26. PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
  27. ifeq ($(PWD),)
  28. PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
  29. ifeq ($(PWD),)
  30. $(error You need the GNU utils package to use this Makefile)
  31. else
  32. PWD:=$(firstword $(PWD))
  33. SRCEXEEXT=
  34. endif
  35. else
  36. PWD:=$(firstword $(PWD))
  37. SRCEXEEXT=.exe
  38. endif
  39. ifndef inUnix
  40. ifeq ($(OS),Windows_NT)
  41. inWinNT=1
  42. else
  43. ifdef OS2_SHELL
  44. inOS2=1
  45. endif
  46. endif
  47. else
  48. ifneq ($(findstring cygdrive,$(PATH)),)
  49. inCygWin=1
  50. endif
  51. endif
  52. ifdef inUnix
  53. SRCBATCHEXT=.sh
  54. else
  55. ifdef inOS2
  56. SRCBATCHEXT=.cmd
  57. else
  58. SRCBATCHEXT=.bat
  59. endif
  60. endif
  61. ifdef COMSPEC
  62. ifneq ($(filter $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
  63. ifndef RUNBATCH
  64. RUNBATCH=$(COMSPEC) /C
  65. endif
  66. endif
  67. endif
  68. ifdef inUnix
  69. PATHSEP=/
  70. else
  71. PATHSEP:=$(subst /,\,/)
  72. ifdef inCygWin
  73. PATHSEP=/
  74. endif
  75. endif
  76. ifdef PWD
  77. BASEDIR:=$(subst \,/,$(shell $(PWD)))
  78. ifdef inCygWin
  79. ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
  80. BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
  81. BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
  82. BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
  83. endif
  84. endif
  85. else
  86. BASEDIR=.
  87. endif
  88. ifdef inOS2
  89. ifndef ECHO
  90. ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
  91. ifeq ($(ECHO),)
  92. ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
  93. ifeq ($(ECHO),)
  94. ECHO=echo
  95. else
  96. ECHO:=$(firstword $(ECHO))
  97. endif
  98. else
  99. ECHO:=$(firstword $(ECHO))
  100. endif
  101. endif
  102. export ECHO
  103. endif
  104. override DEFAULT_FPCDIR=..
  105. ifndef FPC
  106. ifdef PP
  107. FPC=$(PP)
  108. endif
  109. endif
  110. ifndef FPC
  111. FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
  112. ifneq ($(FPCPROG),)
  113. FPCPROG:=$(firstword $(FPCPROG))
  114. ifneq ($(CPU_TARGET),)
  115. FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
  116. else
  117. FPC:=$(shell $(FPCPROG) -PB)
  118. endif
  119. ifneq ($(findstring Error,$(FPC)),)
  120. override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
  121. else
  122. ifeq ($(strip $(wildcard $(FPC))),)
  123. FPC:=$(firstword $(FPCPROG))
  124. endif
  125. endif
  126. else
  127. override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
  128. endif
  129. endif
  130. override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
  131. override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
  132. FOUNDFPC:=$(strip $(wildcard $(FPC)))
  133. ifeq ($(FOUNDFPC),)
  134. FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
  135. ifeq ($(FOUNDFPC),)
  136. $(error Compiler $(FPC) not found)
  137. endif
  138. endif
  139. ifndef FPC_COMPILERINFO
  140. FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
  141. endif
  142. ifndef FPC_VERSION
  143. FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
  144. endif
  145. export FPC FPC_VERSION FPC_COMPILERINFO
  146. unexport CHECKDEPEND ALLDEPENDENCIES
  147. ifndef CPU_TARGET
  148. ifdef CPU_TARGET_DEFAULT
  149. CPU_TARGET=$(CPU_TARGET_DEFAULT)
  150. endif
  151. endif
  152. ifndef OS_TARGET
  153. ifdef OS_TARGET_DEFAULT
  154. OS_TARGET=$(OS_TARGET_DEFAULT)
  155. endif
  156. endif
  157. ifndef CPU_SOURCE
  158. CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
  159. endif
  160. ifndef CPU_TARGET
  161. CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
  162. endif
  163. ifndef OS_SOURCE
  164. OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
  165. endif
  166. ifndef OS_TARGET
  167. OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
  168. endif
  169. CPU_OS_TARGET=$(CPU_TARGET)-$(OS_TARGET)
  170. ifdef SUB_TARGET
  171. L_SUB_TARGET=$(call lc,$(SUB_TARGET))
  172. FULL_TARGET:=$(CPU_TARGET)-$(OS_TARGET)-$(L_SUB_TARGET)
  173. else
  174. FULL_TARGET:=$(CPU_TARGET)-$(OS_TARGET)
  175. endif
  176. CPU_OS_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
  177. ifdef SUB_SOURCE
  178. L_SUB_SOURCE=$(call lc,$(SUB_SOURCE))
  179. FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)-$(L_SUB_SOURCE)
  180. else
  181. FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
  182. endif
  183. ifeq ($(CPU_TARGET),armeb)
  184. ARCH=arm
  185. override FPCOPT+=-Cb
  186. else
  187. ifeq ($(CPU_TARGET),armel)
  188. ARCH=arm
  189. override FPCOPT+=-CaEABI
  190. else
  191. ARCH=$(CPU_TARGET)
  192. endif
  193. endif
  194. ifeq ($(CPU_OS_TARGET),aarch64-embedded)
  195. endif
  196. ifdef SUB_TARGET
  197. FPCOPT+=-t$(SUB_TARGET)
  198. FPMAKE_OPT+=--subtarget=$(SUB_TARGET)
  199. endif
  200. ifeq ($(CPU_OS_TARGET),arm-embedded)
  201. ifeq ($(SUBARCH),)
  202. $(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
  203. endif
  204. override FPCOPT+=-Cp$(SUBARCH)
  205. endif
  206. ifeq ($(CPU_OS_TARGET),avr-embedded)
  207. ifeq ($(SUBARCH),)
  208. $(error When compiling for avr-embedded, a sub-architecture (e.g. SUBARCH=avr25 or SUBARCH=avr35) must be defined)
  209. endif
  210. override FPCOPT+=-Cp$(SUBARCH)
  211. endif
  212. ifeq ($(CPU_OS_TARGET),mipsel-embedded)
  213. ifeq ($(SUBARCH),)
  214. $(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
  215. endif
  216. override FPCOPT+=-Cp$(SUBARCH)
  217. endif
  218. ifeq ($(CPU_OS_TARGET),xtensa-embedded)
  219. ifeq ($(SUBARCH),)
  220. $(error When compiling for xtensa-embedded, a sub-architecture (e.g. SUBARCH=lx106 or SUBARCH=lx6) must be defined)
  221. endif
  222. override FPCOPT+=-Cp$(SUBARCH)
  223. endif
  224. ifeq ($(CPU_OS_TARGET),xtensa-freertos)
  225. ifeq ($(SUBARCH),)
  226. $(error When compiling for xtensa-freertos, a sub-architecture (e.g. SUBARCH=lx106 or SUBARCH=lx6) must be defined)
  227. endif
  228. override FPCOPT+=-Cp$(SUBARCH)
  229. endif
  230. ifeq ($(CPU_OS_TARGET),arm-freertos)
  231. ifeq ($(SUBARCH),)
  232. $(error When compiling for arm-freertos, a sub-architecture (e.g. SUBARCH=armv6m or SUBARCH=armv7em) must be defined)
  233. endif
  234. override FPCOPT+=-Cp$(SUBARCH)
  235. endif
  236. ifneq ($(filter $(OS_SOURCE),$(LIMIT83fs)),)
  237. TARGETSUFFIX=$(OS_TARGET)
  238. SOURCESUFFIX=$(OS_SOURCE)
  239. else
  240. ifneq ($(filter $(OS_TARGET),$(LIMIT83fs)),)
  241. TARGETSUFFIX=$(OS_TARGET)
  242. else
  243. TARGETSUFFIX=$(FULL_TARGET)
  244. endif
  245. SOURCESUFFIX=$(FULL_SOURCE)
  246. endif
  247. ifneq ($(CPU_OS_TARGET),$(CPU_OS_SOURCE))
  248. CROSSCOMPILE=1
  249. endif
  250. ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
  251. ifeq ($(filter $(CPU_OS_TARGET),$(MAKEFILETARGETS)),)
  252. $(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
  253. endif
  254. endif
  255. ifneq ($(filter $(OS_TARGET),$(BSDs)),)
  256. BSDhier=1
  257. endif
  258. ifeq ($(OS_TARGET),linux)
  259. linuxHier=1
  260. endif
  261. ifndef CROSSCOMPILE
  262. BUILDFULLNATIVE=1
  263. export BUILDFULLNATIVE
  264. endif
  265. ifdef BUILDFULLNATIVE
  266. BUILDNATIVE=1
  267. export BUILDNATIVE
  268. endif
  269. export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE SUB_TARGET SUB_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE CPU_OS_TARGET CPU_OS_SOURCE
  270. ifdef FPCDIR
  271. override FPCDIR:=$(subst \,/,$(FPCDIR))
  272. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
  273. override FPCDIR=wrong
  274. endif
  275. else
  276. override FPCDIR=wrong
  277. endif
  278. ifdef DEFAULT_FPCDIR
  279. ifeq ($(FPCDIR),wrong)
  280. override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
  281. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
  282. override FPCDIR=wrong
  283. endif
  284. endif
  285. endif
  286. ifeq ($(FPCDIR),wrong)
  287. ifdef inUnix
  288. override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
  289. ifeq ($(wildcard $(FPCDIR)/units),)
  290. override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
  291. endif
  292. else
  293. override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
  294. override FPCDIR:=$(FPCDIR)/..
  295. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
  296. override FPCDIR:=$(FPCDIR)/..
  297. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
  298. override FPCDIR:=$(BASEDIR)
  299. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl)),)
  300. override FPCDIR=c:/pp
  301. endif
  302. endif
  303. endif
  304. endif
  305. endif
  306. ifndef CROSSBINDIR
  307. CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
  308. endif
  309. ifneq ($(filter $(OS_TARGET),darwin iphonesim ios),)
  310. ifneq ($(filter $(OS_SOURCE),darwin ios),)
  311. DARWIN2DARWIN=1
  312. endif
  313. endif
  314. ifndef BINUTILSPREFIX
  315. ifndef CROSSBINDIR
  316. ifdef CROSSCOMPILE
  317. ifneq ($(OS_TARGET),msdos)
  318. ifndef DARWIN2DARWIN
  319. ifneq ($(CPU_TARGET),jvm)
  320. BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
  321. ifeq ($(OS_TARGET),android)
  322. ifeq ($(CPU_TARGET),arm)
  323. BINUTILSPREFIX=arm-linux-androideabi-
  324. else
  325. ifeq ($(CPU_TARGET),i386)
  326. BINUTILSPREFIX=i686-linux-android-
  327. else
  328. BINUTILSPREFIX=$(CPU_TARGET)-linux-android-
  329. endif
  330. endif
  331. endif
  332. endif
  333. endif
  334. else
  335. BINUTILSPREFIX=$(OS_TARGET)-
  336. endif
  337. endif
  338. endif
  339. endif
  340. UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
  341. ifeq ($(UNITSDIR),)
  342. UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
  343. endif
  344. PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages)
  345. ifndef FPCFPMAKE
  346. ifdef CROSSCOMPILE
  347. ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
  348. FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
  349. ifneq ($(FPCPROG),)
  350. FPCPROG:=$(firstword $(FPCPROG))
  351. FPCFPMAKE:=$(shell $(FPCPROG) -PB)
  352. ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
  353. FPCFPMAKE:=$(firstword $(FPCPROG))
  354. endif
  355. else
  356. override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
  357. endif
  358. else
  359. FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
  360. FPMAKE_SKIP_CONFIG=-n
  361. export FPCFPMAKE
  362. export FPMAKE_SKIP_CONFIG
  363. endif
  364. else
  365. FPMAKE_SKIP_CONFIG=-n
  366. FPCFPMAKE=$(FPC)
  367. endif
  368. endif
  369. ifeq ($(CPU_OS_TARGET),i386-linux)
  370. override TARGET_PROGRAMS+=gparmake createlst
  371. endif
  372. ifeq ($(CPU_OS_TARGET),i386-go32v2)
  373. override TARGET_PROGRAMS+=gparmake createlst
  374. endif
  375. ifeq ($(CPU_OS_TARGET),i386-win32)
  376. override TARGET_PROGRAMS+=gparmake createlst
  377. endif
  378. ifeq ($(CPU_OS_TARGET),i386-os2)
  379. override TARGET_PROGRAMS+=gparmake createlst
  380. endif
  381. ifeq ($(CPU_OS_TARGET),i386-freebsd)
  382. override TARGET_PROGRAMS+=gparmake createlst
  383. endif
  384. ifeq ($(CPU_OS_TARGET),i386-beos)
  385. override TARGET_PROGRAMS+=gparmake createlst
  386. endif
  387. ifeq ($(CPU_OS_TARGET),i386-haiku)
  388. override TARGET_PROGRAMS+=gparmake createlst
  389. endif
  390. ifeq ($(CPU_OS_TARGET),i386-netbsd)
  391. override TARGET_PROGRAMS+=gparmake createlst
  392. endif
  393. ifeq ($(CPU_OS_TARGET),i386-solaris)
  394. override TARGET_PROGRAMS+=gparmake createlst
  395. endif
  396. ifeq ($(CPU_OS_TARGET),i386-netware)
  397. override TARGET_PROGRAMS+=gparmake createlst
  398. endif
  399. ifeq ($(CPU_OS_TARGET),i386-openbsd)
  400. override TARGET_PROGRAMS+=gparmake createlst
  401. endif
  402. ifeq ($(CPU_OS_TARGET),i386-wdosx)
  403. override TARGET_PROGRAMS+=gparmake createlst
  404. endif
  405. ifeq ($(CPU_OS_TARGET),i386-darwin)
  406. override TARGET_PROGRAMS+=gparmake createlst
  407. endif
  408. ifeq ($(CPU_OS_TARGET),i386-emx)
  409. override TARGET_PROGRAMS+=gparmake createlst
  410. endif
  411. ifeq ($(CPU_OS_TARGET),i386-watcom)
  412. override TARGET_PROGRAMS+=gparmake createlst
  413. endif
  414. ifeq ($(CPU_OS_TARGET),i386-netwlibc)
  415. override TARGET_PROGRAMS+=gparmake createlst
  416. endif
  417. ifeq ($(CPU_OS_TARGET),i386-wince)
  418. override TARGET_PROGRAMS+=gparmake createlst
  419. endif
  420. ifeq ($(CPU_OS_TARGET),i386-embedded)
  421. override TARGET_PROGRAMS+=gparmake createlst
  422. endif
  423. ifeq ($(CPU_OS_TARGET),i386-symbian)
  424. override TARGET_PROGRAMS+=gparmake createlst
  425. endif
  426. ifeq ($(CPU_OS_TARGET),i386-nativent)
  427. override TARGET_PROGRAMS+=gparmake createlst
  428. endif
  429. ifeq ($(CPU_OS_TARGET),i386-iphonesim)
  430. override TARGET_PROGRAMS+=gparmake createlst
  431. endif
  432. ifeq ($(CPU_OS_TARGET),i386-android)
  433. override TARGET_PROGRAMS+=gparmake createlst
  434. endif
  435. ifeq ($(CPU_OS_TARGET),i386-aros)
  436. override TARGET_PROGRAMS+=gparmake createlst
  437. endif
  438. ifeq ($(CPU_OS_TARGET),m68k-linux)
  439. override TARGET_PROGRAMS+=gparmake createlst
  440. endif
  441. ifeq ($(CPU_OS_TARGET),m68k-netbsd)
  442. override TARGET_PROGRAMS+=gparmake createlst
  443. endif
  444. ifeq ($(CPU_OS_TARGET),m68k-amiga)
  445. override TARGET_PROGRAMS+=gparmake createlst
  446. endif
  447. ifeq ($(CPU_OS_TARGET),m68k-atari)
  448. override TARGET_PROGRAMS+=gparmake createlst
  449. endif
  450. ifeq ($(CPU_OS_TARGET),m68k-palmos)
  451. override TARGET_PROGRAMS+=gparmake createlst
  452. endif
  453. ifeq ($(CPU_OS_TARGET),m68k-macosclassic)
  454. override TARGET_PROGRAMS+=gparmake createlst
  455. endif
  456. ifeq ($(CPU_OS_TARGET),m68k-embedded)
  457. override TARGET_PROGRAMS+=gparmake createlst
  458. endif
  459. ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
  460. override TARGET_PROGRAMS+=gparmake createlst
  461. endif
  462. ifeq ($(CPU_OS_TARGET),m68k-human68k)
  463. override TARGET_PROGRAMS+=gparmake createlst
  464. endif
  465. ifeq ($(CPU_OS_TARGET),powerpc-linux)
  466. override TARGET_PROGRAMS+=gparmake createlst
  467. endif
  468. ifeq ($(CPU_OS_TARGET),powerpc-netbsd)
  469. override TARGET_PROGRAMS+=gparmake createlst
  470. endif
  471. ifeq ($(CPU_OS_TARGET),powerpc-amiga)
  472. override TARGET_PROGRAMS+=gparmake createlst
  473. endif
  474. ifeq ($(CPU_OS_TARGET),powerpc-macosclassic)
  475. override TARGET_PROGRAMS+=gparmake createlst
  476. endif
  477. ifeq ($(CPU_OS_TARGET),powerpc-darwin)
  478. override TARGET_PROGRAMS+=gparmake createlst
  479. endif
  480. ifeq ($(CPU_OS_TARGET),powerpc-morphos)
  481. override TARGET_PROGRAMS+=gparmake createlst
  482. endif
  483. ifeq ($(CPU_OS_TARGET),powerpc-embedded)
  484. override TARGET_PROGRAMS+=gparmake createlst
  485. endif
  486. ifeq ($(CPU_OS_TARGET),powerpc-wii)
  487. override TARGET_PROGRAMS+=gparmake createlst
  488. endif
  489. ifeq ($(CPU_OS_TARGET),powerpc-aix)
  490. override TARGET_PROGRAMS+=gparmake createlst
  491. endif
  492. ifeq ($(CPU_OS_TARGET),sparc-linux)
  493. override TARGET_PROGRAMS+=gparmake createlst
  494. endif
  495. ifeq ($(CPU_OS_TARGET),sparc-netbsd)
  496. override TARGET_PROGRAMS+=gparmake createlst
  497. endif
  498. ifeq ($(CPU_OS_TARGET),sparc-solaris)
  499. override TARGET_PROGRAMS+=gparmake createlst
  500. endif
  501. ifeq ($(CPU_OS_TARGET),sparc-embedded)
  502. override TARGET_PROGRAMS+=gparmake createlst
  503. endif
  504. ifeq ($(CPU_OS_TARGET),x86_64-linux)
  505. override TARGET_PROGRAMS+=gparmake createlst
  506. endif
  507. ifeq ($(CPU_OS_TARGET),x86_64-freebsd)
  508. override TARGET_PROGRAMS+=gparmake createlst
  509. endif
  510. ifeq ($(CPU_OS_TARGET),x86_64-haiku)
  511. override TARGET_PROGRAMS+=gparmake createlst
  512. endif
  513. ifeq ($(CPU_OS_TARGET),x86_64-netbsd)
  514. override TARGET_PROGRAMS+=gparmake createlst
  515. endif
  516. ifeq ($(CPU_OS_TARGET),x86_64-solaris)
  517. override TARGET_PROGRAMS+=gparmake createlst
  518. endif
  519. ifeq ($(CPU_OS_TARGET),x86_64-openbsd)
  520. override TARGET_PROGRAMS+=gparmake createlst
  521. endif
  522. ifeq ($(CPU_OS_TARGET),x86_64-darwin)
  523. override TARGET_PROGRAMS+=gparmake createlst
  524. endif
  525. ifeq ($(CPU_OS_TARGET),x86_64-win64)
  526. override TARGET_PROGRAMS+=gparmake createlst
  527. endif
  528. ifeq ($(CPU_OS_TARGET),x86_64-embedded)
  529. override TARGET_PROGRAMS+=gparmake createlst
  530. endif
  531. ifeq ($(CPU_OS_TARGET),x86_64-iphonesim)
  532. override TARGET_PROGRAMS+=gparmake createlst
  533. endif
  534. ifeq ($(CPU_OS_TARGET),x86_64-android)
  535. override TARGET_PROGRAMS+=gparmake createlst
  536. endif
  537. ifeq ($(CPU_OS_TARGET),x86_64-aros)
  538. override TARGET_PROGRAMS+=gparmake createlst
  539. endif
  540. ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
  541. override TARGET_PROGRAMS+=gparmake createlst
  542. endif
  543. ifeq ($(CPU_OS_TARGET),arm-linux)
  544. override TARGET_PROGRAMS+=gparmake createlst
  545. endif
  546. ifeq ($(CPU_OS_TARGET),arm-netbsd)
  547. override TARGET_PROGRAMS+=gparmake createlst
  548. endif
  549. ifeq ($(CPU_OS_TARGET),arm-palmos)
  550. override TARGET_PROGRAMS+=gparmake createlst
  551. endif
  552. ifeq ($(CPU_OS_TARGET),arm-wince)
  553. override TARGET_PROGRAMS+=gparmake createlst
  554. endif
  555. ifeq ($(CPU_OS_TARGET),arm-gba)
  556. override TARGET_PROGRAMS+=gparmake createlst
  557. endif
  558. ifeq ($(CPU_OS_TARGET),arm-nds)
  559. override TARGET_PROGRAMS+=gparmake createlst
  560. endif
  561. ifeq ($(CPU_OS_TARGET),arm-embedded)
  562. override TARGET_PROGRAMS+=gparmake createlst
  563. endif
  564. ifeq ($(CPU_OS_TARGET),arm-symbian)
  565. override TARGET_PROGRAMS+=gparmake createlst
  566. endif
  567. ifeq ($(CPU_OS_TARGET),arm-android)
  568. override TARGET_PROGRAMS+=gparmake createlst
  569. endif
  570. ifeq ($(CPU_OS_TARGET),arm-aros)
  571. override TARGET_PROGRAMS+=gparmake createlst
  572. endif
  573. ifeq ($(CPU_OS_TARGET),arm-freertos)
  574. override TARGET_PROGRAMS+=gparmake createlst
  575. endif
  576. ifeq ($(CPU_OS_TARGET),arm-ios)
  577. override TARGET_PROGRAMS+=gparmake createlst
  578. endif
  579. ifeq ($(CPU_OS_TARGET),powerpc64-linux)
  580. override TARGET_PROGRAMS+=gparmake createlst
  581. endif
  582. ifeq ($(CPU_OS_TARGET),powerpc64-darwin)
  583. override TARGET_PROGRAMS+=gparmake createlst
  584. endif
  585. ifeq ($(CPU_OS_TARGET),powerpc64-embedded)
  586. override TARGET_PROGRAMS+=gparmake createlst
  587. endif
  588. ifeq ($(CPU_OS_TARGET),powerpc64-aix)
  589. override TARGET_PROGRAMS+=gparmake createlst
  590. endif
  591. ifeq ($(CPU_OS_TARGET),avr-embedded)
  592. override TARGET_PROGRAMS+=gparmake createlst
  593. endif
  594. ifeq ($(CPU_OS_TARGET),armeb-linux)
  595. override TARGET_PROGRAMS+=gparmake createlst
  596. endif
  597. ifeq ($(CPU_OS_TARGET),armeb-embedded)
  598. override TARGET_PROGRAMS+=gparmake createlst
  599. endif
  600. ifeq ($(CPU_OS_TARGET),mips-linux)
  601. override TARGET_PROGRAMS+=gparmake createlst
  602. endif
  603. ifeq ($(CPU_OS_TARGET),mipsel-linux)
  604. override TARGET_PROGRAMS+=gparmake createlst
  605. endif
  606. ifeq ($(CPU_OS_TARGET),mipsel-embedded)
  607. override TARGET_PROGRAMS+=gparmake createlst
  608. endif
  609. ifeq ($(CPU_OS_TARGET),mipsel-android)
  610. override TARGET_PROGRAMS+=gparmake createlst
  611. endif
  612. ifeq ($(CPU_OS_TARGET),mips64-linux)
  613. override TARGET_PROGRAMS+=gparmake createlst
  614. endif
  615. ifeq ($(CPU_OS_TARGET),mips64el-linux)
  616. override TARGET_PROGRAMS+=gparmake createlst
  617. endif
  618. ifeq ($(CPU_OS_TARGET),jvm-java)
  619. override TARGET_PROGRAMS+=gparmake createlst
  620. endif
  621. ifeq ($(CPU_OS_TARGET),jvm-android)
  622. override TARGET_PROGRAMS+=gparmake createlst
  623. endif
  624. ifeq ($(CPU_OS_TARGET),i8086-embedded)
  625. override TARGET_PROGRAMS+=gparmake createlst
  626. endif
  627. ifeq ($(CPU_OS_TARGET),i8086-msdos)
  628. override TARGET_PROGRAMS+=gparmake createlst
  629. endif
  630. ifeq ($(CPU_OS_TARGET),i8086-win16)
  631. override TARGET_PROGRAMS+=gparmake createlst
  632. endif
  633. ifeq ($(CPU_OS_TARGET),aarch64-linux)
  634. override TARGET_PROGRAMS+=gparmake createlst
  635. endif
  636. ifeq ($(CPU_OS_TARGET),aarch64-freebsd)
  637. override TARGET_PROGRAMS+=gparmake createlst
  638. endif
  639. ifeq ($(CPU_OS_TARGET),aarch64-darwin)
  640. override TARGET_PROGRAMS+=gparmake createlst
  641. endif
  642. ifeq ($(CPU_OS_TARGET),aarch64-win64)
  643. override TARGET_PROGRAMS+=gparmake createlst
  644. endif
  645. ifeq ($(CPU_OS_TARGET),aarch64-embedded)
  646. override TARGET_PROGRAMS+=gparmake createlst
  647. endif
  648. ifeq ($(CPU_OS_TARGET),aarch64-iphonesim)
  649. override TARGET_PROGRAMS+=gparmake createlst
  650. endif
  651. ifeq ($(CPU_OS_TARGET),aarch64-android)
  652. override TARGET_PROGRAMS+=gparmake createlst
  653. endif
  654. ifeq ($(CPU_OS_TARGET),aarch64-ios)
  655. override TARGET_PROGRAMS+=gparmake createlst
  656. endif
  657. ifeq ($(CPU_OS_TARGET),wasm32-embedded)
  658. override TARGET_PROGRAMS+=gparmake createlst
  659. endif
  660. ifeq ($(CPU_OS_TARGET),wasm32-wasi)
  661. override TARGET_PROGRAMS+=gparmake createlst
  662. endif
  663. ifeq ($(CPU_OS_TARGET),sparc64-linux)
  664. override TARGET_PROGRAMS+=gparmake createlst
  665. endif
  666. ifeq ($(CPU_OS_TARGET),riscv32-linux)
  667. override TARGET_PROGRAMS+=gparmake createlst
  668. endif
  669. ifeq ($(CPU_OS_TARGET),riscv32-embedded)
  670. override TARGET_PROGRAMS+=gparmake createlst
  671. endif
  672. ifeq ($(CPU_OS_TARGET),riscv32-freertos)
  673. override TARGET_PROGRAMS+=gparmake createlst
  674. endif
  675. ifeq ($(CPU_OS_TARGET),riscv64-linux)
  676. override TARGET_PROGRAMS+=gparmake createlst
  677. endif
  678. ifeq ($(CPU_OS_TARGET),riscv64-embedded)
  679. override TARGET_PROGRAMS+=gparmake createlst
  680. endif
  681. ifeq ($(CPU_OS_TARGET),xtensa-linux)
  682. override TARGET_PROGRAMS+=gparmake createlst
  683. endif
  684. ifeq ($(CPU_OS_TARGET),xtensa-embedded)
  685. override TARGET_PROGRAMS+=gparmake createlst
  686. endif
  687. ifeq ($(CPU_OS_TARGET),xtensa-freertos)
  688. override TARGET_PROGRAMS+=gparmake createlst
  689. endif
  690. ifeq ($(CPU_OS_TARGET),z80-embedded)
  691. override TARGET_PROGRAMS+=gparmake createlst
  692. endif
  693. ifeq ($(CPU_OS_TARGET),z80-zxspectrum)
  694. override TARGET_PROGRAMS+=gparmake createlst
  695. endif
  696. ifeq ($(CPU_OS_TARGET),z80-msxdos)
  697. override TARGET_PROGRAMS+=gparmake createlst
  698. endif
  699. ifeq ($(CPU_OS_TARGET),z80-amstradcpc)
  700. override TARGET_PROGRAMS+=gparmake createlst
  701. endif
  702. ifeq ($(CPU_OS_TARGET),loongarch64-linux)
  703. override TARGET_PROGRAMS+=gparmake createlst
  704. endif
  705. override INSTALL_FPCPACKAGE=y
  706. ifdef REQUIRE_UNITSDIR
  707. override UNITSDIR+=$(REQUIRE_UNITSDIR)
  708. endif
  709. ifdef REQUIRE_PACKAGESDIR
  710. override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
  711. endif
  712. ifdef ZIPINSTALL
  713. ifneq ($(filter $(OS_TARGET),$(UNIXs)),)
  714. UNIXHier=1
  715. endif
  716. else
  717. ifneq ($(filter $(OS_SOURCE),$(UNIXs)),)
  718. UNIXHier=1
  719. endif
  720. endif
  721. ifndef INSTALL_PREFIX
  722. ifdef PREFIX
  723. INSTALL_PREFIX=$(PREFIX)
  724. endif
  725. endif
  726. ifndef INSTALL_PREFIX
  727. ifdef UNIXHier
  728. INSTALL_PREFIX=/usr/local
  729. else
  730. ifdef INSTALL_FPCPACKAGE
  731. INSTALL_BASEDIR:=/pp
  732. else
  733. INSTALL_BASEDIR:=/$(PACKAGE_NAME)
  734. endif
  735. endif
  736. endif
  737. export INSTALL_PREFIX
  738. ifdef INSTALL_FPCSUBDIR
  739. export INSTALL_FPCSUBDIR
  740. endif
  741. ifndef DIST_DESTDIR
  742. DIST_DESTDIR:=$(BASEDIR)
  743. endif
  744. export DIST_DESTDIR
  745. ifndef COMPILER_UNITTARGETDIR
  746. ifdef PACKAGEDIR_MAIN
  747. COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
  748. else
  749. COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
  750. endif
  751. endif
  752. ifndef COMPILER_TARGETDIR
  753. COMPILER_TARGETDIR=.
  754. endif
  755. ifndef INSTALL_BASEDIR
  756. ifdef UNIXHier
  757. ifdef INSTALL_FPCPACKAGE
  758. INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
  759. else
  760. INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
  761. endif
  762. else
  763. INSTALL_BASEDIR:=$(INSTALL_PREFIX)
  764. endif
  765. endif
  766. ifndef INSTALL_BINDIR
  767. ifdef UNIXHier
  768. INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
  769. else
  770. INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
  771. ifdef INSTALL_FPCPACKAGE
  772. ifdef CROSSCOMPILE
  773. ifdef CROSSINSTALL
  774. INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
  775. else
  776. INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
  777. endif
  778. else
  779. INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
  780. endif
  781. endif
  782. endif
  783. endif
  784. ifndef INSTALL_UNITDIR
  785. INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
  786. ifdef INSTALL_FPCPACKAGE
  787. ifdef PACKAGE_NAME
  788. INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
  789. endif
  790. endif
  791. endif
  792. ifndef INSTALL_LIBDIR
  793. ifdef UNIXHier
  794. INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
  795. else
  796. INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
  797. endif
  798. endif
  799. ifndef INSTALL_SOURCEDIR
  800. ifdef UNIXHier
  801. ifdef BSDhier
  802. SRCPREFIXDIR=share/src
  803. else
  804. ifdef linuxHier
  805. SRCPREFIXDIR=share/src
  806. else
  807. SRCPREFIXDIR=src
  808. endif
  809. endif
  810. ifdef INSTALL_FPCPACKAGE
  811. ifdef INSTALL_FPCSUBDIR
  812. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
  813. else
  814. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  815. endif
  816. else
  817. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  818. endif
  819. else
  820. ifdef INSTALL_FPCPACKAGE
  821. ifdef INSTALL_FPCSUBDIR
  822. INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
  823. else
  824. INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
  825. endif
  826. else
  827. INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
  828. endif
  829. endif
  830. endif
  831. ifndef INSTALL_DOCDIR
  832. ifdef UNIXHier
  833. ifdef BSDhier
  834. DOCPREFIXDIR=share/doc
  835. else
  836. ifdef linuxHier
  837. DOCPREFIXDIR=share/doc
  838. else
  839. DOCPREFIXDIR=doc
  840. endif
  841. endif
  842. ifdef INSTALL_FPCPACKAGE
  843. INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  844. else
  845. INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  846. endif
  847. else
  848. ifdef INSTALL_FPCPACKAGE
  849. INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
  850. else
  851. INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
  852. endif
  853. endif
  854. endif
  855. ifndef INSTALL_EXAMPLEDIR
  856. ifdef UNIXHier
  857. ifdef INSTALL_FPCPACKAGE
  858. ifdef BSDhier
  859. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  860. else
  861. ifdef linuxHier
  862. INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
  863. else
  864. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
  865. endif
  866. endif
  867. else
  868. ifdef BSDhier
  869. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  870. else
  871. ifdef linuxHier
  872. INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  873. else
  874. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  875. endif
  876. endif
  877. endif
  878. else
  879. ifdef INSTALL_FPCPACKAGE
  880. INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
  881. else
  882. INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
  883. endif
  884. endif
  885. endif
  886. ifndef INSTALL_DATADIR
  887. INSTALL_DATADIR=$(INSTALL_BASEDIR)
  888. endif
  889. ifndef INSTALL_SHAREDDIR
  890. INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
  891. endif
  892. ifdef CROSSCOMPILE
  893. ifndef CROSSBINDIR
  894. CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
  895. ifeq ($(CROSSBINDIR),)
  896. CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
  897. endif
  898. endif
  899. else
  900. CROSSBINDIR=
  901. endif
  902. ifeq ($(OS_SOURCE),linux)
  903. ifndef GCCLIBDIR
  904. ifeq ($(CPU_TARGET),i386)
  905. ifneq ($(filter x86_64,$(shell uname -a)),)
  906. ifeq ($(BINUTILSPREFIX),)
  907. GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
  908. else
  909. CROSSGCCOPT=-m32
  910. endif
  911. endif
  912. endif
  913. ifeq ($(CPU_TARGET),powerpc)
  914. ifeq ($(BINUTILSPREFIX),)
  915. GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
  916. else
  917. CROSSGCCOPT=-m32
  918. endif
  919. endif
  920. ifeq ($(CPU_TARGET),powerpc64)
  921. ifeq ($(BINUTILSPREFIX),)
  922. GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
  923. else
  924. CROSSGCCOPT=-m64
  925. endif
  926. endif
  927. ifeq ($(CPU_TARGET),sparc)
  928. ifneq ($(filter sparc64,$(shell uname -a)),)
  929. ifeq ($(BINUTILSPREFIX),)
  930. GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
  931. else
  932. CROSSGCCOPT=-m32
  933. endif
  934. endif
  935. endif
  936. ifneq ($(filter $(CPU_TARGET),mips64 mipsel64),)
  937. ifeq ($(BINUTILSPREFIX),)
  938. GCCLIBDIR:=$(shell dirname `gcc -mabi=64 -print-libgcc-file-name`)
  939. else
  940. CROSSGCCOPT=-mabi=64
  941. endif
  942. endif
  943. ifneq ($(filter $(CPU_TARGET),mips mipsel),)
  944. ifeq ($(BINUTILSPREFIX),)
  945. GCCLIBDIR:=$(shell dirname `gcc -mabi=32 -print-libgcc-file-name`)
  946. else
  947. CROSSGCCOPT=-mabi=32
  948. endif
  949. endif
  950. ifeq ($(BINUTILSPREFIX),)
  951. ifeq ($(GCCLIBDIR),)
  952. GCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file-name`)
  953. endif
  954. else
  955. ifeq ($(CROSSGCCOPT),)
  956. CROSSGCCOPT=-g
  957. endif
  958. endif
  959. endif
  960. ifdef FPCFPMAKE
  961. FPCFPMAKE_CPU_TARGET=$(shell $(FPCFPMAKE) -iTP)
  962. ifeq ($(CPU_TARGET),$(FPCFPMAKE_CPU_TARGET))
  963. FPCMAKEGCCLIBDIR:=$(GCCLIBDIR)
  964. else
  965. ifneq ($(filter $(FPCFPMAKE_CPU_TARGET),aarch64 powerpc64 riscv64 sparc64 x86_64 loongarch64),)
  966. FPCMAKE_CROSSGCCOPT=-m64
  967. else
  968. ifneq ($(filter $(FPCFPMAKE_CPU_TARGET),mips64 mips64el),)
  969. FPCMAKE_CROSSGCCOPT=-mabi=64
  970. else
  971. ifneq ($(filter $(FPCFPMAKE_CPU_TARGET),mips mipsel),)
  972. FPCMAKE_CROSSGCCOPT=-mabi=32
  973. else
  974. ifeq ($(FPCFPMAKE_CPU_TARGET),riscv64)
  975. FPCMAKE_CROSSGCCOPT=-mabi=lp64
  976. else
  977. ifeq ($(FPCFPMAKE_CPU_TARGET),riscv32)
  978. FPCMAKE_CROSSGCCOPT=-mabi=ilp32
  979. else
  980. ifeq ($(FPCFPMAKE_CPU_TARGET),loongarch64)
  981. FPCMAKE_CROSSGCCOPT=-mabi=lp64d
  982. else
  983. FPCMAKE_CROSSGCCOPT=-m32
  984. endif
  985. endif
  986. endif
  987. endif
  988. endif
  989. endif
  990. FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
  991. endif
  992. endif
  993. ifndef FPCMAKEGCCLIBDIR
  994. FPCMAKEGCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file-name`)
  995. endif
  996. ifndef GCCLIBDIR
  997. CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
  998. ifneq ($(CROSSGCC),)
  999. GCCLIBDIR:=$(shell dirname `$(CROSSGCC) $(CROSSGCCOPT) -print-libgcc-file-name`)
  1000. endif
  1001. endif
  1002. endif
  1003. ifdef inUnix
  1004. ifeq ($(OS_SOURCE),netbsd)
  1005. OTHERLIBDIR:=/usr/pkg/lib
  1006. endif
  1007. export GCCLIBDIR FPCMAKEGCCLIBDIR OTHERLIBDIR
  1008. endif
  1009. BATCHEXT=.bat
  1010. LOADEREXT=.as
  1011. EXEEXT=.exe
  1012. PPLEXT=.ppl
  1013. PPUEXT=.ppu
  1014. OEXT=.o
  1015. LTOEXT=.bc
  1016. ASMEXT=.s
  1017. SMARTEXT=.sl
  1018. STATICLIBEXT=.a
  1019. SHAREDLIBEXT=.so
  1020. SHAREDLIBPREFIX=libfp
  1021. STATICLIBPREFIX=libp
  1022. IMPORTLIBPREFIX=libimp
  1023. RSTEXT=.rst
  1024. EXEDBGEXT=.dbg
  1025. ifeq ($(OS_TARGET),go32v1)
  1026. STATICLIBPREFIX=
  1027. SHORTSUFFIX=v1
  1028. endif
  1029. ifeq ($(OS_TARGET),go32v2)
  1030. STATICLIBPREFIX=
  1031. SHORTSUFFIX=dos
  1032. IMPORTLIBPREFIX=
  1033. endif
  1034. ifeq ($(OS_TARGET),watcom)
  1035. STATICLIBPREFIX=
  1036. OEXT=.obj
  1037. ASMEXT=.asm
  1038. SHAREDLIBEXT=.dll
  1039. SHORTSUFFIX=wat
  1040. IMPORTLIBPREFIX=
  1041. endif
  1042. ifneq ($(CPU_TARGET),jvm)
  1043. ifeq ($(OS_TARGET),android)
  1044. BATCHEXT=.sh
  1045. EXEEXT=
  1046. HASSHAREDLIB=1
  1047. SHORTSUFFIX=lnx
  1048. endif
  1049. endif
  1050. ifeq ($(OS_TARGET),linux)
  1051. BATCHEXT=.sh
  1052. EXEEXT=
  1053. HASSHAREDLIB=1
  1054. SHORTSUFFIX=lnx
  1055. endif
  1056. ifeq ($(OS_TARGET),dragonfly)
  1057. BATCHEXT=.sh
  1058. EXEEXT=
  1059. HASSHAREDLIB=1
  1060. SHORTSUFFIX=df
  1061. endif
  1062. ifeq ($(OS_TARGET),freebsd)
  1063. BATCHEXT=.sh
  1064. EXEEXT=
  1065. HASSHAREDLIB=1
  1066. SHORTSUFFIX=fbs
  1067. endif
  1068. ifeq ($(OS_TARGET),netbsd)
  1069. BATCHEXT=.sh
  1070. EXEEXT=
  1071. HASSHAREDLIB=1
  1072. SHORTSUFFIX=nbs
  1073. endif
  1074. ifeq ($(OS_TARGET),openbsd)
  1075. BATCHEXT=.sh
  1076. EXEEXT=
  1077. HASSHAREDLIB=1
  1078. SHORTSUFFIX=obs
  1079. endif
  1080. ifeq ($(OS_TARGET),win32)
  1081. SHAREDLIBEXT=.dll
  1082. SHORTSUFFIX=w32
  1083. endif
  1084. ifeq ($(OS_TARGET),os2)
  1085. BATCHEXT=.cmd
  1086. AOUTEXT=.out
  1087. STATICLIBPREFIX=
  1088. SHAREDLIBEXT=.dll
  1089. SHORTSUFFIX=os2
  1090. ECHO=echo
  1091. IMPORTLIBPREFIX=
  1092. endif
  1093. ifeq ($(OS_TARGET),emx)
  1094. BATCHEXT=.cmd
  1095. AOUTEXT=.out
  1096. STATICLIBPREFIX=
  1097. SHAREDLIBEXT=.dll
  1098. SHORTSUFFIX=emx
  1099. ECHO=echo
  1100. IMPORTLIBPREFIX=
  1101. endif
  1102. ifeq ($(OS_TARGET),amiga)
  1103. EXEEXT=
  1104. SHAREDLIBEXT=.library
  1105. SHORTSUFFIX=amg
  1106. endif
  1107. ifeq ($(OS_TARGET),aros)
  1108. EXEEXT=
  1109. SHAREDLIBEXT=.library
  1110. SHORTSUFFIX=aros
  1111. endif
  1112. ifeq ($(OS_TARGET),morphos)
  1113. EXEEXT=
  1114. SHAREDLIBEXT=.library
  1115. SHORTSUFFIX=mos
  1116. endif
  1117. ifeq ($(OS_TARGET),atari)
  1118. EXEEXT=.ttp
  1119. SHORTSUFFIX=ata
  1120. endif
  1121. ifeq ($(OS_TARGET),beos)
  1122. BATCHEXT=.sh
  1123. EXEEXT=
  1124. SHORTSUFFIX=be
  1125. endif
  1126. ifeq ($(OS_TARGET),haiku)
  1127. BATCHEXT=.sh
  1128. EXEEXT=
  1129. SHORTSUFFIX=hai
  1130. endif
  1131. ifeq ($(OS_TARGET),solaris)
  1132. BATCHEXT=.sh
  1133. EXEEXT=
  1134. SHORTSUFFIX=sun
  1135. endif
  1136. ifeq ($(OS_TARGET),qnx)
  1137. BATCHEXT=.sh
  1138. EXEEXT=
  1139. SHORTSUFFIX=qnx
  1140. endif
  1141. ifeq ($(OS_TARGET),netware)
  1142. EXEEXT=.nlm
  1143. STATICLIBPREFIX=
  1144. SHORTSUFFIX=nw
  1145. IMPORTLIBPREFIX=imp
  1146. endif
  1147. ifeq ($(OS_TARGET),netwlibc)
  1148. EXEEXT=.nlm
  1149. STATICLIBPREFIX=
  1150. SHORTSUFFIX=nwl
  1151. IMPORTLIBPREFIX=imp
  1152. endif
  1153. ifeq ($(OS_TARGET),macosclassic)
  1154. BATCHEXT=
  1155. EXEEXT=
  1156. DEBUGSYMEXT=.xcoff
  1157. SHORTSUFFIX=mac
  1158. IMPORTLIBPREFIX=imp
  1159. endif
  1160. ifneq ($(filter $(OS_TARGET),darwin iphonesim ios),)
  1161. BATCHEXT=.sh
  1162. EXEEXT=
  1163. HASSHAREDLIB=1
  1164. SHORTSUFFIX=dwn
  1165. EXEDBGEXT=.dSYM
  1166. endif
  1167. ifeq ($(OS_TARGET),gba)
  1168. EXEEXT=.gba
  1169. SHAREDLIBEXT=.so
  1170. SHORTSUFFIX=gba
  1171. endif
  1172. ifeq ($(OS_TARGET),symbian)
  1173. SHAREDLIBEXT=.dll
  1174. SHORTSUFFIX=symbian
  1175. endif
  1176. ifeq ($(OS_TARGET),NativeNT)
  1177. SHAREDLIBEXT=.dll
  1178. SHORTSUFFIX=nativent
  1179. endif
  1180. ifeq ($(OS_TARGET),wii)
  1181. EXEEXT=.dol
  1182. SHAREDLIBEXT=.so
  1183. SHORTSUFFIX=wii
  1184. endif
  1185. ifeq ($(OS_TARGET),aix)
  1186. BATCHEXT=.sh
  1187. EXEEXT=
  1188. SHAREDLIBEXT=.a
  1189. SHORTSUFFIX=aix
  1190. endif
  1191. ifeq ($(OS_TARGET),java)
  1192. OEXT=.class
  1193. ASMEXT=.j
  1194. SHAREDLIBEXT=.jar
  1195. SHORTSUFFIX=java
  1196. endif
  1197. ifeq ($(CPU_TARGET),jvm)
  1198. ifeq ($(OS_TARGET),android)
  1199. OEXT=.class
  1200. ASMEXT=.j
  1201. SHAREDLIBEXT=.jar
  1202. SHORTSUFFIX=android
  1203. endif
  1204. endif
  1205. ifeq ($(OS_TARGET),msdos)
  1206. STATICLIBPREFIX=
  1207. STATICLIBEXT=.a
  1208. SHORTSUFFIX=d16
  1209. endif
  1210. ifeq ($(OS_TARGET),msxdos)
  1211. STATICLIBPREFIX=
  1212. STATICLIBEXT=.a
  1213. SHORTSUFFIX=msd
  1214. endif
  1215. ifeq ($(OS_TARGET),embedded)
  1216. ifeq ($(CPU_TARGET),i8086)
  1217. STATICLIBPREFIX=
  1218. STATICLIBEXT=.a
  1219. else
  1220. EXEEXT=.bin
  1221. endif
  1222. ifeq ($(CPU_TARGET),z80)
  1223. OEXT=.rel
  1224. endif
  1225. SHORTSUFFIX=emb
  1226. endif
  1227. ifeq ($(OS_TARGET),win16)
  1228. STATICLIBPREFIX=
  1229. STATICLIBEXT=.a
  1230. SHAREDLIBEXT=.dll
  1231. SHORTSUFFIX=w16
  1232. endif
  1233. ifeq ($(OS_TARGET),zxspectrum)
  1234. OEXT=.rel
  1235. endif
  1236. ifeq ($(OS_TARGET),wasi)
  1237. EXEEXT=.wasm
  1238. endif
  1239. ifneq ($(filter $(OS_SOURCE),$(LIMIT83fs)),)
  1240. FPCMADE=fpcmade.$(SHORTSUFFIX)
  1241. ZIPSUFFIX=$(SHORTSUFFIX)
  1242. ZIPCROSSPREFIX=
  1243. ZIPSOURCESUFFIX=src
  1244. ZIPEXAMPLESUFFIX=exm
  1245. else
  1246. FPCMADE=fpcmade.$(TARGETSUFFIX)
  1247. ZIPSOURCESUFFIX=.source
  1248. ZIPEXAMPLESUFFIX=.examples
  1249. ifdef CROSSCOMPILE
  1250. ZIPSUFFIX=.$(SOURCESUFFIX)
  1251. ZIPCROSSPREFIX=$(TARGETSUFFIX)-
  1252. else
  1253. ZIPSUFFIX=.$(TARGETSUFFIX)
  1254. ZIPCROSSPREFIX=
  1255. endif
  1256. endif
  1257. ifndef ECHO
  1258. ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
  1259. ifeq ($(ECHO),)
  1260. ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
  1261. ifeq ($(ECHO),)
  1262. ECHO= __missing_command_ECHO
  1263. else
  1264. ECHO:=$(firstword $(ECHO))
  1265. endif
  1266. else
  1267. ECHO:=$(firstword $(ECHO))
  1268. endif
  1269. endif
  1270. export ECHO
  1271. ifndef DATE
  1272. DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
  1273. ifeq ($(DATE),)
  1274. DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
  1275. ifeq ($(DATE),)
  1276. DATE= __missing_command_DATE
  1277. else
  1278. DATE:=$(firstword $(DATE))
  1279. endif
  1280. else
  1281. DATE:=$(firstword $(DATE))
  1282. endif
  1283. endif
  1284. export DATE
  1285. ifndef GINSTALL
  1286. GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
  1287. ifeq ($(GINSTALL),)
  1288. GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
  1289. ifeq ($(GINSTALL),)
  1290. GINSTALL= __missing_command_GINSTALL
  1291. else
  1292. GINSTALL:=$(firstword $(GINSTALL))
  1293. endif
  1294. else
  1295. GINSTALL:=$(firstword $(GINSTALL))
  1296. endif
  1297. endif
  1298. export GINSTALL
  1299. ifndef CPPROG
  1300. CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
  1301. ifeq ($(CPPROG),)
  1302. CPPROG= __missing_command_CPPROG
  1303. else
  1304. CPPROG:=$(firstword $(CPPROG))
  1305. endif
  1306. endif
  1307. export CPPROG
  1308. ifndef RMPROG
  1309. RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
  1310. ifeq ($(RMPROG),)
  1311. RMPROG= __missing_command_RMPROG
  1312. else
  1313. RMPROG:=$(firstword $(RMPROG))
  1314. endif
  1315. endif
  1316. export RMPROG
  1317. ifndef MVPROG
  1318. MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
  1319. ifeq ($(MVPROG),)
  1320. MVPROG= __missing_command_MVPROG
  1321. else
  1322. MVPROG:=$(firstword $(MVPROG))
  1323. endif
  1324. endif
  1325. export MVPROG
  1326. ifndef MKDIRPROG
  1327. MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
  1328. ifeq ($(MKDIRPROG),)
  1329. MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
  1330. ifeq ($(MKDIRPROG),)
  1331. MKDIRPROG= __missing_command_MKDIRPROG
  1332. else
  1333. MKDIRPROG:=$(firstword $(MKDIRPROG))
  1334. endif
  1335. else
  1336. MKDIRPROG:=$(firstword $(MKDIRPROG))
  1337. endif
  1338. endif
  1339. export MKDIRPROG
  1340. ifndef ECHOREDIR
  1341. ifndef inUnix
  1342. ECHOREDIR=echo
  1343. else
  1344. ECHOREDIR=$(ECHO)
  1345. endif
  1346. endif
  1347. ifndef COPY
  1348. COPY:=$(CPPROG) -fp
  1349. endif
  1350. ifndef COPYTREE
  1351. COPYTREE:=$(CPPROG) -Rfp
  1352. endif
  1353. ifndef MKDIRTREE
  1354. MKDIRTREE:=$(MKDIRPROG) -p
  1355. endif
  1356. ifndef MOVE
  1357. MOVE:=$(MVPROG) -f
  1358. endif
  1359. ifndef DEL
  1360. DEL:=$(RMPROG) -f
  1361. endif
  1362. ifndef DELTREE
  1363. DELTREE:=$(RMPROG) -rf
  1364. endif
  1365. ifndef INSTALL
  1366. ifdef inUnix
  1367. INSTALL:=$(GINSTALL) -c -m 644
  1368. else
  1369. INSTALL:=$(COPY)
  1370. endif
  1371. endif
  1372. ifndef INSTALLEXE
  1373. ifdef inUnix
  1374. INSTALLEXE:=$(GINSTALL) -c -m 755
  1375. else
  1376. INSTALLEXE:=$(COPY)
  1377. endif
  1378. endif
  1379. ifndef MKDIR
  1380. MKDIR:=$(GINSTALL) -m 755 -d
  1381. endif
  1382. export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
  1383. ifndef PPUMOVE
  1384. PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
  1385. ifeq ($(PPUMOVE),)
  1386. PPUMOVE= __missing_command_PPUMOVE
  1387. else
  1388. PPUMOVE:=$(firstword $(PPUMOVE))
  1389. endif
  1390. endif
  1391. export PPUMOVE
  1392. ifndef FPCMAKE
  1393. FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
  1394. ifeq ($(FPCMAKE),)
  1395. FPCMAKE= __missing_command_FPCMAKE
  1396. else
  1397. FPCMAKE:=$(firstword $(FPCMAKE))
  1398. endif
  1399. endif
  1400. export FPCMAKE
  1401. ifndef ZIPPROG
  1402. ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
  1403. ifeq ($(ZIPPROG),)
  1404. ZIPPROG= __missing_command_ZIPPROG
  1405. else
  1406. ZIPPROG:=$(firstword $(ZIPPROG))
  1407. endif
  1408. endif
  1409. export ZIPPROG
  1410. ifndef TARPROG
  1411. TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
  1412. ifeq ($(TARPROG),)
  1413. TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
  1414. ifeq ($(TARPROG),)
  1415. TARPROG= __missing_command_TARPROG
  1416. else
  1417. TARPROG:=$(firstword $(TARPROG))
  1418. endif
  1419. else
  1420. TARPROG:=$(firstword $(TARPROG))
  1421. endif
  1422. endif
  1423. export TARPROG
  1424. ASNAME=$(BINUTILSPREFIX)as
  1425. LDNAME=$(BINUTILSPREFIX)ld
  1426. ARNAME=$(BINUTILSPREFIX)ar
  1427. RCNAME=$(BINUTILSPREFIX)rc
  1428. NASMNAME=$(BINUTILSPREFIX)nasm
  1429. ifndef ASPROG
  1430. ifdef CROSSBINDIR
  1431. ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
  1432. else
  1433. ASPROG=$(ASNAME)
  1434. endif
  1435. endif
  1436. ifndef LDPROG
  1437. ifdef CROSSBINDIR
  1438. LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
  1439. else
  1440. LDPROG=$(LDNAME)
  1441. endif
  1442. endif
  1443. ifndef RCPROG
  1444. ifdef CROSSBINDIR
  1445. RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
  1446. else
  1447. RCPROG=$(RCNAME)
  1448. endif
  1449. endif
  1450. ifndef ARPROG
  1451. ifdef CROSSBINDIR
  1452. ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
  1453. else
  1454. ARPROG=$(ARNAME)
  1455. endif
  1456. endif
  1457. ifndef NASMPROG
  1458. ifdef CROSSBINDIR
  1459. NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
  1460. else
  1461. NASMPROG=$(NASMNAME)
  1462. endif
  1463. endif
  1464. AS=$(ASPROG)
  1465. LD=$(LDPROG)
  1466. RC=$(RCPROG)
  1467. AR=$(ARPROG)
  1468. NASM=$(NASMPROG)
  1469. ifdef inUnix
  1470. PPAS=./ppas$(SRCBATCHEXT)
  1471. else
  1472. PPAS=ppas$(SRCBATCHEXT)
  1473. endif
  1474. ifdef inUnix
  1475. LDCONFIG=ldconfig
  1476. else
  1477. LDCONFIG=
  1478. endif
  1479. ifdef DATE
  1480. DATESTR:=$(shell $(DATE) +%Y%m%d)
  1481. else
  1482. DATESTR=
  1483. endif
  1484. ZIPOPT=-9
  1485. ZIPEXT=.zip
  1486. ifeq ($(USETAR),bz2)
  1487. TAROPT=vj
  1488. TAREXT=.tar.bz2
  1489. else
  1490. TAROPT=vz
  1491. TAREXT=.tar.gz
  1492. endif
  1493. override REQUIRE_PACKAGES=rtl
  1494. ifeq ($(CPU_OS_TARGET),i386-linux)
  1495. REQUIRE_PACKAGES_RTL=1
  1496. endif
  1497. ifeq ($(CPU_OS_TARGET),i386-go32v2)
  1498. REQUIRE_PACKAGES_RTL=1
  1499. endif
  1500. ifeq ($(CPU_OS_TARGET),i386-win32)
  1501. REQUIRE_PACKAGES_RTL=1
  1502. endif
  1503. ifeq ($(CPU_OS_TARGET),i386-os2)
  1504. REQUIRE_PACKAGES_RTL=1
  1505. endif
  1506. ifeq ($(CPU_OS_TARGET),i386-freebsd)
  1507. REQUIRE_PACKAGES_RTL=1
  1508. endif
  1509. ifeq ($(CPU_OS_TARGET),i386-beos)
  1510. REQUIRE_PACKAGES_RTL=1
  1511. endif
  1512. ifeq ($(CPU_OS_TARGET),i386-haiku)
  1513. REQUIRE_PACKAGES_RTL=1
  1514. endif
  1515. ifeq ($(CPU_OS_TARGET),i386-netbsd)
  1516. REQUIRE_PACKAGES_RTL=1
  1517. endif
  1518. ifeq ($(CPU_OS_TARGET),i386-solaris)
  1519. REQUIRE_PACKAGES_RTL=1
  1520. endif
  1521. ifeq ($(CPU_OS_TARGET),i386-netware)
  1522. REQUIRE_PACKAGES_RTL=1
  1523. endif
  1524. ifeq ($(CPU_OS_TARGET),i386-openbsd)
  1525. REQUIRE_PACKAGES_RTL=1
  1526. endif
  1527. ifeq ($(CPU_OS_TARGET),i386-wdosx)
  1528. REQUIRE_PACKAGES_RTL=1
  1529. endif
  1530. ifeq ($(CPU_OS_TARGET),i386-darwin)
  1531. REQUIRE_PACKAGES_RTL=1
  1532. endif
  1533. ifeq ($(CPU_OS_TARGET),i386-emx)
  1534. REQUIRE_PACKAGES_RTL=1
  1535. endif
  1536. ifeq ($(CPU_OS_TARGET),i386-watcom)
  1537. REQUIRE_PACKAGES_RTL=1
  1538. endif
  1539. ifeq ($(CPU_OS_TARGET),i386-netwlibc)
  1540. REQUIRE_PACKAGES_RTL=1
  1541. endif
  1542. ifeq ($(CPU_OS_TARGET),i386-wince)
  1543. REQUIRE_PACKAGES_RTL=1
  1544. endif
  1545. ifeq ($(CPU_OS_TARGET),i386-embedded)
  1546. REQUIRE_PACKAGES_RTL=1
  1547. endif
  1548. ifeq ($(CPU_OS_TARGET),i386-symbian)
  1549. REQUIRE_PACKAGES_RTL=1
  1550. endif
  1551. ifeq ($(CPU_OS_TARGET),i386-nativent)
  1552. REQUIRE_PACKAGES_RTL=1
  1553. endif
  1554. ifeq ($(CPU_OS_TARGET),i386-iphonesim)
  1555. REQUIRE_PACKAGES_RTL=1
  1556. endif
  1557. ifeq ($(CPU_OS_TARGET),i386-android)
  1558. REQUIRE_PACKAGES_RTL=1
  1559. endif
  1560. ifeq ($(CPU_OS_TARGET),i386-aros)
  1561. REQUIRE_PACKAGES_RTL=1
  1562. endif
  1563. ifeq ($(CPU_OS_TARGET),m68k-linux)
  1564. REQUIRE_PACKAGES_RTL=1
  1565. endif
  1566. ifeq ($(CPU_OS_TARGET),m68k-netbsd)
  1567. REQUIRE_PACKAGES_RTL=1
  1568. endif
  1569. ifeq ($(CPU_OS_TARGET),m68k-amiga)
  1570. REQUIRE_PACKAGES_RTL=1
  1571. endif
  1572. ifeq ($(CPU_OS_TARGET),m68k-atari)
  1573. REQUIRE_PACKAGES_RTL=1
  1574. endif
  1575. ifeq ($(CPU_OS_TARGET),m68k-palmos)
  1576. REQUIRE_PACKAGES_RTL=1
  1577. endif
  1578. ifeq ($(CPU_OS_TARGET),m68k-macosclassic)
  1579. REQUIRE_PACKAGES_RTL=1
  1580. endif
  1581. ifeq ($(CPU_OS_TARGET),m68k-embedded)
  1582. REQUIRE_PACKAGES_RTL=1
  1583. endif
  1584. ifeq ($(CPU_OS_TARGET),m68k-sinclairql)
  1585. REQUIRE_PACKAGES_RTL=1
  1586. endif
  1587. ifeq ($(CPU_OS_TARGET),m68k-human68k)
  1588. REQUIRE_PACKAGES_RTL=1
  1589. endif
  1590. ifeq ($(CPU_OS_TARGET),powerpc-linux)
  1591. REQUIRE_PACKAGES_RTL=1
  1592. endif
  1593. ifeq ($(CPU_OS_TARGET),powerpc-netbsd)
  1594. REQUIRE_PACKAGES_RTL=1
  1595. endif
  1596. ifeq ($(CPU_OS_TARGET),powerpc-amiga)
  1597. REQUIRE_PACKAGES_RTL=1
  1598. endif
  1599. ifeq ($(CPU_OS_TARGET),powerpc-macosclassic)
  1600. REQUIRE_PACKAGES_RTL=1
  1601. endif
  1602. ifeq ($(CPU_OS_TARGET),powerpc-darwin)
  1603. REQUIRE_PACKAGES_RTL=1
  1604. endif
  1605. ifeq ($(CPU_OS_TARGET),powerpc-morphos)
  1606. REQUIRE_PACKAGES_RTL=1
  1607. endif
  1608. ifeq ($(CPU_OS_TARGET),powerpc-embedded)
  1609. REQUIRE_PACKAGES_RTL=1
  1610. endif
  1611. ifeq ($(CPU_OS_TARGET),powerpc-wii)
  1612. REQUIRE_PACKAGES_RTL=1
  1613. endif
  1614. ifeq ($(CPU_OS_TARGET),powerpc-aix)
  1615. REQUIRE_PACKAGES_RTL=1
  1616. endif
  1617. ifeq ($(CPU_OS_TARGET),sparc-linux)
  1618. REQUIRE_PACKAGES_RTL=1
  1619. endif
  1620. ifeq ($(CPU_OS_TARGET),sparc-netbsd)
  1621. REQUIRE_PACKAGES_RTL=1
  1622. endif
  1623. ifeq ($(CPU_OS_TARGET),sparc-solaris)
  1624. REQUIRE_PACKAGES_RTL=1
  1625. endif
  1626. ifeq ($(CPU_OS_TARGET),sparc-embedded)
  1627. REQUIRE_PACKAGES_RTL=1
  1628. endif
  1629. ifeq ($(CPU_OS_TARGET),x86_64-linux)
  1630. REQUIRE_PACKAGES_RTL=1
  1631. endif
  1632. ifeq ($(CPU_OS_TARGET),x86_64-freebsd)
  1633. REQUIRE_PACKAGES_RTL=1
  1634. endif
  1635. ifeq ($(CPU_OS_TARGET),x86_64-haiku)
  1636. REQUIRE_PACKAGES_RTL=1
  1637. endif
  1638. ifeq ($(CPU_OS_TARGET),x86_64-netbsd)
  1639. REQUIRE_PACKAGES_RTL=1
  1640. endif
  1641. ifeq ($(CPU_OS_TARGET),x86_64-solaris)
  1642. REQUIRE_PACKAGES_RTL=1
  1643. endif
  1644. ifeq ($(CPU_OS_TARGET),x86_64-openbsd)
  1645. REQUIRE_PACKAGES_RTL=1
  1646. endif
  1647. ifeq ($(CPU_OS_TARGET),x86_64-darwin)
  1648. REQUIRE_PACKAGES_RTL=1
  1649. endif
  1650. ifeq ($(CPU_OS_TARGET),x86_64-win64)
  1651. REQUIRE_PACKAGES_RTL=1
  1652. endif
  1653. ifeq ($(CPU_OS_TARGET),x86_64-embedded)
  1654. REQUIRE_PACKAGES_RTL=1
  1655. endif
  1656. ifeq ($(CPU_OS_TARGET),x86_64-iphonesim)
  1657. REQUIRE_PACKAGES_RTL=1
  1658. endif
  1659. ifeq ($(CPU_OS_TARGET),x86_64-android)
  1660. REQUIRE_PACKAGES_RTL=1
  1661. endif
  1662. ifeq ($(CPU_OS_TARGET),x86_64-aros)
  1663. REQUIRE_PACKAGES_RTL=1
  1664. endif
  1665. ifeq ($(CPU_OS_TARGET),x86_64-dragonfly)
  1666. REQUIRE_PACKAGES_RTL=1
  1667. endif
  1668. ifeq ($(CPU_OS_TARGET),arm-linux)
  1669. REQUIRE_PACKAGES_RTL=1
  1670. endif
  1671. ifeq ($(CPU_OS_TARGET),arm-netbsd)
  1672. REQUIRE_PACKAGES_RTL=1
  1673. endif
  1674. ifeq ($(CPU_OS_TARGET),arm-palmos)
  1675. REQUIRE_PACKAGES_RTL=1
  1676. endif
  1677. ifeq ($(CPU_OS_TARGET),arm-wince)
  1678. REQUIRE_PACKAGES_RTL=1
  1679. endif
  1680. ifeq ($(CPU_OS_TARGET),arm-gba)
  1681. REQUIRE_PACKAGES_RTL=1
  1682. endif
  1683. ifeq ($(CPU_OS_TARGET),arm-nds)
  1684. REQUIRE_PACKAGES_RTL=1
  1685. endif
  1686. ifeq ($(CPU_OS_TARGET),arm-embedded)
  1687. REQUIRE_PACKAGES_RTL=1
  1688. endif
  1689. ifeq ($(CPU_OS_TARGET),arm-symbian)
  1690. REQUIRE_PACKAGES_RTL=1
  1691. endif
  1692. ifeq ($(CPU_OS_TARGET),arm-android)
  1693. REQUIRE_PACKAGES_RTL=1
  1694. endif
  1695. ifeq ($(CPU_OS_TARGET),arm-aros)
  1696. REQUIRE_PACKAGES_RTL=1
  1697. endif
  1698. ifeq ($(CPU_OS_TARGET),arm-freertos)
  1699. REQUIRE_PACKAGES_RTL=1
  1700. endif
  1701. ifeq ($(CPU_OS_TARGET),arm-ios)
  1702. REQUIRE_PACKAGES_RTL=1
  1703. endif
  1704. ifeq ($(CPU_OS_TARGET),powerpc64-linux)
  1705. REQUIRE_PACKAGES_RTL=1
  1706. endif
  1707. ifeq ($(CPU_OS_TARGET),powerpc64-darwin)
  1708. REQUIRE_PACKAGES_RTL=1
  1709. endif
  1710. ifeq ($(CPU_OS_TARGET),powerpc64-embedded)
  1711. REQUIRE_PACKAGES_RTL=1
  1712. endif
  1713. ifeq ($(CPU_OS_TARGET),powerpc64-aix)
  1714. REQUIRE_PACKAGES_RTL=1
  1715. endif
  1716. ifeq ($(CPU_OS_TARGET),avr-embedded)
  1717. REQUIRE_PACKAGES_RTL=1
  1718. endif
  1719. ifeq ($(CPU_OS_TARGET),armeb-linux)
  1720. REQUIRE_PACKAGES_RTL=1
  1721. endif
  1722. ifeq ($(CPU_OS_TARGET),armeb-embedded)
  1723. REQUIRE_PACKAGES_RTL=1
  1724. endif
  1725. ifeq ($(CPU_OS_TARGET),mips-linux)
  1726. REQUIRE_PACKAGES_RTL=1
  1727. endif
  1728. ifeq ($(CPU_OS_TARGET),mipsel-linux)
  1729. REQUIRE_PACKAGES_RTL=1
  1730. endif
  1731. ifeq ($(CPU_OS_TARGET),mipsel-embedded)
  1732. REQUIRE_PACKAGES_RTL=1
  1733. endif
  1734. ifeq ($(CPU_OS_TARGET),mipsel-android)
  1735. REQUIRE_PACKAGES_RTL=1
  1736. endif
  1737. ifeq ($(CPU_OS_TARGET),mips64-linux)
  1738. REQUIRE_PACKAGES_RTL=1
  1739. endif
  1740. ifeq ($(CPU_OS_TARGET),mips64el-linux)
  1741. REQUIRE_PACKAGES_RTL=1
  1742. endif
  1743. ifeq ($(CPU_OS_TARGET),jvm-java)
  1744. REQUIRE_PACKAGES_RTL=1
  1745. endif
  1746. ifeq ($(CPU_OS_TARGET),jvm-android)
  1747. REQUIRE_PACKAGES_RTL=1
  1748. endif
  1749. ifeq ($(CPU_OS_TARGET),i8086-embedded)
  1750. REQUIRE_PACKAGES_RTL=1
  1751. endif
  1752. ifeq ($(CPU_OS_TARGET),i8086-msdos)
  1753. REQUIRE_PACKAGES_RTL=1
  1754. endif
  1755. ifeq ($(CPU_OS_TARGET),i8086-win16)
  1756. REQUIRE_PACKAGES_RTL=1
  1757. endif
  1758. ifeq ($(CPU_OS_TARGET),aarch64-linux)
  1759. REQUIRE_PACKAGES_RTL=1
  1760. endif
  1761. ifeq ($(CPU_OS_TARGET),aarch64-freebsd)
  1762. REQUIRE_PACKAGES_RTL=1
  1763. endif
  1764. ifeq ($(CPU_OS_TARGET),aarch64-darwin)
  1765. REQUIRE_PACKAGES_RTL=1
  1766. endif
  1767. ifeq ($(CPU_OS_TARGET),aarch64-win64)
  1768. REQUIRE_PACKAGES_RTL=1
  1769. endif
  1770. ifeq ($(CPU_OS_TARGET),aarch64-embedded)
  1771. REQUIRE_PACKAGES_RTL=1
  1772. endif
  1773. ifeq ($(CPU_OS_TARGET),aarch64-iphonesim)
  1774. REQUIRE_PACKAGES_RTL=1
  1775. endif
  1776. ifeq ($(CPU_OS_TARGET),aarch64-android)
  1777. REQUIRE_PACKAGES_RTL=1
  1778. endif
  1779. ifeq ($(CPU_OS_TARGET),aarch64-ios)
  1780. REQUIRE_PACKAGES_RTL=1
  1781. endif
  1782. ifeq ($(CPU_OS_TARGET),wasm32-embedded)
  1783. REQUIRE_PACKAGES_RTL=1
  1784. endif
  1785. ifeq ($(CPU_OS_TARGET),wasm32-wasi)
  1786. REQUIRE_PACKAGES_RTL=1
  1787. endif
  1788. ifeq ($(CPU_OS_TARGET),sparc64-linux)
  1789. REQUIRE_PACKAGES_RTL=1
  1790. endif
  1791. ifeq ($(CPU_OS_TARGET),riscv32-linux)
  1792. REQUIRE_PACKAGES_RTL=1
  1793. endif
  1794. ifeq ($(CPU_OS_TARGET),riscv32-embedded)
  1795. REQUIRE_PACKAGES_RTL=1
  1796. endif
  1797. ifeq ($(CPU_OS_TARGET),riscv32-freertos)
  1798. REQUIRE_PACKAGES_RTL=1
  1799. endif
  1800. ifeq ($(CPU_OS_TARGET),riscv64-linux)
  1801. REQUIRE_PACKAGES_RTL=1
  1802. endif
  1803. ifeq ($(CPU_OS_TARGET),riscv64-embedded)
  1804. REQUIRE_PACKAGES_RTL=1
  1805. endif
  1806. ifeq ($(CPU_OS_TARGET),xtensa-linux)
  1807. REQUIRE_PACKAGES_RTL=1
  1808. endif
  1809. ifeq ($(CPU_OS_TARGET),xtensa-embedded)
  1810. REQUIRE_PACKAGES_RTL=1
  1811. endif
  1812. ifeq ($(CPU_OS_TARGET),xtensa-freertos)
  1813. REQUIRE_PACKAGES_RTL=1
  1814. endif
  1815. ifeq ($(CPU_OS_TARGET),z80-embedded)
  1816. REQUIRE_PACKAGES_RTL=1
  1817. endif
  1818. ifeq ($(CPU_OS_TARGET),z80-zxspectrum)
  1819. REQUIRE_PACKAGES_RTL=1
  1820. endif
  1821. ifeq ($(CPU_OS_TARGET),z80-msxdos)
  1822. REQUIRE_PACKAGES_RTL=1
  1823. endif
  1824. ifeq ($(CPU_OS_TARGET),z80-amstradcpc)
  1825. REQUIRE_PACKAGES_RTL=1
  1826. endif
  1827. ifeq ($(CPU_OS_TARGET),loongarch64-linux)
  1828. REQUIRE_PACKAGES_RTL=1
  1829. endif
  1830. ifdef REQUIRE_PACKAGES_RTL
  1831. PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
  1832. ifeq ($(PACKAGEDIR_RTL),)
  1833. PACKAGEDIR_RTL:=$(firstword $(subst /Makefile,,$(strip $(wildcard $(addsuffix /rtl/Makefile,$(PACKAGESDIR))))))
  1834. ifneq ($(PACKAGEDIR_RTL),)
  1835. PACKAGEDIR_RTL:=$(firstword $(subst /fpmake.pp,,$(strip $(wildcard $(addsuffix /rtl/fpmake.pp,$(PACKAGESDIR))))))
  1836. endif
  1837. endif
  1838. ifneq ($(PACKAGEDIR_RTL),)
  1839. ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
  1840. UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
  1841. else
  1842. UNITDIR_RTL=$(PACKAGEDIR_RTL)
  1843. endif
  1844. ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
  1845. UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
  1846. else
  1847. ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
  1848. UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
  1849. else
  1850. UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
  1851. endif
  1852. endif
  1853. ifdef CHECKDEPEND
  1854. $(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
  1855. $(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
  1856. override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
  1857. endif
  1858. else
  1859. PACKAGEDIR_RTL=
  1860. UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
  1861. ifneq ($(UNITDIR_RTL),)
  1862. UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
  1863. else
  1864. UNITDIR_RTL=
  1865. endif
  1866. endif
  1867. ifdef UNITDIR_RTL
  1868. override COMPILER_UNITDIR+=$(UNITDIR_RTL)
  1869. endif
  1870. ifdef UNITDIR_FPMAKE_RTL
  1871. override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
  1872. endif
  1873. endif
  1874. ifndef NOCPUDEF
  1875. override FPCOPTDEF=$(ARCH)
  1876. endif
  1877. ifneq ($(OS_TARGET),$(OS_SOURCE))
  1878. override FPCOPT+=-T$(OS_TARGET)
  1879. endif
  1880. ifneq ($(CPU_TARGET),$(CPU_SOURCE))
  1881. override FPCOPT+=-P$(ARCH)
  1882. endif
  1883. ifeq ($(OS_SOURCE),openbsd)
  1884. override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
  1885. override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
  1886. override FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH)
  1887. endif
  1888. ifndef CROSSBOOTSTRAP
  1889. ifneq ($(BINUTILSPREFIX),)
  1890. override FPCOPT+=-XP$(BINUTILSPREFIX)
  1891. ifneq ($(RLINKPATH),)
  1892. override FPCOPT+=-Xr$(RLINKPATH)
  1893. endif
  1894. endif
  1895. endif
  1896. ifndef CROSSCOMPILE
  1897. ifneq ($(BINUTILSPREFIX),)
  1898. override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
  1899. override FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX)
  1900. endif
  1901. endif
  1902. ifdef UNITDIR
  1903. override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
  1904. endif
  1905. ifdef LIBDIR
  1906. override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
  1907. endif
  1908. ifdef OBJDIR
  1909. override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
  1910. endif
  1911. ifdef INCDIR
  1912. override FPCOPT+=$(addprefix -Fi,$(INCDIR))
  1913. endif
  1914. ifdef LINKSMART
  1915. override FPCOPT+=-XX
  1916. endif
  1917. ifdef CREATESMART
  1918. override FPCOPT+=-CX
  1919. endif
  1920. ifdef DEBUG
  1921. override FPCOPT+=-gl
  1922. override FPCOPTDEF+=DEBUG
  1923. endif
  1924. ifdef RELEASE
  1925. FPCCPUOPT:=-O2
  1926. override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
  1927. override FPCOPTDEF+=RELEASE
  1928. endif
  1929. ifdef STRIP
  1930. override FPCOPT+=-Xs
  1931. endif
  1932. ifdef OPTIMIZE
  1933. override FPCOPT+=-O2
  1934. endif
  1935. ifdef VERBOSE
  1936. override FPCOPT+=-vwni
  1937. endif
  1938. ifdef COMPILER_OPTIONS
  1939. override FPCOPT+=$(COMPILER_OPTIONS)
  1940. endif
  1941. ifdef COMPILER_UNITDIR
  1942. override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
  1943. endif
  1944. ifdef COMPILER_LIBRARYDIR
  1945. override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
  1946. endif
  1947. ifdef COMPILER_OBJECTDIR
  1948. override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
  1949. endif
  1950. ifdef COMPILER_INCLUDEDIR
  1951. override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
  1952. endif
  1953. ifdef CROSSBINDIR
  1954. override FPCOPT+=-FD$(CROSSBINDIR)
  1955. endif
  1956. ifdef COMPILER_TARGETDIR
  1957. override FPCOPT+=-FE$(COMPILER_TARGETDIR)
  1958. ifeq ($(COMPILER_TARGETDIR),.)
  1959. override TARGETDIRPREFIX=
  1960. else
  1961. override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
  1962. endif
  1963. endif
  1964. ifdef COMPILER_UNITTARGETDIR
  1965. override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
  1966. ifeq ($(COMPILER_UNITTARGETDIR),.)
  1967. override UNITTARGETDIRPREFIX=
  1968. else
  1969. override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
  1970. endif
  1971. else
  1972. ifdef COMPILER_TARGETDIR
  1973. override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
  1974. override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
  1975. endif
  1976. endif
  1977. ifdef SYSROOTPATH
  1978. override FPCOPT+=-XR$(SYSROOTPATH)
  1979. else
  1980. ifeq ($(OS_TARGET),$(OS_SOURCE))
  1981. ifeq ($(OS_TARGET),darwin)
  1982. ifeq ($(CPU_TARGET),aarch64)
  1983. ifneq ($(wildcard /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk),)
  1984. override FPCOPT+=-XR/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
  1985. endif
  1986. endif
  1987. endif
  1988. endif
  1989. endif
  1990. ifdef CREATESHARED
  1991. override FPCOPT+=-Cg
  1992. endif
  1993. ifneq ($(filter $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
  1994. ifneq ($(filter $(CPU_TARGET),x86_64 mips mipsel mips64 mips64el riscv64 powerpc64),)
  1995. override FPCOPT+=-Cg
  1996. endif
  1997. endif
  1998. ifneq ($(filter $(CPU_TARGET),z80),)
  1999. override FPCOPT+=-CX -XX
  2000. endif
  2001. ifdef LINKSHARED
  2002. endif
  2003. ifdef GCCLIBDIR
  2004. override FPCOPT+=-Fl$(GCCLIBDIR)
  2005. ifdef FPCMAKEGCCLIBDIR
  2006. override FPCMAKEOPT+=-Fl$(FPCMAKEGCCLIBDIR)
  2007. else
  2008. override FPCMAKEOPT+=-Fl$(GCCLIBDIR)
  2009. endif
  2010. endif
  2011. ifdef OTHERLIBDIR
  2012. override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
  2013. endif
  2014. ifdef OPT
  2015. override FPCOPT+=$(OPT)
  2016. endif
  2017. ifdef FPMAKEBUILDOPT
  2018. override FPMAKE_BUILD_OPT+=$(FPMAKEBUILDOPT)
  2019. endif
  2020. ifdef FPCOPTDEF
  2021. override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
  2022. endif
  2023. ifdef CFGFILE
  2024. override FPCOPT+=@$(CFGFILE)
  2025. endif
  2026. ifdef USEENV
  2027. override FPCEXTCMD:=$(FPCOPT)
  2028. override FPCOPT:=!FPCEXTCMD
  2029. export FPCEXTCMD
  2030. endif
  2031. override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
  2032. override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
  2033. ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
  2034. override ACROSSCOMPILE=1
  2035. endif
  2036. ifdef ACROSSCOMPILE
  2037. override FPCOPT+=$(CROSSOPT)
  2038. endif
  2039. override COMPILER:=$(strip $(FPC) $(FPCOPT))
  2040. ifneq (,$(filter -sh,$(COMPILER)))
  2041. UseEXECPPAS=1
  2042. endif
  2043. ifneq (,$(filter -s,$(COMPILER)))
  2044. ifeq ($(FULL_SOURCE),$(FULL_TARGET))
  2045. UseEXECPPAS=1
  2046. endif
  2047. endif
  2048. ifneq ($(UseEXECPPAS),1)
  2049. EXECPPAS=
  2050. else
  2051. ifdef RUNBATCH
  2052. EXECPPAS:=@$(RUNBATCH) $(PPAS)
  2053. else
  2054. EXECPPAS:=@$(PPAS)
  2055. endif
  2056. endif
  2057. .PHONY: fpc_exes
  2058. ifndef CROSSINSTALL
  2059. ifneq ($(TARGET_PROGRAMS),)
  2060. override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
  2061. override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addsuffix $(LTOEXT),$(TARGET_PROGRAMS))$(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
  2062. override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))
  2063. override ALLTARGET+=fpc_exes
  2064. override INSTALLEXEFILES+=$(EXEFILES)
  2065. override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
  2066. override CLEANEXEDBGFILES+=$(EXEDBGFILES)
  2067. ifeq ($(OS_TARGET),os2)
  2068. override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
  2069. endif
  2070. ifeq ($(OS_TARGET),emx)
  2071. override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
  2072. endif
  2073. endif
  2074. endif
  2075. fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
  2076. ifdef TARGET_RSTS
  2077. override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
  2078. override CLEANRSTFILES+=$(RSTFILES)
  2079. endif
  2080. .PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
  2081. $(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
  2082. @$(ECHOREDIR) Compiled > $(FPCMADE)
  2083. fpc_all: $(FPCMADE)
  2084. fpc_smart:
  2085. $(MAKE) all LINKSMART=1 CREATESMART=1
  2086. fpc_debug:
  2087. $(MAKE) all DEBUG=1
  2088. fpc_release:
  2089. $(MAKE) all RELEASE=1
  2090. .SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) $(LTOEXT) .pas .lpr .dpr .pp .rc .res
  2091. $(COMPILER_UNITTARGETDIR):
  2092. $(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
  2093. $(COMPILER_TARGETDIR):
  2094. $(MKDIRTREE) $(COMPILER_TARGETDIR)
  2095. %$(PPUEXT): %.pp
  2096. $(COMPILER) $<
  2097. $(EXECPPAS)
  2098. %$(PPUEXT): %.pas
  2099. $(COMPILER) $<
  2100. $(EXECPPAS)
  2101. %$(EXEEXT): %.pp
  2102. $(COMPILER) $<
  2103. $(EXECPPAS)
  2104. %$(EXEEXT): %.pas
  2105. $(COMPILER) $<
  2106. $(EXECPPAS)
  2107. %$(EXEEXT): %.lpr
  2108. $(COMPILER) $<
  2109. $(EXECPPAS)
  2110. %$(EXEEXT): %.dpr
  2111. $(COMPILER) $<
  2112. $(EXECPPAS)
  2113. %.res: %.rc
  2114. windres -i $< -o $@
  2115. vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  2116. vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  2117. vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  2118. vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  2119. vpath %.inc $(COMPILER_INCLUDEDIR)
  2120. vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
  2121. vpath %$(LTOEXT) $(COMPILER_UNITTARGETDIR)
  2122. vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
  2123. .PHONY: fpc_shared
  2124. override INSTALLTARGET+=fpc_shared_install
  2125. ifndef SHARED_LIBVERSION
  2126. SHARED_LIBVERSION=$(FPC_VERSION)
  2127. endif
  2128. ifndef SHARED_LIBNAME
  2129. SHARED_LIBNAME=$(PACKAGE_NAME)
  2130. endif
  2131. ifndef SHARED_FULLNAME
  2132. SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
  2133. endif
  2134. ifndef SHARED_LIBUNITS
  2135. SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
  2136. override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
  2137. endif
  2138. fpc_shared:
  2139. ifdef HASSHAREDLIB
  2140. $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
  2141. ifneq ($(SHARED_BUILD),n)
  2142. $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) -P$(BINUTILSPREFIX)
  2143. endif
  2144. else
  2145. @$(ECHO) Shared Libraries not supported
  2146. endif
  2147. fpc_shared_install:
  2148. ifneq ($(SHARED_BUILD),n)
  2149. ifneq ($(SHARED_LIBUNITS),)
  2150. ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
  2151. $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
  2152. endif
  2153. endif
  2154. endif
  2155. .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
  2156. ifdef INSTALL_UNITS
  2157. override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
  2158. endif
  2159. ifdef INSTALL_BUILDUNIT
  2160. override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
  2161. endif
  2162. ifdef INSTALLPPUFILES
  2163. ifneq ($(IMPORTLIBPREFIX)-$(STATICLIBEXT),$(STATICLIBPREFIX)-$(STATICLIBEXT))
  2164. override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
  2165. else
  2166. override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
  2167. endif
  2168. ifneq ($(UNITTARGETDIRPREFIX),)
  2169. override INSTALLPPUFILENAMES:=$(notdir $(INSTALLPPUFILES))
  2170. override INSTALLPPULINKFILENAMES:=$(notdir $(INSTALLPPULINKFILES))
  2171. override INSTALLPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILENAMES))
  2172. override INSTALLPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILENAMES)))
  2173. endif
  2174. override INSTALL_CREATEPACKAGEFPC=1
  2175. endif
  2176. ifdef INSTALLEXEFILES
  2177. ifneq ($(TARGETDIRPREFIX),)
  2178. override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
  2179. endif
  2180. endif
  2181. fpc_install: all $(INSTALLTARGET)
  2182. ifdef INSTALLEXEFILES
  2183. $(MKDIR) $(INSTALL_BINDIR)
  2184. $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
  2185. endif
  2186. ifdef INSTALL_CREATEPACKAGEFPC
  2187. ifdef FPCMAKE
  2188. ifdef PACKAGE_VERSION
  2189. ifneq ($(wildcard Makefile.fpc),)
  2190. $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
  2191. $(MKDIR) $(INSTALL_UNITDIR)
  2192. $(INSTALL) Package.fpc $(INSTALL_UNITDIR)
  2193. endif
  2194. endif
  2195. endif
  2196. endif
  2197. ifdef INSTALLPPUFILES
  2198. $(MKDIR) $(INSTALL_UNITDIR)
  2199. $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
  2200. ifneq ($(INSTALLPPULINKFILES),)
  2201. $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
  2202. endif
  2203. ifneq ($(wildcard $(LIB_FULLNAME)),)
  2204. $(MKDIR) $(INSTALL_LIBDIR)
  2205. $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
  2206. ifdef inUnix
  2207. ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
  2208. endif
  2209. endif
  2210. endif
  2211. ifdef INSTALL_FILES
  2212. $(MKDIR) $(INSTALL_DATADIR)
  2213. $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
  2214. endif
  2215. fpc_sourceinstall: distclean
  2216. $(MKDIR) $(INSTALL_SOURCEDIR)
  2217. $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
  2218. fpc_exampleinstall: $(EXAMPLEINSTALLTARGET) $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
  2219. ifdef HASEXAMPLES
  2220. $(MKDIR) $(INSTALL_EXAMPLEDIR)
  2221. endif
  2222. ifdef EXAMPLESOURCEFILES
  2223. $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
  2224. endif
  2225. ifdef TARGET_EXAMPLEDIRS
  2226. $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
  2227. endif
  2228. .PHONY: fpc_clean fpc_cleanall fpc_distclean
  2229. ifdef EXEFILES
  2230. override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
  2231. override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
  2232. endif
  2233. ifdef CLEAN_PROGRAMS
  2234. override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
  2235. override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
  2236. endif
  2237. ifdef CLEAN_UNITS
  2238. override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
  2239. endif
  2240. ifdef CLEANPPUFILES
  2241. override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(subst $(PPUEXT),$(LTOEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
  2242. ifdef DEBUGSYMEXT
  2243. override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
  2244. endif
  2245. override CLEANPPUFILENAMES:=$(CLEANPPUFILES)
  2246. override CLEANPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILENAMES))
  2247. override CLEANPPULINKFILENAMES:=$(CLEANPPULINKFILES)
  2248. override CLEANPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILENAMES)))
  2249. endif
  2250. fpc_clean: $(CLEANTARGET)
  2251. ifdef CLEANEXEFILES
  2252. -$(DEL) $(CLEANEXEFILES)
  2253. endif
  2254. ifdef CLEANEXEDBGFILES
  2255. -$(DELTREE) $(CLEANEXEDBGFILES)
  2256. endif
  2257. ifdef CLEANPPUFILES
  2258. -$(DEL) $(CLEANPPUFILES)
  2259. endif
  2260. ifneq ($(CLEANPPULINKFILES),)
  2261. -$(DEL) $(CLEANPPULINKFILES)
  2262. endif
  2263. ifdef CLEANRSTFILES
  2264. -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
  2265. endif
  2266. ifdef CLEAN_FILES
  2267. -$(DEL) $(CLEAN_FILES)
  2268. endif
  2269. ifdef LIB_NAME
  2270. -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
  2271. endif
  2272. -$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)
  2273. -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
  2274. -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
  2275. fpc_cleanall: $(CLEANTARGET)
  2276. ifdef CLEANEXEFILES
  2277. -$(DEL) $(CLEANEXEFILES)
  2278. endif
  2279. ifdef COMPILER_UNITTARGETDIR
  2280. ifdef CLEANPPUFILES
  2281. -$(DEL) $(CLEANPPUFILES)
  2282. endif
  2283. ifneq ($(CLEANPPULINKFILES),)
  2284. -$(DEL) $(CLEANPPULINKFILES)
  2285. endif
  2286. ifdef CLEANRSTFILES
  2287. -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
  2288. endif
  2289. endif
  2290. ifdef CLEAN_FILES
  2291. -$(DEL) $(CLEAN_FILES)
  2292. endif
  2293. -$(DELTREE) units
  2294. -$(DELTREE) bin
  2295. -$(DEL) *$(OEXT) *$(LTOEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
  2296. ifneq ($(PPUEXT),.ppu)
  2297. -$(DEL) *.o *.ppu *.a
  2298. endif
  2299. -$(DELTREE) *$(SMARTEXT)
  2300. -$(DEL) fpcmade.* Package.fpc *.fpm
  2301. -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_script.res *_link.res
  2302. -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BATCHEXT)
  2303. ifdef AOUTEXT
  2304. -$(DEL) *$(AOUTEXT)
  2305. endif
  2306. ifdef DEBUGSYMEXT
  2307. -$(DEL) *$(DEBUGSYMEXT)
  2308. endif
  2309. ifdef LOCALFPMAKEBIN
  2310. -$(DEL) $(LOCALFPMAKEBIN)
  2311. -$(DEL) $(FPMAKEBINOBJ)
  2312. endif
  2313. fpc_distclean: cleanall
  2314. .PHONY: fpc_baseinfo
  2315. override INFORULES+=fpc_baseinfo
  2316. fpc_baseinfo:
  2317. @$(ECHO)
  2318. @$(ECHO) == Package info ==
  2319. @$(ECHO) Package Name..... $(PACKAGE_NAME)
  2320. @$(ECHO) Package Version.. $(PACKAGE_VERSION)
  2321. @$(ECHO)
  2322. @$(ECHO) == Configuration info ==
  2323. @$(ECHO)
  2324. @$(ECHO) FPC.......... $(FPC)
  2325. @$(ECHO) FPC Version.. $(FPC_VERSION)
  2326. @$(ECHO) Source CPU... $(CPU_SOURCE)
  2327. @$(ECHO) Target CPU... $(CPU_TARGET)
  2328. @$(ECHO) Source OS.... $(OS_SOURCE)
  2329. @$(ECHO) Target OS.... $(OS_TARGET)
  2330. @$(ECHO) Full Source.. $(FULL_SOURCE)
  2331. @$(ECHO) Full Target.. $(FULL_TARGET)
  2332. @$(ECHO) SourceSuffix. $(SOURCESUFFIX)
  2333. @$(ECHO) TargetSuffix. $(TARGETSUFFIX)
  2334. @$(ECHO) FPC fpmake... $(FPCFPMAKE)
  2335. @$(ECHO)
  2336. @$(ECHO) == Directory info ==
  2337. @$(ECHO)
  2338. @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)
  2339. @$(ECHO)
  2340. @$(ECHO) Basedir......... $(BASEDIR)
  2341. @$(ECHO) FPCDir.......... $(FPCDIR)
  2342. @$(ECHO) CrossBinDir..... $(CROSSBINDIR)
  2343. @$(ECHO) UnitsDir........ $(UNITSDIR)
  2344. @$(ECHO) PackagesDir..... $(PACKAGESDIR)
  2345. @$(ECHO)
  2346. @$(ECHO) GCC library..... $(GCCLIBDIR)
  2347. @$(ECHO) Other library... $(OTHERLIBDIR)
  2348. @$(ECHO)
  2349. @$(ECHO) == Tools info ==
  2350. @$(ECHO)
  2351. @$(ECHO) As........ $(AS)
  2352. @$(ECHO) Ld........ $(LD)
  2353. @$(ECHO) Ar........ $(AR)
  2354. @$(ECHO) Rc........ $(RC)
  2355. @$(ECHO)
  2356. @$(ECHO) Mv........ $(MVPROG)
  2357. @$(ECHO) Cp........ $(CPPROG)
  2358. @$(ECHO) Rm........ $(RMPROG)
  2359. @$(ECHO) GInstall.. $(GINSTALL)
  2360. @$(ECHO) Echo...... $(ECHO)
  2361. @$(ECHO) Shell..... $(SHELL)
  2362. @$(ECHO) Date...... $(DATE)
  2363. @$(ECHO) FPCMake... $(FPCMAKE)
  2364. @$(ECHO) PPUMove... $(PPUMOVE)
  2365. @$(ECHO) Zip....... $(ZIPPROG)
  2366. @$(ECHO)
  2367. @$(ECHO) == Object info ==
  2368. @$(ECHO)
  2369. @$(ECHO) Target Loaders........ $(TARGET_LOADERS)
  2370. @$(ECHO) Target Units.......... $(TARGET_UNITS)
  2371. @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)
  2372. @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)
  2373. @$(ECHO) Target Dirs........... $(TARGET_DIRS)
  2374. @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)
  2375. @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
  2376. @$(ECHO)
  2377. @$(ECHO) Clean Units......... $(CLEAN_UNITS)
  2378. @$(ECHO) Clean Files......... $(CLEAN_FILES)
  2379. @$(ECHO)
  2380. @$(ECHO) Install Units....... $(INSTALL_UNITS)
  2381. @$(ECHO) Install Files....... $(INSTALL_FILES)
  2382. @$(ECHO)
  2383. @$(ECHO) == Install info ==
  2384. @$(ECHO)
  2385. @$(ECHO) DateStr.............. $(DATESTR)
  2386. @$(ECHO) ZipName.............. $(ZIPNAME)
  2387. @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
  2388. @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)
  2389. @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
  2390. @$(ECHO) FullZipName.......... $(FULLZIPNAME)
  2391. @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
  2392. @$(ECHO)
  2393. @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
  2394. @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
  2395. @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
  2396. @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
  2397. @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
  2398. @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
  2399. @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
  2400. @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
  2401. @$(ECHO)
  2402. @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
  2403. @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
  2404. @$(ECHO)
  2405. .PHONY: fpc_info
  2406. fpc_info: $(INFORULES)
  2407. .PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
  2408. fpc_makefile_dirs
  2409. fpc_makefile:
  2410. $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
  2411. fpc_makefile_sub1:
  2412. ifdef TARGET_DIRS
  2413. $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
  2414. endif
  2415. ifdef TARGET_EXAMPLEDIRS
  2416. $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
  2417. endif
  2418. fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
  2419. fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
  2420. fpc_makefiles: fpc_makefile fpc_makefile_dirs
  2421. debug: fpc_debug
  2422. smart: fpc_smart
  2423. release: fpc_release
  2424. units: fpc_units
  2425. examples:
  2426. shared: fpc_shared
  2427. install: fpc_install
  2428. sourceinstall: fpc_sourceinstall
  2429. exampleinstall: fpc_exampleinstall
  2430. distinstall:
  2431. zipinstall:
  2432. zipsourceinstall:
  2433. zipexampleinstall:
  2434. zipdistinstall:
  2435. cleanall: fpc_cleanall
  2436. makefiles: fpc_makefiles
  2437. .PHONY: debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall cleanall makefiles
  2438. ifneq ($(wildcard fpcmake.loc),)
  2439. include fpcmake.loc
  2440. endif
  2441. unexport FPC_VERSION
  2442. TEST_HOSTNAME:=$(firstword $(subst ., ,$(shell hostname)))
  2443. override TEST_FPC:=$(subst \,/,$(TEST_FPC))
  2444. ifndef TEST_FPC
  2445. TEST_FPC=$(wildcard $(dir $(CURDIR))compiler/$(notdir $(FPC)))
  2446. ifeq ($(TEST_FPC), )
  2447. $(error "*** ERROR: TEST_FPC is missing ***")
  2448. endif
  2449. endif
  2450. ifndef TEST_OPT
  2451. TEST_OPT=
  2452. endif
  2453. ifndef TEST_DISABLE_LONGLOG
  2454. TEST_USE_LONGLOG=1
  2455. endif
  2456. override TEST_OPT+=-Fd
  2457. ifndef TEST_FPC_VERSION
  2458. TEST_FPC_COMPILERINFO:=$(shell $(TEST_FPC) -iVSPTPSOTODW)
  2459. TEST_FPC_VERSION:=$(word 1,$(TEST_FPC_COMPILERINFO))
  2460. endif
  2461. export TEST_FPC TEST_FPC_VERSION TEST_FPC_COMPILERINFO
  2462. ifneq ($(words $(TEST_FPC_COMPILERINFO)),7)
  2463. TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSP)
  2464. TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTP)
  2465. TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iSO)
  2466. TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iTO)
  2467. TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iD)
  2468. TEST_FPC_COMPILERINFO+=$(shell $(TEST_FPC) -iW)
  2469. endif
  2470. ifndef TEST_CPU_SOURCE
  2471. TEST_CPU_SOURCE:=$(word 2,$(TEST_FPC_COMPILERINFO))
  2472. endif
  2473. ifndef TEST_CPU_TARGET
  2474. TEST_CPU_TARGET:=$(word 3,$(TEST_FPC_COMPILERINFO))
  2475. endif
  2476. ifndef TEST_OS_SOURCE
  2477. TEST_OS_SOURCE:=$(word 4,$(TEST_FPC_COMPILERINFO))
  2478. endif
  2479. ifndef TEST_OS_TARGET
  2480. TEST_OS_TARGET:=$(word 5,$(TEST_FPC_COMPILERINFO))
  2481. endif
  2482. ifndef TEST_FPC_DATE
  2483. TEST_FPC_DATE:=$(word 6,$(TEST_FPC_COMPILERINFO))
  2484. endif
  2485. ifndef TEST_FPC_FULLVERSION
  2486. TEST_FPC_FULLVERSION:=$(word 7,$(TEST_FPC_COMPILERINFO))
  2487. endif
  2488. TEST_FULL_TARGET=$(TEST_CPU_TARGET)-$(TEST_OS_TARGET)
  2489. ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
  2490. TEST_TARGETSUFFIX=$(TEST_OS_TARGET)
  2491. else
  2492. ifneq ($(findstring $(TEST_OS_TARGET),$(LIMIT83fs)),)
  2493. TEST_TARGETSUFFIX=$(TEST_OS_TARGET)
  2494. else
  2495. TEST_TARGETSUFFIX=$(TEST_FULL_TARGET)
  2496. endif
  2497. endif
  2498. ifndef TEST_CCOMPILER
  2499. ifeq ($(CPU_TARGET),$(TEST_CPU_TARGET))
  2500. ifeq ($(OS_TARGET),$(TEST_OS_TARGET))
  2501. TEST_CCOMPILER:=$(strip $(wildcard $(addsuffix /gcc$(SRCEXEEXT),$(SEARCHPATH))))
  2502. ifneq ($(TEST_CCOMPILER),)
  2503. TEST_CCOMPILER:=$(firstword $(TEST_CCOMPILER))
  2504. endif
  2505. endif
  2506. endif
  2507. endif
  2508. ifeq ($(TEST_OS_TARGET),msdos)
  2509. override TEST_OPT+=-XX
  2510. endif
  2511. TEST_OUTPUTDIR=output/$(TEST_TARGETSUFFIX)
  2512. C_SUBDIR=$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)
  2513. ifneq ($(DATE),__missing_command_DATE)
  2514. TEST_DATETIME:=$(shell $(DATE) -u +%Y%m%d%H%M)
  2515. else
  2516. TEST_DATETIME="No-date"
  2517. endif
  2518. ifndef TEST_USER
  2519. TEST_USER=$(USER)
  2520. ifeq ($(TEST_USER),)
  2521. TEST_USER=$(USERNAME)
  2522. endif
  2523. endif
  2524. DB_TARGZ=$(TEST_HOSTNAME)-$(TEST_DATETIME).tar.gz
  2525. [email protected]
  2526. DB_UPLOADDIR=/home/fpc/testsuite/incoming
  2527. ifdef inWinNT
  2528. inWinDOS=1
  2529. endif
  2530. ifeq ($(OS_SOURCE),go32v2)
  2531. inWinDOS=1
  2532. inDOS=1
  2533. SINGLEDOTESTRUNS=1
  2534. endif
  2535. ifndef FAILLIST
  2536. export FAILLIST:=$(TEST_OUTPUTDIR)/faillist
  2537. endif
  2538. ifndef LONGLOG
  2539. export LONGLOG:=$(TEST_OUTPUTDIR)/longlog
  2540. endif
  2541. ifndef LOG
  2542. export LOG:=$(TEST_OUTPUTDIR)/log
  2543. endif
  2544. LOGFILES=$(TEST_OUTPUTDIR)/log $(TEST_OUTPUTDIR)/longlog $(TEST_OUTPUTDIR)/faillist
  2545. LOGEXT=.testlog .tbslog .tbflog .webtbslog .webtbflog
  2546. TESTUNITDIRS=system dos crt objects strings sysutils math sharemem strutils matrix lineinfo ucomplex fpwidestring cpu fmtbcd windows classes character dateutil fpcunit softfpu variants sortbase sortalgs linux unixutil types nullable contnrs convutils
  2547. TESTDIRECTDIRS=
  2548. TESTSUBDIRS=cg cg/variants cg/cdecl cpu8/avr cpu16 cpu16/i8086 library opt wasm $(addprefix units/,$(TESTUNITDIRS))
  2549. TESTPACKAGESDIRS=win-base webtbs hash fcl-registry fcl-process zlib fcl-db fcl-xml cocoaint bzip2 fcl-net
  2550. TESTPACKAGESUBDIRS=$(addprefix packages/,$(TESTPACKAGESDIRS))
  2551. TESTPACKAGESDIRECTDIRS=rtl-objpas rtl-generics hash regexpr fcl-registry fcl-passrc fcl-json fcl-image pastojs fcl-process
  2552. TESTPACKAGESDIRECTSUBDIRS=$(addprefix ../packages/,$(addsuffix /tests,$(TESTPACKAGESDIRECTDIRS)))
  2553. ifdef QUICKTEST
  2554. export QUICKTEST
  2555. else
  2556. override TESTSUBDIRS+=$(TESTPACKAGESUBDIRS) alglib
  2557. override TESTDIRECTDIRS+=$(TESTPACKAGESDIRECTSUBDIRS)
  2558. endif
  2559. ifndef CHUNKSIZE
  2560. export CHUNKSIZE:=100
  2561. endif
  2562. TESTDIRS:=test $(addprefix test/,$(TESTSUBDIRS)) $(TESTDIRECTDIRS)
  2563. .PHONY: utils tstunits copyfiles testprep
  2564. $(TEST_OUTPUTDIR):
  2565. $(MKDIRTREE) $(TEST_OUTPUTDIR)
  2566. utils:
  2567. $(MAKE) -C utils utils
  2568. utilsdb:
  2569. $(MAKE) -C utils utilsdb
  2570. ifndef DIGEST
  2571. DIGEST=utils/digest
  2572. endif
  2573. ifndef DOTEST
  2574. DOTEST=utils/dotest
  2575. endif
  2576. ifndef CONCAT
  2577. CONCAT=utils/concat
  2578. endif
  2579. ifndef GPARMAKE
  2580. GPARMAKE=./gparmake$(SRCEXEEXT)
  2581. endif
  2582. ifndef PREPUP
  2583. PREPUP=utils/prepup
  2584. endif
  2585. ifndef CREATELST
  2586. CREATELST=./createlst$(SRCEXEEXT)
  2587. endif
  2588. tstunits:
  2589. ifdef inOS2
  2590. $(MAKE) -C tstunits FPC_VERSION= FPC=$(TEST_FPC) NATIVE_FPC=$(FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH) "OPT=$(TEST_OPT)" CCOMPILER=$(TEST_CCOMPILER) BINUTILSPREFIX=$(TEST_BINUTILSPREFIX)
  2591. else
  2592. $(MAKE) -C tstunits FPC_VERSION= FPC=$(TEST_FPC) NATIVE_FPC=$(FPC) CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH) 'OPT=$(TEST_OPT)' CCOMPILER=$(TEST_CCOMPILER) BINUTILSPREFIX=$(TEST_BINUTILSPREFIX)
  2593. endif
  2594. .PHONY: create_c_objects delete_c_objects copyfiles test_c_objects
  2595. C_SOURCE_DIR=test/cg/obj
  2596. C_SOURCES=ctest.c tcext3.c tcext4.c tcext5.c tcext6.c tcext7.c
  2597. CPP_SOURCES=cpptcl1.cpp cpptcl2.cpp
  2598. TASM_SOURCES=ttasm1.asm
  2599. ifneq ($(TEST_ABI),)
  2600. C_OBJECTS_DIR=$(C_SOURCE_DIR)/$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)-$(TEST_ABI)
  2601. else
  2602. C_OBJECTS_DIR=$(C_SOURCE_DIR)/$(TEST_OS_TARGET)/$(TEST_CPU_TARGET)
  2603. endif
  2604. C_OBJECTS=$(addprefix $(C_OBJECTS_DIR)/, $(subst .c,.o, $(C_SOURCES)))
  2605. CPP_OBJECTS=$(addprefix $(C_OBJECTS_DIR)/, $(subst .cpp,.o, $(CPP_SOURCES)))
  2606. TASM_OBJECTS=$(addprefix $(C_OBJECTS_DIR)/, $(subst .asm,.obj, $(TASM_SOURCES)))
  2607. create_c_objects:
  2608. ifneq ($(TEST_CCOMPILER),)
  2609. $(MKDIRTREE) $(C_OBJECTS_DIR)
  2610. -$(COPY) $(addprefix $(C_SOURCE_DIR)/, $(C_SOURCES)) $(C_OBJECTS_DIR)
  2611. $(MAKE) $(C_OBJECTS)
  2612. -$(COPY) $(addprefix $(C_SOURCE_DIR)/, $(CPP_SOURCES)) $(C_OBJECTS_DIR)
  2613. $(MAKE) $(CPP_OBJECTS)
  2614. -$(DEL) $(addprefix $(C_OBJECTS_DIR)/, $(C_SOURCES) $(CPP_SOURCES))
  2615. else
  2616. $(ECHO) create_c_objects rule needs a valid C compiler in TEST_CCOMPILER variable
  2617. $(ECHO) TEST_CFLAGS variable is passed as options is used to compile the objects
  2618. endif
  2619. delete_c_objects:
  2620. ifneq ($(TEST_CCOMPILER),)
  2621. -$(DEL) $(C_OBJECTS) $(CPP_OBJECTS)
  2622. else
  2623. $(ECHO) delete_c_objects rule needs a valid C compiler in TEST_CCOMPILER variable
  2624. $(ECHO) to be able to recompile the objects using create_objects rule.
  2625. endif
  2626. $(C_OBJECTS) : %.o: %.c
  2627. $(TEST_CCOMPILER) -c $(TEST_CFLAGS) $< -o $@
  2628. $(CPP_OBJECTS) : %.o: %.cpp
  2629. $(TEST_CCOMPILER) -c $(TEST_CFLAGS) $< -o $@
  2630. copyfiles:
  2631. -$(MKDIRTREE) $(TEST_OUTPUTDIR)/test/cg
  2632. -$(COPY) $(C_OBJECTS) $(TEST_OUTPUTDIR)/test/cg
  2633. -$(COPY) $(CPP_OBJECTS) $(TEST_OUTPUTDIR)/test/cg
  2634. ifeq ($(FULL_TARGET),i8086-msdos)
  2635. -$(COPY) $(TASM_OBJECTS) $(TEST_OUTPUTDIR)/test/cg
  2636. endif
  2637. -$(MKDIRTREE) $(TEST_OUTPUTDIR)/test/units/system
  2638. testprep: testprep-stamp.$(TEST_FULL_TARGET)
  2639. testprep-stamp.$(TEST_FULL_TARGET): utils tstunits copyfiles
  2640. $(ECHOREDIR) $(TEST_DATETIME) > testprep-stamp.$(TEST_FULL_TARGET)
  2641. ifneq ($(TEST_FPC),ppc386$(EXEEXT))
  2642. ifeq ($(findstring -c$(TEST_FPC),$(DOTESTOPT)),)
  2643. override DOTESTOPT+=-c$(TEST_FPC)
  2644. endif
  2645. endif
  2646. ifneq ($(FULL_TARGET),$(TEST_FULL_TARGET))
  2647. override DOTESTOPT+=-T$(TEST_FULL_TARGET)
  2648. endif
  2649. ifneq ($(TEST_BINUTILSPREFIX),)
  2650. override DOTESTOPT+=-Y-XP$(TEST_BINUTILSPREFIX) -Y-Xd
  2651. endif
  2652. ifdef inDOS
  2653. override DOTESTOPT+=-X
  2654. endif
  2655. ifdef TEST_RSH
  2656. override DOTESTOPT+=-R$(TEST_RSH)
  2657. endif
  2658. ifdef TEST_SSH
  2659. override DOTESTOPT+=-R$(TEST_SSH) -S
  2660. endif
  2661. ifdef TEST_REMOTEPATH
  2662. override DOTESTOPT+=-P$(TEST_REMOTEPATH)
  2663. endif
  2664. ifdef TEST_DELBEFORE
  2665. override DOTESTOPT+=-B
  2666. endif
  2667. ifdef TEST_DELTEMP
  2668. override DOTESTOPT+=-Z
  2669. endif
  2670. ifdef TEST_TIMEOUT
  2671. override DOTESTOPT+=-O
  2672. endif
  2673. ifdef TEST_VERBOSE
  2674. override DOTESTOPT+=-V
  2675. endif
  2676. ifdef TEST_PARALLEL
  2677. override DOTESTOPT+=-L
  2678. endif
  2679. ifdef TEST_BENCH
  2680. override DOTESTOPT+=-D
  2681. endif
  2682. ifdef V
  2683. Q=
  2684. QECHO=
  2685. else
  2686. Q=@
  2687. QECHO=@echo $(1)
  2688. endif
  2689. ifdef TEST_REMOTEOPT
  2690. override DOTESTOPT+=-U$(TEST_REMOTEOPT)
  2691. endif
  2692. ifdef TEST_PUTTY
  2693. override DOTESTOPT+=-R$(TEST_PUTTY) -W
  2694. endif
  2695. ifdef TEST_ADB
  2696. override DOTESTOPT+=-ADB -R$(TEST_ADB)
  2697. endif
  2698. ifdef TEST_OPT
  2699. override DOTESTOPT+=$(addprefix -Y, $(TEST_OPT))
  2700. endif
  2701. ifdef TEST_REMOTEPW
  2702. override DOTESTOPT+=-U-pw -U$(TEST_REMOTEPW)
  2703. endif
  2704. ifdef GRAPH
  2705. override DOTESTOPT+=-g
  2706. endif
  2707. ifdef INTERACTIVE
  2708. override DOTESTOPT+=-i
  2709. endif
  2710. ifdef DOALL
  2711. override DOTESTOPT+=-a
  2712. endif
  2713. ifdef EMULATOR
  2714. override DOTESTOPT+=-M$(EMULATOR)
  2715. endif
  2716. ifdef EMULATOR_OPTS
  2717. override DOTESTOPT+=-N$(EMULATOR_OPTS)
  2718. endif
  2719. ifdef USEENV
  2720. override DOTESTENV:=$(DOTESTOPT)
  2721. override DOTESTOPT=!DOTESTENV
  2722. export DOTESTENV
  2723. endif
  2724. DIRS=webtbs webtbf tbs tbf $(TESTDIRS)
  2725. vpath %.log $(TEST_OUTPUTDIR)
  2726. vpath %.elg $(TEST_OUTPUTDIR)
  2727. vpath %.o $(C_SUBDIR)
  2728. ifdef SINGLEDOTESTRUNS
  2729. TBSREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard tbs/t*.pp)))
  2730. TBFREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard tbf/t*.pp)))
  2731. WEBTBSREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard webtbs/t*.pp)))
  2732. WEBTBFREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard webtbf/t*.pp)))
  2733. TESTREQ=$(patsubst %.pp,%.elg,$(sort $(wildcard $(addsuffix /t*.pp,$(TESTDIRS)))))
  2734. else
  2735. TBSREQ=$(TEST_OUTPUTDIR)/tbsdir-stamp.$(TEST_FULL_TARGET)
  2736. TBFREQ=$(TEST_OUTPUTDIR)/tbfdir-stamp.$(TEST_FULL_TARGET)
  2737. WEBTBSREQ=$(TEST_OUTPUTDIR)/webtbsdir-stamp.$(TEST_FULL_TARGET)
  2738. WEBTBFREQ=$(TEST_OUTPUTDIR)/webtbfdir-stamp.$(TEST_FULL_TARGET)
  2739. TESTREQ=$(TEST_OUTPUTDIR)/testdir-stamp.$(TEST_FULL_TARGET)
  2740. endif
  2741. %.log : %.pp testprep-stamp.$(TEST_FULL_TARGET)
  2742. $(call QECHO," COMPILE $<")
  2743. $(Q)$(DOTEST) $(DOTESTOPT) $<
  2744. %.elg : %.pp testprep-stamp.$(TEST_FULL_TARGET)
  2745. $(call QECHO," EXECUTE $<")
  2746. $(Q)$(DOTEST) $(DOTESTOPT) -e $<
  2747. ifdef TEST_CCOMPILER
  2748. %.o : %.c
  2749. $(TEST_CCOMPILER) -c $< -o $(@D)/$(C_SUBDIR)/$(@F)
  2750. %.o : %.cc
  2751. $(TEST_CCOMPILER) -c $< -o $(@D)/$(C_SUBDIR)/$(@F)
  2752. endif
  2753. .PHONY: alltbs alltbf allwebtbs allwebtbf alltest alltests
  2754. alltbs : testprep $(patsubst %.pp,%.log,$(sort $(wildcard tbs/t*.pp)))
  2755. alltbf : testprep $(patsubst %.pp,%.log,$(sort $(wildcard tbf/t*.pp)))
  2756. allwebtbs : testprep $(patsubst %.pp,%.log,$(sort $(wildcard webtbs/t*.pp)))
  2757. allwebtbf : testprep $(patsubst %.pp,%.log,$(sort $(wildcard webtbf/t*.pp)))
  2758. alltest : testprep $(patsubst %.pp,%.log,$(sort $(wildcard $(addsuffix /t*.pp,$(TESTDIRS)))))
  2759. ifndef SINGLEDOTESTRUNS
  2760. $(Q)$(DOTEST) $(DOTESTOPT) -e $(wildcard $(addsuffix /t*.pp,$(TESTDIRS)))
  2761. endif
  2762. alltests: alltest alltbs alltbf allwebtbs allwebtbf
  2763. test_c_objects: testprep
  2764. $(MAKE) $(patsubst %.pp,%.log, $(wildcard test/cg/cdecl/tcalext*.pp))
  2765. $(MAKE) $(patsubst %.pp,%.elg, $(wildcard test/cg/cdecl/tcalext*.pp))
  2766. $(MAKE) $(patsubst %.pp,%.log, $(wildcard test/cg/cdecl/tcppcl*.pp))
  2767. $(MAKE) $(patsubst %.pp,%.elg, $(wildcard test/cg/cdecl/tcppcl*.pp))
  2768. ifdef SINGLEDOTESTRUNS
  2769. .PHONY: allexectbs allexectbf allexecwebtbs allexecwebtbf allexectest allexectests
  2770. allexectbs: $(addsuffix .tbslog, $(LOGFILES))
  2771. allexectbf: $(addsuffix .tbflog, $(LOGFILES))
  2772. allexecwebtbs: $(addsuffix .webtbslog, $(LOGFILES))
  2773. allexecwebtbf: $(addsuffix .webtbflog, $(LOGFILES))
  2774. allexectest: $(addsuffix .testlog, $(LOGFILES))
  2775. $(TEST_OUTPUTDIR)/%.mergedlog : $(TEST_OUTPUTDIR)/%.testlog $(TEST_OUTPUTDIR)/%.tbslog $(TEST_OUTPUTDIR)/%.tbflog $(TEST_OUTPUTDIR)/%.webtbslog $(TEST_OUTPUTDIR)/%.webtbflog
  2776. $(Q)$(CONCAT) $^ $@
  2777. $(Q)$(COPY) $@ $(basename $@)
  2778. $(TEST_OUTPUTDIR)/%.tbslog : $(TBSREQ)
  2779. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.tbslog
  2780. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.tbslog
  2781. $(TEST_OUTPUTDIR)/%.tbflog : $(TBFREQ)
  2782. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.tbflog
  2783. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.tbflog
  2784. $(TEST_OUTPUTDIR)/%.webtbslog : $(WEBTBSREQ)
  2785. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.webtbslog
  2786. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.webtbslog
  2787. $(TEST_OUTPUTDIR)/%.webtbflog : $(WEBTBFREQ)
  2788. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.webtbflog
  2789. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.webtbflog
  2790. $(TEST_OUTPUTDIR)/%.testlog : $(TESTREQ)
  2791. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/faillist.testlog
  2792. $(Q)$(ECHO) -n >> $(TEST_OUTPUTDIR)/longlog.testlog
  2793. allexectests: $(TEST_OUTPUTDIR)/log.testlog $(TEST_OUTPUTDIR)/log.tbslog \
  2794. $(TEST_OUTPUTDIR)/log.tbflog $(TEST_OUTPUTDIR)/log.webtbslog \
  2795. $(TEST_OUTPUTDIR)/log.webtbflog \
  2796. $(addprefix $(TEST_OUTPUTDIR)/,$(foreach EXT, $(LOGEXT), $(addsuffix $(EXT), faillist longlog))) \
  2797. $(addsuffix .mergedlog, $(LOGFILES))
  2798. else
  2799. .PHONY: allexectests gparmake_allexectests
  2800. MAKEINC=$(TEST_OUTPUTDIR)/MakeChunks-$(TEST_TARGETSUFFIX).inc
  2801. $(GPARMAKE): utils/gparmake.pp $(CREATELST)
  2802. $(Q)$(MAKE) $(COMPILER_UNITTARGETDIR)
  2803. $(FPC) -FE. utils/gparmake.pp $(OPT)
  2804. $(CREATELST): utils/createlst.pp
  2805. $(Q)$(MAKE) $(COMPILER_UNITTARGETDIR)
  2806. $(FPC) -FE. utils/createlst.pp $(OPT)
  2807. $(MAKEINC): $(GPARMAKE) $(CREATELST)
  2808. $(Q)$(MAKE) $(TEST_OUTPUTDIR)
  2809. $(Q)$(CREATELST) filelisttest.lst $(TESTDIRS)
  2810. $(Q)$(GPARMAKE) $(MAKEINC) test 1 $(CHUNKSIZE) @filelisttest.lst
  2811. $(Q)$(CREATELST) filelisttbs.lst tbs
  2812. $(Q)$(GPARMAKE) -a $(MAKEINC) tbs 10000 $(CHUNKSIZE) @filelisttbs.lst
  2813. $(Q)$(CREATELST) filelisttbf.lst tbf
  2814. $(Q)$(GPARMAKE) -a $(MAKEINC) tbf 15000 $(CHUNKSIZE) @filelisttbf.lst
  2815. $(Q)$(CREATELST) filelistwebtbs.lst webtbs
  2816. $(Q)$(GPARMAKE) -a $(MAKEINC) webtbs 20000 $(CHUNKSIZE) @filelistwebtbs.lst
  2817. $(Q)$(CREATELST) filelistwebtbf.lst webtbf
  2818. $(Q)$(GPARMAKE) -a $(MAKEINC) webtbf 30000 $(CHUNKSIZE) @filelistwebtbf.lst
  2819. ifeq (,$(findstring clean,$(firstword $(MAKECMDGOALS))))
  2820. ifneq (,$(findstring all,$(MAKECMDGOALS)))
  2821. ifneq (,$(wildcard $(MAKEINC)))
  2822. include $(TEST_OUTPUTDIR)/MakeChunks-$(TEST_TARGETSUFFIX).inc
  2823. endif
  2824. endif
  2825. endif
  2826. allexectests: $(MAKEINC)
  2827. $(MAKE) gparmake_allexectests
  2828. endif
  2829. .PHONY: clean distclean clean_test clean_sources
  2830. clean_sources:
  2831. -$(DEL) $(wildcard $(patsubst %.pp,%$(PPUEXT),$(wildcard $(addsuffix /*.pp,$(DIRS)))))
  2832. clean_test:
  2833. -$(DELTREE) $(TEST_OUTPUTDIR)
  2834. -$(DEL) core gmon.out testprep-stamp.$(TEST_FULL_TARGET) dotgz$(SRCBATCHEXT)
  2835. clean: clean_sources fpc_clean
  2836. $(MAKE) clean_test CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH)
  2837. $(MAKE) -C tstunits clean CPU_TARGET=$(TEST_CPU_TARGET) OS_TARGET=$(TEST_OS_TARGET) SUBARCH=$(TEST_SUBARCH)
  2838. -$(DEL) filelisttest.lst filelisttbs.lst filelisttbf.lst filelistwebtbs.lst filelistwebtbf.lst
  2839. distclean: clean fpc_distclean
  2840. $(DELTREE) output
  2841. $(MAKE) -C utils distclean
  2842. $(MAKE) -C tstunits distclean
  2843. -$(DEL) testprep-stamp.*
  2844. .PHONY: all full digest onlyknown onlygraph onlyinteractive
  2845. digest : utils
  2846. -$(DIGEST) $(LOG)
  2847. SVNVERSION:=$(firstword $(wildcard $(addsuffix /svnversion$(SRCEXEEXT),$(SEARCHPATH))))
  2848. GIT:=$(firstword $(wildcard $(addsuffix /git$(SRCEXEEXT),$(SEARCHPATH))))
  2849. ifneq ($(wildcard ../.git),)
  2850. ifneq ($(GIT),)
  2851. GIT_GET_HASH=$(GIT) log -1 --format=%h
  2852. SVN_TESTS_REV_STR=$(shell $(GIT_GET_HASH) .)
  2853. SVN_COMPILER_REV_STR=$(shell $(GIT_GET_HASH) ../compiler)
  2854. SVN_RTL_REV_STR=$(shell $(GIT_GET_HASH) ../rtl)
  2855. SVN_PACKAGES_REV_STR=$(shell $(GIT_GET_HASH) ../packages)
  2856. endif
  2857. else
  2858. ifneq ($(SVNVERSION),)
  2859. SVN_TESTS_REV_STR=$(shell $(SVNVERSION) -c .)
  2860. SVN_COMPILER_REV_STR=$(shell $(SVNVERSION) -c ../compiler)
  2861. SVN_RTL_REV_STR=$(shell $(SVNVERSION) -c ../rtl)
  2862. SVN_PACKAGES_REV_STR=$(shell $(SVNVERSION) -c ../packages)
  2863. endif
  2864. endif
  2865. ifeq ($(TEST_COMMENT),)
  2866. TEST_COMMENT=$(TEST_OPT)
  2867. endif
  2868. $(TEST_OUTPUTDIR)/dbdigest.cfg:
  2869. $(ECHOREDIR) OS=$(TEST_OS_TARGET) > $(TEST_OUTPUTDIR)/dbdigest.cfg
  2870. $(ECHOREDIR) CPU=$(TEST_CPU_TARGET) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2871. $(ECHOREDIR) Version=$(TEST_FPC_VERSION) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2872. $(ECHOREDIR) LogFile=log >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2873. ifneq ($(TEST_USE_LONGLOG),)
  2874. $(ECHOREDIR) LongLogFile=longlog >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2875. endif
  2876. $(ECHOREDIR) Submitter=$(TEST_USER) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2877. $(ECHOREDIR) Machine=$(TEST_HOSTNAME) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2878. $(ECHOREDIR) Comment=$(TEST_COMMENT) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2879. ifneq ($(TEST_DATETIME),)
  2880. $(ECHOREDIR) Date=$(TEST_DATETIME) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2881. endif
  2882. ifneq ($(TEST_FPC_DATE),)
  2883. $(ECHOREDIR) CompilerDate=$(TEST_FPC_DATE) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2884. endif
  2885. ifneq ($(TEST_FPC_FULLVERSION),)
  2886. $(ECHOREDIR) CompilerFullVersion=$(TEST_FPC_FULLVERSION) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2887. endif
  2888. ifneq ($(SVN_TESTS_REV_STR),)
  2889. $(ECHOREDIR) svntestsrevision=$(SVN_TESTS_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2890. $(ECHOREDIR) svncompilerrevision=$(SVN_COMPILER_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2891. $(ECHOREDIR) svnrtlrevision=$(SVN_RTL_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2892. $(ECHOREDIR) svnpackagesrevision=$(SVN_PACKAGES_REV_STR) >> $(TEST_OUTPUTDIR)/dbdigest.cfg
  2893. endif
  2894. ifeq ($(OS_SOURCE),openbsd)
  2895. ifeq ($(TARPROG),$(subst gtar,,$(TARPROG)))
  2896. BSD_SYSTEM_TAR=1
  2897. endif
  2898. endif
  2899. ifdef BSD_SYSTEM_TAR
  2900. TARFROM=-I tar.lst
  2901. else
  2902. TARFROM=--files-from=tar.lst
  2903. endif
  2904. ifneq ($(TEST_USE_LONGLOG),)
  2905. PREPUP_OPT=-ll
  2906. else
  2907. PREPUP_OPT=
  2908. endif
  2909. ifndef inWinDOS
  2910. $(TEST_OUTPUTDIR)/tar.lst:
  2911. ifdef inOS2
  2912. cd $(subst /,\,$(TEST_OUTPUTDIR)) && gnufind . -name "*.log" -o -name "*.elg" > tar.lst
  2913. $(ECHOREDIR) log>> $(TEST_OUTPUTDIR)/tar.lst
  2914. $(ECHOREDIR) dbdigest.cfg>> $(TEST_OUTPUTDIR)/tar.lst
  2915. else
  2916. ifeq ($(TEST_USE_LONGLOG),)
  2917. cd $(TEST_OUTPUTDIR) && find . -name '*.log' -o -name '*.elg' > tar.lst
  2918. else
  2919. $(ECHOREDIR) "longlog" > $(TEST_OUTPUTDIR)/tar.lst
  2920. endif
  2921. $(ECHOREDIR) "log" >> $(TEST_OUTPUTDIR)/tar.lst
  2922. $(ECHOREDIR) "dbdigest.cfg" >> $(TEST_OUTPUTDIR)/tar.lst
  2923. endif
  2924. $(TEST_OUTPUTDIR)/$(DB_TARGZ): $(TEST_OUTPUTDIR)/tar.lst $(TEST_OUTPUTDIR)/dbdigest.cfg
  2925. ifdef inCygWin
  2926. dos2unix $(TEST_OUTPUTDIR)/tar.lst
  2927. endif
  2928. ifdef inOS2
  2929. dos2unix $(TEST_OUTPUTDIR)/tar.lst
  2930. cd $(subst /,\,$(TEST_OUTPUTDIR)) && $(TARPROG) czf $(DB_TARGZ) $(TARFROM)
  2931. else
  2932. cd $(TEST_OUTPUTDIR) && $(TARPROG) czf $(DB_TARGZ) $(TARFROM)
  2933. endif
  2934. else
  2935. $(TEST_OUTPUTDIR)/$(DB_TARGZ): $(TEST_OUTPUTDIR)/dbdigest.cfg
  2936. ifdef inDOS
  2937. $(ECHOREDIR) @echo off > dotgz$(SRCBATCHEXT)
  2938. $(ECHOREDIR) cd $(subst /,\,$(TEST_OUTPUTDIR)) >> dotgz$(SRCBATCHEXT)
  2939. $(ECHOREDIR) $(subst /,\,../../$(PREPUP)) $(DB_TARGZ) >> dotgz$(SRCBATCHEXT)
  2940. $(ECHOREDIR) if errorlevel 1 $(DEL) $(DB_TARGZ) >> dotgz$(SRCBATCHEXT)
  2941. $(ECHOREDIR) cd $(subst /,\,../../) >> dotgz$(SRCBATCHEXT)
  2942. $(RUNBATCH) dotgz$(SRCBATCHEXT)
  2943. else
  2944. ifdef inOS2
  2945. cd "$(subst /,\,$(TEST_OUTPUTDIR))" && "..\..\$(PREPUP)" $(DB_TARGZ)
  2946. else
  2947. cd "$(TEST_OUTPUTDIR)" && "../../$(PREPUP)" $(DB_TARGZ)
  2948. endif
  2949. endif
  2950. endif
  2951. ifndef DB_USE_SSH
  2952. ifdef inWinDOS
  2953. UsePutty=1
  2954. endif
  2955. endif
  2956. uploadrun: $(TEST_OUTPUTDIR)/$(DB_TARGZ)
  2957. ifdef UsePutty
  2958. pscp -load "[email protected]" $(TEST_OUTPUTDIR)/$(DB_TARGZ) $(DB_HOST):$(DB_UPLOADDIR)/$(DB_TARGZ).part $(SSH_EXTRA)
  2959. plink -load "[email protected]" "mv $(DB_UPLOADDIR)/$(DB_TARGZ).part $(DB_UPLOADDIR)/$(DB_TARGZ)"
  2960. else
  2961. scp $(DB_SSH_EXTRA) $(TEST_OUTPUTDIR)/$(DB_TARGZ) $(DB_HOST):$(DB_UPLOADDIR)/$(DB_TARGZ).part
  2962. ifdef inOS2
  2963. $(ECHOREDIR) . | ssh $(DB_SSH_EXTRA) $(DB_HOST) "mv $(DB_UPLOADDIR)/$(DB_TARGZ).part $(DB_UPLOADDIR)/$(DB_TARGZ)"
  2964. else
  2965. ssh $(DB_SSH_EXTRA) $(DB_HOST) "mv $(DB_UPLOADDIR)/$(DB_TARGZ).part $(DB_UPLOADDIR)/$(DB_TARGZ)"
  2966. endif
  2967. endif
  2968. all : allexectests
  2969. full :
  2970. $(MAKE) clean
  2971. $(MAKE) allexectests
  2972. $(MAKE) digest
  2973. fulldb :
  2974. $(MAKE) clean
  2975. $(MAKE) allexectests
  2976. $(MAKE) digest
  2977. $(MAKE) uploadrun
  2978. tarfile : $(TEST_OUTPUTDIR)/$(DB_TARGZ)
  2979. onlyknown :
  2980. $(MAKE) full "DOTESTOPT= $(DOTESTOPT) -k-"
  2981. onlygraph :
  2982. $(MAKE) full "DOTESTOPT= $(DOTESTOPT) -g-"
  2983. onlyinteractive :
  2984. $(MAKE) "DOTESTOPT= $(DOTESTOPT) -i-"
  2985. info :
  2986. @$(ECHO) "This Makefile allows to test the compiler"
  2987. @$(ECHO)
  2988. @$(ECHO) "Basic Targets:"
  2989. @$(ECHO) " all - continue all tests"
  2990. @$(ECHO) " full - clean and run all tests"
  2991. @$(ECHO) " fulldb - full and upload test results"
  2992. @$(ECHO) " digest - compute and print test statistics"
  2993. @$(ECHO)
  2994. @$(ECHO) "Advanced Targets:"
  2995. @$(ECHO) " onlyknown - run only known bugs"
  2996. @$(ECHO) " onlygraph - run only graph tests"
  2997. @$(ECHO) " onlyinteractive - run only interactive tests"
  2998. @$(ECHO)
  2999. @$(ECHO) "Host environment:"
  3000. @$(ECHO) " $(FULL_TARGET)"
  3001. @$(ECHO) " compiler: $(FPC) ver: $(FPC_VERSION)"
  3002. @$(ECHO)
  3003. @$(ECHO) "Test environment:"
  3004. @$(ECHO) " $(TEST_FULL_TARGET)"
  3005. @$(ECHO) " compiler: $(TEST_FPC) ver: $(TEST_FPC_VERSION)"
  3006. @$(ECHO)
  3007. @$(ECHO) "Output settings:"
  3008. @$(ECHO) " DateTime : $(TEST_DATETIME)"
  3009. @$(ECHO) " Outputdir: $(TEST_OUTPUTDIR)"
  3010. @$(ECHO) " Uploaddir: $(DB_UPLOADDIR)"
  3011. @$(ECHO) " tar.gz : $(DB_TARGZ)"