2
0

Makefile.win 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. PLATFORM=win
  2. include Makefile
  3. OUTPUT=haxe.exe
  4. EXTENSION=.exe
  5. PACKAGE_SRC_EXTENSION=.zip
  6. OCAMLOPT=ocamlopt.opt
  7. kill:
  8. -@taskkill /F /IM haxe.exe
  9. # allow Ocaml/Mingw as well
  10. NATIVE_LIBS += -I "c:/program files/mingw/lib/"
  11. # use make WODI=wodi32 -f Makefile.win to build using WODI 32bit
  12. ifdef WODI
  13. NATIVE_LIBS += -I "/opt/${WODI}/lib"
  14. endif
  15. # use make MSVC=1 -f Makefile.win to build for OCaml/MSVC
  16. ifeq (${MSVC}, 1)
  17. NATIVE_LIBS = shell32.lib libs/extc/extc_stubs.obj libs/extc/process_stubs.obj libs/extc/zlib/zlib.lib libs/objsize/c_objsize.obj
  18. endif
  19. ifeq (${MSVC_OUTPUT}, 1)
  20. FILTER=sed 's/File "\([^"]\+\)", line \([0-9]\+\), \(.*\)/\1(\2): \3/' tmp.cmi
  21. endif
  22. ifeq (${FD_OUTPUT}, 1)
  23. FILTER=sed '/File/{ N; s/File "\([^"]\+\)", line \([0-9]\+\), characters \([0-9-]\+\):[\r\n]*\(.*\)/\1:\2: characters \3 : \4/ }' tmp.cmi
  24. endif
  25. ifdef FILTER
  26. CC_CMD=($(OCAMLOPT) $(ALL_CFLAGS) -c $< 2>tmp.cmi && $(FILTER)) || ($(FILTER) && exit 1)
  27. CC_PARSER_CMD=($(OCAMLOPT) -pp camlp4o $(ALL_CFLAGS) -c src/syntax/parser.ml 2>tmp.cmi && $(FILTER)) || ($(FILTER) && exit 1)
  28. endif
  29. PACKAGE_FILES=$(OUTPUT) haxelib$(EXTENSION) std "$$(cygpath -w "$$(which zlib1.dll)")" "$$(cygpath -w "$$(which libpcre-1.dll)")"
  30. package_win:
  31. mkdir -p out
  32. rm -rf $(PACKAGE_FILE_NAME) $(PACKAGE_FILE_NAME).zip temp.zip
  33. # Copy the package contents to $(PACKAGE_FILE_NAME)
  34. # Using poor man's cp (zip then unzip), because cp in cygwin is quite broken
  35. mkdir -p $(PACKAGE_FILE_NAME)
  36. 7z a -y -tzip -mx0 temp.zip $(PACKAGE_FILES) > log.txt || type log.txt
  37. cd extra && 7z a -y -tzip -mx0 ../temp.zip LICENSE.txt CONTRIB.txt CHANGES.txt > log.txt || type log.txt
  38. 7z x -y temp.zip -o$(PACKAGE_FILE_NAME) > log.txt || type log.txt
  39. rm temp.zip
  40. # archive
  41. 7z a -r -tzip out/$(PACKAGE_FILE_NAME)_bin.zip $(PACKAGE_FILE_NAME) > log.txt || type log.txt
  42. rm -r $(PACKAGE_FILE_NAME)
  43. rm log.txt extra/log.txt
  44. package_choco:
  45. mkdir -p OUTPUT
  46. 7z x -y out/$(PACKAGE_FILE_NAME)_bin.zip -oout > log.txt || type log.txt
  47. mv out/$(PACKAGE_FILE_NAME) out/choco
  48. sed -e 's/@SNAPSHOT_VERSION@/$(HAXE_VERSION)-SNAP$(COMMIT_DATE)/g' extra/choco/haxe.nuspec > out/choco/haxe.nuspec
  49. cd out/choco && choco pack
  50. mv out/choco/haxe.*.nupkg out
  51. rm -rf out/choco
  52. package_installer_win:
  53. $(eval OUTFILE := $(PACKAGE_OUT_DIR)/$(PACKAGE_FILE_NAME)_installer.zip)
  54. $(eval VERSION := $(shell haxe -version 2>&1 | cut -d ' ' -f1))
  55. rm -rf $(INSTALLER_TMP_DIR)/resources
  56. # neko
  57. mkdir $(INSTALLER_TMP_DIR)/resources
  58. cd $(INSTALLER_TMP_DIR) && 7z x -y neko-win.zip
  59. rm $(INSTALLER_TMP_DIR)/neko-win.zip
  60. mv $(INSTALLER_TMP_DIR)/neko* $(INSTALLER_TMP_DIR)/resources/neko
  61. # haxe
  62. 7z x -y $(PACKAGE_OUT_DIR)/$(PACKAGE_FILE_NAME)_bin.zip -o$(INSTALLER_TMP_DIR)/resources
  63. mv $(INSTALLER_TMP_DIR)/resources/haxe* $(INSTALLER_TMP_DIR)/resources/haxe
  64. # haxesetup.exe
  65. haxelib path hxcpp || haxelib install hxcpp
  66. cd extra; haxelib run hxcpp build-haxesetup.xml
  67. cp extra/haxesetup.exe $(INSTALLER_TMP_DIR)/resources/haxe
  68. # extra
  69. cp extra/*.nsi $(INSTALLER_TMP_DIR)
  70. cp extra/*.nsh $(INSTALLER_TMP_DIR)
  71. cp -rf extra/images $(INSTALLER_TMP_DIR)
  72. # nsis
  73. sed -i "s/%%VERSION%%/$(VERSION)/g" $(INSTALLER_TMP_DIR)/installer.nsi
  74. sed -i "s/%%VERSTRING%%/$(VERSION)/g" $(INSTALLER_TMP_DIR)/installer.nsi
  75. sed -i "s/%%VERLONG%%/$(VERSION)/g" $(INSTALLER_TMP_DIR)/installer.nsi
  76. cd $(INSTALLER_TMP_DIR) && makensis installer.nsi
  77. 7z a -r -tzip $(OUTFILE) $(INSTALLER_TMP_DIR)/*.exe
  78. dir $(PACKAGE_OUT_DIR)