Makefile.fpc 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. #
  2. # Makefile.fpc for Release-files creation
  3. #
  4. [defaults]
  5. defaultrule=help
  6. [sections]
  7. info=0
  8. zipinstall=1
  9. [tools]
  10. toolzip=1
  11. toolupx=1
  12. tooldate=1
  13. [presettings]
  14. OLDFPCDIR:=$(FPCDIR)
  15. checkfpcdir:
  16. ifdef OLDFPCDIR
  17. ifneq ($(OLDFPCDIR),)
  18. FPCDIRSET=fpcdirset
  19. fpcdirset:
  20. @echo --------------------------------------------
  21. @echo
  22. @echo You must unset FPCDIR to use this Makefile !
  23. @echo
  24. @echo --------------------------------------------
  25. @cantcontinuewithfpcdir
  26. endif
  27. endif
  28. # All target
  29. ifndef ALLTARGET
  30. ifeq ($(OS_TARGET),win32)
  31. ALLTARGET=smart
  32. else
  33. ifeq ($(OS_TARGET),go32v2)
  34. ALLTARGET=smart
  35. else
  36. ALLTARGET=all
  37. endif
  38. endif
  39. endif
  40. # Prefix for units
  41. ifeq ($(OS_TARGET),linux)
  42. PKGPRE=units
  43. else
  44. PKGPRE=u
  45. endif
  46. # Test dir if none specified
  47. ifndef PREFIXINSTALLDIR
  48. PREFIXINSTALLDIR=/pptest
  49. endif
  50. # Directory to the base of the CVS tree
  51. CVSBASE=..
  52. # Always compile for release
  53. override RELEASE=1
  54. # Temporary path to pack a file
  55. BASEPACKDIR=$(BASEDIR)/basepack
  56. # Use new ppc386
  57. PPNEW=$(BASEDIR)/$(CVSBASE)/compiler/ppc386$(EXEEXT)
  58. # Don't use ppufiles for win32 becuase of commandline length problems
  59. ifneq ($(OS_TARGET),win32)
  60. PPUFILESNEW=$(BASEDIR)/$(CVSBASE)/utils/ppufiles$(EXEEXT)
  61. endif
  62. # Build/install options
  63. BUILDOPTS=FPC=$(PPNEW) RELEASE=1
  64. INSTALLOPTS=FPC=$(PPNEW) ZIPDESTDIR=$(BASEDIR)
  65. ifdef PPUFILESNEW
  66. override INSTALLOPT+=PPUFILES=$(PPUFILESNEW)
  67. endif
  68. [rules]
  69. # These values can change
  70. unexport FPC_VERSION OS_SOURCE
  71. .PHONY: help checkfpcdir
  72. help:
  73. @echo
  74. @echo Possible targets are:
  75. @echo
  76. @echo go32v2,win32,linux,source
  77. @echo
  78. @exit
  79. ##########################################################################
  80. # Install
  81. ##########################################################################
  82. .PHONY: installer
  83. INSTALLERBUILDDIR=../fpinst
  84. installer:
  85. $(COPYTREE) fpinst $(INSTALLERBUILDDIR)
  86. $(MAKE) -C $(INSTALLERBUILDDIR) all RELEASE=1
  87. $(MOVE) $(INSTALLERBUILDDIR)/install.exe .
  88. ifdef UPXPROG
  89. -$(UPXPROG) install.exe
  90. endif
  91. $(DELTREE) $(INSTALLERBUILDDIR)
  92. installersrc:
  93. $(COPYTREE) fpinst $(INSTALLERBUILDDIR)
  94. $(MAKE) -C $(INSTALLERBUILDDIR) zipsourceinstall
  95. $(DELTREE) $(INSTALLERBUILDDIR)
  96. ##########################################################################
  97. # Basego32.zip
  98. ##########################################################################
  99. .PHONY: clean build installbase zipinstall zipinstallbase zipinstallfcl \
  100. zipinstallpackages
  101. export RELEASE DESTZIPDIR
  102. clean:
  103. $(DEL) build-stamp
  104. build: build-stamp
  105. build-stamp: $(FPCDIRSET)
  106. # create new compiler
  107. $(MAKE) -C $(CVSBASE) compiler_cycle
  108. # clean
  109. $(MAKE) -C $(CVSBASE) rtl_clean
  110. $(MAKE) -C $(CVSBASE) api_clean
  111. $(MAKE) -C $(CVSBASE) fcl_clean
  112. $(MAKE) -C $(CVSBASE) packages_clean
  113. $(MAKE) -C $(CVSBASE) utils_clean
  114. # build everything
  115. $(MAKE) -C $(CVSBASE) rtl_$(ALLTARGET) $(BUILDOPTS)
  116. $(MAKE) -C $(CVSBASE) api_$(ALLTARGET) $(BUILDOPTS)
  117. $(MAKE) -C $(CVSBASE) fcl_$(ALLTARGET) $(BUILDOPTS)
  118. $(MAKE) -C $(CVSBASE) packages_$(ALLTARGET) $(BUILDOPTS)
  119. $(MAKE) -C $(CVSBASE) utils_all $(BUILDOPTS)
  120. $(ECHO) Build > build-stamp
  121. installbase: build-stamp
  122. # create dirs
  123. $(MKDIR) $(BASEINSTALLDIR)
  124. $(MKDIR) $(DOCINSTALLDIR)
  125. $(MKDIR) $(BININSTALLDIR)
  126. # readme & whatsnew and docs
  127. $(COPY) doc/*.txt doc/copying* doc/faq.html $(DOCINSTALLDIR)
  128. # bingo32 (cwsdpmi,wmemu387.dxe)
  129. ifeq ($(OS_TARGET),go32v2)
  130. $(COPY) bingo32/* $(BININSTALLDIR)
  131. endif
  132. # manpages for linux
  133. ifeq ($(OS_TARGET),linux)
  134. $(MAKE) -C man installman
  135. endif
  136. # install generated things
  137. $(MAKE) -C $(CVSBASE) compiler_install $(INSTALLOPTS)
  138. $(MAKE) -C $(CVSBASE) rtl_install $(INSTALLOPTS)
  139. $(MAKE) -C $(CVSBASE) utils_install $(INSTALLOPTS)
  140. install: build-stamp
  141. $(MAKE) zipinstall ZIPTARGET=installbase PACKAGENAME=base
  142. $(MAKE) -C $(CVSBASE) api_zipinstall $(INSTALLOPTS) PACKAGEPREFIX=$(PKGPRE)
  143. $(MAKE) -C $(CVSBASE) fcl_zipinstall $(INSTALLOPTS) PACKAGEPREFIX=$(PKGPRE)
  144. $(MAKE) -C $(CVSBASE) packages_zipinstall $(INSTALLOPTS) PACKAGEPREFIX=$(PKGPRE)
  145. ##########################################################################
  146. # Docs
  147. ##########################################################################
  148. .PHONY: docspdf docs docsrcinstall docsrc
  149. docspdf:
  150. $(MAKE) -C $(CVSBASE)/docs pdfinstall
  151. docs:
  152. $(MAKE) zipinstall ZIPTARGET=docspdf ZIPNAME=docs
  153. docsrcinstall:
  154. $(MAKE) -C $(CVSBASE)/docs clean
  155. $(MKDIR) $(SOURCEINSTALLDIR)
  156. $(COPYTREE) $(CVSBASE)/docs $(SOURCEINSTALLDIR)
  157. docsrc:
  158. $(MAKE) zipinstall ZIPTARGET=docsrcinstall ZIPNAME=docsrc
  159. ##########################################################################
  160. # Demos
  161. ##########################################################################
  162. .PHONY: demo demoinstall
  163. demoinstall:
  164. $(COPYTREE) demo $(PREFIXINSTALLDIR)
  165. demo:
  166. $(MAKE) zipinstall ZIPTARGET=demoinstall ZIPNAME=demo
  167. ##########################################################################
  168. # Source targets
  169. ##########################################################################
  170. sourcebase:
  171. # base Makefiles needed for sources
  172. $(MKDIR) $(SOURCEINSTALLDIR)
  173. $(MKDIR) $(SOURCEINSTALLDIR)/rtl
  174. $(MKDIR) $(SOURCEINSTALLDIR)/packages
  175. $(COPY) $(CVSBASE)/Makefile* $(SOURCEINSTALLDIR)
  176. $(COPY) $(CVSBASE)/rtl/Makefile* $(SOURCEINSTALLDIR)/rtl
  177. $(COPY) $(CVSBASE)/packages/Makefile* $(SOURCEINSTALLDIR)/packages
  178. source:
  179. $(MAKE) zipinstall ZIPTARGET=sourcebase ZIPNAME=basesrc
  180. $(MAKE) -C $(CVSBASE) compiler_zipsourceinstall
  181. $(MAKE) -C $(CVSBASE) rtl_zipsourceinstall
  182. $(MAKE) -C $(CVSBASE) api_zipsourceinstall
  183. $(MAKE) -C $(CVSBASE) fcl_zipsourceinstall
  184. $(MAKE) -C $(CVSBASE) packages_zipsourceinstall
  185. $(MAKE) -C $(CVSBASE) utils_zipsourceinstall
  186. # $(MAKE) installersrc
  187. # $(MAKE) docsrc
  188. ##########################################################################
  189. # OS targets
  190. ##########################################################################
  191. .PHONY: go32v2 win32 linux
  192. go32v2:
  193. $(MAKE) install OS_TARGET=go32v2
  194. win32:
  195. $(MAKE) install OS_TARGET=win32
  196. linux:
  197. $(MAKE) install OS_TARGET=linux
  198. ##########################################################################
  199. # Debian / RPM
  200. ##########################################################################
  201. .PHONY: debian
  202. DEBSRCDIR:=/usr/src/fpc-$(FPC_VERSION)
  203. deb:
  204. rm -rf $(DEBSRCDIR)
  205. install -d $(DEBSRCDIR)
  206. $(COPYTREE) $(CVSBASE)/compiler $(DEBSRCDIR)
  207. $(COPYTREE) $(CVSBASE)/rtl $(DEBSRCDIR)
  208. $(COPYTREE) $(CVSBASE)/fcl $(DEBSRCDIR)
  209. $(COPYTREE) $(CVSBASE)/api $(DEBSRCDIR)
  210. $(COPYTREE) $(CVSBASE)/packages $(DEBSRCDIR)
  211. $(COPYTREE) $(CVSBASE)/utils $(DEBSRCDIR)
  212. $(COPYTREE) $(CVSBASE)/logs $(DEBSRCDIR)
  213. $(COPYTREE) $(CVSBASE)/docs $(DEBSRCDIR)
  214. $(COPYTREE) $(CVSBASE)/base/Makefile* $(DEBSRCDIR)
  215. $(COPYTREE) $(CVSBASE)/install/debian $(DEBSRCDIR)
  216. $(COPYTREE) $(CVSBASE)/install/man $(DEBSRCDIR)
  217. $(COPYTREE) $(CVSBASE)/install/doc $(DEBSRCDIR)
  218. $(COPYTREE) $(CVSBASE)/install/demo $(DEBSRCDIR)
  219. find $(DEBSRCDIR) -name 'CVS*' | xargs -n1 rm -rf
  220. chmod 755 $(DEBSRCDIR)/debian/rules
  221. cd $(DEBSRCDIR) ; debian/rules binary
  222. RPMSOURCESDIR:=/usr/src/redhat/SOURCES
  223. RPMSPECDIR:=/usr/src/redhat/SPECS
  224. RPMSRCDIR:=$(RPMSOURCESDIR)/fpc
  225. DOCSRCDIR:=$(RPMSOURCESDIR)/fpcdoc
  226. rpm:
  227. # fpc.rpm
  228. rm -rf $(RPMSRCDIR)
  229. cp fpc-$(FPC_VERSION).spec $(RPMSPECDIR)
  230. install -d $(RPMSRCDIR)
  231. $(COPYTREE) $(CVSBASE)/compiler $(RPMSRCDIR)
  232. $(COPYTREE) $(CVSBASE)/rtl $(RPMSRCDIR)
  233. $(COPYTREE) $(CVSBASE)/fcl $(RPMSRCDIR)
  234. $(COPYTREE) $(CVSBASE)/api $(RPMSRCDIR)
  235. $(COPYTREE) $(CVSBASE)/packages $(RPMSRCDIR)
  236. $(COPYTREE) $(CVSBASE)/utils $(RPMSRCDIR)
  237. $(COPYTREE) $(CVSBASE)/logs $(RPMSRCDIR)
  238. $(COPYTREE) $(CVSBASE)/base/Makefile* $(RPMSRCDIR)
  239. $(COPYTREE) $(CVSBASE)/install/man $(RPMSRCDIR)
  240. $(COPYTREE) $(CVSBASE)/install/doc $(RPMSRCDIR)
  241. $(COPYTREE) $(CVSBASE)/install/demo $(RPMSRCDIR)
  242. find $(RPMSRCDIR) -name 'CVS*' | xargs -n1 rm -rf
  243. cd $(RPMSRCDIR) ; tar cvz * > $(RPMSOURCESDIR)/fpc-$(FPC_VERSION)-src.tar.gz
  244. cd $(RPMSPECDIR) ; rpm -ba fpc-$(FPC_VERSION).spec
  245. # fpc-docs.rpm
  246. rm -rf $(DOCSRCDIR)
  247. cp fpc-docs-$(FPC_VERSION).spec $(RPMSPECDIR)
  248. install -d $(DOCSRCDIR)
  249. $(COPYTREE) $(CVSBASE)/docs $(DOCSRCDIR)
  250. find $(DOCSRCDIR) -name 'CVS*' | xargs -n1 rm -rf
  251. cd $(DOCSRCDIR) ; tar cvz * > $(RPMSOURCESDIR)/fpc-docs-$(FPC_VERSION)-src.tar.gz
  252. cd $(RPMSPECDIR) ; rpm -ba fpc-docs-$(FPC_VERSION).spec