|
@@ -0,0 +1,61 @@
|
|
|
|
+all: deps apps
|
|
|
|
+.PHONY: all
|
|
|
|
+
|
|
|
|
+APPS = $(patsubst apps/*/src/%.app.src,%,$(wildcard apps/*/src/*.app.src))
|
|
|
|
+
|
|
|
|
+### DEPS -- Fetches & compiles deps recursively then moves every dep to deps/
|
|
|
|
+
|
|
|
|
+deps: $(patsubst dep_%,deps/%/,$(filter dep_%,$(.VARIABLES))) | deps-dir
|
|
|
|
+ $(if $(wildcard deps/*/deps/), \
|
|
|
|
+ mv -v deps/*/deps/* deps/ 2>/dev/null ; rmdir $(wildcard deps/*/deps/))
|
|
|
|
+.PHONY: deps
|
|
|
|
+
|
|
|
|
+deps-dir:
|
|
|
|
+ $(if $(wildcard deps/),,mkdir deps/)
|
|
|
|
+
|
|
|
|
+deps/%/:
|
|
|
|
+ git clone -n -- $(word 1,$(dep_$*)) $@
|
|
|
|
+ cd $@ && git checkout -q $(word 2,$(dep_$*)) && cd ../..
|
|
|
|
+ @bash -c "if [[ -f $@/Makefile ]]; \
|
|
|
|
+ then echo 'make -C $@ all' ; make -C $@ all ; \
|
|
|
|
+ else echo 'cd $@ && rebar get-deps compile && cd ../..' ; \
|
|
|
|
+ cd $@ && rebar get-deps compile && cd ../.. ; fi"
|
|
|
|
+
|
|
|
|
+### APP -- Compiles src/ into ebin/
|
|
|
|
+
|
|
|
|
+apps: $(APPS)
|
|
|
|
+ $(foreach ext, erl xrl yrl S core, \
|
|
|
|
+ $(patsubst apps/*/src/%.$(ext), apps/*/ebin/%.beam, $(wildcard apps/*/src/*.$(ext)))) \
|
|
|
|
+ $(patsubst apps/*/templates/%.dtl, apps/*/ebin/%_dtl.beam,$(wildcard apps/*/templates/*.dtl))
|
|
|
|
+ echo "-> $@"
|
|
|
|
+.PHONY: apps
|
|
|
|
+
|
|
|
|
+apps/*/ebin/%.app: apps/*/src/%.app.src | apps/*/ebin/
|
|
|
|
+ @erl -noshell \
|
|
|
|
+ -eval 'case file:consult("$<") of {ok,_} -> ok ; \
|
|
|
|
+ {error,{_,_,M}} -> io:format("$<: ~s~s\n",M), halt(1) end.' \
|
|
|
|
+ -s init stop
|
|
|
|
+ cp $< $@
|
|
|
|
+ echo "application -> $@"
|
|
|
|
+
|
|
|
|
+apps/*/ebin/%.beam: apps/*/src/%.erl $(wildcard apps/*/include/*) | apps/*/ebin/ | deps/*/ebin/
|
|
|
|
+ erlc -o ebin/ $(ERLCFLAGS) -v -Iinclude/ -Ideps/ $<
|
|
|
|
+ echo "compile -> $@"
|
|
|
|
+
|
|
|
|
+apps/*/ebin/%_view.beam: apps/*/priv/templates/%.html | apps/*/ebin/
|
|
|
|
+ $(if $(wildcard deps/erlydtl/),, \
|
|
|
|
+ $(error Error compiling $<: deps/erlydtl/ not found))
|
|
|
|
+ @erl -noshell -pa ebin/ -pa deps/*/ebin/ \
|
|
|
|
+ -eval 'io:format("Compiling ErlyDTL template: $< -> $@\n").' \
|
|
|
|
+ -eval 'erlydtl:compile("$<", $*_view, [{out_dir,"ebin/"},{auto_escape,false}]).' \
|
|
|
|
+ -s init stop
|
|
|
|
+ echo "template -> $@"
|
|
|
|
+
|
|
|
|
+apps/*/ebin/:
|
|
|
|
+ mkdir ebin/
|
|
|
|
+ echo "-> $@"
|
|
|
|
+
|
|
|
|
+#clean:
|
|
|
|
+# $(if $(wildcard apps/*/ebin/),rm -r ebin/)
|
|
|
|
+
|
|
|
|
+#.PHONY: clean
|