diff options
author | Yorhel <git@yorhel.nl> | 2019-10-23 09:14:14 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2019-10-23 09:14:24 +0200 |
commit | f51edc25a90a04c02b87bd97c6d104951ae9caeb (patch) | |
tree | 71b2eccf14036292908f83c591249e204712520d /Makefile | |
parent | bf06f76f3331eaf69263a673cac62e3a34304912 (diff) |
Update to Elm 0.19.1
This version requires that all .elm files given to 'elm make' export a
'main' function, so we can't pass internal libraries anymore. I didn't
feel like maintaining a separate list of entrypoints, lazy workaround:
grep for elm files with a definition of 'main'.
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 34 |
1 files changed, 20 insertions, 14 deletions
@@ -116,13 +116,16 @@ static/f/vndb.min.js: static/f/vndb.js # v2-rw +ELM_FILES=elm/*.elm elm/*/*.elm +ELM_MODULES=$(shell grep -l '^main =' ${ELM_FILES} | sed 's/^elm\///') + # Patch the Javascript generated by Elm and append the elm/**.js files to it. # Patches include: # - Redirect calls from Lib.Ffi.* to window.elmFfi_* # - Patch the virtualdom diffing algorithm to always apply the 'selected' attribute define fix-js - sed -i 's/var author\$$project\$$Lib\$$Ffi\$$/var __unused__/g' $@ - sed -Ei 's/author\$$project\$$Lib\$$Ffi\$$([a-zA-Z0-9_]+)/window.elmFfi_\1(_Json_wrap)/g' $@ + sed -i 's/var \$$author\$$project\$$Lib\$$Ffi\$$/var __unused__/g' $@ + sed -Ei 's/\$$author\$$project\$$Lib\$$Ffi\$$([a-zA-Z0-9_]+)/window.elmFfi_\1(_Json_wrap)/g' $@ sed -Ei "s/([^ ]+) !== 'checked'/\\1 !== 'checked' \&\& \\1 !== 'selected'/g" $@ for fn in elm/*.js; do \ echo "(function(){'use strict';"; \ @@ -134,12 +137,12 @@ endef elm/Gen/.generated: lib/VNWeb/*.pm lib/VNWeb/*/*.pm lib/VNDB/Types.pm lib/VNDB/Config.pm data/conf.pl util/vndb.pl elmgen -static/f/v2rw.js: elm/*.elm elm/*/*.elm elm/*.js elm/Gen/.generated | static/f - cd elm && ELM_HOME=elm-stuff elm make *.elm */*.elm --output ../$@ +static/f/v2rw.js: ${ELM_FILES} elm/*.js elm/Gen/.generated | static/f + cd elm && ELM_HOME=elm-stuff elm make ${ELM_MODULES} --output ../$@ ${fix-js} -static/f/v2rw.min.js: elm/*.elm elm/*/*.elm elm/*.js elm/Gen/.generated | static/f - cd elm && ELM_HOME=elm-stuff elm make --optimize *.elm */*.elm --output ../$@ +static/f/v2rw.min.js: ${ELM_FILES} elm/*.js elm/Gen/.generated | static/f + cd elm && ELM_HOME=elm-stuff elm make --optimize ${ELM_MODULES} --output ../$@ ${fix-js} uglifyjs $@ --compress 'pure_funcs="F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9",pure_getters,keep_fargs=false,unsafe_comps,unsafe' | uglifyjs --mangle -o $@~ mv $@~ $@ @@ -148,18 +151,21 @@ static/f/v2rw.min.js: elm/*.elm elm/*/*.elm elm/*.js elm/Gen/.generated | static # v3 +ELM3_FILES=elm3/*.elm elm3/*/*.elm elm3/Lib/Gen.elm +ELM3_MODULES=$(shell grep -l '^main =' ${ELM3_FILES} | sed 's/^elm3\///') + elm3/Lib/Gen.elm: lib/VN3/*.pm lib/VN3/*/*.pm data/conf.pl util/vndb3.pl elmgen >$@ -static/v3/elm.js: elm3/*.elm elm3/*/*.elm elm3/Lib/Gen.elm - cd elm3 && ELM_HOME=elm-stuff elm make *.elm */*.elm --output ../$@ - sed -i 's/var author\$$project\$$Lib\$$Ffi\$$/var __unused__/g' $@ - sed -Ei 's/author\$$project\$$Lib\$$Ffi\$$([a-zA-Z0-9_]+)/window.elmFfi_\1(_Json_wrap)/g' $@ +static/v3/elm.js: ${ELM3_FILES} + cd elm3 && ELM_HOME=elm-stuff elm make ${ELM3_MODULES} --output ../$@ + sed -i 's/var \$$author\$$project\$$Lib\$$Ffi\$$/var __unused__/g' $@ + sed -Ei 's/\$$author\$$project\$$Lib\$$Ffi\$$([a-zA-Z0-9_]+)/window.elmFfi_\1(_Json_wrap)/g' $@ -static/v3/elm-opt.js: elm3/*.elm elm3/*/*.elm elm3/Lib/Gen.elm - cd elm3 && ELM_HOME=elm-stuff elm make --optimize *.elm */*.elm --output ../$@ - sed -i 's/var author\$$project\$$Lib\$$Ffi\$$/var __unused__/g' $@ - sed -Ei 's/author\$$project\$$Lib\$$Ffi\$$([a-zA-Z0-9_]+)/window.elmFfi_\1(_Json_wrap)/g' $@ +static/v3/elm-opt.js: ${ELM3_FILES} + cd elm3 && ELM_HOME=elm-stuff elm make --optimize ${ELM3_MODULES} --output ../$@ + sed -i 's/var \$$author\$$project\$$Lib\$$Ffi\$$/var __unused__/g' $@ + sed -Ei 's/\$$author\$$project\$$Lib\$$Ffi\$$([a-zA-Z0-9_]+)/window.elmFfi_\1(_Json_wrap)/g' $@ static/v3/min.js: static/v3/elm-opt.js static/v3/vndb.js uglifyjs $^ --compress 'pure_funcs="F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9",pure_getters,keep_fargs=false,unsafe_comps,unsafe' | uglifyjs --mangle -o $@ |