Makefile 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411
  1. #
  2. # Makefile generated by fpcmake v1.00 [2000/12/22]
  3. #
  4. defaultrule: all
  5. #####################################################################
  6. # Autodetect OS (Linux or Dos or Windows NT or OS/2)
  7. # define inUnix when running under Unix (Linux,FreeBSD)
  8. # define inWinNT when running under WinNT
  9. # define inOS2 when running under OS/2
  10. #####################################################################
  11. # We need only / in the path
  12. override PATH:=$(subst \,/,$(PATH))
  13. # Search for PWD and determine also if we are under linux
  14. PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(subst ;, ,$(PATH)))))
  15. ifeq ($(PWD),)
  16. PWD:=$(strip $(wildcard $(addsuffix /pwd,$(subst :, ,$(PATH)))))
  17. ifeq ($(PWD),)
  18. nopwd:
  19. @echo You need the GNU utils package to use this Makefile!
  20. @echo Get ftp://ftp.freepascal.org/pub/fpc/dist/go32v2/utilgo32.zip
  21. @exit
  22. else
  23. inUnix=1
  24. PWD:=$(firstword $(PWD))
  25. endif
  26. else
  27. PWD:=$(firstword $(PWD))
  28. endif
  29. # Detect NT - NT sets OS to Windows_NT
  30. # Detect OS/2 - OS/2 has OS2_SHELL defined
  31. ifndef inUnix
  32. ifeq ($(OS),Windows_NT)
  33. inWinNT=1
  34. else
  35. ifdef OS2_SHELL
  36. inOS2=1
  37. endif
  38. endif
  39. endif
  40. # The extension of executables
  41. ifdef inUnix
  42. SRCEXEEXT=
  43. else
  44. SRCEXEEXT=.exe
  45. endif
  46. # The extension of batch files / scripts
  47. ifdef inUnix
  48. BATCHEXT=.sh
  49. else
  50. ifdef inOS2
  51. BATCHEXT=.cmd
  52. else
  53. BATCHEXT=.bat
  54. endif
  55. endif
  56. # Path Separator, the subst trick is necessary for the \ that can't exists
  57. # at the end of a line
  58. ifdef inUnix
  59. PATHSEP=/
  60. else
  61. PATHSEP=$(subst /,\,/)
  62. endif
  63. # The path which is searched separated by spaces
  64. ifdef inUnix
  65. SEARCHPATH=$(subst :, ,$(PATH))
  66. else
  67. SEARCHPATH=$(subst ;, ,$(PATH))
  68. endif
  69. # Base dir
  70. ifdef PWD
  71. BASEDIR:=$(shell $(PWD))
  72. else
  73. BASEDIR=.
  74. endif
  75. #####################################################################
  76. # Default target
  77. #####################################################################
  78. override OS_TARGET:=os2
  79. override CPU_TARGET:=i386
  80. #####################################################################
  81. # FPC version/target Detection
  82. #####################################################################
  83. # What compiler to use ?
  84. ifndef FPC
  85. # Compatibility with old makefiles
  86. ifdef PP
  87. FPC=$(PP)
  88. else
  89. FPC=ppc386
  90. endif
  91. endif
  92. override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
  93. override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
  94. # Target OS
  95. ifndef OS_TARGET
  96. OS_TARGET:=$(shell $(FPC) -iTO)
  97. endif
  98. # Source OS
  99. ifndef OS_SOURCE
  100. OS_SOURCE:=$(shell $(FPC) -iSO)
  101. endif
  102. # Target CPU
  103. ifndef CPU_TARGET
  104. CPU_TARGET:=$(shell $(FPC) -iTP)
  105. endif
  106. # Source CPU
  107. ifndef CPU_SOURCE
  108. CPU_SOURCE:=$(shell $(FPC) -iSP)
  109. endif
  110. # FPC version
  111. ifndef FPC_VERSION
  112. FPC_VERSION:=$(shell $(FPC) -iV)
  113. endif
  114. export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
  115. #####################################################################
  116. # Pre Settings
  117. #####################################################################
  118. RTL=..
  119. INC=$(RTL)/inc
  120. PROCINC=$(RTL)/$(CPU_TARGET)
  121. UNITPREFIX=rtl
  122. ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
  123. SYSTEMUNIT=system
  124. else
  125. SYSTEMUNIT=syslinux
  126. endif
  127. # Paths
  128. OBJPASDIR=$(RTL)/objpas
  129. GRAPHDIR=$(INC)/graph
  130. #####################################################################
  131. # FPCDIR Setting
  132. #####################################################################
  133. # Test FPCDIR to look if the RTL dir exists
  134. ifdef FPCDIR
  135. override FPCDIR:=$(subst \,/,$(FPCDIR))
  136. ifeq ($(wildcard $(FPCDIR)/rtl),)
  137. ifeq ($(wildcard $(FPCDIR)/units),)
  138. override FPCDIR=wrong
  139. endif
  140. endif
  141. else
  142. override FPCDIR=wrong
  143. endif
  144. # Default FPCDIR
  145. ifeq ($(FPCDIR),wrong)
  146. override FPCDIR=.
  147. ifeq ($(wildcard $(FPCDIR)/rtl),)
  148. ifeq ($(wildcard $(FPCDIR)/units),)
  149. override FPCDIR=wrong
  150. endif
  151. endif
  152. endif
  153. # Detect FPCDIR
  154. ifeq ($(FPCDIR),wrong)
  155. ifdef inUnix
  156. override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
  157. ifeq ($(wildcard $(FPCDIR)/units),)
  158. override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
  159. endif
  160. else
  161. override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
  162. override FPCDIR:=$(FPCDIR)/..
  163. ifeq ($(wildcard $(FPCDIR)/rtl),)
  164. ifeq ($(wildcard $(FPCDIR)/units),)
  165. override FPCDIR:=$(FPCDIR)/..
  166. ifeq ($(wildcard $(FPCDIR)/rtl),)
  167. ifeq ($(wildcard $(FPCDIR)/units),)
  168. override FPCDIR=c:/pp
  169. endif
  170. endif
  171. endif
  172. endif
  173. endif
  174. endif
  175. #####################################################################
  176. # User Settings
  177. #####################################################################
  178. # Targets
  179. override LOADEROBJECTS+=prt0 prt1 code2 code3
  180. override UNITOBJECTS+=$(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
  181. override RSTOBJECTS+=math
  182. # Clean
  183. # Install
  184. UNITSUBDIR=rtl
  185. ZIPTARGET=install
  186. # Defaults
  187. # Directories
  188. override NEEDINCDIR=$(INC) $(PROCINC)
  189. ifndef TARGETDIR
  190. TARGETDIR=.
  191. endif
  192. # Packages
  193. # Libraries
  194. # Info
  195. INFOTARGET=fpc_infocfg fpc_infoobjects fpc_infoinstall
  196. #####################################################################
  197. # Post Settings
  198. #####################################################################
  199. # Get the system independent include file names.
  200. # This will set the following variables :
  201. # SYSINCNAMES
  202. include $(INC)/makefile.inc
  203. SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
  204. # Get the processor dependent include file names.
  205. # This will set the following variables :
  206. # CPUINCNAMES
  207. include $(PROCINC)/makefile.cpu
  208. SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
  209. # Put system unit dependencies together.
  210. SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
  211. #####################################################################
  212. # Shell tools
  213. #####################################################################
  214. # echo
  215. ifndef ECHO
  216. ECHO:=$(strip $(wildcard $(addsuffix /gecho$(EXEEXT),$(SEARCHPATH))))
  217. ifeq ($(ECHO),)
  218. ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
  219. ifeq ($(ECHO),)
  220. ECHO:=echo
  221. ECHOE:=echo
  222. else
  223. ECHO:=$(firstword $(ECHO))
  224. ECHOE=$(ECHO) -E
  225. endif
  226. else
  227. ECHO:=$(firstword $(ECHO))
  228. ECHOE=$(ECHO) -E
  229. endif
  230. endif
  231. # To copy pograms
  232. ifndef COPY
  233. COPY:=cp -fp
  234. endif
  235. # Copy a whole tree
  236. ifndef COPYTREE
  237. COPYTREE:=cp -rfp
  238. endif
  239. # To move pograms
  240. ifndef MOVE
  241. MOVE:=mv -f
  242. endif
  243. # Check delete program
  244. ifndef DEL
  245. DEL:=rm -f
  246. endif
  247. # Check deltree program
  248. ifndef DELTREE
  249. DELTREE:=rm -rf
  250. endif
  251. # To install files
  252. ifndef INSTALL
  253. ifdef inUnix
  254. INSTALL:=install -c -m 644
  255. else
  256. INSTALL:=$(COPY)
  257. endif
  258. endif
  259. # To install programs
  260. ifndef INSTALLEXE
  261. ifdef inUnix
  262. INSTALLEXE:=install -c -m 755
  263. else
  264. INSTALLEXE:=$(COPY)
  265. endif
  266. endif
  267. # To make a directory.
  268. ifndef MKDIR
  269. ifdef inUnix
  270. MKDIR:=install -m 755 -d
  271. else
  272. MKDIR:=ginstall -m 755 -d
  273. endif
  274. endif
  275. export ECHO ECHOE COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
  276. #####################################################################
  277. # Default Tools
  278. #####################################################################
  279. # assembler, redefine it if cross compiling
  280. ifndef AS
  281. AS=as
  282. endif
  283. # linker, but probably not used
  284. ifndef LD
  285. LD=ld
  286. endif
  287. # ppas.bat / ppas.sh
  288. PPAS=ppas$(BATCHEXT)
  289. # ldconfig to rebuild .so cache
  290. ifdef inUnix
  291. LDCONFIG=ldconfig
  292. else
  293. LDCONFIG=
  294. endif
  295. # ppumove
  296. ifndef PPUMOVE
  297. PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
  298. ifeq ($(PPUMOVE),)
  299. PPUMOVE=
  300. else
  301. PPUMOVE:=$(firstword $(PPUMOVE))
  302. endif
  303. endif
  304. export PPUMOVE
  305. # ppufiles
  306. ifndef PPUFILES
  307. PPUFILES:=$(strip $(wildcard $(addsuffix /ppufiles$(SRCEXEEXT),$(SEARCHPATH))))
  308. ifeq ($(PPUFILES),)
  309. PPUFILES=
  310. else
  311. PPUFILES:=$(firstword $(PPUFILES))
  312. endif
  313. endif
  314. export PPUFILES
  315. # Look if UPX is found for go32v2 and win32. We can't use $UPX becuase
  316. # upx uses that one itself (PFV)
  317. ifndef UPXPROG
  318. ifeq ($(OS_TARGET),go32v2)
  319. UPXPROG:=1
  320. endif
  321. ifeq ($(OS_TARGET),win32)
  322. UPXPROG:=1
  323. endif
  324. ifdef UPXPROG
  325. UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
  326. ifeq ($(UPXPROG),)
  327. UPXPROG=
  328. else
  329. UPXPROG:=$(firstword $(UPXPROG))
  330. endif
  331. else
  332. UPXPROG=
  333. endif
  334. endif
  335. export UPXPROG
  336. # ZipProg, you can't use Zip as the var name (PFV)
  337. ifndef ZIPPROG
  338. ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
  339. ifeq ($(ZIPPROG),)
  340. ZIPPROG=
  341. else
  342. ZIPPROG:=$(firstword $(ZIPPROG))
  343. endif
  344. endif
  345. export ZIPPROG
  346. ZIPOPT=-9
  347. ZIPEXT=.zip
  348. # Tar
  349. ifndef TARPROG
  350. TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
  351. ifeq ($(TARPROG),)
  352. TARPROG=
  353. else
  354. TARPROG:=$(firstword $(TARPROG))
  355. endif
  356. endif
  357. export TARPROG
  358. ifeq ($(USETAR),bz2)
  359. TAROPT=vI
  360. TAREXT=.tar.bz2
  361. else
  362. TAROPT=vz
  363. TAREXT=.tar.gz
  364. endif
  365. #####################################################################
  366. # Default extensions
  367. #####################################################################
  368. # Default needed extensions (Go32v2,Linux)
  369. LOADEREXT=.as
  370. EXEEXT=.exe
  371. PPLEXT=.ppl
  372. PPUEXT=.ppu
  373. OEXT=.o
  374. ASMEXT=.s
  375. SMARTEXT=.sl
  376. STATICLIBEXT=.a
  377. SHAREDLIBEXT=.so
  378. RSTEXT=.rst
  379. FPCMADE=fpcmade
  380. # Go32v1
  381. ifeq ($(OS_TARGET),go32v1)
  382. PPUEXT=.pp1
  383. OEXT=.o1
  384. ASMEXT=.s1
  385. SMARTEXT=.sl1
  386. STATICLIBEXT=.a1
  387. SHAREDLIBEXT=.so1
  388. FPCMADE=fpcmade.v1
  389. endif
  390. # Go32v2
  391. ifeq ($(OS_TARGET),go32v2)
  392. FPCMADE=fpcmade.dos
  393. endif
  394. # Linux
  395. ifeq ($(OS_TARGET),linux)
  396. EXEEXT=
  397. HASSHAREDLIB=1
  398. FPCMADE=fpcmade.lnx
  399. endif
  400. # Linux
  401. ifeq ($(OS_TARGET),freebsd)
  402. EXEEXT=
  403. HASSHAREDLIB=1
  404. FPCMADE=fpcmade.freebsd
  405. endif
  406. # Win32
  407. ifeq ($(OS_TARGET),win32)
  408. PPUEXT=.ppw
  409. OEXT=.ow
  410. ASMEXT=.sw
  411. SMARTEXT=.slw
  412. STATICLIBEXT=.aw
  413. SHAREDLIBEXT=.dll
  414. FPCMADE=fpcmade.w32
  415. endif
  416. # OS/2
  417. ifeq ($(OS_TARGET),os2)
  418. PPUEXT=.ppo
  419. ASMEXT=.so2
  420. OEXT=.oo2
  421. SMARTEXT=.so
  422. STATICLIBEXT=.ao2
  423. SHAREDLIBEXT=.dll
  424. FPCMADE=fpcmade.os2
  425. endif
  426. # library prefix
  427. LIBPREFIX=lib
  428. ifeq ($(OS_TARGET),go32v2)
  429. LIBPREFIX=
  430. endif
  431. ifeq ($(OS_TARGET),go32v1)
  432. LIBPREFIX=
  433. endif
  434. # determine which .pas extension is used
  435. ifndef PASEXT
  436. ifdef EXEOBJECTS
  437. override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(EXEOBJECTS)))))
  438. else
  439. override TESTPAS:=$(strip $(wildcard $(addsuffix .pas,$(firstword $(UNITOBJECTS)))))
  440. endif
  441. ifeq ($(TESTPAS),)
  442. PASEXT=.pp
  443. else
  444. PASEXT=.pas
  445. endif
  446. endif
  447. #####################################################################
  448. # Default Directories
  449. #####################################################################
  450. # Linux and freebsd use unix dirs with /usr/bin, /usr/lib
  451. # When zipping use the target as default, when normal install then
  452. # use the source os as default
  453. ifdef ZIPNAME
  454. # Zipinstall
  455. ifeq ($(OS_TARGET),linux)
  456. UNIXINSTALLDIR=1
  457. endif
  458. ifeq ($(OS_TARGET),freebsd)
  459. UNIXINSTALLDIR=1
  460. endif
  461. else
  462. # Normal install
  463. ifeq ($(OS_SOURCE),linux)
  464. UNIXINSTALLDIR=1
  465. endif
  466. ifeq ($(OS_SOURCE),freebsd)
  467. UNIXINSTALLDIR=1
  468. endif
  469. endif
  470. # set the prefix directory where to install everything
  471. ifndef PREFIXINSTALLDIR
  472. ifdef UNIXINSTALLDIR
  473. PREFIXINSTALLDIR=/usr
  474. else
  475. PREFIXINSTALLDIR=/pp
  476. endif
  477. endif
  478. export PREFIXINSTALLDIR
  479. # Where to place the resulting zip files
  480. ifndef DESTZIPDIR
  481. DESTZIPDIR:=$(BASEDIR)
  482. endif
  483. export DESTZIPDIR
  484. #####################################################################
  485. # Install Directories
  486. #####################################################################
  487. # set the base directory where to install everything
  488. ifndef BASEINSTALLDIR
  489. ifdef UNIXINSTALLDIR
  490. BASEINSTALLDIR=$(PREFIXINSTALLDIR)/lib/fpc/$(FPC_VERSION)
  491. else
  492. BASEINSTALLDIR=$(PREFIXINSTALLDIR)
  493. endif
  494. endif
  495. # set the directory where to install the binaries
  496. ifndef BININSTALLDIR
  497. ifdef UNIXINSTALLDIR
  498. BININSTALLDIR=$(PREFIXINSTALLDIR)/bin
  499. else
  500. BININSTALLDIR=$(BASEINSTALLDIR)/bin/$(OS_TARGET)
  501. endif
  502. endif
  503. # set the directory where to install the units.
  504. ifndef UNITINSTALLDIR
  505. UNITINSTALLDIR=$(BASEINSTALLDIR)/units/$(OS_TARGET)
  506. ifdef UNITSUBDIR
  507. UNITINSTALLDIR:=$(UNITINSTALLDIR)/$(UNITSUBDIR)
  508. endif
  509. endif
  510. # Where to install shared libraries
  511. ifndef LIBINSTALLDIR
  512. ifdef UNIXINSTALLDIR
  513. LIBINSTALLDIR=$(PREFIXINSTALLDIR)/lib
  514. else
  515. LIBINSTALLDIR=$(UNITINSTALLDIR)
  516. endif
  517. endif
  518. # Where the source files will be stored
  519. ifndef SOURCEINSTALLDIR
  520. ifdef UNIXINSTALLDIR
  521. SOURCEINSTALLDIR=$(PREFIXINSTALLDIR)/src/fpc-$(FPC_VERSION)
  522. else
  523. SOURCEINSTALLDIR=$(BASEINSTALLDIR)/source
  524. endif
  525. ifdef SOURCESUBDIR
  526. SOURCEINSTALLDIR:=$(SOURCEINSTALLDIR)/$(SOURCESUBDIR)
  527. endif
  528. endif
  529. # Where the doc files will be stored
  530. ifndef DOCINSTALLDIR
  531. ifdef UNIXINSTALLDIR
  532. DOCINSTALLDIR=$(PREFIXINSTALLDIR)/doc/fpc-$(FPC_VERSION)
  533. else
  534. DOCINSTALLDIR=$(BASEINSTALLDIR)/doc
  535. endif
  536. endif
  537. # Where to install the examples, under linux we use the doc dir
  538. # because the copytree command will create a subdir itself
  539. ifndef EXAMPLEINSTALLDIR
  540. ifdef UNIXINSTALLDIR
  541. EXAMPLEINSTALLDIR=$(DOCINSTALLDIR)/examples
  542. else
  543. EXAMPLEINSTALLDIR=$(BASEINSTALLDIR)/examples
  544. endif
  545. ifdef EXAMPLESUBDIR
  546. EXAMPLEINSTALLDIR:=$(EXAMPLEINSTALLDIR)/$(EXAMPLESUBDIR)
  547. endif
  548. endif
  549. # Where the some extra (data)files will be stored
  550. ifndef DATAINSTALLDIR
  551. DATAINSTALLDIR=$(BASEINSTALLDIR)
  552. endif
  553. #####################################################################
  554. # Redirection
  555. #####################################################################
  556. ifndef REDIRFILE
  557. REDIRFILE=log
  558. endif
  559. ifdef REDIR
  560. ifndef inUnix
  561. override FPC=redir -eo $(FPC)
  562. endif
  563. # set the verbosity to max
  564. override FPCOPT+=-va
  565. override REDIR:= >> $(REDIRFILE)
  566. endif
  567. #####################################################################
  568. # Compiler Command Line
  569. #####################################################################
  570. # Load commandline OPTDEF and add FPC_CPU define
  571. override FPCOPTDEF:=-d$(CPU_TARGET)
  572. # Load commandline OPT and add target and unit dir to be sure
  573. ifneq ($(OS_TARGET),$(OS_SOURCE))
  574. override FPCOPT+=-T$(OS_TARGET)
  575. endif
  576. # User dirs should be first, so they are looked at first
  577. ifdef UNITDIR
  578. override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
  579. endif
  580. ifdef LIBDIR
  581. override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
  582. endif
  583. ifdef OBJDIR
  584. override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
  585. endif
  586. ifdef INCDIR
  587. override FPCOPT+=$(addprefix -Fi,$(INCDIR))
  588. endif
  589. # Smartlinking
  590. ifdef LINKSMART
  591. override FPCOPT+=-XX
  592. endif
  593. # Smartlinking creation
  594. ifdef CREATESMART
  595. override FPCOPT+=-CX
  596. endif
  597. # Debug
  598. ifdef DEBUG
  599. override FPCOPT+=-gl -dDEBUG
  600. endif
  601. # Release mode (strip, optimize and don't load ppc386.cfg)
  602. # 0.99.12b has a bug in the optimizer so don't use it by default
  603. ifdef RELEASE
  604. ifeq ($(FPC_VERSION),0.99.12)
  605. override FPCOPT+=-Xs -OGp3 -n
  606. else
  607. override FPCOPT+=-Xs -OG2p3 -n
  608. endif
  609. endif
  610. # Strip
  611. ifdef STRIP
  612. override FPCOPT+=-Xs
  613. endif
  614. # Optimizer
  615. ifdef OPTIMIZE
  616. override FPCOPT+=-OG2p3
  617. endif
  618. # Verbose settings (warning,note,info)
  619. ifdef VERBOSE
  620. override FPCOPT+=-vwni
  621. endif
  622. ifdef UNITSDIR
  623. override FPCOPT+=-Fu$(UNITSDIR)
  624. endif
  625. ifdef NEEDINCDIR
  626. override FPCOPT+=$(addprefix -Fi,$(NEEDINCDIR))
  627. endif
  628. # Target dirs and the prefix to use for clean/install
  629. ifdef TARGETDIR
  630. override FPCOPT+=-FE$(TARGETDIR)
  631. ifeq ($(TARGETDIR),.)
  632. override TARGETDIRPREFIX=
  633. else
  634. override TARGETDIRPREFIX=$(TARGETDIR)/
  635. endif
  636. endif
  637. ifdef UNITTARGETDIR
  638. override FPCOPT+=-FU$(UNITTARGETDIR)
  639. ifeq ($(UNITTARGETDIR),.)
  640. override UNITTARGETDIRPREFIX=
  641. else
  642. override UNITTARGETDIRPREFIX=$(TARGETDIR)/
  643. endif
  644. else
  645. ifdef TARGETDIR
  646. override UNITTARGETDIR=$(TARGETDIR)
  647. override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
  648. endif
  649. endif
  650. # Add commandline options last so they can override
  651. ifdef OPT
  652. override FPCOPT+=$(OPT)
  653. endif
  654. # Add defines from FPCOPTDEF to FPCOPT
  655. ifdef FPCOPTDEF
  656. override FPCOPT+=$(FPCOPTDEF)
  657. endif
  658. # Error file ?
  659. ifdef ERRORFILE
  660. override FPCOPT+=-Fr$(ERRORFILE)
  661. endif
  662. # Was a config file specified ?
  663. ifdef CFGFILE
  664. override FPCOPT+=@$(CFGFILE)
  665. endif
  666. # For win32 the options are passed using the environment FPCEXTCMD
  667. ifeq ($(OS_SOURCE),win32)
  668. override FPCEXTCMD:=$(FPCOPT)
  669. override FPCOPT:=!FPCEXTCMD
  670. export FPCEXTCMD
  671. endif
  672. # Compiler commandline
  673. override COMPILER:=$(FPC) $(FPCOPT)
  674. # also call ppas if with command option -s
  675. # but only if the OS_SOURCE and OS_TARGE are equal
  676. ifeq (,$(findstring -s ,$(COMPILER)))
  677. EXECPPAS=
  678. else
  679. ifeq ($(OS_SOURCE),$(OS_TARGET))
  680. EXECPPAS:=@$(PPAS)
  681. endif
  682. endif
  683. #####################################################################
  684. # Standard rules
  685. #####################################################################
  686. all: fpc_all
  687. debug: fpc_debug
  688. smart: fpc_smart
  689. shared: fpc_shared
  690. showinstall: fpc_showinstall
  691. install: fpc_install
  692. sourceinstall: fpc_sourceinstall
  693. exampleinstall: fpc_exampleinstall
  694. zipinstall: fpc_zipinstall
  695. zipsourceinstall: fpc_zipsourceinstall
  696. zipexampleinstall: fpc_zipexampleinstall
  697. clean: fpc_clean
  698. distclean: fpc_distclean
  699. cleanall: fpc_cleanall
  700. info: fpc_info
  701. .PHONY: all debug smart shared showinstall install sourceinstall exampleinstall zipinstall zipsourceinstall zipexampleinstall clean distclean cleanall info
  702. #####################################################################
  703. # Loaders
  704. #####################################################################
  705. .PHONY: fpc_loaders
  706. %$(OEXT): %$(LOADEREXT)
  707. $(AS) -o $*$(OEXT) $<
  708. override ALLTARGET+=fpc_loaders
  709. override CLEANTARGET+=fpc_loaders_clean
  710. override SHOWINSTALLTARGET+=fpc_loaders_showinstall
  711. override INSTALLTARGET+=fpc_loaders_install
  712. override LOADEROFILES:=$(addsuffix $(OEXT),$(LOADEROBJECTS))
  713. fpc_loaders: $(LOADEROFILES)
  714. fpc_loaders_clean:
  715. -$(DEL) $(LOADEROFILES)
  716. fpc_loaders_showinstall:
  717. @$(ECHO) -e $(addprefix "\n"$(UNITINSTALLDIR)/,$(LOADEROFILES))
  718. fpc_loaders_install:
  719. $(MKDIR) $(UNITINSTALLDIR)
  720. $(INSTALL) $(LOADEROFILES) $(UNITINSTALLDIR)
  721. #####################################################################
  722. # Units
  723. #####################################################################
  724. .PHONY: fpc_units
  725. override ALLTARGET+=fpc_units
  726. override UNITPPUFILES=$(addsuffix $(PPUEXT),$(UNITOBJECTS))
  727. override INSTALLPPUFILES+=$(UNITPPUFILES)
  728. override CLEANPPUFILES+=$(UNITPPUFILES)
  729. fpc_units: $(UNITPPUFILES)
  730. #####################################################################
  731. # Resource strings
  732. #####################################################################
  733. ifdef RSTOBJECTS
  734. override RSTFILES=$(addsuffix $(RSTEXT),$(RSTOBJECTS))
  735. override CLEANRSTFILES+=$(RSTFILES)
  736. endif
  737. #####################################################################
  738. # General compile rules
  739. #####################################################################
  740. .PHONY: fpc_packages fpc_all fpc_debug
  741. $(FPCMADE): $(ALLTARGET)
  742. @$(ECHO) Compiled > $(FPCMADE)
  743. fpc_packages: $(COMPILEPACKAGES)
  744. fpc_all: fpc_packages $(FPCMADE)
  745. fpc_debug:
  746. $(MAKE) all DEBUG=1
  747. # Search paths for .ppu if targetdir is set
  748. ifdef UNITTARGETDIR
  749. vpath %$(PPUEXT) $(UNITTARGETDIR)
  750. endif
  751. # General compile rules, available for both possible PASEXT
  752. .SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .pp
  753. %$(PPUEXT): %.pp
  754. $(COMPILER) $< $(REDIR)
  755. $(EXECPPAS)
  756. %$(PPUEXT): %.pas
  757. $(COMPILER) $< $(REDIR)
  758. $(EXECPPAS)
  759. %$(EXEEXT): %.pp
  760. $(COMPILER) $< $(REDIR)
  761. $(EXECPPAS)
  762. %$(EXEEXT): %.pas
  763. $(COMPILER) $< $(REDIR)
  764. $(EXECPPAS)
  765. #####################################################################
  766. # Library
  767. #####################################################################
  768. .PHONY: fpc_smart fpc_shared
  769. ifdef LIBVERSION
  770. LIBFULLNAME=$(LIBNAME).$(LIBVERSION)
  771. else
  772. LIBFULLNAME=$(LIBNAME)
  773. endif
  774. # Default sharedlib units are all unit objects
  775. ifndef SHAREDLIBUNITOBJECTS
  776. SHAREDLIBUNITOBJECTS:=$(UNITOBJECTS)
  777. endif
  778. fpc_smart:
  779. $(MAKE) all LINKSMART=1 CREATESMART=1
  780. fpc_shared: all
  781. ifdef HASSHAREDLIB
  782. ifndef LIBNAME
  783. @$(ECHO) "LIBNAME not set"
  784. else
  785. $(PPUMOVE) $(SHAREDLIBUNITOBJECTS) -o$(LIBFULLNAME)
  786. endif
  787. else
  788. @$(ECHO) "Shared Libraries not supported"
  789. endif
  790. #####################################################################
  791. # Install rules
  792. #####################################################################
  793. .PHONY: fpc_showinstall fpc_install
  794. ifdef EXTRAINSTALLUNITS
  795. override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRAINSTALLUNITS))
  796. endif
  797. ifdef INSTALLPPUFILES
  798. override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPUFILES))
  799. ifdef PPUFILES
  800. INSTALLPPULINKFILES:=$(shell $(PPUFILES) -S -O $(INSTALLPPUFILES))
  801. else
  802. INSTALLPPULINKFILES:=$(wildcard $(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))))
  803. endif
  804. override INSTALLPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLPPULINKFILES))
  805. endif
  806. ifdef INSTALLEXEFILES
  807. override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(INSTALLEXEFILES))
  808. endif
  809. fpc_showinstall: $(SHOWINSTALLTARGET)
  810. ifdef INSTALLEXEFILES
  811. @$(ECHO) -e $(addprefix "\n"$(BININSTALLDIR)/,$(INSTALLEXEFILES))
  812. endif
  813. ifdef INSTALLPPUFILES
  814. @$(ECHO) -e $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPUFILES))
  815. ifneq ($(INSTALLPPULINKFILES),)
  816. @$(ECHO) -e $(addprefix "\n"$(UNITINSTALLDIR)/,$(INSTALLPPULINKFILES))
  817. endif
  818. ifneq ($(wildcard $(LIBFULLNAME)),)
  819. @$(ECHO) $(LIBINSTALLDIR)/$(LIBFULLNAME)
  820. ifdef HASSHAREDLIB
  821. @$(ECHO) $(LIBINSTALLDIR)/$(LIBNAME)
  822. endif
  823. endif
  824. endif
  825. ifdef EXTRAINSTALLFILES
  826. @$(ECHO) -e $(addprefix "\n"$(DATAINSTALLDIR)/,$(EXTRAINSTALLFILES))
  827. endif
  828. fpc_install: $(INSTALLTARGET)
  829. # Create UnitInstallFiles
  830. ifdef INSTALLEXEFILES
  831. $(MKDIR) $(BININSTALLDIR)
  832. # Compress the exes if upx is defined
  833. ifdef UPXPROG
  834. -$(UPXPROG) $(INSTALLEXEFILES)
  835. endif
  836. $(INSTALLEXE) $(INSTALLEXEFILES) $(BININSTALLDIR)
  837. endif
  838. ifdef INSTALLPPUFILES
  839. $(MKDIR) $(UNITINSTALLDIR)
  840. $(INSTALL) $(INSTALLPPUFILES) $(UNITINSTALLDIR)
  841. ifneq ($(INSTALLPPULINKFILES),)
  842. $(INSTALL) $(INSTALLPPULINKFILES) $(UNITINSTALLDIR)
  843. endif
  844. ifneq ($(wildcard $(LIBFULLNAME)),)
  845. $(MKDIR) $(LIBINSTALLDIR)
  846. $(INSTALL) $(LIBFULLNAME) $(LIBINSTALLDIR)
  847. ifdef inUnix
  848. ln -sf $(LIBFULLNAME) $(LIBINSTALLDIR)/$(LIBNAME)
  849. endif
  850. endif
  851. endif
  852. ifdef EXTRAINSTALLFILES
  853. $(MKDIR) $(DATAINSTALLDIR)
  854. $(INSTALL) $(EXTRAINSTALLFILES) $(DATAINSTALLDIR)
  855. endif
  856. #####################################################################
  857. # SourceInstall rules
  858. #####################################################################
  859. .PHONY: fpc_sourceinstall
  860. ifndef SOURCETOPDIR
  861. SOURCETOPDIR=$(BASEDIR)
  862. endif
  863. fpc_sourceinstall: clean
  864. $(MKDIR) $(SOURCEINSTALLDIR)
  865. $(COPYTREE) $(SOURCETOPDIR) $(SOURCEINSTALLDIR)
  866. #####################################################################
  867. # exampleinstall rules
  868. #####################################################################
  869. .PHONY: fpc_exampleinstall
  870. fpc_exampleinstall: $(addsuffix _clean,$(EXAMPLEDIROBJECTS))
  871. ifdef EXAMPLESOURCEFILES
  872. $(MKDIR) $(EXAMPLEINSTALLDIR)
  873. $(COPY) $(EXAMPLESOURCEFILES) $(EXAMPLEINSTALLDIR)
  874. endif
  875. ifdef EXAMPLEDIROBJECTS
  876. ifndef EXAMPLESOURCEFILES
  877. $(MKDIR) $(EXAMPLEINSTALLDIR)
  878. endif
  879. $(COPYTREE) $(addsuffix /*,$(EXAMPLEDIROBJECTS)) $(EXAMPLEINSTALLDIR)
  880. endif
  881. #####################################################################
  882. # Zip
  883. #####################################################################
  884. .PHONY: fpc_zipinstall
  885. # Create suffix to add
  886. ifndef PACKAGESUFFIX
  887. PACKAGESUFFIX=$(OS_TARGET)
  888. ifeq ($(OS_TARGET),go32v2)
  889. PACKAGESUFFIX=go32
  890. endif
  891. ifeq ($(OS_TARGET),win32)
  892. PACKAGESUFFIX=w32
  893. endif
  894. ifeq ($(OS_TARGET),os2)
  895. PACKAGESUFFIX=emx
  896. endif
  897. endif
  898. # Temporary path to pack a file
  899. ifndef PACKDIR
  900. ifndef inUnix
  901. PACKDIR=$(BASEDIR)/pack_tmp
  902. else
  903. PACKDIR=/tmp/fpc-pack
  904. endif
  905. endif
  906. # Maybe create default zipname from packagename
  907. ifndef ZIPNAME
  908. ifdef PACKAGENAME
  909. ZIPNAME=$(PACKAGEPREFIX)$(PACKAGENAME)$(PACKAGESUFFIX)
  910. endif
  911. endif
  912. # Use tar by default under linux
  913. ifndef USEZIP
  914. ifdef inUnix
  915. USETAR=1
  916. endif
  917. endif
  918. # Use a wrapper script by default for OS/2
  919. ifdef inOS2
  920. USEZIPWRAPPER=1
  921. endif
  922. # Create commands to create the zip/tar file
  923. ZIPWRAPPER=$(DESTZIPDIR)/fpczip$(BATCHEXT)
  924. ZIPCMD_CDPACK:=cd $(subst /,$(PATHSEP),$(PACKDIR))
  925. ZIPCMD_CDBASE:=cd $(subst /,$(PATHSEP),$(BASEDIR))
  926. ifdef USETAR
  927. ZIPDESTFILE:=$(DESTZIPDIR)/$(ZIPNAME)$(TAREXT)
  928. ZIPCMD_ZIP:=$(TARPROG) cf$(TAROPT) $(ZIPDESTFILE) *
  929. else
  930. ZIPDESTFILE:=$(DESTZIPDIR)/$(ZIPNAME)$(ZIPEXT)
  931. ZIPCMD_ZIP:=$(subst /,$(PATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
  932. endif
  933. fpc_zipinstall:
  934. ifndef ZIPNAME
  935. @$(ECHO) "Please specify ZIPNAME!"
  936. @exit 1
  937. else
  938. $(MAKE) $(ZIPTARGET) PREFIXINSTALLDIR=$(PACKDIR)
  939. $(DEL) $(ZIPDESTFILE)
  940. ifdef USEZIPWRAPPER
  941. ifneq ($(ECHO),echo)
  942. $(ECHO) "$(ZIPCMD_CDPACK)" > $(ZIPWRAPPER)
  943. $(ECHO) "$(ZIPCMD_ZIP)" >> $(ZIPWRAPPER)
  944. $(ECHO) "$(ZIPCMD_CDBASE)" >> $(ZIPWRAPPER)
  945. else
  946. $(ECHO) $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
  947. $(ECHO) $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
  948. $(ECHO) $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
  949. endif
  950. ifdef inUnix
  951. /bin/sh $(ZIPWRAPPER)
  952. else
  953. $(ZIPWRAPPER)
  954. endif
  955. $(DEL) $(ZIPWRAPPER)
  956. else
  957. $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
  958. endif
  959. $(DELTREE) $(PACKDIR)
  960. endif
  961. .PHONY: fpc_zipsourceinstall
  962. fpc_zipsourceinstall:
  963. $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall PACKAGESUFFIX=src
  964. .PHONY: fpc_zipexampleinstall
  965. fpc_zipexampleinstall:
  966. $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall PACKAGESUFFIX=exm
  967. #####################################################################
  968. # Clean rules
  969. #####################################################################
  970. .PHONY: fpc_clean fpc_cleanall fpc_distclean
  971. ifdef EXEFILES
  972. override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
  973. endif
  974. ifdef EXTRACLEANUNITS
  975. override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(EXTRACLEANUNITS))
  976. endif
  977. ifdef CLEANPPUFILES
  978. override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
  979. # Get the .o and .a files created for the units
  980. ifdef PPUFILES
  981. CLEANPPULINKFILES:=$(shell $(PPUFILES) $(CLEANPPUFILES))
  982. else
  983. CLEANPPULINKFILES:=$(wildcard $(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))))
  984. endif
  985. override CLEANPPULINKFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))
  986. endif
  987. fpc_clean: $(CLEANTARGET)
  988. ifdef CLEANEXEFILES
  989. -$(DEL) $(CLEANEXEFILES)
  990. endif
  991. ifdef CLEANPPUFILES
  992. -$(DEL) $(CLEANPPUFILES)
  993. endif
  994. ifneq ($(CLEANPPULINKFILES),)
  995. -$(DEL) $(CLEANPPULINKFILES)
  996. endif
  997. ifdef CLEANRSTFILES
  998. -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
  999. endif
  1000. ifdef EXTRACLEANFILES
  1001. -$(DEL) $(EXTRACLEANFILES)
  1002. endif
  1003. ifdef LIBNAME
  1004. -$(DEL) $(LIBNAME) $(LIBFULLNAME)
  1005. endif
  1006. -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
  1007. fpc_distclean: fpc_clean
  1008. # Also run clean first if targetdir is set. Unittargetdir is always
  1009. # set if targetdir or unittargetdir is specified
  1010. ifdef UNITTARGETDIR
  1011. TARGETDIRCLEAN=fpc_clean
  1012. endif
  1013. fpc_cleanall: $(CLEANTARGET) $(TARGETDIRCLEAN)
  1014. ifdef CLEANEXEFILES
  1015. -$(DEL) $(CLEANEXEFILES)
  1016. endif
  1017. -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
  1018. -$(DELTREE) *$(SMARTEXT)
  1019. -$(DEL) $(FPCMADE) $(PPAS) link.res $(FPCEXTFILE) $(REDIRFILE)
  1020. #####################################################################
  1021. # Info rules
  1022. #####################################################################
  1023. .PHONY: fpc_info fpc_cfginfo fpc_objectinfo fpc_toolsinfo fpc_installinfo \
  1024. fpc_dirinfo
  1025. fpc_info: $(INFOTARGET)
  1026. fpc_infocfg:
  1027. @$(ECHO)
  1028. @$(ECHO) == Configuration info ==
  1029. @$(ECHO)
  1030. @$(ECHO) FPC....... $(FPC)
  1031. @$(ECHO) Version... $(FPC_VERSION)
  1032. @$(ECHO) CPU....... $(CPU_TARGET)
  1033. @$(ECHO) Source.... $(OS_SOURCE)
  1034. @$(ECHO) Target.... $(OS_TARGET)
  1035. @$(ECHO)
  1036. fpc_infoobjects:
  1037. @$(ECHO)
  1038. @$(ECHO) == Object info ==
  1039. @$(ECHO)
  1040. @$(ECHO) LoaderObjects..... $(LOADEROBJECTS)
  1041. @$(ECHO) UnitObjects....... $(UNITOBJECTS)
  1042. @$(ECHO) ExeObjects........ $(EXEOBJECTS)
  1043. @$(ECHO)
  1044. @$(ECHO) ExtraCleanUnits... $(EXTRACLEANUNITS)
  1045. @$(ECHO) ExtraCleanFiles... $(EXTRACLEANFILES)
  1046. @$(ECHO)
  1047. @$(ECHO) ExtraInstallUnits. $(EXTRAINSTALLUNITS)
  1048. @$(ECHO) ExtraInstallFiles. $(EXTRAINSTALLFILES)
  1049. @$(ECHO)
  1050. fpc_infoinstall:
  1051. @$(ECHO)
  1052. @$(ECHO) == Install info ==
  1053. @$(ECHO)
  1054. ifdef DATE
  1055. @$(ECHO) DateStr.............. $(DATESTR)
  1056. endif
  1057. ifdef PACKAGEPREFIX
  1058. @$(ECHO) PackagePrefix........ $(PACKAGEPREFIX)
  1059. endif
  1060. ifdef PACKAGENAME
  1061. @$(ECHO) PackageName.......... $(PACKAGENAME)
  1062. endif
  1063. @$(ECHO) PackageSuffix........ $(PACKAGESUFFIX)
  1064. @$(ECHO)
  1065. @$(ECHO) BaseInstallDir....... $(BASEINSTALLDIR)
  1066. @$(ECHO) BinInstallDir........ $(BININSTALLDIR)
  1067. @$(ECHO) LibInstallDir........ $(LIBINSTALLDIR)
  1068. @$(ECHO) UnitInstallDir....... $(UNITINSTALLDIR)
  1069. @$(ECHO) SourceInstallDir..... $(SOURCEINSTALLDIR)
  1070. @$(ECHO) DocInstallDir........ $(DOCINSTALLDIR)
  1071. @$(ECHO) DataInstallDir....... $(DATAINSTALLDIR)
  1072. @$(ECHO)
  1073. @$(ECHO) DestZipDir........... $(DESTZIPDIR)
  1074. @$(ECHO) ZipName.............. $(ZIPNAME)
  1075. @$(ECHO)
  1076. #####################################################################
  1077. # Local Makefile
  1078. #####################################################################
  1079. ifneq ($(wildcard fpcmake.loc),)
  1080. include fpcmake.loc
  1081. endif
  1082. #####################################################################
  1083. # Users rules
  1084. #####################################################################
  1085. vpath %.pas $(INC) $(PROCINC)
  1086. vpath %.pp $(INC) $(PROCINC)
  1087. #
  1088. # Loaders
  1089. #
  1090. %$(OEXT) : %.as
  1091. $(AS) -o $*$(OEXT) $*.as
  1092. #
  1093. # Base Units (System, strings, os-dependent-base-unit)
  1094. #
  1095. $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pas $(SYSDEPS)
  1096. $(COMPILER) -Us -Sg $(SYSTEMUNIT).pas $(REDIR)
  1097. objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
  1098. $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp $(REDIR)
  1099. strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
  1100. $(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
  1101. $(SYSTEMUNIT)$(PPUEXT)
  1102. #
  1103. # System Dependent Units
  1104. #
  1105. ports$(PPUEXT) : ports.pas objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1106. doscalls$(PPUEXT) : doscalls.pas strings$(PPUEXT) objects$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1107. kbdcalls$(PPUEXT) : kbdcalls.pas $(SYSTEMUNIT)$(PPUEXT)
  1108. moucalls$(PPUEXT) : moucalls.pas $(SYSTEMUNIT)$(PPUEXT)
  1109. moncalls$(PPUEXT) : moncalls.pas strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1110. os2def$(PPUEXT) : os2def.pas $(SYSTEMUNIT)$(PPUEXT)
  1111. pmwin$(PPUEXT) : pmwin.pas os2def$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1112. pmbitmap$(PPUEXT) : pmbitmap.pas $(SYSTEMUNIT)$(PPUEXT)
  1113. pmgpi$(PPUEXT) : pmgpi.pas pmbitmap$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1114. dive$(PPUEXT) : dive.pas os2def$(PPUEXT) pmwin$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1115. dynlibs$(PPUEXT) : $(INC)/dynlibs.pp doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1116. #
  1117. # TP7 Compatible RTL Units
  1118. #
  1119. dos$(PPUEXT) : dos.pas $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
  1120. doscalls$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1121. crt$(PPUEXT) : crt.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
  1122. objects$(PPUEXT) : $(INC)/objects.pp objinc.inc $(SYSTEMUNIT)$(PPUEXT)
  1123. printer$(PPUEXT) : printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
  1124. #graph$(PPUEXT) : graph.pp
  1125. #
  1126. # Delphi Compatible Units
  1127. #
  1128. sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/*.inc) \
  1129. objpas$(PPUEXT) dos$(PPUEXT) doscalls$(PPUEXT)
  1130. $(COMPILER) -I$(OBJPASDIR) sysutils.pp $(REDIR)
  1131. typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
  1132. $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
  1133. math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
  1134. $(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
  1135. varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
  1136. $(OBJPASDIR)/varutilh.inc varutils.pp
  1137. $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
  1138. #
  1139. # Other system-independent RTL Units
  1140. #
  1141. ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1142. cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
  1143. mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
  1144. getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
  1145. heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
  1146. $(COMPILER) -Sg $(INC)/heaptrc.pp $(REDIR)
  1147. lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT)
  1148. #
  1149. # Other system-dependent RTL Units
  1150. #