Makefile 30 KB

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