Makefile.win 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. PLATFORM=win
  2. MAKEFILENAME=Makefile.win
  3. include Makefile
  4. HAXE_OUTPUT=haxe.exe
  5. HAXELIB_OUTPUT=haxelib.exe
  6. PREBUILD_OUTPUT=prebuild.exe
  7. EXTENSION=.exe
  8. PACKAGE_SRC_EXTENSION=.zip
  9. ARCH?=32
  10. DUNE_COMMAND=dune.exe
  11. ifeq ($(ARCH),64)
  12. NEKO_ARCH_STR=64
  13. endif
  14. kill:
  15. -@taskkill /F /IM haxe.exe
  16. # allow Ocaml/Mingw as well
  17. NATIVE_LIBS += -I "c:/program files/mingw/lib/"
  18. # use make WODI=wodi32 -f Makefile.win to build using WODI 32bit
  19. ifdef WODI
  20. NATIVE_LIBS += -I "/opt/${WODI}/lib"
  21. endif
  22. # use make MSVC=1 -f Makefile.win to build for OCaml/MSVC
  23. ifeq (${MSVC}, 1)
  24. NATIVE_LIBS = shell32.lib libs/extc/extc_stubs.obj libs/extc/process_stubs.obj libs/extc/zlib/zlib.lib libs/objsize/c_objsize.obj
  25. endif
  26. ifeq (${MSVC_OUTPUT}, 1)
  27. FILTER=sed 's/File "\([^"]\+\)", line \([0-9]\+\), \(.*\)/\1(\2): \3/' tmp.cmi
  28. endif
  29. ifeq (${FD_OUTPUT}, 1)
  30. FILTER=sed -e '/File/{ N; s/File "\([^"]\+\)", line \([0-9]\+\), characters \([0-9-]\+\):[\r\n]*\(.*\)/\1:\2: characters \3 : \4/ }' -e 's/_build\/src\//src\//' tmp.cmi
  31. endif
  32. ifdef FILTER
  33. CC_CMD=($(COMPILER) $(ALL_CFLAGS) -c $< 2>tmp.cmi && $(FILTER)) || ($(FILTER) && exit 1)
  34. endif
  35. PACKAGE_FILES=$(HAXE_OUTPUT) $(HAXELIB_OUTPUT) std \
  36. "$$(cygcheck $(CURDIR)/$(HAXE_OUTPUT) | grep zlib1.dll | sed -e 's/^\s*//')" \
  37. "$$(cygcheck $(CURDIR)/$(HAXE_OUTPUT) | grep libpcre2-8-0.dll | sed -e 's/^\s*//')" \
  38. "$$(cygcheck $(CURDIR)/$(HAXE_OUTPUT) | grep libmbedcrypto.dll | sed -e 's/^\s*//')" \
  39. "$$(cygcheck $(CURDIR)/$(HAXE_OUTPUT) | grep libmbedtls.dll | sed -e 's/^\s*//')" \
  40. "$$(cygcheck $(CURDIR)/$(HAXE_OUTPUT) | grep libmbedx509.dll | sed -e 's/^\s*//')"
  41. # haxelib should depends on haxe, but we don't want to do that...
  42. haxelib_win:
  43. cd $(CURDIR)/extra/haxelib_src && \
  44. HAXE_STD_PATH=$$(cygpath -m $(CURDIR)/std) $(CURDIR)/$(HAXE_OUTPUT) client.hxml && \
  45. nekotools boot run.n
  46. mv extra/haxelib_src/run$(EXTENSION) $(HAXELIB_OUTPUT)
  47. echo_package_files:
  48. echo $(PACKAGE_FILES)
  49. package_win:
  50. mkdir -p out
  51. rm -rf $(PACKAGE_FILE_NAME) $(PACKAGE_FILE_NAME).zip temp.zip
  52. # Copy the package contents to $(PACKAGE_FILE_NAME)
  53. # Using poor man's cp (zip then unzip), because cp in cygwin is quite broken
  54. mkdir -p $(PACKAGE_FILE_NAME)
  55. 7z a -y -tzip -mx0 temp.zip $(PACKAGE_FILES) > log.txt || type log.txt
  56. cd extra && 7z a -y -tzip -mx0 ../temp.zip LICENSE.txt CONTRIB.txt CHANGES.txt > log.txt || type log.txt
  57. 7z x -y temp.zip -o$(PACKAGE_FILE_NAME) > log.txt || type log.txt
  58. rm temp.zip
  59. # archive
  60. 7z a -r -tzip out/$(PACKAGE_FILE_NAME)_bin.zip $(PACKAGE_FILE_NAME) > log.txt || type log.txt
  61. rm -r $(PACKAGE_FILE_NAME)
  62. rm log.txt extra/log.txt
  63. package_choco:
  64. mkdir -p OUTPUT
  65. 7z x -y out/$(PACKAGE_FILE_NAME)_bin.zip -oout > log.txt || type log.txt
  66. mv out/$(PACKAGE_FILE_NAME) out/choco
  67. cp extra/choco/haxe.nuspec out/choco/haxe.nuspec
  68. sed -i 's/@SNAPSHOT_VERSION@/$(HAXE_VERSION_SHORT)-SNAP$(COMMIT_DATE)/g' out/choco/haxe.nuspec
  69. sed -i 's/@NEKO_VERSION@/$(NEKO_VERSION)/g' out/choco/haxe.nuspec
  70. cd out/choco && choco pack
  71. mv out/choco/haxe.*.nupkg out
  72. rm -rf out/choco
  73. $(INSTALLER_TMP_DIR)/neko-win.zip: $(INSTALLER_TMP_DIR)
  74. curl -L https://github.com/HaxeFoundation/neko/releases/download/$(NEKO_VERSION_TAG)/neko-$(NEKO_VERSION)-win$(NEKO_ARCH_STR).zip -o installer/neko-win.zip
  75. package_installer_win: $(INSTALLER_TMP_DIR)/neko-win.zip package_win
  76. $(eval OUTFILE := $(PACKAGE_OUT_DIR)/$(PACKAGE_FILE_NAME)_installer.zip)
  77. rm -rf $(INSTALLER_TMP_DIR)/resources
  78. # neko
  79. mkdir $(INSTALLER_TMP_DIR)/resources
  80. cd $(INSTALLER_TMP_DIR) && 7z x -y neko-win.zip
  81. rm $(INSTALLER_TMP_DIR)/neko-win.zip
  82. mv $(INSTALLER_TMP_DIR)/neko* $(INSTALLER_TMP_DIR)/resources/neko
  83. # haxe
  84. 7z x -y $(PACKAGE_OUT_DIR)/$(PACKAGE_FILE_NAME)_bin.zip -o$(INSTALLER_TMP_DIR)/resources
  85. mv $(INSTALLER_TMP_DIR)/resources/haxe* $(INSTALLER_TMP_DIR)/resources/haxe
  86. # WinSetup.hx
  87. cp extra/WinSetup.hx $(INSTALLER_TMP_DIR)/resources/haxe
  88. # extra
  89. cp extra/*.nsi $(INSTALLER_TMP_DIR)
  90. cp extra/*.nsh $(INSTALLER_TMP_DIR)
  91. cp -rf extra/images $(INSTALLER_TMP_DIR)
  92. # nsis
  93. sed -i "s/%%VERSION%%/$(HAXE_VERSION_SHORT)/g" $(INSTALLER_TMP_DIR)/installer.nsi
  94. sed -i "s/%%VERSTRING%%/$(HAXE_VERSION)/g" $(INSTALLER_TMP_DIR)/installer.nsi
  95. sed -i "s/%%VERLONG%%/$(HAXE_VERSION)/g" $(INSTALLER_TMP_DIR)/installer.nsi
  96. sed -i "s/%%NEKO_VERSION%%/$(NEKO_VERSION)/g" $(INSTALLER_TMP_DIR)/installer.nsi
  97. cd $(INSTALLER_TMP_DIR) && makensis installer.nsi
  98. 7z a -r -tzip $(OUTFILE) $(INSTALLER_TMP_DIR)/*.exe
  99. dir $(PACKAGE_OUT_DIR)