Makefile 79 KB

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