summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2019-10-23 09:14:14 +0200
committerYorhel <git@yorhel.nl>2019-10-23 09:14:24 +0200
commitf51edc25a90a04c02b87bd97c6d104951ae9caeb (patch)
tree71b2eccf14036292908f83c591249e204712520d /Makefile
parentbf06f76f3331eaf69263a673cac62e3a34304912 (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--Makefile34
1 files changed, 20 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index 2cbc4511..cf067f4e 100644
--- a/Makefile
+++ b/Makefile
@@ -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 $@