Makefile 29 KB

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