summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2019-07-25 14:30:04 +0200
committerYorhel <git@yorhel.nl>2019-07-25 14:36:21 +0200
commitf296495a912ce759df11c43e78b4552788bdbff2 (patch)
tree0c10802de65fb7c8475722e12234bff5eb980628 /Makefile
parent0f3cfeb85caec6424bcbea47142eefbf8011636b (diff)
Merge the v3 branch into separate namespace + fix Docker stuff (again)
I was getting tired of having to keep two branches up-to-date with the latest developments, so decided to throw v3 into the same branch - just different files (...which will get mostly rewritten again soon). The two versions aren't very different in terms of dependencies, build system and support code, so they can now properly share files. Added a section to the README to avoid confusion. This merge also makes it easier to quickly switch between the different versions, which is handy for development. It's even possible to run both at the same time, but my scripts use the same port so that needs a workaround. And it's amazing how often I break the Docker scripts.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile124
1 files changed, 88 insertions, 36 deletions
diff --git a/Makefile b/Makefile
index 1ad640ba..7a40de00 100644
--- a/Makefile
+++ b/Makefile
@@ -1,31 +1,13 @@
# all (default)
-# Same as `make dirs js icons skins robots`
+# Create all the necessary directories, javascript, css, etc.
#
-# dirs
-# Creates the required directories not present in git
-#
-# js
-# Generates the Javascript code
-#
-# icons
-# Generates the CSS icon sprites
-#
-# skins
-# Generates the CSS code
-#
-# robots
-# Ensures that www/robots.txt and static/robots.txt exist. Can be modified to
-# suit your needs.
+# prod
+# Create static assets for production (v3 only).
#
# chmod
# For when the http process is run from a different user than the files are
# chown'ed to. chmods all files and directories written to from vndb.pl.
#
-# chmod-autoupdate
-# As chmod, but also chmods all files that may need to be updated from a
-# normal 'make' run. Should be used when the regen_static option is enabled
-# and the http process is run from a different user.
-#
# multi-start, multi-stop, multi-restart:
# Start/stop/restart the Multi daemon. Provided for convenience, a proper initscript
# probably makes more sense.
@@ -35,19 +17,39 @@
# other environments. Patches to improve the portability are always welcome.
-.PHONY: all dirs js icons skins robots chmod chmod-autoupdate multi-stop multi-start multi-restart
+.PHONY: all chmod multi-stop multi-start multi-restart
-all: dirs js skins robots data/config.pl util/sql/editfunc.sql
+ALL_KEEP=\
+ static/ch static/cv static/sf static/st \
+ data/log static/f static/v3 www www/feeds www/api \
+ data/config.pl data/config3.pl \
+ www/robots.txt static/robots.txt
-dirs: static/ch static/f static/cv static/sf static/st data/log www www/feeds www/api
+ALL_CLEAN=\
+ static/f/vndb.js \
+ data/icons/icons.css \
+ static/v3/elm.js \
+ static/v3/style.css \
+ util/sql/editfunc.sql \
+ $(shell ls static/s | sed -e 's/\(.\+\)/static\/s\/\1\/style.css/g')
-js: static/f/vndb.js
+PROD=\
+ static/v3/elm-opt.js \
+ static/v3/min.js static/v3/min.js.gz \
+ static/v3/min.css static/v3/min.css.gz
-icons: data/icons/icons.css
+all: ${ALL_KEEP} ${ALL_CLEAN}
+prod: ${PROD}
-skins: $(shell ls static/s | sed -e 's/\(.\+\)/static\/s\/\1\/style.css/g')
+clean:
+ rm -f ${ALL_CLEAN} ${PROD}
+ rm -f static/f/icons.png
+ rm -f static/s/*/style.css.gz static/s/*/boxbg.png
+ rm -f elm3/Lib/Gen.elm
+ rm -rf elm3/elm-stuff/build-artifacts
-robots: dirs www/robots.txt static/robots.txt
+cleaner: clean
+ rm -rf elm3/elm-stuff
util/sql/editfunc.sql: util/sqleditfunc.pl util/sql/schema.sql
util/sqleditfunc.pl
@@ -56,12 +58,19 @@ static/ch static/cv static/sf static/st:
mkdir -p $@;
for i in $$(seq -w 0 1 99); do mkdir -p "$@/$$i"; done
-data/log www www/feeds www/api static/f:
+data/log www www/feeds www/api static/f static/v3:
mkdir -p $@
data/config.pl:
cp -n data/config_example.pl data/config.pl
+data/config3.pl:
+ cp -n data/config3_example.pl data/config3.pl
+
+%/robots.txt: | www
+ echo 'User-agent: *' > $@
+ echo 'Disallow: /' >> $@
+
static/f/vndb.js: data/js/*.js util/jsgen.pl data/config.pl data/global.pl | static/f
util/jsgen.pl
@@ -71,17 +80,60 @@ data/icons/icons.css: data/icons/*.png data/icons/*/*.png util/spritegen.pl | st
static/s/%/style.css: static/s/%/conf util/skingen.pl data/style.css data/icons/icons.css
util/skingen.pl $*
-%/robots.txt:
- echo 'User-agent: *' > $@
- echo 'Disallow: /' >> $@
+
+ELMDEP=\
+ data/config3.pl \
+ lib/VN3/Auth.pm \
+ lib/VN3/Docs/Edit.pm \
+ lib/VN3/Release/Edit.pm \
+ lib/VN3/Producer/Edit.pm \
+ lib/VN3/Char/Edit.pm \
+ lib/VN3/Staff/Edit.pm \
+ lib/VN3/Types.pm \
+ lib/VN3/User/Settings.pm \
+ lib/VN3/VN/Edit.pm \
+ lib/VN3/Validation.pm \
+ util/elmgen.pl
+
+elm3/Lib/Gen.elm: ${ELMDEP}
+ util/elmgen.pl >$@
+
+static/v3/elm.js: elm3/*.elm elm3/*/*.elm elm3/Lib/Gen.elm | static/f
+ 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-opt.js: elm/*.elm elm/*/*.elm elm/Lib/Gen.elm | static/f
+ 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/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 $@
+
+static/v3/min.js.gz: static/v3/min.js
+ zopfli $<
+
+
+CSS=\
+ css3/framework/base.css\
+ css3/framework/helpers.css\
+ css3/framework/grid.css\
+ css3/framework/elements.css\
+ css3/vndb.css
+
+static/v3/style.css: ${CSS} | static/f
+ cat $^ >$@
+
+static/v3/min.css: static/v3/style.css
+ uglifycss $^ >$@
+
+static/v3/min.css.gz: static/v3/min.css
+ zopfli $<
chmod: all
chmod -R a-x+rwX static/{ch,cv,sf,st}
-chmod-autoupdate: chmod
- chmod a+xrw static/f data/icons
- chmod -f a-x+rw static/s/*/{style.css,boxbg.png} static/f/icons.png
-
# may wait indefinitely, ^C and kill -9 in that case
define multi-stop