## directories
dir_source := source
dir_build := build
## commands
cmd_log := echo "--"
cmd_tsc := tsc --lib es2017,dom
cmd_cp := cp
cmd_lessc := lessc
cmd_mkdir := mkdir -p
## rules
all: structure logic style
.PHONY: all
structure: ${dir_build}/index.html
.PHONY: structure
${dir_build}/index.html: ${dir_source}/index.html
@ ${cmd_log} "structure …"
@ ${cmd_mkdir} $(dir $@)
@ ${cmd_cp} -ru $^ $@
logic: ${dir_build}/logic.js
.PHONY: logic
${dir_build}/logic.js: \
${dir_source}/logic/types.ts \
${dir_source}/logic/helpers.ts \
${dir_source}/logic/model.ts \
${dir_source}/logic/view.ts \
${dir_source}/logic/control.ts \
${dir_source}/logic/main.ts
@ ${cmd_log} "logic …"
@ ${cmd_mkdir} $(dir $@)
@ ${cmd_tsc} $^ --outFile $@
style: ${dir_build}/style.css
.PHONY: style
${dir_build}/style.css: ${dir_source}/style.less
@ ${cmd_log} "style …"
@ ${cmd_mkdir} $(dir $@)
@ ${cmd_lessc} $^ > $@