From 5f4d7e3c5b013afe03ae2a441c82ad79bae7c66c Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
Date: Tue, 22 Jun 2021 15:14:42 -0700
Subject: [PATCH] Makefile: fail if old build directories exist

After a checkout from before revision, old directories
such as bin/Linux64 only remain if untracked files exist
within. This may be confusing to the user. They may even
use an outdated executable if it is one of those untracked
files.
---
 src/Makefile          |  6 +++++-
 src/Makefile.d/old.mk | 16 ++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 src/Makefile.d/old.mk

diff --git a/src/Makefile b/src/Makefile
index 7104a91cff..61a4c5e342 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -132,6 +132,10 @@ goals:=$(or $(MAKECMDGOALS),all)
 cleanonly:=$(filter $(clean_targets),$(goals))
 destructive:=$(filter-out info,$(cleanonly))
 
+ifndef cleanonly
+include Makefile.d/old.mk
+endif
+
 include Makefile.d/util.mk
 
 ifdef PREFIX
@@ -399,7 +403,7 @@ clean :
 	$(call _rm,$(exe) $(dbg) $(dbg).txt $(objects))
 
 distclean :
-	$(call _rm,../bin ../objs ../deps comptime.h)
+	$(call _rm,../bin ../objs ../deps ../make comptime.h)
 
 info:
 ifdef WINDOWSHELL
diff --git a/src/Makefile.d/old.mk b/src/Makefile.d/old.mk
new file mode 100644
index 0000000000..e5890eedd1
--- /dev/null
+++ b/src/Makefile.d/old.mk
@@ -0,0 +1,16 @@
+#
+# Warn about old build directories and offer to purge.
+#
+
+_old:=$(wildcard $(addprefix ../bin/,FreeBSD Linux \
+		Linux64 Mingw Mingw64 SDL dummy) ../objs ../deps)
+
+ifdef _old
+$(foreach v,$(_old),$(info $(abspath $(v))))
+$(info )
+$(info These directories are no longer\
+       required and should be removed.)
+$(info You may remove them manually or\
+       by using 'make distclean')
+$(error )
+endif
-- 
GitLab