Makefile 32 KB

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