From d44c4546f425bcbbfab5e6d631aadc0e61755f2b Mon Sep 17 00:00:00 2001
From: Monster Iestyn <iestynjealous@ntlworld.com>
Date: Sat, 5 Jan 2019 23:02:14 +0000
Subject: [PATCH] introduce a "SRB2_TARGET_PORT" variable (name can be changed
 later) to store a string representing the port

this does not currently replace the existing X=1 flags for each SRB2 port, just so you know

(also this is very experimental and incomplete)
---
 src/Makefile.cfg | 259 ++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 202 insertions(+), 57 deletions(-)

diff --git a/src/Makefile.cfg b/src/Makefile.cfg
index 53e567a43..e8a165ff2 100644
--- a/src/Makefile.cfg
+++ b/src/Makefile.cfg
@@ -96,6 +96,12 @@ ifdef DC
 NOCASTALIGNWARN=1
 endif
 
+#--------------------
+#--------------------
+#Warning flags
+#--------------------
+#--------------------
+
 OLDWFLAGS:=$(WFLAGS)
 # -W -Wno-unused
 WFLAGS=-Wall
@@ -230,8 +236,11 @@ ifdef GCC80
  WFLAGS+=-Wno-stringop-overflow
 endif
 
-
+#--------------------
+#--------------------
 #indicate platform and what interface use with
+#--------------------
+#--------------------
 ifndef WINCE
 ifndef XBOX
 ifndef PSP
@@ -260,7 +269,87 @@ endif
 endif
 endif
 
+ifdef DJGPPDOS
+SRB2_TARGET_PORT=DOS
+endif
+
+ifdef DUMMY
+SRB2_TARGET_PORT=DUMMY
+endif
+
+ifdef MINGW
+SRB2_TARGET_PORT=WIN32
+endif
+
+ifdef LINUX
+SRB2_TARGET_PORT=LINUX
+endif
+
+ifdef MACOSX
+SRB2_TARGET_PORT=MACOSX
+endif
+
+ifdef FREEBSD
+SRB2_TARGET_PORT=FREEBSD
+endif
+
+ifdef SOLARIS
+SRB2_TARGET_PORT=SOLARIS
+endif
+
+ifdef CYGWIN32
+SRB2_TARGET_PORT=CYGWIN
+endif
+
+ifdef HAIKU
+SRB2_TARGET_PORT=HAIKU
+endif
+
+# NOTE: ports below this line will be removed in 2.2
+
+#Windows CE
+ifdef WINCE
+SRB2_TARGET_PORT=WINCE
+endif
+
+#console ports
+
+ifdef XBOX
+SRB2_TARGET_PORT=XBOX
+endif
+
+ifdef PSP
+SRB2_TARGET_PORT=PSP
+endif
+
+ifdef DC
+SRB2_TARGET_PORT=DREAMCAST
+endif
+
+ifdef WII
+SRB2_TARGET_PORT=WII
+endif
+
+ifdef PS3N
+SRB2_TARGET_PORT=PS3
+endif
+
+ifdef NDS
+SRB2_TARGET_PORT=NDS
+endif
+
+ifdef GP2X
+SRB2_TARGET_PORT=GP2X
+endif
+
+
+SRB2_TARGET_PORT?=UNKNOWN
+
+#--------------------
+#--------------------
 #determine the interface directory (where you put all i_*.c)
+#--------------------
+#--------------------
 i_cdmus_o=$(OBJDIR)/i_cdmus.o
 i_net_o=$(OBJDIR)/i_net.o
 i_system_o=$(OBJDIR)/i_system.o
@@ -289,8 +378,16 @@ ifndef ECHO
 UPX_OPTS+=-q
 endif
 
+#--------------------
+#--------------------
 #Interface Setup
-ifdef DJGPPDOS
+#--------------------
+#--------------------
+
+#--------------------
+#DJGPPDOS
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), DOS)
 	INTERFACE=djgppdos
 	NASMFORMAT=coff
 	OBJDIR:=$(OBJDIR)/djgppdos
@@ -299,13 +396,41 @@ ifdef WATTCP
 endif
 	WFLAGS+=-Wno-format
 	BIN:=$(BIN)/Dos
-else
-ifdef DUMMY
+endif
+
+#--------------------
+#DUMMY
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), DUMMY)
 	INTERFACE=dummy
 	OBJDIR:=$(OBJDIR)/dummy
 	BIN:=$(BIN)/dummy
-else
-ifdef LINUX
+endif
+
+#--------------------
+#MINGW/MINGW64
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), WIN32)
+	INTERFACE=win32
+#Use SDL by default, unless we want DirectX for srb2dd.exe
+ifndef DIRECTX
+	SDL=1
+endif
+ifdef MINGW64
+	#NASMFORMAT=win64
+	OBJDIR:=$(OBJDIR)/Mingw64
+	BIN:=$(BIN)/Mingw64
+else #32-bit
+	NASMFORMAT=win32
+	OBJDIR:=$(OBJDIR)/Mingw
+	BIN:=$(BIN)/Mingw
+endif
+endif
+
+#--------------------
+#LINUX
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), LINUX)
 	NASMFORMAT=elf -DLINUX
 	SDL=1
 ifdef LINUX64
@@ -315,32 +440,48 @@ else
 	OBJDIR:=$(OBJDIR)/Linux
 	BIN:=$(BIN)/Linux
 endif
