JAVA ?= /usr/bin/java JS_MINIFY_FILTER_IN ?= sed 's/console\.[a-z]\+([^)]\+) *;//g' JS_SRC ?= $(filter-out %.min.js,$(wildcard *.js)) JS_GENERATED ?= $(patsubst %.js,%.min.js,$(JS_SRC)) JS_EXTRA_EXTERNS ?= JS_EXTERNS_DIRS ?= /opt/closure-compiler/share/externs JS_EXTERNS ?= $(sort $(JS_EXTRA_EXTERNS) jquery-3.3.js) JS_EXTERN_PATHS ?= $(wildcard $(foreach d,$(JS_EXTERNS_DIRS),$(addprefix $d/,$(JS_EXTERNS)))) JS_MINIFY_OPTS ?= $(addprefix --externs ,$(JS_EXTERN_PATHS)) --compilation_level ADVANCED --strict_mode_input JS_MINIFY_EXE ?= $(JAVA) -jar $(firstword $(wildcard \ $(CVS_PROJ_DIR)/closure-compiler/contrib/closure-compiler/install-root/usr/share/java/closure-compiler.jar \ /usr/share/java/closure-compiler.jar \ )) JS_MINIFY ?= $(JS_MINIFY_EXE) $(JS_MINIFY_OPTS) # This is not nice. It requires install-files to be included from elsewhere, # which is not obvious. OTOH, if it isn't, SOURCE_FILES doesn't do any harm, # either. SOURCE_FILES += $(JS_GENERATED) all: $(JS_GENERATED) clean: minify.clean %.min.js: %.js cat $< | $(JS_MINIFY_FILTER_IN) > $@.filtered $(JS_MINIFY) $@.filtered > $@.tmp mv $@.tmp $@ minify.clean: rm -f $(JS_GENERATED) *.tmp *.filtered