Makefile 83 KB

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