Makefile 30 KB

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