frontend/main.js
FRONTEND_BIN=frontend/armadillo.js
-all: backend dev
+# Default target, used to produce the backend and uncompiled frontend.
+all: backend frontend
+# Creates the compiled frontend code and stamps the version information into
+# the release.
+release: backend stamp_version compiled
+
+# Compiles the backend server.
backend:
go build -v .
-frontend: $(FRONTEND_BIN)
+# Compiles the frontend code for development.
+frontend: stamp $(FRONTEND_BIN)
$(FRONTEND_BIN): $(FRONTEND_SOURCES)
echo $(foreach f,$^,"document.write('<script src="fe/$(notdir $f)"></script>');\n") > $(FRONTEND_BIN)
-dev: version frontend
-
+# Compiles the frontend code for release.
compiled: SOURCES_FLAGS=$(foreach f,$(FRONTEND_SOURCES),--js=$f)
compiled: version
java -jar closure-compiler.jar \
--js_output_file=$(FRONTEND_BIN) \
--compilation_level=SIMPLE_OPTIMIZATIONS
+# Advances the frontend version.
stamp:
- gitcrement next
+ if [[ -f $(VERSION_FILE) ]]; then gitcrement next; fi;
+# Builds the version file template.
version: STAMP=$(shell date +%s)
version: BUILD=$(shell gitcrement current)
-version:
+version: stamp $(VERSION_FILE)
@echo "// This file is automatically generated." > $(VERSION_FILE)
@echo >> $(VERSION_FILE)
@echo "$$.namespace('$(VERSION_NAMESPACE)');" >> $(VERSION_FILE)
echo "$(VERSION_NAMESPACE).BUILD = $(BUILD);" >> $(VERSION_FILE)
echo "$(VERSION_NAMESPACE).STAMP = $(STAMP);" >> $(VERSION_FILE)
-stamp_version: stamp version
+# Copies the version template to the source and commits it.
+stamp_version: version
cp $(VERSION_FILE) $(VERSION_SOURCE)
git commit $(VERSION_SOURCE) \
--author='Armadillo Build Script <armadillo@bluestatic.org>' \