Makefile 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268
  1. #
  2. # Don't edit, this file is generated by FPCMake Version 1.1 [2003/01/14]
  3. #
  4. default: all
  5. MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos macosx
  6. override PATH:=$(subst \,/,$(PATH))
  7. ifeq ($(findstring ;,$(PATH)),)
  8. inUnix=1
  9. SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
  10. else
  11. SEARCHPATH:=$(subst ;, ,$(PATH))
  12. endif
  13. PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
  14. ifeq ($(PWD),)
  15. PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
  16. ifeq ($(PWD),)
  17. $(error You need the GNU utils package to use this Makefile)
  18. else
  19. PWD:=$(firstword $(PWD))
  20. SRCEXEEXT=
  21. endif
  22. else
  23. PWD:=$(firstword $(PWD))
  24. SRCEXEEXT=.exe
  25. endif
  26. ifndef inUnix
  27. ifeq ($(OS),Windows_NT)
  28. inWinNT=1
  29. else
  30. ifdef OS2_SHELL
  31. inOS2=1
  32. endif
  33. endif
  34. else
  35. ifneq ($(findstring cygwin,$(MACHTYPE)),)
  36. inCygWin=1
  37. endif
  38. endif
  39. ifeq ($(OS_TARGET),freebsd)
  40. BSDhier=1
  41. endif
  42. ifeq ($(OS_TARGET),netbsd)
  43. BSDhier=1
  44. endif
  45. ifeq ($(OS_TARGET),openbsd)
  46. BSDhier=1
  47. endif
  48. ifdef inUnix
  49. BATCHEXT=.sh
  50. else
  51. ifdef inOS2
  52. BATCHEXT=.cmd
  53. else
  54. BATCHEXT=.bat
  55. endif
  56. endif
  57. ifdef inUnix
  58. PATHSEP=/
  59. else
  60. PATHSEP:=$(subst /,\,/)
  61. ifdef inCygWin
  62. PATHSEP=/
  63. endif
  64. endif
  65. ifdef PWD
  66. BASEDIR:=$(subst \,/,$(shell $(PWD)))
  67. ifdef inCygWin
  68. ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
  69. BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
  70. BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
  71. BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
  72. endif
  73. endif
  74. else
  75. BASEDIR=.
  76. endif
  77. ifdef inOS2
  78. ifndef ECHO
  79. ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
  80. ifeq ($(ECHO),)
  81. ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
  82. ifeq ($(ECHO),)
  83. ECHO=echo
  84. else
  85. ECHO:=$(firstword $(ECHO))
  86. endif
  87. else
  88. ECHO:=$(firstword $(ECHO))
  89. endif
  90. endif
  91. export ECHO
  92. endif
  93. // override OS_TARGET_DEFAULT=freebsd
  94. override DEFAULT_FPCDIR=../..
  95. ifndef FPC
  96. ifdef PP
  97. FPC=$(PP)
  98. endif
  99. endif
  100. ifndef FPC
  101. FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
  102. ifneq ($(FPCPROG),)
  103. FPCPROG:=$(firstword $(FPCPROG))
  104. FPC:=$(shell $(FPCPROG) -PB)
  105. ifneq ($(findstring Error,$(FPC)),)
  106. override FPC=ppc386
  107. endif
  108. else
  109. override FPC=ppc386
  110. endif
  111. endif
  112. override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
  113. override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
  114. ifndef FPC_VERSION
  115. FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
  116. FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
  117. endif
  118. export FPC FPC_VERSION FPC_COMPILERINFO
  119. unexport CHECKDEPEND ALLDEPENDENCIES
  120. ifndef CPU_TARGET
  121. ifdef CPU_TARGET_DEFAULT
  122. CPU_TARGET=$(CPU_TARGET_DEFAULT)
  123. endif
  124. endif
  125. ifndef OS_TARGET
  126. ifdef OS_TARGET_DEFAULT
  127. OS_TARGET=$(OS_TARGET_DEFAULT)
  128. endif
  129. endif
  130. ifneq ($(words $(FPC_COMPILERINFO)),5)
  131. FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
  132. FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
  133. FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
  134. FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
  135. endif
  136. ifndef CPU_SOURCE
  137. CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
  138. endif
  139. ifndef CPU_TARGET
  140. CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
  141. endif
  142. ifndef OS_SOURCE
  143. OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
  144. endif
  145. ifndef OS_TARGET
  146. OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
  147. endif
  148. FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
  149. FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
  150. ifneq ($(FULL_TARGET),$(FULL_SOURCE))
  151. CROSSCOMPILE=1
  152. endif
  153. ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
  154. ifeq ($(findstring $(OS_TARGET),$(MAKEFILETARGETS)),)
  155. $(error The Makefile doesn't support target $(OS_TARGET), please run fpcmake first)
  156. endif
  157. endif
  158. export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE CROSSCOMPILE
  159. ifdef FPCDIR
  160. override FPCDIR:=$(subst \,/,$(FPCDIR))
  161. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  162. override FPCDIR=wrong
  163. endif
  164. else
  165. override FPCDIR=wrong
  166. endif
  167. ifdef DEFAULT_FPCDIR
  168. ifeq ($(FPCDIR),wrong)
  169. override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
  170. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  171. override FPCDIR=wrong
  172. endif
  173. endif
  174. endif
  175. ifeq ($(FPCDIR),wrong)
  176. ifdef inUnix
  177. override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
  178. ifeq ($(wildcard $(FPCDIR)/units),)
  179. override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
  180. endif
  181. else
  182. override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
  183. override FPCDIR:=$(FPCDIR)/..
  184. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  185. override FPCDIR:=$(FPCDIR)/..
  186. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  187. override FPCDIR=c:/pp
  188. endif
  189. endif
  190. endif
  191. endif
  192. ifndef CROSSDIR
  193. CROSSDIR:=$(FPCDIR)/cross/$(FULL_TARGET)
  194. endif
  195. ifndef CROSSTARGETDIR
  196. CROSSTARGETDIR=$(CROSSDIR)/$(FULL_TARGET)
  197. endif
  198. ifdef CROSSCOMPILE
  199. UNITSDIR:=$(wildcard $(CROSSTARGETDIR)/units)
  200. ifeq ($(UNITSDIR),)
  201. UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
  202. endif
  203. else
  204. UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
  205. endif
  206. PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
  207. override PACKAGE_NAME=rtl
  208. RTL=..
  209. INC=$(RTL)/inc
  210. PROCINC=$(RTL)/$(CPU_TARGET)
  211. BSDINC=$(RTL)/bsd
  212. BSDPROCINC=$(BSDINC)/$(CPU_TARGET)
  213. UNIXINC=$(RTL)/unix
  214. CPUPROCINC=$(CPU_TARGET)
  215. UNITPREFIX=rtl
  216. ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
  217. SYSTEMUNIT=system
  218. LINUXUNIT=
  219. PRT0=prt0
  220. else
  221. SYSTEMUNIT=sysbsd
  222. LINUXUNIT=linux
  223. override FPCOPT+=-dUNIX
  224. PRT0=prt0_10
  225. endif
  226. ifdef RELEASE
  227. override FPCOPT+=-Ur
  228. endif
  229. OBJPASDIR=$(RTL)/objpas
  230. GRAPHDIR=$(INC)/graph
  231. ifndef USELIBGGI
  232. USELIBGGI=NO
  233. endif
  234. override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings baseunix $(LINUXUNIT) unix initc dos crt objects printer sysutils typinfo math varutils cpu mmx charset ucomplex getopts heaptrc lineinfo errors sockets gpm ipc terminfo video mouse keyboard console serial variants types systhrds sysctl
  235. override TARGET_LOADERS+=prt0 cprt0
  236. override TARGET_RSTS+=math varutils typinfo
  237. override INSTALL_FPCPACKAGE=y y
  238. override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC) $(BSDPROCINC) $(CPUPROCINC)
  239. override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(UNIXINC) $(BSDINC)
  240. override COMPILER_TARGETDIR+=.
  241. ifdef REQUIRE_UNITSDIR
  242. override UNITSDIR+=$(REQUIRE_UNITSDIR)
  243. endif
  244. ifdef REQUIRE_PACKAGESDIR
  245. override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
  246. endif
  247. ifdef ZIPINSTALL
  248. ifeq ($(OS_TARGET),linux)
  249. UNIXINSTALLDIR=1
  250. endif
  251. ifeq ($(OS_TARGET),freebsd)
  252. UNIXINSTALLDIR=1
  253. endif
  254. ifeq ($(OS_TARGET),netbsd)
  255. UNIXINSTALLDIR=1
  256. endif
  257. ifeq ($(OS_TARGET),openbsd)
  258. UNIXINSTALLDIR=1
  259. endif
  260. ifeq ($(OS_TARGET),sunos)
  261. UNIXINSTALLDIR=1
  262. endif
  263. ifeq ($(OS_TARGET),qnx)
  264. UNIXINSTALLDIR=1
  265. endif
  266. else
  267. ifeq ($(OS_SOURCE),linux)
  268. UNIXINSTALLDIR=1
  269. endif
  270. ifeq ($(OS_SOURCE),freebsd)
  271. UNIXINSTALLDIR=1
  272. endif
  273. ifeq ($(OS_SOURCE),netbsd)
  274. UNIXINSTALLDIR=1
  275. endif
  276. ifeq ($(OS_SOURCE),openbsd)
  277. UNIXINSTALLDIR=1
  278. endif
  279. ifeq ($(OS_TARGET),sunos)
  280. UNIXINSTALLDIR=1
  281. endif
  282. ifeq ($(OS_TARGET),qnx)
  283. UNIXINSTALLDIR=1
  284. endif
  285. endif
  286. ifndef INSTALL_PREFIX
  287. ifdef PREFIX
  288. INSTALL_PREFIX=$(PREFIX)
  289. endif
  290. endif
  291. ifndef INSTALL_PREFIX
  292. ifdef UNIXINSTALLDIR
  293. INSTALL_PREFIX=/usr/local
  294. else
  295. ifdef INSTALL_FPCPACKAGE
  296. INSTALL_BASEDIR:=/pp
  297. else
  298. INSTALL_BASEDIR:=/$(PACKAGE_NAME)
  299. endif
  300. endif
  301. endif
  302. export INSTALL_PREFIX
  303. ifdef INSTALL_FPCSUBDIR
  304. export INSTALL_FPCSUBDIR
  305. endif
  306. ifndef DIST_DESTDIR
  307. DIST_DESTDIR:=$(BASEDIR)
  308. endif
  309. export DIST_DESTDIR
  310. ifndef INSTALL_BASEDIR
  311. ifdef UNIXINSTALLDIR
  312. ifdef INSTALL_FPCPACKAGE
  313. INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
  314. else
  315. INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
  316. endif
  317. else
  318. INSTALL_BASEDIR:=$(INSTALL_PREFIX)
  319. endif
  320. endif
  321. ifndef INSTALL_BINDIR
  322. ifdef UNIXINSTALLDIR
  323. INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
  324. else
  325. INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
  326. ifdef INSTALL_FPCPACKAGE
  327. INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
  328. endif
  329. endif
  330. endif
  331. ifndef INSTALL_UNITDIR
  332. ifdef CROSSCOMPILE
  333. INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/units
  334. else
  335. INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(OS_TARGET)
  336. endif
  337. ifdef INSTALL_FPCPACKAGE
  338. ifdef PACKAGE_NAME
  339. INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
  340. endif
  341. endif
  342. endif
  343. ifndef INSTALL_LIBDIR
  344. ifdef UNIXINSTALLDIR
  345. INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
  346. else
  347. INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
  348. endif
  349. endif
  350. ifndef INSTALL_SOURCEDIR
  351. ifdef UNIXINSTALLDIR
  352. ifdef BSDhier
  353. SRCPREFIXDIR=share/src
  354. else
  355. SRCPREFIXDIR=src
  356. endif
  357. ifdef INSTALL_FPCPACKAGE
  358. ifdef INSTALL_FPCSUBDIR
  359. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
  360. else
  361. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  362. endif
  363. else
  364. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  365. endif
  366. else
  367. ifdef INSTALL_FPCPACKAGE
  368. ifdef INSTALL_FPCSUBDIR
  369. INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
  370. else
  371. INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
  372. endif
  373. else
  374. INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
  375. endif
  376. endif
  377. endif
  378. ifndef INSTALL_DOCDIR
  379. ifdef UNIXINSTALLDIR
  380. ifdef BSDhier
  381. DOCPREFIXDIR=share/doc
  382. else
  383. DOCPREFIXDIR=doc
  384. endif
  385. ifdef INSTALL_FPCPACKAGE
  386. INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  387. else
  388. INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  389. endif
  390. else
  391. ifdef INSTALL_FPCPACKAGE
  392. INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
  393. else
  394. INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
  395. endif
  396. endif
  397. endif
  398. ifndef INSTALL_EXAMPLEDIR
  399. ifdef UNIXINSTALLDIR
  400. ifdef INSTALL_FPCPACKAGE
  401. ifdef BSDhier
  402. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  403. else
  404. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
  405. endif
  406. else
  407. ifdef BSDhier
  408. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  409. else
  410. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  411. endif
  412. endif
  413. else
  414. ifdef INSTALL_FPCPACKAGE
  415. INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
  416. else
  417. INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
  418. endif
  419. endif
  420. endif
  421. ifndef INSTALL_DATADIR
  422. INSTALL_DATADIR=$(INSTALL_BASEDIR)
  423. endif
  424. ifdef CROSSCOMPILE
  425. ifndef CROSSBINDIR
  426. CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(FULL_SOURCE))
  427. ifeq ($(CROSSBINDIR),)
  428. CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(FULL_TARGET)/bin/$(FULL_SOURCE))
  429. endif
  430. endif
  431. else
  432. CROSSBINDIR=
  433. endif
  434. LOADEREXT=.as
  435. EXEEXT=.exe
  436. PPLEXT=.ppl
  437. PPUEXT=.ppu
  438. OEXT=.o
  439. ASMEXT=.s
  440. SMARTEXT=.sl
  441. STATICLIBEXT=.a
  442. SHAREDLIBEXT=.so
  443. STATICLIBPREFIX=libp
  444. RSTEXT=.rst
  445. FPCMADE=fpcmade
  446. ifeq ($(OS_TARGET),go32v1)
  447. PPUEXT=.pp1
  448. OEXT=.o1
  449. ASMEXT=.s1
  450. SMARTEXT=.sl1
  451. STATICLIBEXT=.a1
  452. SHAREDLIBEXT=.so1
  453. STATICLIBPREFIX=
  454. FPCMADE=fpcmade.v1
  455. PACKAGESUFFIX=v1
  456. endif
  457. ifeq ($(OS_TARGET),go32v2)
  458. STATICLIBPREFIX=
  459. FPCMADE=fpcmade.dos
  460. ZIPSUFFIX=go32
  461. endif
  462. ifeq ($(OS_TARGET),linux)
  463. EXEEXT=
  464. HASSHAREDLIB=1
  465. FPCMADE=fpcmade.lnx
  466. ZIPSUFFIX=linux
  467. endif
  468. ifeq ($(OS_TARGET),freebsd)
  469. EXEEXT=
  470. HASSHAREDLIB=1
  471. FPCMADE=fpcmade.freebsd
  472. ZIPSUFFIX=freebsd
  473. endif
  474. ifeq ($(OS_TARGET),netbsd)
  475. EXEEXT=
  476. HASSHAREDLIB=1
  477. FPCMADE=fpcmade.netbsd
  478. ZIPSUFFIX=netbsd
  479. endif
  480. ifeq ($(OS_TARGET),openbsd)
  481. EXEEXT=
  482. HASSHAREDLIB=1
  483. FPCMADE=fpcmade.openbsd
  484. ZIPSUFFIX=openbsd
  485. endif
  486. ifeq ($(OS_TARGET),win32)
  487. PPUEXT=.ppw
  488. OEXT=.ow
  489. ASMEXT=.sw
  490. SMARTEXT=.slw
  491. STATICLIBEXT=.aw
  492. SHAREDLIBEXT=.dll
  493. FPCMADE=fpcmade.w32
  494. ZIPSUFFIX=w32
  495. endif
  496. ifeq ($(OS_TARGET),os2)
  497. PPUEXT=.ppo
  498. ASMEXT=.so2
  499. OEXT=.oo2
  500. AOUTEXT=.out
  501. SMARTEXT=.sl2
  502. STATICLIBPREFIX=
  503. STATICLIBEXT=.ao2
  504. SHAREDLIBEXT=.dll
  505. FPCMADE=fpcmade.os2
  506. ZIPSUFFIX=emx
  507. ECHO=echo
  508. endif
  509. ifeq ($(OS_TARGET),amiga)
  510. EXEEXT=
  511. PPUEXT=.ppu
  512. ASMEXT=.asm
  513. OEXT=.o
  514. SMARTEXT=.sl
  515. STATICLIBEXT=.a
  516. SHAREDLIBEXT=.library
  517. FPCMADE=fpcmade.amg
  518. endif
  519. ifeq ($(OS_TARGET),atari)
  520. PPUEXT=.ppu
  521. ASMEXT=.s
  522. OEXT=.o
  523. SMARTEXT=.sl
  524. STATICLIBEXT=.a
  525. EXEEXT=.ttp
  526. FPCMADE=fpcmade.ata
  527. endif
  528. ifeq ($(OS_TARGET),beos)
  529. PPUEXT=.ppu
  530. ASMEXT=.s
  531. OEXT=.o
  532. SMARTEXT=.sl
  533. STATICLIBEXT=.a
  534. EXEEXT=
  535. FPCMADE=fpcmade.be
  536. ZIPSUFFIX=be
  537. endif
  538. ifeq ($(OS_TARGET),sunos)
  539. PPUEXT=.ppu
  540. ASMEXT=.s
  541. OEXT=.o
  542. SMARTEXT=.sl
  543. STATICLIBEXT=.a
  544. EXEEXT=
  545. FPCMADE=fpcmade.sun
  546. ZIPSUFFIX=sun
  547. endif
  548. ifeq ($(OS_TARGET),qnx)
  549. PPUEXT=.ppu
  550. ASMEXT=.s
  551. OEXT=.o
  552. SMARTEXT=.sl
  553. STATICLIBEXT=.a
  554. EXEEXT=
  555. FPCMADE=fpcmade.qnx
  556. ZIPSUFFIX=qnx
  557. endif
  558. ifeq ($(OS_TARGET),netware)
  559. STATICLIBPREFIX=
  560. PPUEXT=.ppn
  561. OEXT=.on
  562. ASMEXT=.s
  563. SMARTEXT=.sl
  564. STATICLIBEXT=.a
  565. SHAREDLIBEXT=.nlm
  566. FPCMADE=fpcmade.nw
  567. ZIPSUFFIX=nw
  568. EXEEXT=.nlm
  569. endif
  570. ifeq ($(OS_TARGET),macos)
  571. PPUEXT=.ppu
  572. ASMEXT=.s
  573. OEXT=.o
  574. SMARTEXT=.sl
  575. STATICLIBEXT=.a
  576. EXEEXT=
  577. FPCMADE=fpcmade.mcc
  578. endif
  579. ifndef ECHO
  580. ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
  581. ifeq ($(ECHO),)
  582. ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
  583. ifeq ($(ECHO),)
  584. ECHO=
  585. else
  586. ECHO:=$(firstword $(ECHO))
  587. endif
  588. else
  589. ECHO:=$(firstword $(ECHO))
  590. endif
  591. endif
  592. export ECHO
  593. ifndef DATE
  594. DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
  595. ifeq ($(DATE),)
  596. DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
  597. ifeq ($(DATE),)
  598. DATE=
  599. else
  600. DATE:=$(firstword $(DATE))
  601. endif
  602. else
  603. DATE:=$(firstword $(DATE))
  604. endif
  605. endif
  606. export DATE
  607. ifndef GINSTALL
  608. GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
  609. ifeq ($(GINSTALL),)
  610. GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
  611. ifeq ($(GINSTALL),)
  612. GINSTALL=
  613. else
  614. GINSTALL:=$(firstword $(GINSTALL))
  615. endif
  616. else
  617. GINSTALL:=$(firstword $(GINSTALL))
  618. endif
  619. endif
  620. export GINSTALL
  621. ifndef CPPROG
  622. CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
  623. ifeq ($(CPPROG),)
  624. CPPROG=
  625. else
  626. CPPROG:=$(firstword $(CPPROG))
  627. endif
  628. endif
  629. export CPPROG
  630. ifndef RMPROG
  631. RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
  632. ifeq ($(RMPROG),)
  633. RMPROG=
  634. else
  635. RMPROG:=$(firstword $(RMPROG))
  636. endif
  637. endif
  638. export RMPROG
  639. ifndef MVPROG
  640. MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
  641. ifeq ($(MVPROG),)
  642. MVPROG=
  643. else
  644. MVPROG:=$(firstword $(MVPROG))
  645. endif
  646. endif
  647. export MVPROG
  648. ifndef ECHOREDIR
  649. ECHOREDIR:=$(subst /,$(PATHSEP),$(ECHO))
  650. endif
  651. ifndef COPY
  652. COPY:=$(CPPROG) -fp
  653. endif
  654. ifndef COPYTREE
  655. COPYTREE:=$(CPPROG) -rfp
  656. endif
  657. ifndef MOVE
  658. MOVE:=$(MVPROG) -f
  659. endif
  660. ifndef DEL
  661. DEL:=$(RMPROG) -f
  662. endif
  663. ifndef DELTREE
  664. DELTREE:=$(RMPROG) -rf
  665. endif
  666. ifndef INSTALL
  667. ifdef inUnix
  668. INSTALL:=$(GINSTALL) -c -m 644
  669. else
  670. INSTALL:=$(COPY)
  671. endif
  672. endif
  673. ifndef INSTALLEXE
  674. ifdef inUnix
  675. INSTALLEXE:=$(GINSTALL) -c -m 755
  676. else
  677. INSTALLEXE:=$(COPY)
  678. endif
  679. endif
  680. ifndef MKDIR
  681. MKDIR:=$(GINSTALL) -m 755 -d
  682. endif
  683. export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
  684. ifndef PPUMOVE
  685. PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
  686. ifeq ($(PPUMOVE),)
  687. PPUMOVE=
  688. else
  689. PPUMOVE:=$(firstword $(PPUMOVE))
  690. endif
  691. endif
  692. export PPUMOVE
  693. ifndef FPCMAKE
  694. FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
  695. ifeq ($(FPCMAKE),)
  696. FPCMAKE=
  697. else
  698. FPCMAKE:=$(firstword $(FPCMAKE))
  699. endif
  700. endif
  701. export FPCMAKE
  702. ifndef ZIPPROG
  703. ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
  704. ifeq ($(ZIPPROG),)
  705. ZIPPROG=
  706. else
  707. ZIPPROG:=$(firstword $(ZIPPROG))
  708. endif
  709. endif
  710. export ZIPPROG
  711. ifndef TARPROG
  712. TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
  713. ifeq ($(TARPROG),)
  714. TARPROG=
  715. else
  716. TARPROG:=$(firstword $(TARPROG))
  717. endif
  718. endif
  719. export TARPROG
  720. ASNAME=as
  721. LDNAME=ld
  722. ARNAME=ar
  723. RCNAME=rc
  724. ifeq ($(OS_TARGET),win32)
  725. ASNAME=asw
  726. LDNAME=ldw
  727. ARNAME=arw
  728. endif
  729. ifndef ASPROG
  730. ifdef CROSSBINDIR
  731. ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
  732. else
  733. ASPROG=$(ASNAME)
  734. endif
  735. endif
  736. ifndef LDPROG
  737. ifdef CROSSBINDIR
  738. LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
  739. else
  740. LDPROG=$(LDNAME)
  741. endif
  742. endif
  743. ifndef RCPROG
  744. ifdef CROSSBINDIR
  745. RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
  746. else
  747. RCPROG=$(RCNAME)
  748. endif
  749. endif
  750. ifndef ARPROG
  751. ifdef CROSSBINDIR
  752. ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
  753. else
  754. ARPROG=$(ARNAME)
  755. endif
  756. endif
  757. AS=$(ASPROG)
  758. LD=$(LDPROG)
  759. RC=$(RCPROG)
  760. AR=$(ARPROG)
  761. PPAS=ppas$(BATCHEXT)
  762. ifdef inUnix
  763. LDCONFIG=ldconfig
  764. else
  765. LDCONFIG=
  766. endif
  767. ifdef DATE
  768. DATESTR:=$(shell $(DATE) +%Y%m%d)
  769. else
  770. DATESTR=
  771. endif
  772. ifndef UPXPROG
  773. ifeq ($(OS_TARGET),go32v2)
  774. UPXPROG:=1
  775. endif
  776. ifeq ($(OS_TARGET),win32)
  777. UPXPROG:=1
  778. endif
  779. ifdef UPXPROG
  780. UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
  781. ifeq ($(UPXPROG),)
  782. UPXPROG=
  783. else
  784. UPXPROG:=$(firstword $(UPXPROG))
  785. endif
  786. else
  787. UPXPROG=
  788. endif
  789. endif
  790. export UPXPROG
  791. ZIPOPT=-9
  792. ZIPEXT=.zip
  793. ifeq ($(USETAR),bz2)
  794. TAROPT=vI
  795. TAREXT=.tar.bz2
  796. else
  797. TAROPT=vz
  798. TAREXT=.tar.gz
  799. endif
  800. ifndef NOCPUDEF
  801. override FPCOPTDEF=$(CPU_TARGET)
  802. endif
  803. ifneq ($(OS_TARGET),$(OS_SOURCE))
  804. override FPCOPT+=-T$(OS_TARGET)
  805. endif
  806. ifeq ($(OS_SOURCE),openbsd)
  807. override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
  808. endif
  809. ifdef UNITDIR
  810. override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
  811. endif
  812. ifdef LIBDIR
  813. override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
  814. endif
  815. ifdef OBJDIR
  816. override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
  817. endif
  818. ifdef INCDIR
  819. override FPCOPT+=$(addprefix -Fi,$(INCDIR))
  820. endif
  821. ifdef LINKSMART
  822. override FPCOPT+=-XX
  823. endif
  824. ifdef CREATESMART
  825. override FPCOPT+=-CX
  826. endif
  827. ifdef DEBUG
  828. override FPCOPT+=-gl
  829. override FPCOPTDEF+=DEBUG
  830. endif
  831. ifdef RELEASE
  832. ifeq ($(CPU_TARGET),i386)
  833. FPCCPUOPT:=-OG2p3
  834. else
  835. FPCCPUOPT:=
  836. endif
  837. override FPCOPT+=-Xs $(FPCCPUOPT) -n
  838. override FPCOPTDEF+=RELEASE
  839. endif
  840. ifdef STRIP
  841. override FPCOPT+=-Xs
  842. endif
  843. ifdef OPTIMIZE
  844. ifeq ($(CPU_TARGET),i386)
  845. override FPCOPT+=-OG2p3
  846. endif
  847. endif
  848. ifdef VERBOSE
  849. override FPCOPT+=-vwni
  850. endif
  851. ifdef COMPILER_OPTIONS
  852. override FPCOPT+=$(COMPILER_OPTIONS)
  853. endif
  854. ifdef COMPILER_UNITDIR
  855. override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
  856. endif
  857. ifdef COMPILER_LIBRARYDIR
  858. override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
  859. endif
  860. ifdef COMPILER_OBJECTDIR
  861. override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
  862. endif
  863. ifdef COMPILER_INCLUDEDIR
  864. override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
  865. endif
  866. ifdef CROSSBINDIR
  867. override FPCOPT+=-FD$(CROSSBINDIR)
  868. endif
  869. ifdef COMPILER_TARGETDIR
  870. override FPCOPT+=-FE$(COMPILER_TARGETDIR)
  871. ifeq ($(COMPILER_TARGETDIR),.)
  872. override TARGETDIRPREFIX=
  873. else
  874. override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
  875. endif
  876. endif
  877. ifdef COMPILER_UNITTARGETDIR
  878. override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
  879. ifeq ($(COMPILER_UNITTARGETDIR),.)
  880. override UNITTARGETDIRPREFIX=
  881. else
  882. override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
  883. endif
  884. else
  885. ifdef COMPILER_TARGETDIR
  886. override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
  887. override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
  888. endif
  889. endif
  890. ifeq ($(OS_TARGET),linux)
  891. ifeq ($(FPC_VERSION),1.0.6)
  892. override FPCOPTDEF+=HASUNIX
  893. endif
  894. endif
  895. ifdef OPT
  896. override FPCOPT+=$(OPT)
  897. endif
  898. ifdef FPCOPTDEF
  899. override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
  900. endif
  901. ifdef CFGFILE
  902. override FPCOPT+=@$(CFGFILE)
  903. endif
  904. ifdef USEENV
  905. override FPCEXTCMD:=$(FPCOPT)
  906. override FPCOPT:=!FPCEXTCMD
  907. export FPCEXTCMD
  908. endif
  909. override COMPILER:=$(FPC) $(FPCOPT)
  910. ifeq (,$(findstring -s ,$(COMPILER)))
  911. EXECPPAS=
  912. else
  913. ifeq ($(OS_SOURCE),$(OS_TARGET))
  914. EXECPPAS:=@$(PPAS)
  915. endif
  916. endif
  917. .PHONY: fpc_loaders
  918. ifdef TARGET_LOADERS
  919. override ALLTARGET+=fpc_loaders
  920. override CLEANTARGET+=fpc_loaders_clean
  921. override INSTALLTARGET+=fpc_loaders_install
  922. override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))
  923. endif
  924. %$(OEXT): %$(LOADEREXT)
  925. $(AS) -o $*$(OEXT) $<
  926. fpc_loaders: $(LOADEROFILES)
  927. fpc_loaders_clean:
  928. -$(DEL) $(LOADEROFILES)
  929. fpc_loaders_install:
  930. $(MKDIR) $(INSTALL_UNITDIR)
  931. $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
  932. .PHONY: fpc_units
  933. ifdef TARGET_UNITS
  934. override ALLTARGET+=fpc_units
  935. override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
  936. override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
  937. override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
  938. override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
  939. endif
  940. fpc_units: $(UNITPPUFILES)
  941. ifdef TARGET_RSTS
  942. override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
  943. override CLEANRSTFILES+=$(RSTFILES)
  944. endif
  945. .PHONY: fpc_all fpc_smart fpc_debug fpc_release
  946. $(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
  947. @$(ECHOREDIR) Compiled > $(FPCMADE)
  948. fpc_all: $(FPCMADE)
  949. fpc_smart:
  950. $(MAKE) all LINKSMART=1 CREATESMART=1
  951. fpc_debug:
  952. $(MAKE) all DEBUG=1
  953. fpc_release:
  954. $(MAKE) all RELEASE=1
  955. .SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp .rc .res
  956. %$(PPUEXT): %.pp
  957. $(COMPILER) $<
  958. $(EXECPPAS)
  959. %$(PPUEXT): %.pas
  960. $(COMPILER) $<
  961. $(EXECPPAS)
  962. %$(EXEEXT): %.pp
  963. $(COMPILER) $<
  964. $(EXECPPAS)
  965. %$(EXEEXT): %.pas
  966. $(COMPILER) $<
  967. $(EXECPPAS)
  968. %.res: %.rc
  969. windres -i $< -o $@
  970. vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  971. vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  972. vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
  973. .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
  974. ifdef INSTALL_UNITS
  975. override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
  976. endif
  977. ifdef INSTALL_BUILDUNIT
  978. override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
  979. endif
  980. ifdef INSTALLPPUFILES
  981. override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
  982. override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
  983. override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES)))
  984. override INSTALL_CREATEPACKAGEFPC=1
  985. endif
  986. ifdef INSTALLEXEFILES
  987. override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES))
  988. endif
  989. fpc_install: all $(INSTALLTARGET)
  990. ifdef INSTALLEXEFILES
  991. $(MKDIR) $(INSTALL_BINDIR)
  992. ifdef UPXPROG
  993. -$(UPXPROG) $(INSTALLEXEFILES)
  994. endif
  995. $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
  996. endif
  997. ifdef INSTALL_CREATEPACKAGEFPC
  998. ifdef FPCMAKE
  999. ifdef PACKAGE_VERSION
  1000. ifneq ($(wildcard Makefile.fpc),)
  1001. $(FPCMAKE) -p -T$(OS_TARGET) Makefile.fpc
  1002. $(MKDIR) $(INSTALL_UNITDIR)
  1003. $(INSTALL) Package.fpc $(INSTALL_UNITDIR)
  1004. endif
  1005. endif
  1006. endif
  1007. endif
  1008. ifdef INSTALLPPUFILES
  1009. $(MKDIR) $(INSTALL_UNITDIR)
  1010. $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
  1011. ifneq ($(INSTALLPPULINKFILES),)
  1012. $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
  1013. endif
  1014. ifneq ($(wildcard $(LIB_FULLNAME)),)
  1015. $(MKDIR) $(INSTALL_LIBDIR)
  1016. $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
  1017. ifdef inUnix
  1018. ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
  1019. endif
  1020. endif
  1021. endif
  1022. ifdef INSTALL_FILES
  1023. $(MKDIR) $(INSTALL_DATADIR)
  1024. $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
  1025. endif
  1026. fpc_sourceinstall: distclean
  1027. $(MKDIR) $(INSTALL_SOURCEDIR)
  1028. $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
  1029. fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
  1030. ifdef HASEXAMPLES
  1031. $(MKDIR) $(INSTALL_EXAMPLEDIR)
  1032. endif
  1033. ifdef EXAMPLESOURCEFILES
  1034. $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
  1035. endif
  1036. ifdef TARGET_EXAMPLEDIRS
  1037. $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
  1038. endif
  1039. .PHONY: fpc_clean fpc_cleanall fpc_distclean
  1040. ifdef EXEFILES
  1041. override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
  1042. endif
  1043. ifdef CLEAN_UNITS
  1044. override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
  1045. endif
  1046. ifdef CLEANPPUFILES
  1047. override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
  1048. override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
  1049. override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
  1050. endif
  1051. fpc_clean: $(CLEANTARGET)
  1052. ifdef CLEANEXEFILES
  1053. -$(DEL) $(CLEANEXEFILES)
  1054. endif
  1055. ifdef CLEANPPUFILES
  1056. -$(DEL) $(CLEANPPUFILES)
  1057. endif
  1058. ifneq ($(CLEANPPULINKFILES),)
  1059. -$(DEL) $(CLEANPPULINKFILES)
  1060. endif
  1061. ifdef CLEANRSTFILES
  1062. -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
  1063. endif
  1064. ifdef CLEAN_FILES
  1065. -$(DEL) $(CLEAN_FILES)
  1066. endif
  1067. ifdef LIB_NAME
  1068. -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
  1069. endif
  1070. -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
  1071. fpc_distclean: clean
  1072. ifdef COMPILER_UNITTARGETDIR
  1073. TARGETDIRCLEAN=fpc_clean
  1074. endif
  1075. fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)
  1076. ifdef CLEANEXEFILES
  1077. -$(DEL) $(CLEANEXEFILES)
  1078. endif
  1079. -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
  1080. -$(DELTREE) *$(SMARTEXT)
  1081. -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
  1082. ifdef AOUTEXT
  1083. -$(DEL) *$(AOUTEXT)
  1084. endif
  1085. .PHONY: fpc_baseinfo
  1086. override INFORULES+=fpc_baseinfo
  1087. fpc_baseinfo:
  1088. @$(ECHO)
  1089. @$(ECHO) == Package info ==
  1090. @$(ECHO) Package Name..... $(PACKAGE_NAME)
  1091. @$(ECHO) Package Version.. $(PACKAGE_VERSION)
  1092. @$(ECHO)
  1093. @$(ECHO) == Configuration info ==
  1094. @$(ECHO)
  1095. @$(ECHO) FPC.......... $(FPC)
  1096. @$(ECHO) FPC Version.. $(FPC_VERSION)
  1097. @$(ECHO) Source CPU... $(CPU_SOURCE)
  1098. @$(ECHO) Target CPU... $(CPU_TARGET)
  1099. @$(ECHO) Source OS.... $(OS_SOURCE)
  1100. @$(ECHO) Target OS.... $(OS_TARGET)
  1101. @$(ECHO) Full Source.. $(FULL_SOURCE)
  1102. @$(ECHO) Full Target.. $(FULL_TARGET)
  1103. @$(ECHO)
  1104. @$(ECHO) == Directory info ==
  1105. @$(ECHO)
  1106. @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)
  1107. @$(ECHO)
  1108. @$(ECHO) Basedir......... $(BASEDIR)
  1109. @$(ECHO) FPCDir.......... $(FPCDIR)
  1110. @$(ECHO) CrossBinDir..... $(CROSSBINDIR)
  1111. @$(ECHO) UnitsDir........ $(UNITSDIR)
  1112. @$(ECHO) PackagesDir..... $(PACKAGESDIR)
  1113. @$(ECHO)
  1114. @$(ECHO) GCC library..... $(GCCLIBDIR)
  1115. @$(ECHO) Other library... $(OTHERLIBDIR)
  1116. @$(ECHO)
  1117. @$(ECHO) == Tools info ==
  1118. @$(ECHO)
  1119. @$(ECHO) As........ $(AS)
  1120. @$(ECHO) Ld........ $(LD)
  1121. @$(ECHO) Ar........ $(AR)
  1122. @$(ECHO) Rc........ $(RC)
  1123. @$(ECHO)
  1124. @$(ECHO) Mv........ $(MVPROG)
  1125. @$(ECHO) Cp........ $(CPPROG)
  1126. @$(ECHO) Rm........ $(RMPROG)
  1127. @$(ECHO) GInstall.. $(GINSTALL)
  1128. @$(ECHO) Echo...... $(ECHO)
  1129. @$(ECHO) Shell..... $(SHELL)
  1130. @$(ECHO) Date...... $(DATE)
  1131. @$(ECHO) FPCMake... $(FPCMAKE)
  1132. @$(ECHO) PPUMove... $(PPUMOVE)
  1133. @$(ECHO) Upx....... $(UPXPROG)
  1134. @$(ECHO) Zip....... $(ZIPPROG)
  1135. @$(ECHO)
  1136. @$(ECHO) == Object info ==
  1137. @$(ECHO)
  1138. @$(ECHO) Target Loaders........ $(TARGET_LOADERS)
  1139. @$(ECHO) Target Units.......... $(TARGET_UNITS)
  1140. @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)
  1141. @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)
  1142. @$(ECHO) Target Dirs........... $(TARGET_DIRS)
  1143. @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)
  1144. @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
  1145. @$(ECHO)
  1146. @$(ECHO) Clean Units......... $(CLEAN_UNITS)
  1147. @$(ECHO) Clean Files......... $(CLEAN_FILES)
  1148. @$(ECHO)
  1149. @$(ECHO) Install Units....... $(INSTALL_UNITS)
  1150. @$(ECHO) Install Files....... $(INSTALL_FILES)
  1151. @$(ECHO)
  1152. @$(ECHO) == Install info ==
  1153. @$(ECHO)
  1154. @$(ECHO) DateStr.............. $(DATESTR)
  1155. @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
  1156. @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
  1157. @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
  1158. @$(ECHO)
  1159. @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
  1160. @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
  1161. @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
  1162. @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
  1163. @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
  1164. @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
  1165. @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
  1166. @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
  1167. @$(ECHO)
  1168. @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
  1169. @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
  1170. @$(ECHO)
  1171. .PHONY: fpc_info
  1172. fpc_info: $(INFORULES)
  1173. .PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
  1174. fpc_makefile_dirs
  1175. fpc_makefile:
  1176. $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
  1177. fpc_makefile_sub1:
  1178. ifdef TARGET_DIRS
  1179. $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
  1180. endif
  1181. ifdef TARGET_EXAMPLEDIRS
  1182. $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
  1183. endif
  1184. fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
  1185. fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
  1186. fpc_makefiles: fpc_makefile fpc_makefile_dirs
  1187. all: fpc_all
  1188. debug: fpc_debug
  1189. smart: fpc_smart
  1190. release: fpc_release
  1191. examples:
  1192. shared:
  1193. install: fpc_install
  1194. sourceinstall: fpc_sourceinstall
  1195. exampleinstall: fpc_exampleinstall
  1196. distinstall:
  1197. zipinstall:
  1198. zipsourceinstall:
  1199. zipexampleinstall:
  1200. zipdistinstall:
  1201. clean: fpc_clean
  1202. distclean: fpc_distclean
  1203. cleanall: fpc_cleanall
  1204. info: fpc_info
  1205. makefiles: fpc_makefiles
  1206. .PHONY: all debug smart release examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
  1207. ifneq ($(wildcard fpcmake.loc),)
  1208. include fpcmake.loc
  1209. endif
  1210. include $(INC)/makefile.inc
  1211. SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
  1212. include $(PROCINC)/makefile.cpu
  1213. SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
  1214. SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
  1215. prt0$(OEXT) : $(CPU_TARGET)/$(PRT0).as
  1216. $(AS) -o prt0$(OEXT) $(CPU_TARGET)/$(PRT0).as
  1217. cprt0$(OEXT) : $(CPU_TARGET)/cprt0.as
  1218. $(AS) -o cprt0$(OEXT) $(CPU_TARGET)/cprt0.as
  1219. $(SYSTEMUNIT)$(PPUEXT) : $(BSDINC)/$(SYSTEMUNIT).pp sysconst.inc systypes.inc syscalls.inc $(SYSDEPS)
  1220. $(COMPILER) -Us -Sg $(BSDINC)/$(SYSTEMUNIT).pp
  1221. objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
  1222. $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
  1223. strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
  1224. $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
  1225. $(SYSTEMUNIT)$(PPUEXT)
  1226. baseunix$(PPUEXT) : $(UNIXINC)/errno.inc $(BSDINC)/bunxtype.inc ptypes.inc $(BSDINC)/ctypes.inc \
  1227. signal.inc $(UNIXINC)/bunxh.inc $(BSDINC)/bunxmain.inc $(BSDINC)/ostypes.inc \
  1228. $(BSDINC)/bunxfunc.inc $(BSDPROCINC)/syscallh.inc sysnr.inc \
  1229. $(BSDINC)/ostypes.inc $(BSDINC)/ossysch.inc $(BSDINC)/bunxmacr.inc $(UNIXINC)/gensigset.inc \
  1230. $(UNIXINC)/genfuncs.inc $(SYSTEMUNIT)$(PPUEXT)
  1231. unix$(PPUEXT) : $(UNIXINC)/unix.pp strings$(PPUEXT) $(INC)/textrec.inc $(INC)/filerec.inc \
  1232. syscalls.inc systypes.inc sysconst.inc $(UNIXINC)/timezone.inc \
  1233. unixsysc.inc baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1234. linux$(PPUEXT) : baseunix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1235. dos$(PPUEXT) : $(UNIXINC)/dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
  1236. unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1237. crt$(PPUEXT) : $(UNIXINC)/crt.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1238. objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
  1239. printer$(PPUEXT) : $(UNIXINC)/printer.pp $(INC)/textrec.inc unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1240. sysutils$(PPUEXT) : $(UNIXINC)/sysutils.pp $(wildcard $(OBJPASDIR)/*.inc) \
  1241. objpas$(PPUEXT) unix$(PPUEXT) errors$(PPUEXT)
  1242. $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/sysutils.pp
  1243. typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
  1244. $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
  1245. math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
  1246. $(COMPILER) $(OBJPASDIR)/math.pp
  1247. gettext$(PPUEXT): $(OBJPASDIR)/gettext.pp objpas$(PPUEXT) sysutils$(PPUEXT)
  1248. $(COMPILER) $(OBJPASDIR)/gettext.pp
  1249. varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
  1250. $(OBJPASDIR)/varutilh.inc varutils.pp
  1251. $(COMPILER) -I$(OBJPASDIR) $(UNIXINC)/varutils.pp
  1252. types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1253. $(COMPILER) $(OBJPASDIR)/types.pp
  1254. cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
  1255. mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1256. getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
  1257. heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
  1258. $(COMPILER) -Sg $(INC)/heaptrc.pp
  1259. lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT)
  1260. charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
  1261. ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1262. sockets$(PPUEXT) : $(UNIXINC)/sockets.pp $(INC)/textrec.inc $(INC)/filerec.inc \
  1263. unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1264. errors$(PPUEXT) : $(UNIXINC)/errors.pp strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1265. ipc$(PPUEXT) : $(UNIXINC)/ipc.pp unix$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1266. terminfo$(PPUEXT) : terminfo.pp unix$(PPUEXT)
  1267. callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
  1268. sysctl$(PPUEXT) : $(BSDINC)/sysctl.pp $(SYSTEMUNIT)$(PPUEXT)