Makefile.fpc 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. #
  2. # Makefile.fpc for running fpmake
  3. #
  4. [package]
  5. name=pas2js
  6. version=3.1.1
  7. [install]
  8. fpcpackage=n
  9. [default]
  10. fpcdir=../../fpc
  11. [prerules]
  12. FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT))
  13. ifdef OS_TARGET
  14. FPC_TARGETOPT+=--os=$(OS_TARGET)
  15. endif
  16. ifdef CPU_TARGET
  17. FPC_TARGETOPT+=--cpu=$(CPU_TARGET)
  18. endif
  19. LOCALFPMAKE=./fpmake$(SRCEXEEXT)
  20. [rules]
  21. # Do not pass the Makefile's unit and binary target locations. Fpmake uses it's own.
  22. override FPCOPT:=$(filter-out -FU%,$(FPCOPT))
  23. override FPCOPT:=$(filter-out -FE%,$(FPCOPT))
  24. # Do not pass the package-unitdirectories. Fpmake adds those and this way they don't apear in the .fpm
  25. override FPCOPT:=$(filter-out $(addprefix -Fu,$(COMPILER_UNITDIR)),$(FPCOPT))# Compose general fpmake-parameters
  26. # Compose general fpmake-parameters
  27. ifdef FPMAKEOPT
  28. FPMAKE_OPT+=$(FPMAKEOPT)
  29. endif
  30. FPMAKE_OPT+=$(FPC_TARGETOPT)
  31. FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))
  32. FPMAKE_OPT+=--compiler=$(FPC)
  33. FPMAKE_OPT+=-bu
  34. .NOTPARALLEL:
  35. fpmake$(SRCEXEEXT): fpmake.pp
  36. $(FPCFPMAKE) fpmake.pp $(addprefix -Fu,$(COMPILER_FPMAKE_UNITDIR)) $(FPCMAKEOPT) $(OPT)
  37. all: fpmake$(SRCEXEEXT)
  38. $(LOCALFPMAKE) compile $(FPMAKE_OPT)
  39. smart: fpmake$(SRCEXEEXT)
  40. $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -XX -o -CX
  41. release: fpmake$(SRCEXEEXT)
  42. $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dRELEASE
  43. debug: fpmake$(SRCEXEEXT)
  44. $(LOCALFPMAKE) compile $(FPMAKE_OPT) -o -dDEBUG
  45. # If no fpmake exists and (dist)clean is called, do not try to build fpmake, it will
  46. # most often fail because the dependencies are cleared.
  47. # In case of a clean, simply do nothing
  48. ifeq ($(FPMAKE_BIN_CLEAN),)
  49. clean:
  50. else
  51. clean:
  52. $(FPMAKE_BIN_CLEAN) clean $(FPMAKE_OPT)
  53. endif
  54. # In case of a distclean, perform an 'old'-style distclean. This to avoid problems
  55. # when the package is compiled using fpcmake prior to running this clean using fpmake
  56. ifeq ($(FPMAKE_BIN_CLEAN),)
  57. distclean: $(addsuffix _distclean,$(TARGET_DIRS)) fpc_cleanall
  58. else
  59. distclean:
  60. ifdef inUnix
  61. { $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT); if [ $$? != "0" ]; then { echo Something wrong with fpmake exectable. Remove the executable and call make recursively to recover.; $(DEL) $(FPMAKE_BIN_CLEAN); $(MAKE) fpc_cleanall; }; fi; }
  62. else
  63. $(FPMAKE_BIN_CLEAN) distclean $(FPMAKE_OPT)
  64. endif
  65. -$(DEL) $(LOCALFPMAKE)
  66. endif
  67. cleanall: distclean
  68. install: fpmake$(SRCEXEEXT)
  69. ifdef UNIXHier
  70. $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR)
  71. else
  72. $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR)
  73. endif
  74. # distinstall also installs the example-sources and omits the location of the source-
  75. # files from the fpunits.cfg files.
  76. distinstall: fpmake$(SRCEXEEXT)
  77. ifdef UNIXHier
  78. $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_PREFIX) --baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSION) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0
  79. else
  80. $(LOCALFPMAKE) install $(FPMAKE_OPT) --prefix=$(INSTALL_BASEDIR) --baseinstalldir=$(INSTALL_BASEDIR) --unitinstalldir=$(INSTALL_UNITDIR) -ie -fsp 0
  81. endif
  82. #
  83. # Custom installer
  84. #
  85. .PHONY: democonfig demozip help demoupload
  86. ifndef PAS2JS
  87. PAS2JS=bin/$(CPU_TARGET)-$(OS_TARGET)/pas2js$(EXEEXT)
  88. endif
  89. ifeq (,$(wildcard $(PAS2JS)))
  90. PAS2JS=pas2js$(EXEEXT)
  91. endif
  92. PAS2JSVERSION:=$(shell $(PAS2JS) -iV)
  93. #
  94. # Demo zip
  95. #
  96. PACKAGEFILES=packages/rtl/rtl.js
  97. PACKAGEFILES+=$(wildcard packages/*/*.pas)
  98. PACKAGEFILES+=$(wildcard packages/*/*.pp)
  99. PACKAGEFILES+=$(wildcard packages/*/*.lpk)
  100. DEMOFILES=$(wildcard demo/rtl/*.html)
  101. DEMOFILES+=$(wildcard demo/rtl/*.pas)
  102. DEMOFILES+=$(wildcard demo/rtl/*.lpi)
  103. DEMOFILES+=$(wildcard demo/rtl/*.lpr)
  104. DEMOFILES+=demo/rtl/countries.json
  105. DEMOFILES+=$(wildcard demo/jquery/*.lpr)
  106. DEMOFILES+=$(wildcard demo/jquery/*.lpi)
  107. DEMOFILES+=$(wildcard demo/jquery/*.pas)
  108. DEMOFILES+=$(wildcard demo/jquery/*.html)
  109. DEMOFILES+=$(wildcard demo/fpreport/*.html)
  110. DEMOFILES+=$(wildcard demo/fpreport/*.lpi)
  111. DEMOFILES+=$(wildcard demo/fpreport/*.lpr)
  112. DEMOFILES+=$(wildcard demo/fpreport/*.pp)
  113. DEMOFILES+=$(wildcard demo/fpreport/*.md)
  114. DEMOFILdemoinfES+=$(wildcard demo/hotreload/*.html)
  115. DEMOFILES+=$(wildcard demo/hotreload/*.lpr)
  116. DEMOFILES+=$(wildcard demo/hotreload/*.lpi)
  117. DEMOFILES+=$(wildcard demo/hotreload/*.pas)
  118. DEMOFILES+=$(wildcard demo/fpcunit/*.html)
  119. DEMOFILES+=$(wildcard demo/fpcunit/*.lpr)
  120. DEMOFILES+=$(wildcard demo/fpcunit/*.lpi)
  121. DEMOFILES+=$(wildcard demo/fpcunit/*.pas)
  122. DEMOFILES+=$(wildcard demo/fcldb/*.html)
  123. DEMOFILES+=$(wildcard demo/fcldb/*.lpr)
  124. DEMOFILES+=$(wildcard demo/fcldb/*.lpi)
  125. DEMOFILES+=$(wildcard demo/fcldb/*.pas)
  126. DEMOFILES+=$(wildcard demo/fcldb/*.json)
  127. DEMOFILES+=demo/rtl/README.md
  128. DOCFILES+=docs/translation.html
  129. DEMOZIPFILE=pas2js-demo-$(PAS2JSVERSION).zip
  130. BINDIR=bin/$(CPU_TARGET)-$(OS_TARGET)
  131. COMPILERS=$(wildcard $BINDIR/*$(EXEEXT))
  132. COMPILERS+=$(wildcard $BINDIR/*$(SHAREDLIBEXT))
  133. CFGFILE=bin/$(CPU_TARGET)-$(OS_TARGET)/pas2js.cfg
  134. #
  135. # End of demo zip
  136. #
  137. #
  138. # Upload
  139. #
  140. [email protected]
  141. SSHUPLOABASEDIR=ftp/contrib/pas2js
  142. SSHUPLOADVERSION=$(SSHUPLOABASEDIR)/$(PAS2JSVERSION)
  143. BASEURL=ftp://ftpmaster.freepascal.org/fpc/contrib/pas2js/
  144. #
  145. # Dist zipfile filename
  146. #
  147. ifeq (1,$(UNIXHier))
  148. ZIPEXT=.tar.gz
  149. else
  150. ZIPEXT=.zip
  151. endif
  152. DISTZIPFILE=$(FULLZIPNAME)$(ZIPEXT)
  153. #
  154. help:
  155. @echo "Detected pas2js version: $(PAS2JSVERSION)"
  156. @echo "Supported targets:"
  157. @echo "help this info"
  158. @echo "all compile for current platform"
  159. @echo "install install in an existing FPC installation"
  160. @echo "clean clear files left over by compilation"
  161. @echo "distclean clean + remove build files"
  162. @echo "info show all used variables"
  163. @echo "zipinstall create zip file which can be installed in a FPC installation."
  164. @echo "upload upload ZIP file created by zipinstall to FPC FTP site"
  165. @echo "democonfig create config file in bin dir"
  166. @echo "demozip create alternate demo zip file (deprecated)"
  167. @echo "demoupload upload alternate demo zip file (deprecated)"
  168. @echo ""
  169. @echo "Demo URL $(BASEURL)$(DEMOZIPFILE)"
  170. @echo "Distribution URL $(BASEURL)$(PAS2JSVERSION)/$(DISTZIPFILE)"
  171. utils/createconfig$(SRCEXEEXT): utils/createconfig.pp
  172. $(FPC) utils/createconfig.pp
  173. democonfig: utils/createconfig$(SRCEXEEXT)
  174. utils/createconfig$(SRCEXEEXT) $(CFGFILE) ../..
  175. demozip: democonfig $(DEMOZIPFILE)
  176. @echo Version: $(PAS2JSVERSION)
  177. rm -f $(DEMOZIPFILE)
  178. cp compiler/utils/pas2js/dist/rtl.js packages/rtl
  179. zip $(DEMOZIPFILE) $(COMPILERS) $(RTLFILES) $(PACKAGEFILES) $(DOCFILES) $(DEMOFILES) $(CFGFILE)
  180. demoupload: demozip
  181. ssh $(SSHUPLOAD) mkdir -p $(SSHUPLOADBASEDIR)
  182. scp $(DEMOZIPFILE) $(SSHUPLOAD):$(SSHUPLOADBASEDIR)
  183. @echo "Demo URL $(BASEURL)$(DEMOZIPFILE)"
  184. $(DISTZIPFILE): zipinstall
  185. upload: $(DISTZIPFILE)
  186. ssh $(SSHUPLOAD) mkdir -p $(SSHUPLOADVERSION)
  187. scp $(DISTZIPFILE) $(SSHUPLOAD):$(SSHUPLOADVERSION)
  188. ssh $(SSHUPLOAD) chmod 644 $(SSHUPLOADVERSION)/$(DISTZIPFILE)
  189. @echo "Distribution URL $(BASEURL)$(PAS2JSVERSION)/$(DISTZIPFILE)"