diff --git a/.gitignore b/.gitignore
index 903e226ca9..0a1d2e3b23 100644
--- a/.gitignore
+++ b/.gitignore
@@ -83,3 +83,6 @@ prime/
 *.snap-build
 *_source.tar.bz2
 .DS_Store
+
+# Make evidence files
+/.make_evidence
diff --git a/Makefile b/Makefile
index 360939321b..688114fb3f 100644
--- a/Makefile
+++ b/Makefile
@@ -29,6 +29,7 @@ GOFLAGS := -v
 EXTRA_GOFLAGS ?=
 
 MAKE_VERSION := $(shell $(MAKE) -v | head -n 1)
+MAKE_EVIDENCE_DIR := .make_evidence
 
 ifneq ($(RACE_ENABLED),)
 	GOTESTFLAGS ?= -race
@@ -58,7 +59,10 @@ BINDATA_DEST := modules/public/bindata.go modules/options/bindata.go modules/tem
 BINDATA_HASH := $(addsuffix .hash,$(BINDATA_DEST))
 
 WEBPACK_DEST_DIRS := public/js public/css
+
+FOMANTIC_SOURCES ?= $(shell find web_src/fomantic -type f)
 FOMANTIC_DEST_DIR := public/fomantic
+FOMANTIC_EVIDENCE := $(MAKE_EVIDENCE_DIR)/fomantic
 
 TAGS ?=
 
@@ -139,7 +143,7 @@ node-check:
 
 .PHONY: clean-all
 clean-all: clean
-	rm -rf $(WEBPACK_DEST_DIRS) $(FOMANTIC_DEST_DIR)
+	rm -rf $(WEBPACK_DEST_DIRS) $(FOMANTIC_DEST_DIR) $(FOMANTIC_EVIDENCE)
 
 .PHONY: clean
 clean:
@@ -498,13 +502,13 @@ css:
 	$(MAKE) webpack
 
 .PHONY: fomantic
-fomantic: node-check $(FOMANTIC_DEST_DIR)
+fomantic: node-check $(FOMANTIC_EVIDENCE)
 
-$(FOMANTIC_DEST_DIR): semantic.json web_src/fomantic/theme.config.less | node_modules
+$(FOMANTIC_EVIDENCE): semantic.json $(FOMANTIC_SOURCES) | node_modules
 	cp web_src/fomantic/theme.config.less node_modules/fomantic-ui/src/theme.config
 	cp web_src/fomantic/_site/globals/* node_modules/fomantic-ui/src/_site/globals/
 	npx gulp -f node_modules/fomantic-ui/gulpfile.js build
-	@touch $(FOMANTIC_DEST_DIR)
+	@mkdir -p $(MAKE_EVIDENCE_DIR) && touch $(FOMANTIC_EVIDENCE)
 
 .PHONY: webpack
 webpack: node-check $(WEBPACK_DEST)