Makefile 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  1. #
  2. # Don't edit, this file is generated by fpcmake v1.99.0 [2001/05/03]
  3. #
  4. default: all
  5. override PATH:=$(subst \,/,$(PATH))
  6. ifeq ($(findstring ;,$(PATH)),)
  7. inUnix=1
  8. SEARCHPATH:=$(subst :, ,$(PATH))
  9. else
  10. SEARCHPATH:=$(subst ;, ,$(PATH))
  11. endif
  12. PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
  13. ifeq ($(PWD),)
  14. PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
  15. ifeq ($(PWD),)
  16. nopwd:
  17. @echo You need the GNU utils package to use this Makefile!
  18. @echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip
  19. @exit
  20. else
  21. PWD:=$(firstword $(PWD))
  22. SRCEXEEXT=
  23. endif
  24. else
  25. PWD:=$(firstword $(PWD))
  26. SRCEXEEXT=.exe
  27. endif
  28. ifndef inUnix
  29. ifeq ($(OS),Windows_NT)
  30. inWinNT=1
  31. else
  32. ifdef OS2_SHELL
  33. inOS2=1
  34. endif
  35. endif
  36. else
  37. ifneq ($(findstring cygwin,$(MACH_TYPE)),)
  38. inCygWin=1
  39. endif
  40. endif
  41. ifdef inUnix
  42. BATCHEXT=.sh
  43. else
  44. ifdef inOS2
  45. BATCHEXT=.cmd
  46. else
  47. BATCHEXT=.bat
  48. endif
  49. endif
  50. ifdef inUnix
  51. PATHSEP=/
  52. else
  53. PATHSEP:=$(subst /,\,/)
  54. endif
  55. ifdef PWD
  56. BASEDIR:=$(shell $(PWD))
  57. else
  58. BASEDIR=.
  59. endif
  60. ifndef FPC
  61. ifdef PP
  62. FPC=$(PP)
  63. else
  64. FPC=ppc386
  65. endif
  66. endif
  67. override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
  68. override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
  69. ifndef OS_TARGET
  70. OS_TARGET:=$(shell $(FPC) -iTO)
  71. endif
  72. ifndef OS_SOURCE
  73. OS_SOURCE:=$(shell $(FPC) -iSO)
  74. endif
  75. ifndef CPU_TARGET
  76. CPU_TARGET:=$(shell $(FPC) -iTP)
  77. endif
  78. ifndef CPU_SOURCE
  79. CPU_SOURCE:=$(shell $(FPC) -iSP)
  80. endif
  81. ifndef FPC_VERSION
  82. FPC_VERSION:=$(shell $(FPC) -iV)
  83. endif
  84. export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
  85. ifdef FPCDIR
  86. override FPCDIR:=$(subst \,/,$(FPCDIR))
  87. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  88. override FPCDIR=wrong
  89. endif
  90. else
  91. override FPCDIR=wrong
  92. endif
  93. ifeq ($(FPCDIR),wrong)
  94. override FPCDIR=../../..
  95. ifeq ($(wildcard $(FPCDIR)/rtl),)
  96. ifeq ($(wildcard $(FPCDIR)/units),)
  97. override FPCDIR=wrong
  98. endif
  99. endif
  100. endif
  101. ifeq ($(FPCDIR),wrong)
  102. ifdef inUnix
  103. override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
  104. ifeq ($(wildcard $(FPCDIR)/units),)
  105. override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
  106. endif
  107. else
  108. override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
  109. override FPCDIR:=$(FPCDIR)/..
  110. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  111. override FPCDIR:=$(FPCDIR)/..
  112. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  113. override FPCDIR=c:/pp
  114. endif
  115. endif
  116. endif
  117. endif
  118. UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
  119. PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages)
  120. override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn
  121. override INSTALL_FPCPACKAGE=y
  122. ifndef ECHO
  123. ECHO:=$(strip $(wildcard $(addsuffix /gecho$(EXEEXT),$(SEARCHPATH))))
  124. ifeq ($(ECHO),)
  125. ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
  126. ifeq ($(ECHO),)
  127. ECHO:=echo
  128. else
  129. ECHO:=$(firstword $(ECHO))
  130. endif
  131. else
  132. ECHO:=$(firstword $(ECHO))
  133. endif
  134. endif
  135. ifndef COPY
  136. COPY:=cp -fp
  137. endif
  138. ifndef COPYTREE
  139. COPYTREE:=cp -rfp
  140. endif
  141. ifndef MOVE
  142. MOVE:=mv -f
  143. endif
  144. ifndef DEL
  145. DEL:=rm -f
  146. endif
  147. ifndef DELTREE
  148. DELTREE:=rm -rf
  149. endif
  150. ifndef INSTALL
  151. ifdef inUnix
  152. INSTALL:=install -c -m 644
  153. else
  154. INSTALL:=$(COPY)
  155. endif
  156. endif
  157. ifndef INSTALLEXE
  158. ifdef inUnix
  159. INSTALLEXE:=install -c -m 755
  160. else
  161. INSTALLEXE:=$(COPY)
  162. endif
  163. endif
  164. ifndef MKDIR
  165. ifdef inUnix
  166. MKDIR:=install -m 755 -d
  167. else
  168. MKDIR:=ginstall -m 755 -d
  169. endif
  170. endif
  171. export ECHO COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
  172. ifndef AS
  173. AS=as
  174. endif
  175. ifndef LD
  176. LD=ld
  177. endif
  178. ifndef RC
  179. RC=rc
  180. endif
  181. PPAS=ppas$(BATCHEXT)
  182. ifdef inUnix
  183. LDCONFIG=ldconfig
  184. else
  185. LDCONFIG=
  186. endif
  187. ifndef PPUMOVE
  188. PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
  189. ifeq ($(PPUMOVE),)
  190. PPUMOVE=
  191. else
  192. PPUMOVE:=$(firstword $(PPUMOVE))
  193. endif
  194. endif
  195. export PPUMOVE
  196. ifndef PPUFILES
  197. PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(SRCEXEEXT),$(SEARCHPATH))))
  198. ifeq ($(PPUFILES),)
  199. PPUFILES=
  200. else
  201. PPUFILES:=$(firstword $(PPUFILES))
  202. endif
  203. endif
  204. export PPUFILES
  205. ifndef DATE
  206. DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
  207. ifeq ($(DATE),)
  208. DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEACHPATH))))
  209. ifeq ($(DATE),)
  210. DATE=
  211. else
  212. DATE:=$(firstword $(DATE))
  213. endif
  214. else
  215. DATE:=$(firstword $(DATE))
  216. endif
  217. endif
  218. export DATE
  219. ifdef DATE
  220. DATESTR:=$(shell $(DATE) +%Y%m%d)
  221. else
  222. DATESTR=
  223. endif
  224. ifndef UPXPROG
  225. ifeq ($(OS_TARGET),go32v2)
  226. UPXPROG:=1
  227. endif
  228. ifeq ($(OS_TARGET),win32)
  229. UPXPROG:=1
  230. endif
  231. ifdef UPXPROG
  232. UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
  233. ifeq ($(UPXPROG),)
  234. UPXPROG=
  235. else
  236. UPXPROG:=$(firstword $(UPXPROG))
  237. endif
  238. else
  239. UPXPROG=
  240. endif
  241. endif
  242. export UPXPROG
  243. ifndef ZIPPROG
  244. ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
  245. ifeq ($(ZIPPROG),)
  246. ZIPPROG=
  247. else
  248. ZIPPROG:=$(firstword $(ZIPPROG))
  249. endif
  250. endif
  251. export ZIPPROG
  252. ZIPOPT=-9
  253. ZIPEXT=.zip
  254. ifndef TARPROG
  255. TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
  256. ifeq ($(TARPROG),)
  257. TARPROG=
  258. else
  259. TARPROG:=$(firstword $(TARPROG))
  260. endif
  261. endif
  262. export TARPROG
  263. ifeq ($(USETAR),bz2)
  264. TAROPT=vI
  265. TAREXT=.tar.bz2
  266. else
  267. TAROPT=vz
  268. TAREXT=.tar.gz
  269. endif
  270. LOADEREXT=.as
  271. EXEEXT=.exe
  272. PPLEXT=.ppl
  273. PPUEXT=.ppu
  274. OEXT=.o
  275. ASMEXT=.s
  276. SMARTEXT=.sl
  277. STATICLIBEXT=.a
  278. SHAREDLIBEXT=.so
  279. LIBPREFIX=lib
  280. RSTEXT=.rst
  281. FPCMADE=fpcmade
  282. ifeq ($(OS_TARGET),go32v1)
  283. PPUEXT=.pp1
  284. OEXT=.o1
  285. ASMEXT=.s1
  286. SMARTEXT=.sl1
  287. STATICLIBEXT=.a1
  288. SHAREDLIBEXT=.so1
  289. LIBPREFIX=
  290. FPCMADE=fpcmade.v1
  291. PACKAGESUFFIX=v1
  292. endif
  293. ifeq ($(OS_TARGET),go32v2)
  294. LIBPREFIX=
  295. FPCMADE=fpcmade.dos
  296. ZIPSUFFIX=go32
  297. endif
  298. ifeq ($(OS_TARGET),linux)
  299. EXEEXT=
  300. HASSHAREDLIB=1
  301. FPCMADE=fpcmade.lnx
  302. ZIPSUFFIX=linux
  303. endif
  304. ifeq ($(OS_TARGET),freebsd)
  305. EXEEXT=
  306. HASSHAREDLIB=1
  307. FPCMADE=fpcmade.freebsd
  308. ZIPSUFFIX=freebsd
  309. endif
  310. ifeq ($(OS_TARGET),win32)
  311. PPUEXT=.ppw
  312. OEXT=.ow
  313. ASMEXT=.sw
  314. SMARTEXT=.slw
  315. STATICLIBEXT=.aw
  316. SHAREDLIBEXT=.dll
  317. FPCMADE=fpcmade.w32
  318. ZIPSUFFIX=w32
  319. endif
  320. ifeq ($(OS_TARGET),os2)
  321. PPUEXT=.ppo
  322. ASMEXT=.so2
  323. OEXT=.oo2
  324. AOUTEXT=.out
  325. SMARTEXT=.so
  326. STATICLIBEXT=.ao2
  327. SHAREDLIBEXT=.dll
  328. FPCMADE=fpcmade.os2
  329. ZIPSUFFIX=emx
  330. endif
  331. ifdef REQUIRE_UNITSDIR
  332. override UNITSDIR+=$(REQUIRE_UNITSDIR)
  333. endif
  334. ifdef REQUIRE_PACKAGESDIR
  335. override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
  336. endif
  337. ifdef ZIPINSTALL
  338. ifeq ($(OS_TARGET),linux)
  339. UNIXINSTALLDIR=1
  340. endif
  341. ifeq ($(OS_TARGET),freebsd)
  342. UNIXINSTALLDIR=1
  343. endif
  344. else
  345. ifeq ($(OS_SOURCE),linux)
  346. UNIXINSTALLDIR=1
  347. endif
  348. ifeq ($(OS_SOURCE),freebsd)
  349. UNIXINSTALLDIR=1
  350. endif
  351. endif
  352. ifndef INSTALL_PREFIX
  353. ifdef UNIXINSTALLDIR
  354. INSTALL_PREFIX=/usr/local
  355. else
  356. ifdef INSTALL_FPCPACKAGE
  357. INSTALL_BASEDIR:=/pp
  358. else
  359. INSTALL_BASEDIR:=/$(PACKAGE_NAME)
  360. endif
  361. endif
  362. endif
  363. export INSTALL_PREFIX
  364. ifndef DIST_DESTDIR
  365. DIST_DESTDIR:=$(BASEDIR)
  366. endif
  367. export DIST_DESTDIR
  368. ifndef INSTALL_BASEDIR
  369. ifdef UNIXINSTALLDIR
  370. ifdef INSTALL_FPCPACKAGE
  371. INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
  372. else
  373. INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
  374. endif
  375. else
  376. INSTALL_BASEDIR:=$(INSTALL_PREFIX)
  377. endif
  378. endif
  379. ifndef INSTALL_BINDIR
  380. ifdef UNIXINSTALLDIR
  381. INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
  382. else
  383. INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
  384. ifdef INSTALL_FPCPACKAGE
  385. INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
  386. endif
  387. endif
  388. endif
  389. ifndef INSTALL_UNITDIR
  390. INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(OS_TARGET)
  391. ifdef INSTALL_FPCPACKAGE
  392. INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
  393. endif
  394. endif
  395. ifndef INSTALL_LIBDIR
  396. ifdef UNIXINSTALLDIR
  397. INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
  398. else
  399. INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
  400. endif
  401. endif
  402. ifndef INSTALL_SOURCEDIR
  403. ifdef UNIXINSTALLDIR
  404. ifdef INSTALL_FPCPACKAGE
  405. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  406. else
  407. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  408. endif
  409. else
  410. ifdef INSTALL_FPCPACKAGE
  411. INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
  412. else
  413. INSTALL_SOURCEDIRL:=$(INSTALL_BASEDIR)/source
  414. endif
  415. endif
  416. endif
  417. ifndef INSTALL_DOCDIR
  418. ifdef UNIXINSTALLDIR
  419. ifdef INSTALL_FPCPACKAGE
  420. INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  421. else
  422. INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  423. endif
  424. else
  425. ifdef INSTALL_FPCPACKAGE
  426. INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
  427. else
  428. INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
  429. endif
  430. endif
  431. endif
  432. ifndef INSTALL_EXAMPLEDIR
  433. ifdef UNIXINSTALLDIR
  434. ifdef INSTALL_FPCPACKAGE
  435. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
  436. else
  437. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  438. endif
  439. else
  440. ifdef INSTALL_FPCPACKAGE
  441. INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
  442. else
  443. INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
  444. endif
  445. endif
  446. endif
  447. ifndef INSTALL_DATADIR
  448. INSTALL_DATADIR=$(INSTALL_BASEDIR)
  449. endif
  450. ifdef inUnix
  451. ifndef GCCLIBDIR
  452. GCCLIBDIR:=$(shell dirname `(gcc -v 2>&1)| head -n 1| awk '{ print $$4 } '`)
  453. endif
  454. ifndef OTHERLIBDIR
  455. OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
  456. endif
  457. export GCCLIBDIR OTHERLIB
  458. endif
  459. ifeq ($(OS_TARGET),linux)
  460. REQUIRE_PACKAGES_RTL=1
  461. REQUIRE_PACKAGES_X11=1
  462. REQUIRE_PACKAGES_FORMS=1
  463. endif
  464. ifeq ($(OS_TARGET),go32v2)
  465. REQUIRE_PACKAGES_RTL=1
  466. REQUIRE_PACKAGES_X11=1
  467. REQUIRE_PACKAGES_FORMS=1
  468. endif
  469. ifeq ($(OS_TARGET),win32)
  470. REQUIRE_PACKAGES_RTL=1
  471. REQUIRE_PACKAGES_X11=1
  472. REQUIRE_PACKAGES_FORMS=1
  473. endif
  474. ifeq ($(OS_TARGET),os2)
  475. REQUIRE_PACKAGES_RTL=1
  476. REQUIRE_PACKAGES_X11=1
  477. REQUIRE_PACKAGES_FORMS=1
  478. endif
  479. ifeq ($(OS_TARGET),freebsd)
  480. REQUIRE_PACKAGES_RTL=1
  481. REQUIRE_PACKAGES_X11=1
  482. REQUIRE_PACKAGES_FORMS=1
  483. endif
  484. ifdef REQUIRE_PACKAGES_RTL
  485. PACKAGEDIR_RTL:=$(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))
  486. ifneq ($(PACKAGEDIR_RTL),)
  487. PACKAGEDIR_RTL:=$(firstword $(PACKAGEDIR_RTL))
  488. ifeq ($(wildcard $(PACKAGEDIR_RTL)/$(FPCMADE)),)
  489. override COMPILEPACKAGES+=package_rtl
  490. package_rtl:
  491. $(MAKE) -C $(PACKAGEDIR_RTL) all
  492. endif
  493. ifneq ($(wildcard $(PACKAGEDIR_RTL)/$(OS_TARGET)),)
  494. UNITDIR_RTL=$(PACKAGEDIR_RTL)/$(OS_TARGET)
  495. else
  496. UNITDIR_RTL=$(PACKAGEDIR_RTL)
  497. endif
  498. else
  499. PACKAGEDIR_RTL=
  500. UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
  501. ifneq ($(UNITDIR_RTL),)
  502. UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
  503. else
  504. UNITDIR_RTL=
  505. endif
  506. endif
  507. ifdef UNITDIR_RTL
  508. override COMPILER_UNITDIR+=$(UNITDIR_RTL)
  509. endif
  510. endif
  511. ifdef REQUIRE_PACKAGES_X11
  512. PACKAGEDIR_X11:=$(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /x11/Makefile.fpc,$(PACKAGESDIR)))))
  513. ifneq ($(PACKAGEDIR_X11),)
  514. PACKAGEDIR_X11:=$(firstword $(PACKAGEDIR_X11))
  515. ifeq ($(wildcard $(PACKAGEDIR_X11)/$(FPCMADE)),)
  516. override COMPILEPACKAGES+=package_x11
  517. package_x11:
  518. $(MAKE) -C $(PACKAGEDIR_X11) all
  519. endif
  520. ifneq ($(wildcard $(PACKAGEDIR_X11)/$(OS_TARGET)),)
  521. UNITDIR_X11=$(PACKAGEDIR_X11)/$(OS_TARGET)
  522. else
  523. UNITDIR_X11=$(PACKAGEDIR_X11)
  524. endif
  525. else
  526. PACKAGEDIR_X11=
  527. UNITDIR_X11:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /x11/Package.fpc,$(UNITSDIR)))))
  528. ifneq ($(UNITDIR_X11),)
  529. UNITDIR_X11:=$(firstword $(UNITDIR_X11))
  530. else
  531. UNITDIR_X11=
  532. endif
  533. endif
  534. ifdef UNITDIR_X11
  535. override COMPILER_UNITDIR+=$(UNITDIR_X11)
  536. endif
  537. endif
  538. ifdef REQUIRE_PACKAGES_FORMS
  539. PACKAGEDIR_FORMS:=$(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /forms/Makefile.fpc,$(PACKAGESDIR)))))
  540. ifneq ($(PACKAGEDIR_FORMS),)
  541. PACKAGEDIR_FORMS:=$(firstword $(PACKAGEDIR_FORMS))
  542. ifeq ($(wildcard $(PACKAGEDIR_FORMS)/$(FPCMADE)),)
  543. override COMPILEPACKAGES+=package_forms
  544. package_forms:
  545. $(MAKE) -C $(PACKAGEDIR_FORMS) all
  546. endif
  547. ifneq ($(wildcard $(PACKAGEDIR_FORMS)/$(OS_TARGET)),)
  548. UNITDIR_FORMS=$(PACKAGEDIR_FORMS)/$(OS_TARGET)
  549. else
  550. UNITDIR_FORMS=$(PACKAGEDIR_FORMS)
  551. endif
  552. else
  553. PACKAGEDIR_FORMS=
  554. UNITDIR_FORMS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /forms/Package.fpc,$(UNITSDIR)))))
  555. ifneq ($(UNITDIR_FORMS),)
  556. UNITDIR_FORMS:=$(firstword $(UNITDIR_FORMS))
  557. else
  558. UNITDIR_FORMS=
  559. endif
  560. endif
  561. ifdef UNITDIR_FORMS
  562. override COMPILER_UNITDIR+=$(UNITDIR_FORMS)
  563. endif
  564. endif
  565. .PHONY: package_rtl package_x11 package_forms
  566. override FPCOPTDEF=$(CPU_TARGET)
  567. ifneq ($(OS_TARGET),$(OS_SOURCE))
  568. override FPCOPT+=-T$(OS_TARGET)
  569. endif
  570. ifdef UNITDIR
  571. override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
  572. endif
  573. ifdef LIBDIR
  574. override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
  575. endif
  576. ifdef OBJDIR
  577. override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
  578. endif
  579. ifdef INCDIR
  580. override FPCOPT+=$(addprefix -Fi,$(INCDIR))
  581. endif
  582. ifdef LINKSMART
  583. override FPCOPT+=-XX
  584. endif
  585. ifdef CREATESMART
  586. override FPCOPT+=-CX
  587. endif
  588. ifdef DEBUG
  589. override FPCOPT+=-gl
  590. override FPCOPTDEF+=DEBUG
  591. endif
  592. ifdef RELEASE
  593. override FPCOPT+=-Xs -OG2p3 -n
  594. override FPCOPTDEF+=RELEASE
  595. endif
  596. ifdef STRIP
  597. override FPCOPT+=-Xs
  598. endif
  599. ifdef OPTIMIZE
  600. override FPCOPT+=-OG2p3
  601. endif
  602. ifdef VERBOSE
  603. override FPCOPT+=-vwni
  604. endif
  605. ifdef COMPILER_OPTIONS
  606. override FPCOPT+=$(COMPILER_OPTIONS)
  607. endif
  608. ifdef COMPILER_UNITDIR
  609. override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
  610. endif
  611. ifdef COMPILER_LIBRARYDIR
  612. override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
  613. endif
  614. ifdef COMPILER_OBJECTDIR
  615. override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
  616. endif
  617. ifdef COMPILER_INCLUDEDIR
  618. override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
  619. endif
  620. ifdef COMPILER_TARGETDIR
  621. override FPCOPT+=-FE$(COMPILER_TARGETDIR)
  622. ifeq ($(COMPILER_TARGETDIR),.)
  623. override TARGETDIRPREFIX=
  624. else
  625. override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
  626. endif
  627. endif
  628. ifdef COMPILER_UNITTARGETDIR
  629. override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
  630. ifeq ($(COMPILER_UNITTARGETDIR),.)
  631. override UNITTARGETDIRPREFIX=
  632. else
  633. override UNITTARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
  634. endif
  635. else
  636. ifdef COMPILER_TARGETDIR
  637. override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
  638. override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
  639. endif
  640. endif
  641. ifdef GCCLIBDIR
  642. override FPCOPT+=-Fl$(GCCLIBDIR)
  643. endif
  644. ifdef OTHERLIBDIR
  645. override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
  646. endif
  647. ifdef OPT
  648. override FPCOPT+=$(OPT)
  649. endif
  650. ifdef FPCOPTDEF
  651. override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
  652. endif
  653. ifdef CFGFILE
  654. override FPCOPT+=@$(CFGFILE)
  655. endif
  656. ifeq ($(OS_SOURCE),win32)
  657. USEENV=1
  658. endif
  659. ifdef USEENV
  660. override FPCEXTCMD:=$(FPCOPT)
  661. override FPCOPT:=!FPCEXTCMD
  662. export FPCEXTCMD
  663. endif
  664. override COMPILER:=$(FPC) $(FPCOPT)
  665. ifeq (,$(findstring -s ,$(COMPILER)))
  666. EXECPPAS=
  667. else
  668. ifeq ($(OS_SOURCE),$(OS_TARGET))
  669. EXECPPAS:=@$(PPAS)
  670. endif
  671. endif
  672. .PHONY: fpc_exes
  673. ifdef TARGET_PROGRAMS
  674. override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
  675. override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(LIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
  676. override ALLTARGET+=fpc_exes
  677. override INSTALLEXEFILES+=$(EXEFILES)
  678. override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
  679. ifeq ($(OS_TARGET),os2)
  680. override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
  681. endif
  682. endif
  683. fpc_exes: $(EXEFILES)
  684. .PHONY: fpc_packages fpc_all fpc_smart fpc_debug
  685. $(FPCMADE): $(ALLTARGET)
  686. @$(ECHO) Compiled > $(FPCMADE)
  687. fpc_packages: $(COMPILEPACKAGES)
  688. fpc_all: fpc_packages $(FPCMADE)
  689. fpc_smart:
  690. $(MAKE) all LINKSMART=1 CREATESMART=1
  691. fpc_debug:
  692. $(MAKE) all DEBUG=1
  693. .SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
  694. %$(PPUEXT): %.pp
  695. $(COMPILER) $<
  696. $(EXECPPAS)
  697. %$(PPUEXT): %.pas
  698. $(COMPILER) $<
  699. $(EXECPPAS)
  700. %$(EXEEXT): %.pp
  701. $(COMPILER) $<
  702. $(EXECPPAS)
  703. %$(EXEEXT): %.pas
  704. $(COMPILER) $<
  705. $(EXECPPAS)
  706. vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  707. vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  708. vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
  709. .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
  710. ifdef INSTALL_UNITS
  711. override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
  712. endif
  713. ifdef INSTALLPPUFILES
  714. ifdef PPUFILES
  715. override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
  716. override INSTALLPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES)))
  717. else
  718. override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
  719. override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
  720. override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES)))
  721. endif
  722. endif
  723. ifdef INSTALLEXEFILES
  724. override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES))
  725. endif
  726. fpc_install: $(INSTALLTARGET)
  727. ifdef INSTALLEXEFILES
  728. $(MKDIR) $(INSTALL_BINDIR)
  729. ifdef UPXPROG
  730. -$(UPXPROG) $(INSTALLEXEFILES)
  731. endif
  732. $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
  733. endif
  734. ifdef INSTALLPPUFILES
  735. $(MKDIR) $(INSTALL_UNITDIR)
  736. $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
  737. ifneq ($(INSTALLPPULINKFILES),)
  738. $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
  739. endif
  740. ifneq ($(wildcard $(LIB_FULLNAME)),)
  741. $(MKDIR) $(INSTALL_LIBDIR)
  742. $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
  743. ifdef inUnix
  744. ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
  745. endif
  746. endif
  747. endif
  748. ifdef INSTALL_FILES
  749. $(MKDIR) $(INSTALL_DATADIR)
  750. $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
  751. endif
  752. fpc_sourceinstall: distclean
  753. $(MKDIR) $(INSTALL_SOURCEDIR)
  754. $(COPYTREE) $(BASEDIR) $(INSTALL_SOURCEDIR)
  755. fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
  756. ifdef HASEXAMPLES
  757. $(MKDIR) $(INSTALL_EXAMPLEDIR)
  758. endif
  759. ifdef EXAMPLESOURCEFILES
  760. $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
  761. endif
  762. ifdef TARGET_EXAMPLEDIRS
  763. $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
  764. endif
  765. fpc_distinstall: install exampleinstall
  766. .PHONY: fpc_clean fpc_cleanall fpc_distclean
  767. ifdef EXEFILES
  768. override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
  769. endif
  770. ifdef CLEAN_UNITS
  771. override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
  772. endif
  773. ifdef CLEANPPUFILES
  774. override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
  775. ifdef PPUFILES
  776. CLEANPPULINKFILES:=$(shell $(PPUFILES) $(CLEANPPUFILES))
  777. else
  778. CLEANPPULINKFILES:=$(wildcard $(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))))
  779. endif
  780. override CLEANPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))
  781. endif
  782. fpc_clean: $(CLEANTARGET)
  783. ifdef CLEANEXEFILES
  784. -$(DEL) $(CLEANEXEFILES)
  785. endif
  786. ifdef CLEANPPUFILES
  787. -$(DEL) $(CLEANPPUFILES)
  788. endif
  789. ifneq ($(CLEANPPULINKFILES),)
  790. -$(DEL) $(CLEANPPULINKFILES)
  791. endif
  792. ifdef CLEANRSTFILES
  793. -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
  794. endif
  795. ifdef CLEAN_FILES
  796. -$(DEL) $(CLEAN_FILES)
  797. endif
  798. ifdef LIB_NAME
  799. -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
  800. endif
  801. -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
  802. fpc_distclean: clean
  803. ifdef COMPILER_UNITTARGETDIR
  804. TARGETDIRCLEAN=fpc_clean
  805. endif
  806. fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)
  807. ifdef CLEANEXEFILES
  808. -$(DEL) $(CLEANEXEFILES)
  809. endif
  810. -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
  811. -$(DELTREE) *$(SMARTEXT)
  812. -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
  813. ifdef AOUTEXT
  814. -$(DEL) *$(AOUTEXT)
  815. endif
  816. .PHONY: fpc_info
  817. fpc_info:
  818. @$(ECHO)
  819. @$(ECHO) == Package info ==
  820. @$(ECHO) Package Name..... $(PACKAGE_NAME)
  821. @$(ECHO) Package Version.. $(PACKAGE_VERSION)
  822. @$(ECHO)
  823. @$(ECHO) == Configuration info ==
  824. @$(ECHO)
  825. @$(ECHO) FPC.......... $(FPC)
  826. @$(ECHO) FPC Version.. $(FPC_VERSION)
  827. @$(ECHO) Source CPU... $(CPU_SOURCE)
  828. @$(ECHO) Target CPU... $(CPU_TARGET)
  829. @$(ECHO) Source OS.... $(OS_SOURCE)
  830. @$(ECHO) Target OS.... $(OS_TARGET)
  831. @$(ECHO)
  832. @$(ECHO) == Directory info ==
  833. @$(ECHO)
  834. @$(ECHO) Basedir......... $(BASEDIR)
  835. @$(ECHO) FPCDir.......... $(FPCDIR)
  836. @$(ECHO) UnitsDir........ $(UNITSDIR)
  837. @$(ECHO) PackagesDir..... $(PACKAGESDIR)
  838. @$(ECHO)
  839. @$(ECHO) GCC library..... $(GCCLIBDIR)
  840. @$(ECHO) Other library... $(OTHERLIBDIR)
  841. @$(ECHO)
  842. @$(ECHO) == Tools info ==
  843. @$(ECHO)
  844. @$(ECHO) Pwd....... $(PWD)
  845. @$(ECHO) Echo...... $(ECHO)
  846. @$(ECHO) PPUMove... $(PPUMOVE)
  847. @$(ECHO) PPUFiles.. $(PPUFILES)
  848. @$(ECHO) Date...... $(DATE)
  849. @$(ECHO) Upx....... $(UPXPROG)
  850. @$(ECHO) Zip....... $(ZIPPROG)
  851. @$(ECHO)
  852. @$(ECHO) == Object info ==
  853. @$(ECHO)
  854. @$(ECHO) Target Loaders...... $(TARGET_LOADERS)
  855. @$(ECHO) Target Units........ $(TARGET_UNITS)
  856. @$(ECHO) Target Programs..... $(TARGET_PROGRAMS)
  857. @$(ECHO) Target Dirs......... $(TARGET_DIRS)
  858. @$(ECHO) Target Examples..... $(TARGET_EXAMPLES)
  859. @$(ECHO) Target ExampleDirs.. $(TARGET_EXAMPLEDIRS)
  860. @$(ECHO)
  861. @$(ECHO) Clean Units......... $(CLEAN_UNITS)
  862. @$(ECHO) Clean Files......... $(CLEAN_FILES)
  863. @$(ECHO)
  864. @$(ECHO) Install Units....... $(INSTALL_UNITS)
  865. @$(ECHO) Install Files....... $(INSTALL_FILES)
  866. @$(ECHO)
  867. @$(ECHO) == Install info ==
  868. @$(ECHO)
  869. @$(ECHO) DateStr.............. $(DATESTR)
  870. @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
  871. @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
  872. @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
  873. @$(ECHO)
  874. @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
  875. @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
  876. @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
  877. @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
  878. @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
  879. @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
  880. @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
  881. @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
  882. @$(ECHO)
  883. @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
  884. @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
  885. @$(ECHO)
  886. all: fpc_all
  887. debug: fpc_debug
  888. examples: fpc_examples
  889. smart: fpc_smart
  890. shared: fpc_shared
  891. install: fpc_install
  892. sourceinstall: fpc_sourceinstall
  893. exampleinstall: fpc_exampleinstall
  894. distinstall: fpc_distinstall
  895. zipinstall:
  896. zipsourceinstall:
  897. zipexampleinstall:
  898. zipdistinstall:
  899. clean: fpc_clean
  900. distclean: fpc_distclean
  901. cleanall: fpc_cleanall
  902. info: fpc_info
  903. .PHONY: all debug examples smart shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info
  904. ifneq ($(wildcard fpcmake.loc),)
  905. include fpcmake.loc
  906. endif