X-Git-Url: https://git.yukkurigames.com/?p=pwl6.git;a=blobdiff_plain;f=rules%2Fnwjs.mk;fp=rules%2Fnwjs.mk;h=42bbf793fcb195539f1250eaac0b41b68c48f1ea;hp=0000000000000000000000000000000000000000;hb=2854030a3f699188676f19ba16a5400c4976f23c;hpb=9fe418a7251d2e4de5f17657ca3c62cb5d6eba9f diff --git a/rules/nwjs.mk b/rules/nwjs.mk new file mode 100644 index 0000000..42bbf79 --- /dev/null +++ b/rules/nwjs.mk @@ -0,0 +1,98 @@ +# This is free and unencumbered software released into the public +# domain. To the extent possible under law, the author of this file +# waives all copyright and related or neighboring rights to it. + +.DELETE_ON_ERROR: + +include $(dir $(realpath $(lastword $(MAKEFILE_LIST))))programs.mk + +nwjs-platforms := \ + osx-x64.zip osx-ia32.zip \ + linux-x64.tar.gz linux-ia32.tar.gz \ + win-ia32.zip + +nwjs-pattern := \ + $(addprefix nwjs-v%-,$(nwjs-platforms)) + +# These are like 30MB, don't download them every time. +.PRECIOUS: $(nwjs-pattern) + +$(nwjs-pattern): + mkdir -p $(@D) + wget -O $@ http://dl.nwjs.io/v$(*F)/$(@F) || ($(RM) $@ && exit 1) + +nwjs-version ?= 0.10.2 +nwjs-prefix ?= nwjs/ +nwjs-directx = $(addprefix $(nwjs-prefix),d3dcompiler_43.dll d3dcompiler_46.dll) + +nwjs = $(nwjs-prefix)nwjs-v$(firstword $(value nwjs-version-$1) $(nwjs-version))-$1 + +nwjs-archives = $(foreach p,$(nwjs-platforms),$(call nwjs,$(p))) + +define nwjs-package-osx + $(RM) $@ + $(RM) -r $(@:.zip=) + $(UNZIP) -d $(@D) $2 + mv $(@D)/$(notdir $(2:.zip=)) $(@:.zip=) + tools/generate-osx-app $(@:.zip=) $1 + $(RM) $(@:.zip=)/nwjc + mv $(@:.zip=)/credits.html $(@:.zip=)/nwjs\ credits.html + cd $(@D) && $(ZIP) -r $(@F) $(@F:.zip=) + $(RM) -r $(@:.zip=) +endef + +%-osx-ia32.zip: %.nw $(call nwjs,osx-ia32.zip) + $(call nwjs-package-osx,$<,$(word 2,$^)) + +%-osx-x64.zip: %.nw $(call nwjs,osx-x64.zip) + $(call nwjs-package-osx,$<,$(word 2,$^)) + +define nwjs-package-linux + $(RM) $@ + $(RM) -r $(@:.tar.gz=) + tar -C $(@D) -xzf $2 + mkdir -p $(@:.tar.gz=) + mv $(@D)/$(notdir $(2:.tar.gz=)) $(@:.tar.gz=)/nw + cp -a $1 $(@:.tar.gz=)/nw/package.nw + cp -a tools/nw-linux-wrapper $(@:.tar.gz=)/`echo $(notdir $1) | sed -E 's/_.+//'` + $(RM) $(@:.tar.gz=)/nw/nwjc + mv $(@:.tar.gz=)/nw/credits.html $(@:.tar.gz=)/nw/nwjs\ credits.html + tar -czf $@ -C $(@D) $(@F:.tar.gz=) + $(RM) -r $(@:.tar.gz=) +endef + +%-linux-ia32.tar.gz: %.nw $(call nwjs,linux-ia32.tar.gz) + $(call nwjs-package-linux,$<,$(word 2,$^)) + +%-linux-x64.tar.gz: %.nw $(call nwjs,linux-x64.tar.gz) + $(call nwjs-package-linux,$<,$(word 2,$^)) + +WINE ?= wine + +nwjs-icon = $(shell $(UNZIP) -p $1 package.json | grep -Eo '"[^"]+.ico"' -m 1) + +define nwjs-package-win + $(RM) $@ + $(RM) -r $(@:.zip=) + if $(UNZIP) -l $2 credits.html > /dev/null; then $(UNZIP) -d $(@D)/$(notdir $(2:.zip=)) $2; else $(UNZIP) -d $(@D) $2; fi + mv $(@D)/$(notdir $(2:.zip=)) $(@:.zip=) + $(RM) $(@:.zip=)/nwjc.exe + $(UNZIP) -p $< $(call nwjs-icon,$<) > $(@D)/icon.ico + $(WINE) tools/rcedit.exe $(@:.zip=)/nw.exe --set-icon $(@D)/icon.ico + $(RM) $(@D)/icon.ico + mv $(@:.zip=)/credits.html $(@:.zip=)/nwjs\ credits.html + cp -a $< $(@:.zip=)/package.nw + cp -a $(nwjs-directx) $(@:.zip=) + mv $(@:.zip=)/nw.exe $(@:.zip=)/`echo $(notdir $1) | sed -E 's/_.+/.exe/'` + cd $(@D) && $(ZIP) -r $(@F) $(@F:.zip=) + $(RM) -r $(@:.zip=) +endef + +%-win-ia32.zip: %.nw $(call nwjs,win-ia32.zip) $(nwjs-directx) + $(call nwjs-package-win,$<,$(word 2,$^)) + +$(nwjs-directx): + wget -O $@ 'https://github.com/cefsharp/cef-binary/raw/1e51255cf77d267899bf7834768b8774affaad2d/cef_binary_3.y.z_windows32/Release/'$(notdir $@) + +$(nwjs-prefix)dxwebsetup.exe: + wget -O $@ http://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe