Makefile 33 KB

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