Makefile 9.8 KB

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