Makefile 78 KB

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