From bf90fbb91f28af30ff79523681e7f73e60121535 Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
Date: Wed, 17 Jun 2020 22:49:12 -0700
Subject: [PATCH 1/3] Detect the compiler version and set the correct GCC flag

If the version is not supported by the Makefile, the flag for the latest
version supported is set instead.
---
 src/Makefile.cfg | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/src/Makefile.cfg b/src/Makefile.cfg
index 409cc4f22..a2b79589a 100644
--- a/src/Makefile.cfg
+++ b/src/Makefile.cfg
@@ -1,3 +1,4 @@
+# vim: ft=make
 #
 # Makefile.cfg for SRB2
 #
@@ -7,6 +8,42 @@
 # and other things
 #
 
+# See the following variable don't start with 'GCC'. This is
+# to avoid a false positive with the version detection...
+
+SUPPORTED_GCC_VERSIONS:=\
+	91\
+	81 82 83\
+	71 72\
+	61 62 63 64\
+	51 52 53 54\
+	40 41 42 43 44 45 46 47 48 49
+
+LATEST_GCC_VERSION=9.1
+
+# Automatically set version flag, but not if one was manually set
+ifeq   (,$(filter GCC%,$(.VARIABLES)))
+ ifneq (,$(findstring GCC,$(shell $(CC) --version))) # if it's GCC
+  version:=$(shell $(CC) -dumpversion)
+
+  # Turn version into words of major, minor
+  v:=$(subst ., ,$(version))
+  # concat. major minor
+  v:=$(word 1,$(v))$(word 2,$(v))
+
+  # If this version is not in the list, default to the latest supported
+  ifeq (,$(filter $(v),$(SUPPORTED_GCC_VERSIONS)))
+   $(info\
+		Your compiler version, GCC $(version) is not supported by the Makefile.\
+		The Makefile will assume GCC $(LATEST_GCC_VERSION).)
+   GCC$(subst .,,$(LATEST_GCC_VERSION))=1
+  else
+   $(info Detected GCC $(version) (GCC$(v)))
+   GCC$(v)=1
+  endif
+ endif
+endif
+
 ifdef GCC91
 GCC83=1
 endif

From 489bb81d0065299ffea09b20cfa06dbbedcf247a Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
Date: Wed, 17 Jun 2020 22:52:19 -0700
Subject: [PATCH 2/3] Makefile: Move the PREFIX stuff up so version detection
 can take advantage of

---
 src/Makefile.cfg | 48 ++++++++++++++++++++++++------------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/src/Makefile.cfg b/src/Makefile.cfg
index a2b79589a..6b3769efc 100644
--- a/src/Makefile.cfg
+++ b/src/Makefile.cfg
@@ -21,6 +21,30 @@ SUPPORTED_GCC_VERSIONS:=\
 
 LATEST_GCC_VERSION=9.1
 
+# gcc or g++
+ifdef PREFIX
+	CC=$(PREFIX)-gcc
+	CXX=$(PREFIX)-g++
+	OBJCOPY=$(PREFIX)-objcopy
+	OBJDUMP=$(PREFIX)-objdump
+	STRIP=$(PREFIX)-strip
+	WINDRES=$(PREFIX)-windres
+else
+	OBJCOPY=objcopy
+	OBJDUMP=objdump
+	STRIP=strip
+	WINDRES=windres
+endif
+
+# because Apple screws with us on this
+# need to get bintools from homebrew
+ifdef MACOSX
+	CC=clang
+	CXX=clang
+	OBJCOPY=gobjcopy
+	OBJDUMP=gobjdump
+endif
+
 # Automatically set version flag, but not if one was manually set
 ifeq   (,$(filter GCC%,$(.VARIABLES)))
  ifneq (,$(findstring GCC,$(shell $(CC) --version))) # if it's GCC
@@ -395,30 +419,6 @@ ifdef ARCHNAME
 	BIN:=$(BIN)/$(ARCHNAME)
 endif
 
-# gcc or g++
-ifdef PREFIX
-	CC=$(PREFIX)-gcc
-	CXX=$(PREFIX)-g++
-	OBJCOPY=$(PREFIX)-objcopy
-	OBJDUMP=$(PREFIX)-objdump
-	STRIP=$(PREFIX)-strip
-	WINDRES=$(PREFIX)-windres
-else
-	OBJCOPY=objcopy
-	OBJDUMP=objdump
-	STRIP=strip
-	WINDRES=windres
-endif
-
-# because Apple screws with us on this
-# need to get bintools from homebrew
-ifdef MACOSX
-	CC=clang
-	CXX=clang
-	OBJCOPY=gobjcopy
-	OBJDUMP=gobjdump
-endif
-
 OBJDUMP_OPTS?=--wide --source --line-numbers
 LD=$(CC)
 

From 193c45aa2f555b56f548f70e7fa0d74a1ce4e412 Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
Date: Wed, 17 Jun 2020 22:58:11 -0700
Subject: [PATCH 3/3] Forgot a comma

---
 src/Makefile.cfg | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Makefile.cfg b/src/Makefile.cfg
index 6b3769efc..23e602798 100644
--- a/src/Makefile.cfg
+++ b/src/Makefile.cfg
@@ -58,7 +58,7 @@ ifeq   (,$(filter GCC%,$(.VARIABLES)))
   # If this version is not in the list, default to the latest supported
   ifeq (,$(filter $(v),$(SUPPORTED_GCC_VERSIONS)))
    $(info\
-		Your compiler version, GCC $(version) is not supported by the Makefile.\
+		Your compiler version, GCC $(version), is not supported by the Makefile.\
 		The Makefile will assume GCC $(LATEST_GCC_VERSION).)
    GCC$(subst .,,$(LATEST_GCC_VERSION))=1
   else