From 69890d17a01426cf7de8b6aa1dc64b56dfb7449d Mon Sep 17 00:00:00 2001 From: Alex Xu Date: Thu, 6 Mar 2014 17:02:37 -0500 Subject: meh --- Makefile | 254 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 164 insertions(+), 90 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 1501ded..4ce5698 100644 --- a/Makefile +++ b/Makefile @@ -21,16 +21,116 @@ DEFLOPT ?= wine DeflOpt DEFLUFF ?= defluff PNGQUANT ?= pngquant endif +GZIP := $(shell unrpyc/find-gzip.sh) -DUMP ?= www/dump +all: js json video audio images -all: video audio images js -# fails miserably, fix pls -# cd unrpyc && $(MAKE) install +# === JS === + +MYJS := www/js/html5ks.js www/js/menu.js www/js/api.js \ + www/js/characters.js www/js/imachine.js www/js/i18n.js +JSLIBS := www/js/lib/fastclick.js www/js/lib/modernizr-build.js \ + www/js/lib/when.js www/js/lib/spin.js +JSDATA := www/js/play.js www/js/images.js +JS := $(JSLIBS) $(MYJS) $(JSDATA) +JSOUT := www/js/all.min.js + +js: $(JSOUT) + +ifeq ($(JS_COMPRESSOR), uglifyjs) +$(JSOUT): $(JS) $(UGLIFYJS) + $(UGLIFYJS) $(JS) -o "$@" --source-map "$@".map --source-map-url ./all.min.js.map --screw-ie8 -p 2 -m -c unsafe=true,drop_debugger=false +else +$(JSOUT): $(JS) +# note that packr doesn't actually work +ifeq ($(JS_COMPRESSOR), packr) + $(PACKR) $(JS) -o "$@" +else +ifeq ($(JS_COMPRESSOR), closure_compiler) + $(CLOSURE_COMPILER) --compilation_level SIMPLE_OPTIMIZATIONS --create_source_map "$@".map --js $(subst $(SPACE), --js ,$(JS)) --js_output_file "$@" +endif # ($(JS_COMPRESSOR), closure_compiler) +endif # ($(JS_COMPRESSOR), packr) +endif # ($(JS_COMPRESSOR), uglifyjs) + +$(LOCAL_UGLIFYJS): package.json + $(NPM) update + touch "$@" + +www/js/lib/modernizr-build.js: Modernizr config-all.json + ln -fs ../../config-all.json "$<"/lib/config-all.json + cd "$<" && $(NPM) update && node_modules/.bin/grunt build + +www/js/lib/when.js: when + export PYTHON=python2; cd when && $(NPM) update && $(NPM) run browserify-debug + +# === JSON === +JSON := www/json/script.json www/json/script.json.gz www/json/imachine.json \ + www/json/imachine.json.gz www/json/ui-strings.json \ + www/json/ui-strings.json.gz www/json/ui-strings_FR.json \ + www/json/ui-strings_FR.json.gz + +RPYC := unrpyc/script-a1-friday_FR.rpyc unrpyc/script-a1-friday.rpyc \ + unrpyc/script-a1-monday_FR.rpyc unrpyc/script-a1-monday.rpyc \ + unrpyc/script-a1-saturday_FR.rpyc unrpyc/script-a1-saturday.rpyc \ + unrpyc/script-a1-sunday_FR.rpyc unrpyc/script-a1-sunday.rpyc \ + unrpyc/script-a1-thursday_FR.rpyc unrpyc/script-a1-thursday.rpyc \ + unrpyc/script-a1-tuesday_FR.rpyc unrpyc/script-a1-tuesday.rpyc \ + unrpyc/script-a1-wednesday_FR.rpyc unrpyc/script-a1-wednesday.rpyc \ + unrpyc/script-a2-emi_FR.rpyc unrpyc/script-a2-emi.rpyc \ + unrpyc/script-a2-hanako_FR.rpyc unrpyc/script-a2-hanako.rpyc \ + unrpyc/script-a2-lilly_FR.rpyc unrpyc/script-a2-lilly.rpyc \ + unrpyc/script-a2-rin_FR.rpyc unrpyc/script-a2-rin.rpyc \ + unrpyc/script-a2-shizune_FR.rpyc unrpyc/script-a2-shizune.rpyc \ + unrpyc/script-a3-emi_FR.rpyc unrpyc/script-a3-emi.rpyc \ + unrpyc/script-a3-hanako_FR.rpyc unrpyc/script-a3-hanako.rpyc \ + unrpyc/script-a3-lilly_FR.rpyc unrpyc/script-a3-lilly.rpyc \ + unrpyc/script-a3-rin_FR.rpyc unrpyc/script-a3-rin.rpyc \ + unrpyc/script-a3-shizune_FR.rpyc unrpyc/script-a3-shizune.rpyc \ + unrpyc/script-a4-emi_FR.rpyc unrpyc/script-a4-emi.rpyc \ + unrpyc/script-a4-hanako_FR.rpyc unrpyc/script-a4-hanako.rpyc \ + unrpyc/script-a4-lilly_FR.rpyc unrpyc/script-a4-lilly.rpyc \ + unrpyc/script-a4-rin_FR.rpyc unrpyc/script-a4-rin.rpyc \ + unrpyc/script-a4-shizune_FR.rpyc unrpyc/script-a4-shizune.rpyc +SJSON := $(patsubst unrpyc/%.rpyc,www/json/%.json,$(RPYC)) +JSONO := $(patsubst unrpyc/%.rpyc,unrpyc/%.json.o,%(RPYC)) + +# FIXME +# json: $(JSON) +json: + +%.json.gz: %.json + $(GZIP) -c $< > $@ + touch $< $@ + +www/json/script.json: $(SJSON) + cat $^ > "$@" + sed -i -e 's/^/{/;s/,$$/}/' "$@" + +www/json/%.json: unrpyc/%.json.o + uglifyjs "$<" --expr > "$@" + +define unrpyc = + python3 unrpyc/unrpyc.py --clobber "$<" "$@" +endef + +unrpyc/ui-strings.json.o unrpyc/ui-strings_FR.json.o: unrpyc/ui-strings%.json.o: unrpyc/ui-strings%.rpyc unrpyc/*.py + $(unrpyc) + sed -i -e 's/ \["init_language", "[a-z]*", \],//;s/^\]}$$/}/' "$@" + +unrpyc/ui_settings.json.o: ui_settings.rpyc *.py + python3 unrpyc.py --clobber "$<" --ignore-python "$@" + sed -i -e 's/,,/,/g;/: *,$$/d' "$@" + +unrpyc/%.json.o: unrpyc/%.rpyc unrpyc/*.py + $(unrpyc) + +www/json/script-%.json: unrpyc/script-%.json.o + uglifyjs "$<" --expr > "$@" + sed -i -e 's/^{//;s/}$$/,/' "$@" # === VIDEO === -VIDEO := $(wildcard $(DUMP)/video/*.mkv) +VIDEO := $(wildcard www/dump/video/*.mkv) Y4M := $(patsubst %.mkv,%.y4m,$(VIDEO)) MP4 := $(patsubst %.mkv,%.mp4,$(VIDEO)) WEBM := $(patsubst %.mkv,%.webm,$(VIDEO)) @@ -43,37 +143,21 @@ video: $(CVIDEO) %.y4m: %.mkv $(FFMPEG) -i "$<" -c:a copy "$@" -ifdef NOTEMP -%.mp4: %.mkv -else -%.mp4: %.y4m -endif +$(if $(NOTEMP),%.mp4: %.mkv,%.mp4: %.y4m) $(FFMPEG) -i "$<" -c:v libx264 -preset slower -tune animation -movflags empty_moov -profile:v baseline -c:a libfdk_aac -b:a 60k "$@" -ifdef NOTEMP -%.webm: %.mkv -else -%.webm: %.y4m -endif +$(if $(NOTEMP),%.webm: %.mkv,%.webm: %.y4m) $(FFMPEG) -i "$<" -crf 10 -b:v 1M -c:a copy "$@" -ifdef NOTEMP -%.vp9.webm: %.mkv -else -%.vp9.webm: %.y4m -endif +$(if $(NOTEMP),%.vp9.webm: %.mkv,%.vp9.webm: %.y4m) $(FFMPEG) -i "$<" -strict -2 -c:v libvpx-vp9 -crf 8 -b:v 1M -c:a libopus -vbr on -b:a 64k "$@" -ifdef NOTEMP -%.ogv: %.mkv -else -%.ogv: %.y4m -endif +$(if $(NOTEMP),%.ogv: %.mkv,%.ogv: %.y4m) $(FFMPEG) -i "$<" -c:v libtheora -qscale:v 10 -c:a copy "$@" # === AUDIO === -AUDIO := $(wildcard $(DUMP)/bgm/*.ogg) $(wildcard $(DUMP)/sfx/*.ogg) +AUDIO := $(wildcard www/dump/bgm/*.ogg) $(wildcard www/dump/sfx/*.ogg) OPUS := $(patsubst %.ogg,%.opus,$(AUDIO)) M4A := $(patsubst %.ogg,%.m4a,$(AUDIO)) WAV := $(patsubst %.ogg,%.wav,$(AUDIO)) @@ -92,33 +176,58 @@ audio: $(CAUDIO) # === IMAGES === -PNG := $(shell find $(DUMP) -name '*.png' ! -name 'ctc_strip.png') -JPG := $(shell find $(DUMP) -name '*.jpg') +PNG := $(shell find www/dump -name '*.png' ! -name 'ctc_strip.png') +JPG := $(shell find www/dump -name '*.jpg') WEBP := $(patsubst %.png,%.webp,$(PNG)) \ $(patsubst %.jpg,%.webp,$(JPG)) -CTC_ANIM_SRC := $(DUMP)/ui/ctc_strip.png -CTC_ANIM_TMP := $(DUMP)/ui/ctc_strip-0.png $(DUMP)/ui/ctc_strip-1.png $(DUMP)/ui/ctc_strip-2.png $(DUMP)/ui/ctc_strip-3.png $(DUMP)/ui/ctc_strip-4.png $(DUMP)/ui/ctc_strip-5.png $(DUMP)/ui/ctc_strip-6.png $(DUMP)/ui/ctc_strip-7.png $(DUMP)/ui/ctc_strip-8.png $(DUMP)/ui/ctc_strip-9.png $(DUMP)/ui/ctc_strip-10.png $(DUMP)/ui/ctc_strip-11.png $(DUMP)/ui/ctc_strip-12.png $(DUMP)/ui/ctc_strip-13.png $(DUMP)/ui/ctc_strip-14.png $(DUMP)/ui/ctc_strip-15.png $(DUMP)/ui/ctc_strip-16.png $(DUMP)/ui/ctc_strip-17.png $(DUMP)/ui/ctc_strip-18.png $(DUMP)/ui/ctc_strip-19.png $(DUMP)/ui/ctc_strip-20.png $(DUMP)/ui/ctc_strip-21.png $(DUMP)/ui/ctc_strip-22.png $(DUMP)/ui/ctc_strip-23.png $(DUMP)/ui/ctc_strip-24.png $(DUMP)/ui/ctc_strip-25.png $(DUMP)/ui/ctc_strip-26.png $(DUMP)/ui/ctc_strip-27.png $(DUMP)/ui/ctc_strip-28.png $(DUMP)/ui/ctc_strip-29.png $(DUMP)/ui/ctc_strip-30.png $(DUMP)/ui/ctc_strip-31.png $(DUMP)/ui/ctc_strip-32.png $(DUMP)/ui/ctc_strip-33.png $(DUMP)/ui/ctc_strip-34.png $(DUMP)/ui/ctc_strip-35.png $(DUMP)/ui/ctc_strip-36.png $(DUMP)/ui/ctc_strip-37.png $(DUMP)/ui/ctc_strip-38.png $(DUMP)/ui/ctc_strip-39.png $(DUMP)/ui/ctc_strip-40.png $(DUMP)/ui/ctc_strip-41.png $(DUMP)/ui/ctc_strip-42.png $(DUMP)/ui/ctc_strip-43.png $(DUMP)/ui/ctc_strip-44.png $(DUMP)/ui/ctc_strip-45.png $(DUMP)/ui/ctc_strip-46.png $(DUMP)/ui/ctc_strip-47.png $(DUMP)/ui/ctc_strip-48.png $(DUMP)/ui/ctc_strip-49.png $(DUMP)/ui/ctc_strip-50.png $(DUMP)/ui/ctc_strip-51.png $(DUMP)/ui/ctc_strip-52.png $(DUMP)/ui/ctc_strip-53.png $(DUMP)/ui/ctc_strip-54.png $(DUMP)/ui/ctc_strip-55.png $(DUMP)/ui/ctc_strip-56.png $(DUMP)/ui/ctc_strip-57.png $(DUMP)/ui/ctc_strip-58.png $(DUMP)/ui/ctc_strip-59.png $(DUMP)/ui/ctc_strip-60.png $(DUMP)/ui/ctc_strip-61.png $(DUMP)/ui/ctc_strip-62.png $(DUMP)/ui/ctc_strip-63.png +CTC_ANIM_SRC := www/dump/ui/ctc_strip.png +CTC_ANIM_TMP := www/dump/ui/ctc_strip-0.png www/dump/ui/ctc_strip-1.png \ + www/dump/ui/ctc_strip-2.png www/dump/ui/ctc_strip-3.png \ + www/dump/ui/ctc_strip-4.png www/dump/ui/ctc_strip-5.png \ + www/dump/ui/ctc_strip-6.png www/dump/ui/ctc_strip-7.png \ + www/dump/ui/ctc_strip-8.png www/dump/ui/ctc_strip-9.png \ + www/dump/ui/ctc_strip-10.png www/dump/ui/ctc_strip-11.png \ + www/dump/ui/ctc_strip-12.png www/dump/ui/ctc_strip-13.png \ + www/dump/ui/ctc_strip-14.png www/dump/ui/ctc_strip-15.png \ + www/dump/ui/ctc_strip-16.png www/dump/ui/ctc_strip-17.png \ + www/dump/ui/ctc_strip-18.png www/dump/ui/ctc_strip-19.png \ + www/dump/ui/ctc_strip-20.png www/dump/ui/ctc_strip-21.png \ + www/dump/ui/ctc_strip-22.png www/dump/ui/ctc_strip-23.png \ + www/dump/ui/ctc_strip-24.png www/dump/ui/ctc_strip-25.png \ + www/dump/ui/ctc_strip-26.png www/dump/ui/ctc_strip-27.png \ + www/dump/ui/ctc_strip-28.png www/dump/ui/ctc_strip-29.png \ + www/dump/ui/ctc_strip-30.png www/dump/ui/ctc_strip-31.png \ + www/dump/ui/ctc_strip-32.png www/dump/ui/ctc_strip-33.png \ + www/dump/ui/ctc_strip-34.png www/dump/ui/ctc_strip-35.png \ + www/dump/ui/ctc_strip-36.png www/dump/ui/ctc_strip-37.png \ + www/dump/ui/ctc_strip-38.png www/dump/ui/ctc_strip-39.png \ + www/dump/ui/ctc_strip-40.png www/dump/ui/ctc_strip-41.png \ + www/dump/ui/ctc_strip-42.png www/dump/ui/ctc_strip-43.png \ + www/dump/ui/ctc_strip-44.png www/dump/ui/ctc_strip-45.png \ + www/dump/ui/ctc_strip-46.png www/dump/ui/ctc_strip-47.png \ + www/dump/ui/ctc_strip-48.png www/dump/ui/ctc_strip-49.png \ + www/dump/ui/ctc_strip-50.png www/dump/ui/ctc_strip-51.png \ + www/dump/ui/ctc_strip-52.png www/dump/ui/ctc_strip-53.png \ + www/dump/ui/ctc_strip-54.png www/dump/ui/ctc_strip-55.png \ + www/dump/ui/ctc_strip-56.png www/dump/ui/ctc_strip-57.png \ + www/dump/ui/ctc_strip-58.png www/dump/ui/ctc_strip-59.png \ + www/dump/ui/ctc_strip-60.png www/dump/ui/ctc_strip-61.png \ + www/dump/ui/ctc_strip-62.png www/dump/ui/ctc_strip-63.png CTC_ANIM_TMP_WEBP := $(patsubst %.png,%.webp,$(CTC_ANIM_TMP)) -CTC_ANIM := $(DUMP)/ui/ctc_anim.png $(DUMP)/ui/ctc_anim.webp +CTC_ANIM := www/dump/ui/ctc_anim.png www/dump/ui/ctc_anim.webp CIMAGE := $(WEBP) $(CTC_ANIM) www/favicon.ico images: $(CIMAGE) -$(DUMP)/ui/ctc_strip.webp: $(DUMP)/ui/ctc_strip.png +www/dump/ui/ctc_strip.webp: www/dump/ui/ctc_strip.png define png2webp = $(PNGQUANT) --force --speed 1 --ext .png "$<" -ifdef ZOPFLIPNG - $(ZOPFLIPNG) -m -y "$<" "$<" -endif -ifdef DEFLOPT - $(DEFLOPT) "$<" -endif -ifdef DEFLUFF - $(DEFLUFF) < "$<" > "$<".tmp - mv -f "$<".tmp "$<" -endif + $(if $(ZOPFLIPNG), $(ZOPFLIPNG) -m -y "$<" "$<") + $(if $(DEFLOPT), $(DEFLOPT) "$<") + $(if $(DEFLUFF), $(DEFLUFF) < "$<" > "$<".tmp + mv -f "$<".tmp "$<") endef %.webp: %.png @@ -128,68 +237,32 @@ endef %.webp: %.jpg $(CWEBP) -q 90 -m 6 "$<" -o "$@" -www/favicon.ico: $(DUMP)/ui/icon.png +www/favicon.ico: www/dump/ui/icon.png $(CONVERT) "$<" -resize 256x256 -transparent white "$@" -$(DUMP)/ui/bt-cf-unchecked.webp $(DUMP)/ui/bt-cf-checked.webp: %.webp: %.png +www/dump/ui/bt-cf-unchecked.webp www/dump/ui/bt-cf-checked.webp: %.webp: %.png $(CONVERT) -trim "$<" "$<" $(png2webp) -$(DUMP)/ui/ctc_strip-0.png: $(CTC_ANIM_SRC) - $(CONVERT) "$<" -crop 16x16 $(DUMP)/ui/ctc_strip-%d.png +www/dump/ui/ctc_strip-0.png: $(CTC_ANIM_SRC) + $(CONVERT) "$<" -crop 16x16 www/dump/ui/ctc_strip-%d.png -$(DUMP)/ui/ctc_strip-%.png: $(CTC_ANIM_SRC) $(DUMP)/ui/ctc_strip-0.png +www/dump/ui/ctc_strip-%.png: $(CTC_ANIM_SRC) www/dump/ui/ctc_strip-0.png @ -$(DUMP)/ui/ctc_anim.png: $(CTC_ANIM_TMP) +www/dump/ui/ctc_anim.png: $(CTC_ANIM_TMP) $(APNGASM) "$@" $^ 3 100 -$(DUMP)/ui/ctc_anim.webp: $(CTC_ANIM_TMP_WEBP) +www/dump/ui/ctc_anim.webp: $(CTC_ANIM_TMP_WEBP) $(WEBPMUX) -frame $(subst $(SPACE), +30 -frame ,$^) +30 -loop 0 -o "$@" -# === JS === - -MYJS := www/js/html5ks.js www/js/menu.js www/js/api.js www/js/characters.js www/js/imachine.js www/js/i18n.js -JSLIBS := fastclick/lib/fastclick.js Modernizr/dist/modernizr-build.js when/build/when.js spin.js/spin.js -JSDATA := www/js/play.js www/js/images.js -JS := $(JSLIBS) $(MYJS) $(JSDATA) -JSOUT := www/js/all.min.js - -Modernizr/dist/modernizr-build.js: Modernizr config-all.json - ln -fs ../../config-all.json "$<"/lib/config-all.json - cd "$<" && $(NPM) update && node_modules/.bin/grunt build - -when/build/when.js: when - export PYTHON=python2; cd when && $(NPM) update && $(NPM) run browserify-debug - -js: $(JSOUT) - -ifeq ($(JS_COMPRESSOR), uglifyjs) -$(JSOUT): $(JS) $(UGLIFYJS) - $(UGLIFYJS) $(JS) -o "$@" --source-map "$@".map --source-map-url ./all.min.js.map --screw-ie8 -p 2 -m -c unsafe=true,drop_debugger=false -else -$(JSOUT): $(JS) -# note that packr doesn't actually work -ifeq ($(JS_COMPRESSOR), packr) - $(PACKR) $(JS) -o "$@" -else -ifeq ($(JS_COMPRESSOR), closure_compiler) - $(CLOSURE_COMPILER) --compilation_level SIMPLE_OPTIMIZATIONS --create_source_map "$@".map --js $(subst $(SPACE), --js ,$(JS)) --js_output_file "$@" -endif # ($(JS_COMPRESSOR), closure_compiler) -endif # ($(JS_COMPRESSOR), packr) -endif # ($(JS_COMPRESSOR), uglifyjs) - -$(LOCAL_UGLIFYJS): package.json - $(NPM) update - touch "$@" - # === MISC === -jshint: $(MYJS) +test: $(MYJS) jshint --show-non-errors $^ space: - $(RM) -r $(DUMP)/font + $(RM) -r www/dump/font $(RM) $(WAV) $(VIDEO) $(CTC_ANIM_TMP) $(CTC_ANIM_TMP_WEBP) $(JSOUT) $(JSOUT).map watch: @@ -199,8 +272,9 @@ watch: done # disable implicit rules, increases `make` speed by 3 seconds -MAKEFLAGS=-r +# also check symlink targets (for js) +MAKEFLAGS=-r -L .SUFFIXES: -.INTERMEDIATE: $(Y4M) $(CTC_ANIM_TMP) $(CTC_ANIM_TMP_WEBP) -.PHONY: video audio images js jshint clean space watch +.INTERMEDIATE: $(JSONO) $(Y4M) $(CTC_ANIM_TMP) $(CTC_ANIM_TMP_WEBP) +.PHONY: video audio images js json jshint space watch -- cgit v1.2.3-70-g09d2