-else
-ifdef FREEBSD
+endif
+
+#--------------------
+#FREEBSD
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), FREEBSD)
 	INTERFACE=sdl
 	NASMFORMAT=elf -DLINUX
 	SDL=1
 
 	OBJDIR:=$(OBJDIR)/FreeBSD
 	BIN:=$(BIN)/FreeBSD
-else
-ifdef SOLARIS
+endif
+
+#--------------------
+#SOLARIS
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), SOLARIS)
 	INTERFACE=sdl
 	NASMFORMAT=elf -DLINUX
 	SDL=1
 
 	OBJDIR:=$(OBJDIR)/Solaris
 	BIN:=$(BIN)/Solaris
-else
-ifdef CYGWIN32
+endif
+
+#--------------------
+#CYGWIN32
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), CYGWIN)
 	INTERFACE=sdl
 	NASMFORMAT=win32
 	SDL=1
 
 	OBJDIR:=$(OBJDIR)/cygwin
 	BIN:=$(BIN)/Cygwin
-else
-ifdef WII
+endif
+
+#--------------------
+#WII
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), WII)
 	INTERFACE=sdl12
 	NONX86=1
 	STATIC=1
@@ -351,8 +492,12 @@ ifdef WII
 	OBJDIR:=$(OBJDIR)/Wii
 	BIN:=$(BIN)/Wii
 	NOUPX=1
-else
-ifdef PS3N
+endif
+
+#--------------------
+#PS3N
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), PS3)
 	INTERFACE=sdl12
 	NONX86=1
 	STATIC=1
@@ -365,24 +510,12 @@ ifdef PS3N
 	NOMIXER=1
 	OBJDIR:=$(OBJDIR)/PS3
 	BIN:=$(BIN)/PS3
-else
-ifdef MINGW
-	INTERFACE=win32
-#Use SDL by default, unless we want DirectX for srb2dd.exe
-ifndef DIRECTX
-	SDL=1
 endif
-ifdef MINGW64
-	#NASMFORMAT=win64
-	OBJDIR:=$(OBJDIR)/Mingw64
-	BIN:=$(BIN)/Mingw64
-else #32-bit
-	NASMFORMAT=win32
-	OBJDIR:=$(OBJDIR)/Mingw
-	BIN:=$(BIN)/Mingw
-endif
-else
-ifdef XBOX
+
+#--------------------
+#XBOX
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), XBOX)
 	INTERFACE=sdl12
 	NASMFORMAT=win32
 	PREFIX?=/usr/local/openxdk/bin/i386-pc-xbox
@@ -390,8 +523,12 @@ ifdef XBOX
 	SDL12=1
 	OBJDIR:=$(OBJDIR)/XBOX
 	BIN:=$(BIN)/XBOX
-else
-ifdef PSP
+endif
+
+#--------------------
+#PSP
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), PSP)
 	INTERFACE=sdl12
 	NONX86=1
 	SDL=1
@@ -399,8 +536,12 @@ ifdef PSP
 	OBJDIR:=$(OBJDIR)/PSP
 	BIN:=$(BIN)/PSP
 	NOUPX=1
-else
-ifdef DC
+endif
+
+#--------------------
+#DC
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), DREAMCAST)
 	INTERFACE=sdl12
 	NONX86=1
 	SDL=1
@@ -408,8 +549,12 @@ ifdef DC
 	OBJDIR:=$(OBJDIR)/DC
 	BIN:=$(BIN)/DC
 	NOUPX=1
-else
-ifdef WINCE
+endif
+
+#--------------------
+#WINCE
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), WINCE)
 	INTERFACE=sdl12
 	NONX86=1
 	PREFIX?=arm-wince-pe
@@ -417,33 +562,33 @@ ifdef WINCE
 	SDL12=1
 	OBJDIR:=$(OBJDIR)/WinCE
 	BIN:=$(BIN)/WinCE
-else
-ifdef NDS
+endif
+
+#--------------------
+#NDS
+#--------------------
+ifeq ($(SRB2_TARGET_PORT), NDS)
 	INTERFACE=nds
 	OBJDIR:=$(OBJDIR)/nds
 	BIN:=$(BIN)/nds
 	NOUPX=1
 endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
 
-ifdef GP2X
+#--------------------
+#GP2X
+#--------------------
+
+ifeq ($(SRB2_TARGET_PORT), GP2X)
 ifdef SDL
 	SDL12=1
 endif
 endif
 
+#--------------------
+#--------------------
+#--------------------
+#--------------------
+
 ifdef ARCHNAME
 	OBJDIR:=$(OBJDIR)/$(ARCHNAME)
 	BIN:=$(BIN)/$(ARCHNAME)
@@ -466,7 +611,7 @@ endif
 
 # because Apple screws with us on this
 # need to get bintools from homebrew
-ifdef MACOSX
+ifeq ($(SRB2_TARGET_PORT), MACOSX)
 	CC=clang
 	CXX=clang
 	OBJCOPY=gobjcopy
@@ -487,7 +632,7 @@ endif
 	OBJDIR:=$(OBJDIR)/SDL
 endif
 
-ifndef DUMMY
+ifneq ($(SRB2_TARGET_PORT), DUMMY)
 ifdef DEBUGMODE
 	OBJDIR:=$(OBJDIR)/Debug
 	BIN:=$(BIN)/Debug
-- 
GitLab