Makefile 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570
  1. #
  2. # Makefile generated by fpcmake v0.99.13 [2000/01/10]
  3. #
  4. defaultrule: all
  5. #####################################################################
  6. # Autodetect OS (Linux or Dos or Windows NT)
  7. # define inlinux when running under linux
  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. inlinux=1
  23. endif
  24. else
  25. PWD:=$(firstword $(PWD))
  26. endif
  27. # Detect NT - NT sets OS to Windows_NT
  28. ifndef inlinux
  29. ifeq ($(OS),Windows_NT)
  30. inWinNT=1
  31. endif
  32. endif
  33. # Detect OS/2 - OS/2 has OS2_SHELL defined
  34. ifndef inlinux
  35. ifndef inWinNT
  36. ifdef OS2_SHELL
  37. inOS2=1
  38. endif
  39. endif
  40. endif
  41. # The extension of executables
  42. ifdef inlinux
  43. EXEEXT=
  44. else
  45. EXEEXT=.exe
  46. endif
  47. # The path which is searched separated by spaces
  48. ifdef inlinux
  49. SEARCHPATH=$(subst :, ,$(PATH))
  50. else
  51. SEARCHPATH=$(subst ;, ,$(PATH))
  52. endif
  53. # echo
  54. ifndef ECHO
  55. ECHO:=$(strip $(wildcard $(addsuffix /echo$(EXEEXT),$(SEARCHPATH))))
  56. ifeq ($(ECHO),)
  57. ECHO:=echo
  58. else
  59. ECHO:=$(firstword $(ECHO))
  60. endif
  61. endif
  62. export ECHO
  63. # Base dir
  64. ifdef PWD
  65. BASEDIR:=$(shell $(PWD))
  66. else
  67. BASEDIR=.
  68. endif
  69. #####################################################################
  70. # FPC version/target Detection
  71. #####################################################################
  72. # What compiler to use ?
  73. ifndef FPC
  74. # Compatibility with old makefiles
  75. ifdef PP
  76. FPC=$(PP)
  77. else
  78. ifdef inOS2
  79. FPC=ppos2$(EXEEXT)
  80. else
  81. FPC=ppc386$(EXEEXT)
  82. endif
  83. endif
  84. endif
  85. # Target OS
  86. ifndef OS_TARGET
  87. OS_TARGET:=$(shell $(FPC) -iTO)
  88. endif
  89. # Source OS
  90. ifndef OS_SOURCE
  91. OS_SOURCE:=$(shell $(FPC) -iSO)
  92. endif
  93. # Target CPU
  94. ifndef CPU_TARGET
  95. CPU_TARGET:=$(shell $(FPC) -iTP)
  96. endif
  97. # Source CPU
  98. ifndef CPU_SOURCE
  99. CPU_SOURCE:=$(shell $(FPC) -iSP)
  100. endif
  101. # FPC version
  102. ifndef FPC_VERSION
  103. FPC_VERSION:=$(shell $(FPC) -iV)
  104. endif
  105. export FPC OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FPC_VERSION
  106. #####################################################################
  107. # FPCDIR Setting
  108. #####################################################################
  109. # Test FPCDIR to look if the RTL dir exists
  110. ifdef FPCDIR
  111. override FPCDIR:=$(subst \,/,$(FPCDIR))
  112. ifeq ($(wildcard $(FPCDIR)/rtl),)
  113. override FPCDIR=wrong
  114. endif
  115. else
  116. override FPCDIR=wrong
  117. endif
  118. # Detect FPCDIR
  119. ifeq ($(FPCDIR),wrong)
  120. ifdef inlinux
  121. override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
  122. else
  123. override FPCDIR:=$(subst /$(FPC)$(EXEEXT),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC)$(EXEEXT),$(SEARCHPATH))))))
  124. endif
  125. endif
  126. ifndef PACKAGESDIR
  127. PACKAGESDIR=$(FPCDIR)/packages
  128. endif
  129. ifndef TOOLKITSDIR
  130. TOOLKITSDIR=
  131. endif
  132. ifndef COMPONENTSDIR
  133. COMPONENTSDIR=
  134. endif
  135. # Create units dir
  136. ifneq ($(FPCDIR),.)
  137. UNITSDIR=$(FPCDIR)/units/$(OS_TARGET)
  138. endif
  139. #####################################################################
  140. # User Settings
  141. #####################################################################
  142. # Targets
  143. override DIROBJECTS+=$(wildcard go32v2 linux win32 os2 test)
  144. # Clean
  145. # Install
  146. ZIPTARGET=install
  147. # Defaults
  148. # Directories
  149. # Packages
  150. override PACKAGES+=rtl
  151. # Libraries
  152. # Package/component dirs
  153. # Check if the dirs really exists, else turn it off
  154. ifeq ($(wildcard $(UNITSDIR)),)
  155. UNITSDIR=
  156. endif
  157. ifeq ($(wildcard $(TOOLKITSDIR)),)
  158. TOOLKITSDIR=
  159. endif
  160. ifeq ($(wildcard $(PACKAGESDIR)),)
  161. PACKAGESDIR=
  162. endif
  163. ifeq ($(wildcard $(COMPONENTSDIR)),)
  164. COMPONENTSDIR=
  165. endif
  166. ifneq ($(wildcard $(FPCDIR)/rtl),)
  167. ifneq ($(wildcard $(FPCDIR)/rtl/$(OS_TARGET)),)
  168. PACKAGEDIR_RTL=$(FPCDIR)/rtl/$(OS_TARGET)
  169. else
  170. PACKAGEDIR_RTL=$(FPCDIR)/rtl
  171. endif
  172. UNITDIR_RTL=$(PACKAGEDIR_RTL)
  173. else
  174. PACKAGEDIR_RTL=
  175. ifneq ($(wildcard $(UNITSDIR)/rtl),)
  176. ifneq ($(wildcard $(UNITSDIR)/rtl/$(OS_TARGET)),)
  177. UNITDIR_RTL=$(UNITSDIR)/rtl/$(OS_TARGET)
  178. else
  179. UNITDIR_RTL=$(UNITSDIR)/rtl
  180. endif
  181. else
  182. UNITDIR_RTL=
  183. endif
  184. endif
  185. ifdef UNITDIR_RTL
  186. override NEEDUNITDIR+=$(UNITDIR_RTL)
  187. endif
  188. #####################################################################
  189. # Redirection
  190. #####################################################################
  191. # Release ? Then force OPT and don't use extra opts via commandline
  192. ifndef REDIRFILE
  193. REDIRFILE=log
  194. endif
  195. ifdef REDIR
  196. ifndef inlinux
  197. override FPC=redir -eo $(FPC)
  198. endif
  199. # set the verbosity to max
  200. override FPCOPT+=-va
  201. override REDIR:= >> $(REDIRFILE)
  202. endif
  203. #####################################################################
  204. # Standard rules
  205. #####################################################################
  206. all: $(addsuffix _all,$(OS_TARGET))
  207. debug: $(addsuffix _debug,$(OS_TARGET))
  208. examples: $(addsuffix _examples,$(OS_TARGET))
  209. test: $(addsuffix _test,$(OS_TARGET))
  210. smart: $(addsuffix _smart,$(OS_TARGET))
  211. shared: $(addsuffix _shared,$(OS_TARGET))
  212. showinstall: $(addsuffix _showinstall,$(OS_TARGET))
  213. install: $(addsuffix _install,$(OS_TARGET))
  214. sourceinstall: $(addsuffix _sourceinstall,$(OS_TARGET))
  215. zipinstall: $(addsuffix _zipinstall,$(OS_TARGET))
  216. zipinstalladd: $(addsuffix _zipinstalladd,$(OS_TARGET))
  217. clean: $(addsuffix _clean,$(OS_TARGET))
  218. cleanall: $(addsuffix _cleanall,$(OS_TARGET))
  219. require: $(addsuffix _require,$(OS_TARGET))
  220. info: $(addsuffix _info,$(OS_TARGET))
  221. .PHONY: all debug examples test smart shared showinstall install sourceinstall zipinstall zipinstalladd clean cleanall require info
  222. PACKAGERTL=1
  223. ifdef PACKAGERTL
  224. ifneq ($(wildcard $(PACKAGEDIR_RTL)),)
  225. ifeq ($(wildcard $(PACKAGEDIR_RTL)/$(FPCMADE)),)
  226. override COMPILEPACKAGES+=rtl
  227. rtl_package:
  228. $(MAKE) -C $(PACKAGEDIR_RTL) all
  229. endif
  230. endif
  231. endif
  232. .PHONY: rtl_package
  233. # Target Dirs
  234. OBJECTDIRGO32V2=1
  235. OBJECTDIRLINUX=1
  236. OBJECTDIRWIN32=1
  237. OBJECTDIROS2=1
  238. OBJECTDIRTEST=1
  239. # Dir go32v2
  240. ifdef OBJECTDIRGO32V2
  241. .PHONY: go32v2_all go32v2_debug go32v2_examples go32v2_test go32v2_smart go32v2_shared go32v2_showinstall go32v2_install go32v2_sourceinstall go32v2_zipinstall go32v2_zipinstalladd go32v2_clean go32v2_cleanall go32v2_require go32v2_info
  242. go32v2_all:
  243. $(MAKE) -C go32v2 all
  244. go32v2_debug:
  245. $(MAKE) -C go32v2 debug
  246. go32v2_examples:
  247. $(MAKE) -C go32v2 examples
  248. go32v2_test:
  249. $(MAKE) -C go32v2 test
  250. go32v2_smart:
  251. $(MAKE) -C go32v2 smart
  252. go32v2_shared:
  253. $(MAKE) -C go32v2 shared
  254. go32v2_showinstall:
  255. $(MAKE) -C go32v2 showinstall
  256. go32v2_install:
  257. $(MAKE) -C go32v2 install
  258. go32v2_sourceinstall:
  259. $(MAKE) -C go32v2 sourceinstall
  260. go32v2_zipinstall:
  261. $(MAKE) -C go32v2 zipinstall
  262. go32v2_zipinstalladd:
  263. $(MAKE) -C go32v2 zipinstalladd
  264. go32v2_clean:
  265. $(MAKE) -C go32v2 clean
  266. go32v2_cleanall:
  267. $(MAKE) -C go32v2 cleanall
  268. go32v2_require:
  269. $(MAKE) -C go32v2 require
  270. go32v2_info:
  271. $(MAKE) -C go32v2 info
  272. endif
  273. # Dir linux
  274. ifdef OBJECTDIRLINUX
  275. .PHONY: linux_all linux_debug linux_examples linux_test linux_smart linux_shared linux_showinstall linux_install linux_sourceinstall linux_zipinstall linux_zipinstalladd linux_clean linux_cleanall linux_require linux_info
  276. linux_all:
  277. $(MAKE) -C linux all
  278. linux_debug:
  279. $(MAKE) -C linux debug
  280. linux_examples:
  281. $(MAKE) -C linux examples
  282. linux_test:
  283. $(MAKE) -C linux test
  284. linux_smart:
  285. $(MAKE) -C linux smart
  286. linux_shared:
  287. $(MAKE) -C linux shared
  288. linux_showinstall:
  289. $(MAKE) -C linux showinstall
  290. linux_install:
  291. $(MAKE) -C linux install
  292. linux_sourceinstall:
  293. $(MAKE) -C linux sourceinstall
  294. linux_zipinstall:
  295. $(MAKE) -C linux zipinstall
  296. linux_zipinstalladd:
  297. $(MAKE) -C linux zipinstalladd
  298. linux_clean:
  299. $(MAKE) -C linux clean
  300. linux_cleanall:
  301. $(MAKE) -C linux cleanall
  302. linux_require:
  303. $(MAKE) -C linux require
  304. linux_info:
  305. $(MAKE) -C linux info
  306. endif
  307. # Dir win32
  308. ifdef OBJECTDIRWIN32
  309. .PHONY: win32_all win32_debug win32_examples win32_test win32_smart win32_shared win32_showinstall win32_install win32_sourceinstall win32_zipinstall win32_zipinstalladd win32_clean win32_cleanall win32_require win32_info
  310. win32_all:
  311. $(MAKE) -C win32 all
  312. win32_debug:
  313. $(MAKE) -C win32 debug
  314. win32_examples:
  315. $(MAKE) -C win32 examples
  316. win32_test:
  317. $(MAKE) -C win32 test
  318. win32_smart:
  319. $(MAKE) -C win32 smart
  320. win32_shared:
  321. $(MAKE) -C win32 shared
  322. win32_showinstall:
  323. $(MAKE) -C win32 showinstall
  324. win32_install:
  325. $(MAKE) -C win32 install
  326. win32_sourceinstall:
  327. $(MAKE) -C win32 sourceinstall
  328. win32_zipinstall:
  329. $(MAKE) -C win32 zipinstall
  330. win32_zipinstalladd:
  331. $(MAKE) -C win32 zipinstalladd
  332. win32_clean:
  333. $(MAKE) -C win32 clean
  334. win32_cleanall:
  335. $(MAKE) -C win32 cleanall
  336. win32_require:
  337. $(MAKE) -C win32 require
  338. win32_info:
  339. $(MAKE) -C win32 info
  340. endif
  341. # Dir os2
  342. ifdef OBJECTDIROS2
  343. .PHONY: os2_all os2_debug os2_examples os2_test os2_smart os2_shared os2_showinstall os2_install os2_sourceinstall os2_zipinstall os2_zipinstalladd os2_clean os2_cleanall os2_require os2_info
  344. os2_all:
  345. $(MAKE) -C os2 all
  346. os2_debug:
  347. $(MAKE) -C os2 debug
  348. os2_examples:
  349. $(MAKE) -C os2 examples
  350. os2_test:
  351. $(MAKE) -C os2 test
  352. os2_smart:
  353. $(MAKE) -C os2 smart
  354. os2_shared:
  355. $(MAKE) -C os2 shared
  356. os2_showinstall:
  357. $(MAKE) -C os2 showinstall
  358. os2_install:
  359. $(MAKE) -C os2 install
  360. os2_sourceinstall:
  361. $(MAKE) -C os2 sourceinstall
  362. os2_zipinstall:
  363. $(MAKE) -C os2 zipinstall
  364. os2_zipinstalladd:
  365. $(MAKE) -C os2 zipinstalladd
  366. os2_clean:
  367. $(MAKE) -C os2 clean
  368. os2_cleanall:
  369. $(MAKE) -C os2 cleanall
  370. os2_require:
  371. $(MAKE) -C os2 require
  372. os2_info:
  373. $(MAKE) -C os2 info
  374. endif
  375. # Dir test
  376. ifdef OBJECTDIRTEST
  377. .PHONY: test_all test_debug test_examples test_test test_smart test_shared test_showinstall test_install test_sourceinstall test_zipinstall test_zipinstalladd test_clean test_cleanall test_require test_info
  378. test_all:
  379. $(MAKE) -C test all
  380. test_debug:
  381. $(MAKE) -C test debug
  382. test_examples:
  383. $(MAKE) -C test examples
  384. test_test:
  385. $(MAKE) -C test test
  386. test_smart:
  387. $(MAKE) -C test smart
  388. test_shared:
  389. $(MAKE) -C test shared
  390. test_showinstall:
  391. $(MAKE) -C test showinstall
  392. test_install:
  393. $(MAKE) -C test install
  394. test_sourceinstall:
  395. $(MAKE) -C test sourceinstall
  396. test_zipinstall:
  397. $(MAKE) -C test zipinstall
  398. test_zipinstalladd:
  399. $(MAKE) -C test zipinstalladd
  400. test_clean:
  401. $(MAKE) -C test clean
  402. test_cleanall:
  403. $(MAKE) -C test cleanall
  404. test_require:
  405. $(MAKE) -C test require
  406. test_info:
  407. $(MAKE) -C test info
  408. endif
  409. #####################################################################
  410. # Local Makefile
  411. #####################################################################
  412. ifneq ($(wildcard fpcmake.loc),)
  413. include fpcmake.loc
  414. endif