diff --git a/src/Makefile b/src/Makefile
index 7ca07862e401c9f650b5883e5e654e7fff0e5df6..bfce9cda2825d4f70d94821c77ca04afa55a3416 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -104,8 +104,18 @@ endif
 ifdef LINUX64
 LINUX=1
 NONX86=1
+# LINUX64 does not imply X86_64=1; could mean ARM64 or Itanium
 endif
 
+ifdef MINGW64
+MINGW=1
+NONX86=1
+NOASM=1
+# MINGW64 should not necessarily imply X86_64=1, but we make that assumption elsewhere
+# Once that changes, remove this
+X86_64=1
+endif #ifdef MINGW64
+
 ifdef HAIKU
 SDL=1
 endif
@@ -176,12 +186,6 @@ ifdef MINGW
 include win32/Makefile.cfg
 endif #ifdef MINGW
 
-ifdef MINGW64
-MINGW=1
-X86_64=1
-include win32/Makefile.cfg
-endif #ifdef MINGW64
-
 ifdef UNIX
 UNIXCOMMON=1
 endif
@@ -289,14 +293,14 @@ OPTS += -DCOMPVERSION
 
 ifndef NONX86
 ifndef GCC29
-	M5=-march=pentium
+	M5?=-march=pentium
 else
-	M5=-mpentium
+	M5?=-mpentium
 endif
-endif
-
+else
 ifdef X86_64
-	M5=-march=nocona
+	M5?=-march=nocona
+endif
 endif
 
 ifndef NOASM
diff --git a/src/win32/Makefile.cfg b/src/win32/Makefile.cfg
index a73858bd46c41a1abac7da190aee236423f1fbe8..def2fe682e4964a49bf6642c9108d36fdbd61d05 100644
--- a/src/win32/Makefile.cfg
+++ b/src/win32/Makefile.cfg
@@ -7,8 +7,6 @@
 #
 
 ifdef MINGW64
-	NOASM=1
-	NONX86=1
 	HAVE_LIBGME=1
 	LIBGME_CFLAGS=-I../libs/gme/include
 	LIBGME_LDFLAGS=-L../libs/gme/win64 -lgme