Makefile 31 KB

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