Makefile 79 KB

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