Makefile 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865
  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. override OS_TARGET=os2
  61. override CPU_TARGET=i386
  62. ifndef FPC
  63. ifdef PP
  64. FPC=$(PP)
  65. else
  66. FPC=ppc386
  67. endif
  68. endif
  69. override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
  70. override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
  71. ifndef OS_TARGET
  72. OS_TARGET:=$(shell $(FPC) -iTO)
  73. endif
  74. ifndef OS_SOURCE
  75. OS_SOURCE:=$(shell $(FPC) -iSO)
  76. endif
  77. ifndef CPU_TARGET
  78. CPU_TARGET:=$(shell $(FPC) -iTP)
  79. endif
  80. ifndef CPU_SOURCE
  81. CPU_SOURCE:=$(shell $(FPC) -iSP)
  82. endif
  83. ifndef FPC_VERSION
  84. FPC_VERSION:=$(shell $(FPC) -iV)
  85. endif
  86. export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
  87. ifdef FPCDIR
  88. override FPCDIR:=$(subst \,/,$(FPCDIR))
  89. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  90. override FPCDIR=wrong
  91. endif
  92. else
  93. override FPCDIR=wrong
  94. endif
  95. ifeq ($(FPCDIR),wrong)
  96. override FPCDIR=../..
  97. ifeq ($(wildcard $(FPCDIR)/rtl),)
  98. ifeq ($(wildcard $(FPCDIR)/units),)
  99. override FPCDIR=wrong
  100. endif
  101. endif
  102. endif
  103. ifeq ($(FPCDIR),wrong)
  104. ifdef inUnix
  105. override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
  106. ifeq ($(wildcard $(FPCDIR)/units),)
  107. override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
  108. endif
  109. else
  110. override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
  111. override FPCDIR:=$(FPCDIR)/..
  112. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  113. override FPCDIR:=$(FPCDIR)/..
  114. ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
  115. override FPCDIR=c:/pp
  116. endif
  117. endif
  118. endif
  119. endif
  120. UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
  121. PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages)
  122. override PACKAGE_NAME=rtl
  123. RTL=..
  124. INC=$(RTL)/inc
  125. PROCINC=$(RTL)/$(CPU_TARGET)
  126. UNITPREFIX=rtl
  127. ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
  128. SYSTEMUNIT=system
  129. else
  130. SYSTEMUNIT=sysos2
  131. endif
  132. OBJPASDIR=$(RTL)/objpas
  133. GRAPHDIR=$(INC)/graph
  134. override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi dive dos crt objects printer sysutils math typinfo varutils ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard
  135. override TARGET_LOADERS+=prt0 prt1 code2 code3
  136. override TARGET_RSTS+=math varutils
  137. override INSTALL_FPCPACKAGE=y
  138. override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
  139. override COMPILER_SOURCEDIR+=$(INC) $(PROCINC)
  140. override COMPILER_TARGETDIR+=.
  141. ifndef ECHO
  142. ECHO:=$(strip $(wildcard $(addsuffix /gecho$(EXEEXT),$(SEARCHPATH))))
  143. ifeq ($(ECHO),)
  144. ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
  145. ifeq ($(ECHO),)
  146. ECHO:=echo
  147. else
  148. ECHO:=$(firstword $(ECHO))
  149. endif
  150. else
  151. ECHO:=$(firstword $(ECHO))
  152. endif
  153. endif
  154. ifndef COPY
  155. COPY:=cp -fp
  156. endif
  157. ifndef COPYTREE
  158. COPYTREE:=cp -rfp
  159. endif
  160. ifndef MOVE
  161. MOVE:=mv -f
  162. endif
  163. ifndef DEL
  164. DEL:=rm -f
  165. endif
  166. ifndef DELTREE
  167. DELTREE:=rm -rf
  168. endif
  169. ifndef INSTALL
  170. ifdef inUnix
  171. INSTALL:=install -c -m 644
  172. else
  173. INSTALL:=$(COPY)
  174. endif
  175. endif
  176. ifndef INSTALLEXE
  177. ifdef inUnix
  178. INSTALLEXE:=install -c -m 755
  179. else
  180. INSTALLEXE:=$(COPY)
  181. endif
  182. endif
  183. ifndef MKDIR
  184. ifdef inUnix
  185. MKDIR:=install -m 755 -d
  186. else
  187. MKDIR:=ginstall -m 755 -d
  188. endif
  189. endif
  190. export ECHO COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
  191. ifndef AS
  192. AS=as
  193. endif
  194. ifndef LD
  195. LD=ld
  196. endif
  197. ifndef RC
  198. RC=rc
  199. endif
  200. PPAS=ppas$(BATCHEXT)
  201. ifdef inUnix
  202. LDCONFIG=ldconfig
  203. else
  204. LDCONFIG=
  205. endif
  206. ifndef PPUMOVE
  207. PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
  208. ifeq ($(PPUMOVE),)
  209. PPUMOVE=
  210. else
  211. PPUMOVE:=$(firstword $(PPUMOVE))
  212. endif
  213. endif
  214. export PPUMOVE
  215. ifndef PPUFILES
  216. PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(SRCEXEEXT),$(SEARCHPATH))))
  217. ifeq ($(PPUFILES),)
  218. PPUFILES=
  219. else
  220. PPUFILES:=$(firstword $(PPUFILES))
  221. endif
  222. endif
  223. export PPUFILES
  224. ifndef DATE
  225. DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
  226. ifeq ($(DATE),)
  227. DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEACHPATH))))
  228. ifeq ($(DATE),)
  229. DATE=
  230. else
  231. DATE:=$(firstword $(DATE))
  232. endif
  233. else
  234. DATE:=$(firstword $(DATE))
  235. endif
  236. endif
  237. export DATE
  238. ifdef DATE
  239. DATESTR:=$(shell $(DATE) +%Y%m%d)
  240. else
  241. DATESTR=
  242. endif
  243. ifndef UPXPROG
  244. ifeq ($(OS_TARGET),go32v2)
  245. UPXPROG:=1
  246. endif
  247. ifeq ($(OS_TARGET),win32)
  248. UPXPROG:=1
  249. endif
  250. ifdef UPXPROG
  251. UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
  252. ifeq ($(UPXPROG),)
  253. UPXPROG=
  254. else
  255. UPXPROG:=$(firstword $(UPXPROG))
  256. endif
  257. else
  258. UPXPROG=
  259. endif
  260. endif
  261. export UPXPROG
  262. ifndef ZIPPROG
  263. ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
  264. ifeq ($(ZIPPROG),)
  265. ZIPPROG=
  266. else
  267. ZIPPROG:=$(firstword $(ZIPPROG))
  268. endif
  269. endif
  270. export ZIPPROG
  271. ZIPOPT=-9
  272. ZIPEXT=.zip
  273. ifndef TARPROG
  274. TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
  275. ifeq ($(TARPROG),)
  276. TARPROG=
  277. else
  278. TARPROG:=$(firstword $(TARPROG))
  279. endif
  280. endif
  281. export TARPROG
  282. ifeq ($(USETAR),bz2)
  283. TAROPT=vI
  284. TAREXT=.tar.bz2
  285. else
  286. TAROPT=vz
  287. TAREXT=.tar.gz
  288. endif
  289. LOADEREXT=.as
  290. EXEEXT=.exe
  291. PPLEXT=.ppl
  292. PPUEXT=.ppu
  293. OEXT=.o
  294. ASMEXT=.s
  295. SMARTEXT=.sl
  296. STATICLIBEXT=.a
  297. SHAREDLIBEXT=.so
  298. LIBPREFIX=lib
  299. RSTEXT=.rst
  300. FPCMADE=fpcmade
  301. ifeq ($(OS_TARGET),go32v1)
  302. PPUEXT=.pp1
  303. OEXT=.o1
  304. ASMEXT=.s1
  305. SMARTEXT=.sl1
  306. STATICLIBEXT=.a1
  307. SHAREDLIBEXT=.so1
  308. LIBPREFIX=
  309. FPCMADE=fpcmade.v1
  310. PACKAGESUFFIX=v1
  311. endif
  312. ifeq ($(OS_TARGET),go32v2)
  313. LIBPREFIX=
  314. FPCMADE=fpcmade.dos
  315. ZIPSUFFIX=go32
  316. endif
  317. ifeq ($(OS_TARGET),linux)
  318. EXEEXT=
  319. HASSHAREDLIB=1
  320. FPCMADE=fpcmade.lnx
  321. ZIPSUFFIX=linux
  322. endif
  323. ifeq ($(OS_TARGET),freebsd)
  324. EXEEXT=
  325. HASSHAREDLIB=1
  326. FPCMADE=fpcmade.freebsd
  327. ZIPSUFFIX=freebsd
  328. endif
  329. ifeq ($(OS_TARGET),win32)
  330. PPUEXT=.ppw
  331. OEXT=.ow
  332. ASMEXT=.sw
  333. SMARTEXT=.slw
  334. STATICLIBEXT=.aw
  335. SHAREDLIBEXT=.dll
  336. FPCMADE=fpcmade.w32
  337. ZIPSUFFIX=w32
  338. endif
  339. ifeq ($(OS_TARGET),os2)
  340. PPUEXT=.ppo
  341. ASMEXT=.so2
  342. OEXT=.oo2
  343. AOUTEXT=.out
  344. SMARTEXT=.so
  345. STATICLIBEXT=.ao2
  346. SHAREDLIBEXT=.dll
  347. FPCMADE=fpcmade.os2
  348. ZIPSUFFIX=emx
  349. endif
  350. ifdef REQUIRE_UNITSDIR
  351. override UNITSDIR+=$(REQUIRE_UNITSDIR)
  352. endif
  353. ifdef REQUIRE_PACKAGESDIR
  354. override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
  355. endif
  356. ifdef ZIPINSTALL
  357. ifeq ($(OS_TARGET),linux)
  358. UNIXINSTALLDIR=1
  359. endif
  360. ifeq ($(OS_TARGET),freebsd)
  361. UNIXINSTALLDIR=1
  362. endif
  363. else
  364. ifeq ($(OS_SOURCE),linux)
  365. UNIXINSTALLDIR=1
  366. endif
  367. ifeq ($(OS_SOURCE),freebsd)
  368. UNIXINSTALLDIR=1
  369. endif
  370. endif
  371. ifndef INSTALL_PREFIX
  372. ifdef UNIXINSTALLDIR
  373. INSTALL_PREFIX=/usr/local
  374. else
  375. ifdef INSTALL_FPCPACKAGE
  376. INSTALL_BASEDIR:=/pp
  377. else
  378. INSTALL_BASEDIR:=/$(PACKAGE_NAME)
  379. endif
  380. endif
  381. endif
  382. export INSTALL_PREFIX
  383. ifndef DIST_DESTDIR
  384. DIST_DESTDIR:=$(BASEDIR)
  385. endif
  386. export DIST_DESTDIR
  387. ifndef INSTALL_BASEDIR
  388. ifdef UNIXINSTALLDIR
  389. ifdef INSTALL_FPCPACKAGE
  390. INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
  391. else
  392. INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
  393. endif
  394. else
  395. INSTALL_BASEDIR:=$(INSTALL_PREFIX)
  396. endif
  397. endif
  398. ifndef INSTALL_BINDIR
  399. ifdef UNIXINSTALLDIR
  400. INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
  401. else
  402. INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
  403. ifdef INSTALL_FPCPACKAGE
  404. INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(OS_TARGET)
  405. endif
  406. endif
  407. endif
  408. ifndef INSTALL_UNITDIR
  409. INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(OS_TARGET)
  410. ifdef INSTALL_FPCPACKAGE
  411. INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
  412. endif
  413. endif
  414. ifndef INSTALL_LIBDIR
  415. ifdef UNIXINSTALLDIR
  416. INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
  417. else
  418. INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
  419. endif
  420. endif
  421. ifndef INSTALL_SOURCEDIR
  422. ifdef UNIXINSTALLDIR
  423. ifdef INSTALL_FPCPACKAGE
  424. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  425. else
  426. INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/src/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  427. endif
  428. else
  429. ifdef INSTALL_FPCPACKAGE
  430. INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
  431. else
  432. INSTALL_SOURCEDIRL:=$(INSTALL_BASEDIR)/source
  433. endif
  434. endif
  435. endif
  436. ifndef INSTALL_DOCDIR
  437. ifdef UNIXINSTALLDIR
  438. ifdef INSTALL_FPCPACKAGE
  439. INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
  440. else
  441. INSTALL_DOCDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  442. endif
  443. else
  444. ifdef INSTALL_FPCPACKAGE
  445. INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
  446. else
  447. INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
  448. endif
  449. endif
  450. endif
  451. ifndef INSTALL_EXAMPLEDIR
  452. ifdef UNIXINSTALLDIR
  453. ifdef INSTALL_FPCPACKAGE
  454. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
  455. else
  456. INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
  457. endif
  458. else
  459. ifdef INSTALL_FPCPACKAGE
  460. INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
  461. else
  462. INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
  463. endif
  464. endif
  465. endif
  466. ifndef INSTALL_DATADIR
  467. INSTALL_DATADIR=$(INSTALL_BASEDIR)
  468. endif
  469. override FPCOPTDEF=$(CPU_TARGET)
  470. ifneq ($(OS_TARGET),$(OS_SOURCE))
  471. override FPCOPT+=-T$(OS_TARGET)
  472. endif
  473. ifdef UNITDIR
  474. override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
  475. endif
  476. ifdef LIBDIR
  477. override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
  478. endif
  479. ifdef OBJDIR
  480. override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
  481. endif
  482. ifdef INCDIR
  483. override FPCOPT+=$(addprefix -Fi,$(INCDIR))
  484. endif
  485. ifdef LINKSMART
  486. override FPCOPT+=-XX
  487. endif
  488. ifdef CREATESMART
  489. override FPCOPT+=-CX
  490. endif
  491. ifdef DEBUG
  492. override FPCOPT+=-gl
  493. override FPCOPTDEF+=DEBUG
  494. endif
  495. ifdef RELEASE
  496. override FPCOPT+=-Xs -OG2p3 -n
  497. override FPCOPTDEF+=RELEASE
  498. endif
  499. ifdef STRIP
  500. override FPCOPT+=-Xs
  501. endif
  502. ifdef OPTIMIZE
  503. override FPCOPT+=-OG2p3
  504. endif
  505. ifdef VERBOSE
  506. override FPCOPT+=-vwni
  507. endif
  508. ifdef COMPILER_OPTIONS
  509. override FPCOPT+=$(COMPILER_OPTIONS)
  510. endif
  511. ifdef COMPILER_UNITDIR
  512. override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
  513. endif
  514. ifdef COMPILER_LIBRARYDIR
  515. override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
  516. endif
  517. ifdef COMPILER_OBJECTDIR
  518. override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
  519. endif
  520. ifdef COMPILER_INCLUDEDIR
  521. override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
  522. endif
  523. ifdef COMPILER_TARGETDIR
  524. override FPCOPT+=-FE$(COMPILER_TARGETDIR)
  525. ifeq ($(COMPILER_TARGETDIR),.)
  526. override TARGETDIRPREFIX=
  527. else
  528. override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
  529. endif
  530. endif
  531. ifdef COMPILER_UNITTARGETDIR
  532. override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
  533. ifeq ($(COMPILER_UNITTARGETDIR),.)
  534. override UNITTARGETDIRPREFIX=
  535. else
  536. override UNITTARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
  537. endif
  538. else
  539. ifdef COMPILER_TARGETDIR
  540. override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
  541. override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
  542. endif
  543. endif
  544. ifdef OPT
  545. override FPCOPT+=$(OPT)
  546. endif
  547. ifdef FPCOPTDEF
  548. override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
  549. endif
  550. ifdef CFGFILE
  551. override FPCOPT+=@$(CFGFILE)
  552. endif
  553. ifeq ($(OS_SOURCE),win32)
  554. USEENV=1
  555. endif
  556. ifdef USEENV
  557. override FPCEXTCMD:=$(FPCOPT)
  558. override FPCOPT:=!FPCEXTCMD
  559. export FPCEXTCMD
  560. endif
  561. override COMPILER:=$(FPC) $(FPCOPT)
  562. ifeq (,$(findstring -s ,$(COMPILER)))
  563. EXECPPAS=
  564. else
  565. ifeq ($(OS_SOURCE),$(OS_TARGET))
  566. EXECPPAS:=@$(PPAS)
  567. endif
  568. endif
  569. .PHONY: fpc_loaders
  570. ifdef TARGET_LOADERS
  571. override ALLTARGET+=fpc_loaders
  572. override CLEANTARGET+=fpc_loaders_clean
  573. override INSTALLTARGET+=fpc_loaders_install
  574. override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))
  575. endif
  576. %$(OEXT): %$(LOADEREXT)
  577. $(AS) -o $*$(OEXT) $<
  578. fpc_loaders: $(LOADEROFILES)
  579. fpc_loaders_clean:
  580. -$(DEL) $(LOADEROFILES)
  581. fpc_loaders_install:
  582. $(MKDIR) $(INSTALL_UNITDIR)
  583. $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)
  584. .PHONY: fpc_units
  585. ifdef TARGET_UNITS
  586. override ALLTARGET+=fpc_units
  587. override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
  588. override INSTALLPPUFILES+=$(UNITPPUFILES)
  589. override CLEANPPUFILES+=$(UNITPPUFILES)
  590. endif
  591. fpc_units: $(UNITPPUFILES)
  592. ifdef TARGET_RSTS
  593. override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
  594. override CLEANRSTFILES+=$(RSTFILES)
  595. endif
  596. .PHONY: fpc_packages fpc_all fpc_smart fpc_debug
  597. $(FPCMADE): $(ALLTARGET)
  598. @$(ECHO) Compiled > $(FPCMADE)
  599. fpc_packages: $(COMPILEPACKAGES)
  600. fpc_all: fpc_packages $(FPCMADE)
  601. fpc_smart:
  602. $(MAKE) all LINKSMART=1 CREATESMART=1
  603. fpc_debug:
  604. $(MAKE) all DEBUG=1
  605. .SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
  606. %$(PPUEXT): %.pp
  607. $(COMPILER) $<
  608. $(EXECPPAS)
  609. %$(PPUEXT): %.pas
  610. $(COMPILER) $<
  611. $(EXECPPAS)
  612. %$(EXEEXT): %.pp
  613. $(COMPILER) $<
  614. $(EXECPPAS)
  615. %$(EXEEXT): %.pas
  616. $(COMPILER) $<
  617. $(EXECPPAS)
  618. vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  619. vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
  620. vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
  621. .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
  622. ifdef INSTALL_UNITS
  623. override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
  624. endif
  625. ifdef INSTALLPPUFILES
  626. ifdef PPUFILES
  627. override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
  628. override INSTALLPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES)))
  629. else
  630. override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
  631. override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
  632. override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES)))
  633. endif
  634. endif
  635. ifdef INSTALLEXEFILES
  636. override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES))
  637. endif
  638. fpc_install: $(INSTALLTARGET)
  639. ifdef INSTALLEXEFILES
  640. $(MKDIR) $(INSTALL_BINDIR)
  641. ifdef UPXPROG
  642. -$(UPXPROG) $(INSTALLEXEFILES)
  643. endif
  644. $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
  645. endif
  646. ifdef INSTALLPPUFILES
  647. $(MKDIR) $(INSTALL_UNITDIR)
  648. $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
  649. ifneq ($(INSTALLPPULINKFILES),)
  650. $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
  651. endif
  652. ifneq ($(wildcard $(LIB_FULLNAME)),)
  653. $(MKDIR) $(INSTALL_LIBDIR)
  654. $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
  655. ifdef inUnix
  656. ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
  657. endif
  658. endif
  659. endif
  660. ifdef INSTALL_FILES
  661. $(MKDIR) $(INSTALL_DATADIR)
  662. $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
  663. endif
  664. fpc_sourceinstall: distclean
  665. $(MKDIR) $(INSTALL_SOURCEDIR)
  666. $(COPYTREE) $(BASEDIR) $(INSTALL_SOURCEDIR)
  667. fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
  668. ifdef HASEXAMPLES
  669. $(MKDIR) $(INSTALL_EXAMPLEDIR)
  670. endif
  671. ifdef EXAMPLESOURCEFILES
  672. $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
  673. endif
  674. ifdef TARGET_EXAMPLEDIRS
  675. $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
  676. endif
  677. fpc_distinstall: install exampleinstall
  678. .PHONY: fpc_clean fpc_cleanall fpc_distclean
  679. ifdef EXEFILES
  680. override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
  681. endif
  682. ifdef CLEAN_UNITS
  683. override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
  684. endif
  685. ifdef CLEANPPUFILES
  686. override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
  687. ifdef PPUFILES
  688. CLEANPPULINKFILES:=$(shell $(PPUFILES) $(CLEANPPUFILES))
  689. else
  690. CLEANPPULINKFILES:=$(wildcard $(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))))
  691. endif
  692. override CLEANPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))
  693. endif
  694. fpc_clean: $(CLEANTARGET)
  695. ifdef CLEANEXEFILES
  696. -$(DEL) $(CLEANEXEFILES)
  697. endif
  698. ifdef CLEANPPUFILES
  699. -$(DEL) $(CLEANPPUFILES)
  700. endif
  701. ifneq ($(CLEANPPULINKFILES),)
  702. -$(DEL) $(CLEANPPULINKFILES)
  703. endif
  704. ifdef CLEANRSTFILES
  705. -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
  706. endif
  707. ifdef CLEAN_FILES
  708. -$(DEL) $(CLEAN_FILES)
  709. endif
  710. ifdef LIB_NAME
  711. -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
  712. endif
  713. -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
  714. fpc_distclean: clean
  715. ifdef COMPILER_UNITTARGETDIR
  716. TARGETDIRCLEAN=fpc_clean
  717. endif
  718. fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)
  719. ifdef CLEANEXEFILES
  720. -$(DEL) $(CLEANEXEFILES)
  721. endif
  722. -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
  723. -$(DELTREE) *$(SMARTEXT)
  724. -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
  725. ifdef AOUTEXT
  726. -$(DEL) *$(AOUTEXT)
  727. endif
  728. .PHONY: fpc_info
  729. fpc_info:
  730. @$(ECHO)
  731. @$(ECHO) == Package info ==
  732. @$(ECHO) Package Name..... $(PACKAGE_NAME)
  733. @$(ECHO) Package Version.. $(PACKAGE_VERSION)
  734. @$(ECHO)
  735. @$(ECHO) == Configuration info ==
  736. @$(ECHO)
  737. @$(ECHO) FPC.......... $(FPC)
  738. @$(ECHO) FPC Version.. $(FPC_VERSION)
  739. @$(ECHO) Source CPU... $(CPU_SOURCE)
  740. @$(ECHO) Target CPU... $(CPU_TARGET)
  741. @$(ECHO) Source OS.... $(OS_SOURCE)
  742. @$(ECHO) Target OS.... $(OS_TARGET)
  743. @$(ECHO)
  744. @$(ECHO) == Directory info ==
  745. @$(ECHO)
  746. @$(ECHO) Basedir......... $(BASEDIR)
  747. @$(ECHO) FPCDir.......... $(FPCDIR)
  748. @$(ECHO) UnitsDir........ $(UNITSDIR)
  749. @$(ECHO) PackagesDir..... $(PACKAGESDIR)
  750. @$(ECHO)
  751. @$(ECHO) GCC library..... $(GCCLIBDIR)
  752. @$(ECHO) Other library... $(OTHERLIBDIR)
  753. @$(ECHO)
  754. @$(ECHO) == Tools info ==
  755. @$(ECHO)
  756. @$(ECHO) Pwd....... $(PWD)
  757. @$(ECHO) Echo...... $(ECHO)
  758. @$(ECHO) PPUMove... $(PPUMOVE)
  759. @$(ECHO) PPUFiles.. $(PPUFILES)
  760. @$(ECHO) Date...... $(DATE)
  761. @$(ECHO) Upx....... $(UPXPROG)
  762. @$(ECHO) Zip....... $(ZIPPROG)
  763. @$(ECHO)
  764. @$(ECHO) == Object info ==
  765. @$(ECHO)
  766. @$(ECHO) Target Loaders...... $(TARGET_LOADERS)
  767. @$(ECHO) Target Units........ $(TARGET_UNITS)
  768. @$(ECHO) Target Programs..... $(TARGET_PROGRAMS)
  769. @$(ECHO) Target Dirs......... $(TARGET_DIRS)
  770. @$(ECHO) Target Examples..... $(TARGET_EXAMPLES)
  771. @$(ECHO) Target ExampleDirs.. $(TARGET_EXAMPLEDIRS)
  772. @$(ECHO)
  773. @$(ECHO) Clean Units......... $(CLEAN_UNITS)
  774. @$(ECHO) Clean Files......... $(CLEAN_FILES)
  775. @$(ECHO)
  776. @$(ECHO) Install Units....... $(INSTALL_UNITS)
  777. @$(ECHO) Install Files....... $(INSTALL_FILES)
  778. @$(ECHO)
  779. @$(ECHO) == Install info ==
  780. @$(ECHO)
  781. @$(ECHO) DateStr.............. $(DATESTR)
  782. @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
  783. @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
  784. @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
  785. @$(ECHO)
  786. @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
  787. @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
  788. @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
  789. @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
  790. @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
  791. @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
  792. @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
  793. @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
  794. @$(ECHO)
  795. @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
  796. @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
  797. @$(ECHO)
  798. all: fpc_all
  799. debug: fpc_debug
  800. examples: fpc_examples
  801. smart: fpc_smart
  802. shared: fpc_shared
  803. install: fpc_install
  804. sourceinstall: fpc_sourceinstall
  805. exampleinstall: fpc_exampleinstall
  806. distinstall: fpc_distinstall
  807. zipinstall:
  808. zipsourceinstall:
  809. zipexampleinstall:
  810. zipdistinstall:
  811. clean: fpc_clean
  812. distclean: fpc_distclean
  813. cleanall: fpc_cleanall
  814. info: fpc_info
  815. .PHONY: all debug examples smart shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info
  816. ifneq ($(wildcard fpcmake.loc),)
  817. include fpcmake.loc
  818. endif
  819. include $(INC)/makefile.inc
  820. SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
  821. include $(PROCINC)/makefile.cpu
  822. SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
  823. SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
  824. %$(OEXT) : %.as
  825. $(AS) -o $*$(OEXT) $*.as
  826. $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pas $(SYSDEPS)
  827. $(COMPILER) -Us -Sg $(SYSTEMUNIT).pas $(REDIR)
  828. objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
  829. $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp $(REDIR)
  830. strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
  831. $(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
  832. $(SYSTEMUNIT)$(PPUEXT)
  833. ports$(PPUEXT) : ports.pas objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  834. doscalls$(PPUEXT) : doscalls.pas strings$(PPUEXT) objects$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  835. kbdcalls$(PPUEXT) : kbdcalls.pas $(SYSTEMUNIT)$(PPUEXT)
  836. moucalls$(PPUEXT) : moucalls.pas $(SYSTEMUNIT)$(PPUEXT)
  837. moncalls$(PPUEXT) : moncalls.pas strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  838. os2def$(PPUEXT) : os2def.pas $(SYSTEMUNIT)$(PPUEXT)
  839. pmwin$(PPUEXT) : pmwin.pas os2def$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  840. pmbitmap$(PPUEXT) : pmbitmap.pas $(SYSTEMUNIT)$(PPUEXT)
  841. pmgpi$(PPUEXT) : pmgpi.pas pmbitmap$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  842. dive$(PPUEXT) : dive.pas os2def$(PPUEXT) pmwin$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  843. dynlibs$(PPUEXT) : $(INC)/dynlibs.pp doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  844. dos$(PPUEXT) : dos.pas $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
  845. doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  846. crt$(PPUEXT) : crt.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
  847. objects$(PPUEXT) : $(INC)/objects.pp objinc.inc $(SYSTEMUNIT)$(PPUEXT)
  848. printer$(PPUEXT) : printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
  849. sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/*.inc) \
  850. objpas$(PPUEXT) dos$(PPUEXT) doscalls$(PPUEXT)
  851. $(COMPILER) -I$(OBJPASDIR) sysutils.pp $(REDIR)
  852. typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
  853. $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
  854. math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
  855. $(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
  856. varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
  857. $(OBJPASDIR)/varutilh.inc varutils.pp
  858. $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
  859. ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  860. cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
  861. mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  862. getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
  863. heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
  864. $(COMPILER) -Sg $(INC)/heaptrc.pp $(REDIR)
  865. lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT)