Makefile 82 KB

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