Makefile 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254
  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=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) -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=../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 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
  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 ($(OS_TARGET),go32v1)
  437. PPUEXT=.pp1
  438. OEXT=.o1
  439. ASMEXT=.s1
  440. SMARTEXT=.sl1
  441. STATICLIBEXT=.a1
  442. SHAREDLIBEXT=.so1
  443. STATICLIBPREFIX=
  444. FPCMADE=fpcmade.v1
  445. PACKAGESUFFIX=v1
  446. endif
  447. ifeq ($(OS_TARGET),go32v2)
  448. STATICLIBPREFIX=
  449. FPCMADE=fpcmade.dos
  450. ZIPSUFFIX=go32
  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. PPUEXT=.ppw
  478. OEXT=.ow
  479. ASMEXT=.sw
  480. SMARTEXT=.slw
  481. STATICLIBEXT=.aw
  482. SHAREDLIBEXT=.dll
  483. FPCMADE=fpcmade.w32
  484. ZIPSUFFIX=w32
  485. endif
  486. ifeq ($(OS_TARGET),os2)
  487. PPUEXT=.ppo
  488. ASMEXT=.so2
  489. OEXT=.oo2
  490. AOUTEXT=.out
  491. SMARTEXT=.sl2
  492. STATICLIBPREFIX=
  493. STATICLIBEXT=.ao2
  494. SHAREDLIBEXT=.dll
  495. FPCMADE=fpcmade.os2
  496. ZIPSUFFIX=emx
  497. ECHO=echo
  498. endif
  499. ifeq ($(OS_TARGET),amiga)
  500. EXEEXT=
  501. PPUEXT=.ppu
  502. ASMEXT=.asm
  503. OEXT=.o
  504. SMARTEXT=.sl
  505. STATICLIBEXT=.a
  506. SHAREDLIBEXT=.library
  507. FPCMADE=fpcmade.amg
  508. endif
  509. ifeq ($(OS_TARGET),atari)
  510. PPUEXT=.ppu
  511. ASMEXT=.s
  512. OEXT=.o
  513. SMARTEXT=.sl
  514. STATICLIBEXT=.a
  515. EXEEXT=.ttp
  516. FPCMADE=fpcmade.ata
  517. endif
  518. ifeq ($(OS_TARGET),beos)
  519. PPUEXT=.ppu
  520. ASMEXT=.s
  521. OEXT=.o
  522. SMARTEXT=.sl
  523. STATICLIBEXT=.a
  524. EXEEXT=
  525. FPCMADE=fpcmade.be
  526. ZIPSUFFIX=be
  527. endif
  528. ifeq ($(OS_TARGET),sunos)
  529. PPUEXT=.ppu
  530. ASMEXT=.s
  531. OEXT=.o
  532. SMARTEXT=.sl
  533. STATICLIBEXT=.a
  534. EXEEXT=
  535. FPCMADE=fpcmade.sun
  536. ZIPSUFFIX=sun
  537. endif
  538. ifeq ($(OS_TARGET),qnx)
  539. PPUEXT=.ppu
  540. ASMEXT=.s
  541. OEXT=.o
  542. SMARTEXT=.sl
  543. STATICLIBEXT=.a
  544. EXEEXT=
  545. FPCMADE=fpcmade.qnx
  546. ZIPSUFFIX=qnx
  547. endif
  548. ifeq ($(OS_TARGET),netware)
  549. STATICLIBPREFIX=
  550. PPUEXT=.ppn
  551. OEXT=.on
  552. ASMEXT=.s
  553. SMARTEXT=.sl
  554. STATICLIBEXT=.a
  555. SHAREDLIBEXT=.nlm
  556. FPCMADE=fpcmade.nw
  557. ZIPSUFFIX=nw
  558. EXEEXT=.nlm
  559. endif
  560. ifeq ($(OS_TARGET),macos)
  561. PPUEXT=.ppu
  562. ASMEXT=.s
  563. OEXT=.o
  564. SMARTEXT=.sl
  565. STATICLIBEXT=.a
  566. EXEEXT=
  567. FPCMADE=fpcmade.mcc
  568. endif
  569. ifndef ECHO
  570. ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
  571. ifeq ($(ECHO),)
  572. ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
  573. ifeq ($(ECHO),)
  574. ECHO=
  575. else
  576. ECHO:=$(firstword $(ECHO))
  577. endif
  578. else
  579. ECHO:=$(firstword $(ECHO))
  580. endif
  581. endif
  582. export ECHO
  583. ifndef DATE
  584. DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
  585. ifeq ($(DATE),)
  586. DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
  587. ifeq ($(DATE),)
  588. DATE=
  589. else
  590. DATE:=$(firstword $(DATE))
  591. endif
  592. else
  593. DATE:=$(firstword $(DATE))
  594. endif
  595. endif
  596. export DATE
  597. ifndef GINSTALL
  598. GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
  599. ifeq ($(GINSTALL),)
  600. GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
  601. ifeq ($(GINSTALL),)
  602. GINSTALL=
  603. else
  604. GINSTALL:=$(firstword $(GINSTALL))
  605. endif
  606. else
  607. GINSTALL:=$(firstword $(GINSTALL))
  608. endif
  609. endif
  610. export GINSTALL
  611. ifndef CPPROG
  612. CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
  613. ifeq ($(CPPROG),)
  614. CPPROG=
  615. else
  616. CPPROG:=$(firstword $(CPPROG))
  617. endif
  618. endif
  619. export CPPROG
  620. ifndef RMPROG
  621. RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
  622. ifeq ($(RMPROG),)
  623. RMPROG=
  624. else
  625. RMPROG:=$(firstword $(RMPROG))
  626. endif
  627. endif
  628. export RMPROG
  629. ifndef MVPROG
  630. MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
  631. ifeq ($(MVPROG),)
  632. MVPROG=
  633. else
  634. MVPROG:=$(firstword $(MVPROG))
  635. endif
  636. endif
  637. export MVPROG
  638. ifndef ECHOREDIR
  639. ECHOREDIR:=$(subst /,$(PATHSEP),$(ECHO))
  640. endif
  641. ifndef COPY
  642. COPY:=$(CPPROG) -fp
  643. endif
  644. ifndef COPYTREE
  645. COPYTREE:=$(CPPROG) -rfp
  646. endif
  647. ifndef MOVE
  648. MOVE:=$(MVPROG) -f
  649. endif
  650. ifndef DEL
  651. DEL:=$(RMPROG) -f
  652. endif
  653. ifndef DELTREE
  654. DELTREE:=$(RMPROG) -rf
  655. endif
  656. ifndef INSTALL
  657. ifdef inUnix
  658. INSTALL:=$(GINSTALL) -c -m 644
  659. else
  660. INSTALL:=$(COPY)
  661. endif
  662. endif
  663. ifndef INSTALLEXE
  664. ifdef inUnix
  665. INSTALLEXE:=$(GINSTALL) -c -m 755
  666. else
  667. INSTALLEXE:=$(COPY)
  668. endif
  669. endif
  670. ifndef MKDIR
  671. MKDIR:=$(GINSTALL) -m 755 -d
  672. endif
  673. export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
  674. ifndef PPUMOVE
  675. PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
  676. ifeq ($(PPUMOVE),)
  677. PPUMOVE=
  678. else
  679. PPUMOVE:=$(firstword $(PPUMOVE))
  680. endif
  681. endif
  682. export PPUMOVE
  683. ifndef FPCMAKE
  684. FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
  685. ifeq ($(FPCMAKE),)
  686. FPCMAKE=
  687. else
  688. FPCMAKE:=$(firstword $(FPCMAKE))
  689. endif
  690. endif
  691. export FPCMAKE
  692. ifndef ZIPPROG
  693. ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
  694. ifeq ($(ZIPPROG),)
  695. ZIPPROG=
  696. else
  697. ZIPPROG:=$(firstword $(ZIPPROG))
  698. endif
  699. endif
  700. export ZIPPROG
  701. ifndef TARPROG
  702. TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
  703. ifeq ($(TARPROG),)
  704. TARPROG=
  705. else
  706. TARPROG:=$(firstword $(TARPROG))
  707. endif
  708. endif
  709. export TARPROG
  710. ASNAME=as
  711. LDNAME=ld
  712. ARNAME=ar
  713. RCNAME=rc
  714. ifeq ($(OS_TARGET),win32)
  715. ASNAME=asw
  716. LDNAME=ldw
  717. ARNAME=arw
  718. endif
  719. ifndef ASPROG
  720. ifdef CROSSBINDIR
  721. ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
  722. else
  723. ASPROG=$(ASNAME)
  724. endif
  725. endif
  726. ifndef LDPROG
  727. ifdef CROSSBINDIR
  728. LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
  729. else
  730. LDPROG=$(LDNAME)
  731. endif
  732. endif
  733. ifndef RCPROG
  734. ifdef CROSSBINDIR
  735. RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
  736. else
  737. RCPROG=$(RCNAME)
  738. endif
  739. endif
  740. ifndef ARPROG
  741. ifdef CROSSBINDIR
  742. ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
  743. else
  744. ARPROG=$(ARNAME)
  745. endif
  746. endif
  747. AS=$(ASPROG)
  748. LD=$(LDPROG)
  749. RC=$(RCPROG)
  750. AR=$(ARPROG)
  751. PPAS=ppas$(BATCHEXT)
  752. ifdef inUnix
  753. LDCONFIG=ldconfig
  754. else
  755. LDCONFIG=
  756. endif
  757. ifdef DATE
  758. DATESTR:=$(shell $(DATE) +%Y%m%d)
  759. else
  760. DATESTR=
  761. endif
  762. ifndef UPXPROG
  763. ifeq ($(OS_TARGET),go32v2)
  764. UPXPROG:=1
  765. endif
  766. ifeq ($(OS_TARGET),win32)
  767. UPXPROG:=1
  768. endif
  769. ifdef UPXPROG
  770. UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
  771. ifeq ($(UPXPROG),)
  772. UPXPROG=
  773. else
  774. UPXPROG:=$(firstword $(UPXPROG))
  775. endif
  776. else
  777. UPXPROG=
  778. endif
  779. endif
  780. export UPXPROG
  781. ZIPOPT=-9
  782. ZIPEXT=.zip
  783. ifeq ($(USETAR),bz2)
  784. TAROPT=vI
  785. TAREXT=.tar.bz2
  786. else
  787. TAROPT=vz
  788. TAREXT=.tar.gz
  789. endif
  790. ifndef NOCPUDEF
  791. override FPCOPTDEF=$(CPU_TARGET)
  792. endif
  793. ifneq ($(OS_TARGET),$(OS_SOURCE))
  794. override FPCOPT+=-T$(OS_TARGET)
  795. endif
  796. ifeq ($(OS_SOURCE),openbsd)
  797. override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
  798. endif
  799. ifdef UNITDIR
  800. override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
  801. endif
  802. ifdef LIBDIR
  803. override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
  804. endif
  805. ifdef OBJDIR
  806. override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
  807. endif
  808. ifdef INCDIR
  809. override FPCOPT+=$(addprefix -Fi,$(INCDIR))
  810. endif
  811. ifdef LINKSMART
  812. override FPCOPT+=-XX
  813. endif
  814. ifdef CREATESMART
  815. override FPCOPT+=-CX
  816. endif
  817. ifdef DEBUG
  818. override FPCOPT+=-gl
  819. override FPCOPTDEF+=DEBUG
  820. endif
  821. ifdef RELEASE
  822. ifeq ($(CPU_TARGET),i386)
  823. FPCCPUOPT:=-OG2p3
  824. else
  825. FPCCPUOPT:=
  826. endif
  827. override FPCOPT+=-Xs $(FPCCPUOPT) -n
  828. override FPCOPTDEF+=RELEASE
  829. endif
  830. ifdef STRIP
  831. override FPCOPT+=-Xs
  832. endif
  833. ifdef OPTIMIZE
  834. ifeq ($(CPU_TARGET),i386)
  835. override FPCOPT+=-OG2p3
  836. endif
  837. endif
  838. ifdef VERBOSE
  839. override FPCOPT+=-vwni
  840. endif
  841. ifdef COMPILER_OPTIONS
  842. override FPCOPT+=$(COMPILER_OPTIONS)
  843. endif
  844. ifdef COMPILER_UNITDIR
  845. override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
  846. endif
  847. ifdef COMPILER_LIBRARYDIR
  848. override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
  849. endif
  850. ifdef COMPILER_OBJECTDIR
  851. override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
  852. endif
  853. ifdef COMPILER_INCLUDEDIR
  854. override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
  855. endif
  856. ifdef CROSSBINDIR
  857. override FPCOPT+=-FD$(CROSSBINDIR)
  858. endif
  859. ifdef COMPILER_TARGETDIR
  860. override FPCOPT+=-FE$(COMPILER_TARGETDIR)
  861. ifeq ($(COMPILER_TARGETDIR),.)
  862. override TARGETDIRPREFIX=
  863. else
  864. override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
  865. endif
  866. endif
  867. ifdef COMPILER_UNITTARGETDIR
  868. override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
  869. ifeq ($(COMPILER_UNITTARGETDIR),.)
  870. override UNITTARGETDIRPREFIX=
  871. else
  872. override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
  873. endif
  874. else
  875. ifdef COMPILER_TARGETDIR
  876. override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
  877. override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
  878. endif
  879. endif
  880. ifeq ($(OS_TARGET),linux)
  881. ifeq ($(FPC_VERSION),1.0.6)
  882. override FPCOPTDEF+=HASUNIX
  883. endif
  884. endif
  885. ifdef OPT
  886. override FPCOPT+=$(OPT)
  887. endif
  888. ifdef FPCOPTDEF
  889. override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
  890. endif
  891. ifdef CFGFILE
  892. override FPCOPT+=@$(CFGFILE)
  893. endif
  894. ifdef USEENV
  895. override FPCEXTCMD:=$(FPCOPT)
  896. override FPCOPT:=!FPCEXTCMD
  897. export FPCEXTCMD
  898. endif
  899. override COMPILER:=$(FPC) $(FPCOPT)
  900. ifeq (,$(findstring -s ,$(COMPILER)))
  901. EXECPPAS=
  902. else
  903. ifeq ($(OS_SOURCE),$(OS_TARGET))
  904. EXECPPAS:=@$(PPAS)
  905. endif
  906. endif
  907. .PHONY: fpc_loaders
  908. ifdef TARGET_LOADERS
  909. override ALLTARGET+=fpc_loaders
  910. override CLEANTARGET+=fpc_loaders_clean
  911. override INSTALLTARGET+=fpc_loaders_install
  912. override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))
  913. endif
  914. %$(OEXT): %$(LOADEREXT)
  915. $(AS) -o $*$(OEXT) $<
  916. fpc_loaders: $(LOADEROFILES)
  917. fpc_loaders_clean:
  918. -$(DEL) $(LOADEROFILES)
  919. fpc_loaders_install:
  920. $(MKDIR) $(INSTALL_UNITDIR)
  921. $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
  922. .PHONY: fpc_units
  923. ifdef TARGET_UNITS
  924. override ALLTARGET+=fpc_units
  925. override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
  926. override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
  927. override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
  928. override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
  929. endif
  930. fpc_units: $(UNITPPUFILES)
  931. ifdef TARGET_RSTS
  932. override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
  933. override CLEANRSTFILES+=$(RSTFILES)
  934. endif
  935. .PHONY: fpc_all fpc_smart fpc_debug fpc_release
  936. $(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
  937. @$(ECHOREDIR) Compiled > $(FPCMADE)
  938. fpc_all: $(FPCMADE)
  939. fpc_smart:
  940. $(MAKE) all LINKSMART=1 CREATESMART=1
  941. fpc_debug:
  942. $(MAKE) all DEBUG=1
  943. fpc_release:
  944. $(MAKE) all RELEASE=1
  945. .SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp .rc .res
  946. %$(PPUEXT): %.pp
  947. $(COMPILER) $<
  948. $(EXECPPAS)
  949. %$(PPUEXT): %.pas
  950. $(COMPILER) $<
  951. $(EXECPPAS)
  952. %$(EXEEXT): %.pp
  953. $(COMPILER) $<
  954. $(EXECPPAS)
  955. %$(EXEEXT): %.pas
  956. $(COMPILER) $<
  957. $(EXECPPAS)
  958. %.res: %.rc
  959. windres -i $< -o $@
  960. vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  961. vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  962. vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
  963. .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
  964. ifdef INSTALL_UNITS
  965. override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
  966. endif
  967. ifdef INSTALL_BUILDUNIT
  968. override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
  969. endif
  970. ifdef INSTALLPPUFILES
  971. override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
  972. override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
  973. override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES)))
  974. override INSTALL_CREATEPACKAGEFPC=1
  975. endif
  976. ifdef INSTALLEXEFILES
  977. override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES))
  978. endif
  979. fpc_install: all $(INSTALLTARGET)
  980. ifdef INSTALLEXEFILES
  981. $(MKDIR) $(INSTALL_BINDIR)
  982. ifdef UPXPROG
  983. -$(UPXPROG) $(INSTALLEXEFILES)
  984. endif
  985. $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
  986. endif
  987. ifdef INSTALL_CREATEPACKAGEFPC
  988. ifdef FPCMAKE
  989. ifdef PACKAGE_VERSION
  990. ifneq ($(wildcard Makefile.fpc),)
  991. $(FPCMAKE) -p -T$(OS_TARGET) Makefile.fpc
  992. $(MKDIR) $(INSTALL_UNITDIR)
  993. $(INSTALL) Package.fpc $(INSTALL_UNITDIR)
  994. endif
  995. endif
  996. endif
  997. endif
  998. ifdef INSTALLPPUFILES
  999. $(MKDIR) $(INSTALL_UNITDIR)
  1000. $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
  1001. ifneq ($(INSTALLPPULINKFILES),)
  1002. $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
  1003. endif
  1004. ifneq ($(wildcard $(LIB_FULLNAME)),)
  1005. $(MKDIR) $(INSTALL_LIBDIR)
  1006. $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
  1007. ifdef inUnix
  1008. ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
  1009. endif
  1010. endif
  1011. endif
  1012. ifdef INSTALL_FILES
  1013. $(MKDIR) $(INSTALL_DATADIR)
  1014. $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
  1015. endif
  1016. fpc_sourceinstall: distclean
  1017. $(MKDIR) $(INSTALL_SOURCEDIR)
  1018. $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
  1019. fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
  1020. ifdef HASEXAMPLES
  1021. $(MKDIR) $(INSTALL_EXAMPLEDIR)
  1022. endif
  1023. ifdef EXAMPLESOURCEFILES
  1024. $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
  1025. endif
  1026. ifdef TARGET_EXAMPLEDIRS
  1027. $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
  1028. endif
  1029. .PHONY: fpc_clean fpc_cleanall fpc_distclean
  1030. ifdef EXEFILES
  1031. override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
  1032. endif
  1033. ifdef CLEAN_UNITS
  1034. override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
  1035. endif
  1036. ifdef CLEANPPUFILES
  1037. override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
  1038. override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
  1039. override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
  1040. endif
  1041. fpc_clean: $(CLEANTARGET)
  1042. ifdef CLEANEXEFILES
  1043. -$(DEL) $(CLEANEXEFILES)
  1044. endif
  1045. ifdef CLEANPPUFILES
  1046. -$(DEL) $(CLEANPPUFILES)
  1047. endif
  1048. ifneq ($(CLEANPPULINKFILES),)
  1049. -$(DEL) $(CLEANPPULINKFILES)
  1050. endif
  1051. ifdef CLEANRSTFILES
  1052. -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
  1053. endif
  1054. ifdef CLEAN_FILES
  1055. -$(DEL) $(CLEAN_FILES)
  1056. endif
  1057. ifdef LIB_NAME
  1058. -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
  1059. endif
  1060. -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
  1061. fpc_distclean: clean
  1062. ifdef COMPILER_UNITTARGETDIR
  1063. TARGETDIRCLEAN=fpc_clean
  1064. endif
  1065. fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)
  1066. ifdef CLEANEXEFILES
  1067. -$(DEL) $(CLEANEXEFILES)
  1068. endif
  1069. -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
  1070. -$(DELTREE) *$(SMARTEXT)
  1071. -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
  1072. ifdef AOUTEXT
  1073. -$(DEL) *$(AOUTEXT)
  1074. endif
  1075. .PHONY: fpc_baseinfo
  1076. override INFORULES+=fpc_baseinfo
  1077. fpc_baseinfo:
  1078. @$(ECHO)
  1079. @$(ECHO) == Package info ==
  1080. @$(ECHO) Package Name..... $(PACKAGE_NAME)
  1081. @$(ECHO) Package Version.. $(PACKAGE_VERSION)
  1082. @$(ECHO)
  1083. @$(ECHO) == Configuration info ==
  1084. @$(ECHO)
  1085. @$(ECHO) FPC.......... $(FPC)
  1086. @$(ECHO) FPC Version.. $(FPC_VERSION)
  1087. @$(ECHO) Source CPU... $(CPU_SOURCE)
  1088. @$(ECHO) Target CPU... $(CPU_TARGET)
  1089. @$(ECHO) Source OS.... $(OS_SOURCE)
  1090. @$(ECHO) Target OS.... $(OS_TARGET)
  1091. @$(ECHO) Full Source.. $(FULL_SOURCE)
  1092. @$(ECHO) Full Target.. $(FULL_TARGET)
  1093. @$(ECHO)
  1094. @$(ECHO) == Directory info ==
  1095. @$(ECHO)
  1096. @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)
  1097. @$(ECHO)
  1098. @$(ECHO) Basedir......... $(BASEDIR)
  1099. @$(ECHO) FPCDir.......... $(FPCDIR)
  1100. @$(ECHO) CrossBinDir..... $(CROSSBINDIR)
  1101. @$(ECHO) UnitsDir........ $(UNITSDIR)
  1102. @$(ECHO) PackagesDir..... $(PACKAGESDIR)
  1103. @$(ECHO)
  1104. @$(ECHO) GCC library..... $(GCCLIBDIR)
  1105. @$(ECHO) Other library... $(OTHERLIBDIR)
  1106. @$(ECHO)
  1107. @$(ECHO) == Tools info ==
  1108. @$(ECHO)
  1109. @$(ECHO) As........ $(AS)
  1110. @$(ECHO) Ld........ $(LD)
  1111. @$(ECHO) Ar........ $(AR)
  1112. @$(ECHO) Rc........ $(RC)
  1113. @$(ECHO)
  1114. @$(ECHO) Mv........ $(MVPROG)
  1115. @$(ECHO) Cp........ $(CPPROG)
  1116. @$(ECHO) Rm........ $(RMPROG)
  1117. @$(ECHO) GInstall.. $(GINSTALL)
  1118. @$(ECHO) Echo...... $(ECHO)
  1119. @$(ECHO) Shell..... $(SHELL)
  1120. @$(ECHO) Date...... $(DATE)
  1121. @$(ECHO) FPCMake... $(FPCMAKE)
  1122. @$(ECHO) PPUMove... $(PPUMOVE)
  1123. @$(ECHO) Upx....... $(UPXPROG)
  1124. @$(ECHO) Zip....... $(ZIPPROG)
  1125. @$(ECHO)
  1126. @$(ECHO) == Object info ==
  1127. @$(ECHO)
  1128. @$(ECHO) Target Loaders........ $(TARGET_LOADERS)
  1129. @$(ECHO) Target Units.......... $(TARGET_UNITS)
  1130. @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)
  1131. @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)
  1132. @$(ECHO) Target Dirs........... $(TARGET_DIRS)
  1133. @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)
  1134. @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
  1135. @$(ECHO)
  1136. @$(ECHO) Clean Units......... $(CLEAN_UNITS)
  1137. @$(ECHO) Clean Files......... $(CLEAN_FILES)
  1138. @$(ECHO)
  1139. @$(ECHO) Install Units....... $(INSTALL_UNITS)
  1140. @$(ECHO) Install Files....... $(INSTALL_FILES)
  1141. @$(ECHO)
  1142. @$(ECHO) == Install info ==
  1143. @$(ECHO)
  1144. @$(ECHO) DateStr.............. $(DATESTR)
  1145. @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
  1146. @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
  1147. @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
  1148. @$(ECHO)
  1149. @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
  1150. @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
  1151. @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
  1152. @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
  1153. @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
  1154. @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
  1155. @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
  1156. @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
  1157. @$(ECHO)
  1158. @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
  1159. @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
  1160. @$(ECHO)
  1161. .PHONY: fpc_info
  1162. fpc_info: $(INFORULES)
  1163. .PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
  1164. fpc_makefile_dirs
  1165. fpc_makefile:
  1166. $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
  1167. fpc_makefile_sub1:
  1168. ifdef TARGET_DIRS
  1169. $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
  1170. endif
  1171. ifdef TARGET_EXAMPLEDIRS
  1172. $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
  1173. endif
  1174. fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
  1175. fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
  1176. fpc_makefiles: fpc_makefile fpc_makefile_dirs
  1177. all: fpc_all
  1178. debug: fpc_debug
  1179. smart: fpc_smart
  1180. release: fpc_release
  1181. examples:
  1182. shared:
  1183. install: fpc_install
  1184. sourceinstall: fpc_sourceinstall
  1185. exampleinstall: fpc_exampleinstall
  1186. distinstall:
  1187. zipinstall:
  1188. zipsourceinstall:
  1189. zipexampleinstall:
  1190. zipdistinstall:
  1191. clean: fpc_clean
  1192. distclean: fpc_distclean
  1193. cleanall: fpc_cleanall
  1194. info: fpc_info
  1195. makefiles: fpc_makefiles
  1196. .PHONY: all debug smart release examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
  1197. ifneq ($(wildcard fpcmake.loc),)
  1198. include fpcmake.loc
  1199. endif
  1200. include $(INC)/makefile.inc
  1201. SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
  1202. include $(PROCINC)/makefile.cpu
  1203. SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
  1204. SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
  1205. prt0$(OEXT) : v2prt0.as
  1206. $(AS) -o prt0$(OEXT) v2prt0.as
  1207. system$(PPUEXT) : system.pp $(SYSDEPS)
  1208. $(COMPILER) -Us -Sg system.pp
  1209. objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
  1210. $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
  1211. strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
  1212. $(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
  1213. system$(PPUEXT)
  1214. go32$(PPUEXT) : go32.pp system$(PPUEXT)
  1215. dpmiexcp$(PPUEXT) : dpmiexcp.pp exceptn$(OEXT) system$(PPUEXT)
  1216. $(COMPILER) -Sg dpmiexcp.pp
  1217. initc$(PPUEXT) : initc.pp system$(PPUEXT)
  1218. profile$(PPUEXT) : profile.pp dpmiexcp$(PPUEXT) go32$(PPUEXT)
  1219. dxeload$(PPUEXT) : dxeload.pp system$(PPUEXT)
  1220. emu387$(PPUEXT) : emu387.pp fpu$(OEXT) strings$(PPUEXT) dxeload$(PPUEXT) \
  1221. dpmiexcp$(PPUEXT)
  1222. ports$(PPUEXT) : ports.pp objpas$(PPUEXT) system$(PPUEXT)
  1223. dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc \
  1224. go32$(PPUEXT) strings$(PPUEXT) system$(PPUEXT)
  1225. crt$(PPUEXT) : crt.pp $(INC)/textrec.inc go32$(PPUEXT) system$(PPUEXT)
  1226. objects$(PPUEXT) : $(INC)/objects.pp system$(PPUEXT)
  1227. printer$(PPUEXT) : printer.pp system$(PPUEXT)
  1228. include $(GRAPHDIR)/makefile.inc
  1229. GRAPHINCDEPS=$(addprefix $(GRAPHDIR)/,$(GRAPHINCNAMES))
  1230. graph$(PPUEXT) : graph.pp go32$(PPUEXT) ports$(PPUEXT) system$(PPUEXT) \
  1231. $(GRAPHINCDEPS) vesa.inc vesah.inc dpmi.inc
  1232. $(COMPILER) -I$(GRAPHDIR) graph.pp
  1233. sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/*.inc) \
  1234. objpas$(PPUEXT) dos$(PPUEXT) go32$(PPUEXT)
  1235. $(COMPILER) -I$(OBJPASDIR) sysutils.pp
  1236. typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
  1237. $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
  1238. math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
  1239. $(COMPILER) $(OBJPASDIR)/math.pp
  1240. varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
  1241. $(OBJPASDIR)/varutilh.inc varutils.pp
  1242. $(COMPILER) -I$(OBJPASDIR) varutils.pp
  1243. types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1244. $(COMPILER) $(OBJPASDIR)/types.pp
  1245. cpu$(PPUEXT) : $(PROCINC)/cpu.pp system$(PPUEXT)
  1246. mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) system$(PPUEXT)
  1247. getopts$(PPUEXT) : $(INC)/getopts.pp system$(PPUEXT)
  1248. heaptrc$(PPUEXT) : $(INC)/heaptrc.pp system$(PPUEXT)
  1249. $(COMPILER) -Sg $(INC)/heaptrc.pp
  1250. lineinfo$(PPUEXT) : $(INC)/lineinfo.pp system$(PPUEXT)
  1251. charset$(PPUEXT) : $(INC)/charset.pp system$(PPUEXT)
  1252. ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) system$(PPUEXT)
  1253. msmouse$(PPUEXT) : msmouse.pp system$(PPUEXT)
  1254. callspec$(PPUEXT) : $(INC)/callspec.pp system$(PPUEXT)