Makefile 33 KB

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