First pass at conditional compilation of SDL for Stella.

For now, it's enabled for all mainline ports.
Stella doesn't absolutely need SDL (as the libretro port shows); it's less than 2000 lines in 220,000+ LOC,
This commit is contained in:
Stephen Anthony 2019-04-23 13:56:15 -02:30
parent 6c1efce278
commit 1042c4ff7f
6 changed files with 59 additions and 27 deletions

View File

@ -26,7 +26,7 @@
srcdir ?= .
DEFINES := -D_GLIBCXX_USE_CXX11_ABI=1
DEFINES := -DSDL_SUPPORT -D_GLIBCXX_USE_CXX11_ABI=1
LDFLAGS := -pthread
INCLUDES :=
LIBS :=

View File

@ -19,7 +19,9 @@
#define MEDIA_FACTORY_HXX
#include "bspf.hxx"
#include "SDL_lib.hxx"
#if defined(SDL_SUPPORT)
#include "SDL_lib.hxx"
#endif
#include "OSystem.hxx"
#include "Settings.hxx"
@ -54,16 +56,20 @@
#if defined(__LIB_RETRO__)
#include "EventHandlerLIBRETRO.hxx"
#include "FrameBufferLIBRETRO.hxx"
#else
#elif defined(SDL_SUPPORT)
#include "EventHandlerSDL2.hxx"
#include "FrameBufferSDL2.hxx"
#else
#error Unsupported backend!
#endif
#if defined(SOUND_SUPPORT)
#if defined(__LIB_RETRO__)
#include "SoundLIBRETRO.hxx"
#else
#elif defined(SDL_SUPPORT)
#include "SoundSDL2.hxx"
#else
#include "SoundNull.hxx"
#endif
#else
#include "SoundNull.hxx"
@ -140,19 +146,23 @@ class MediaFactory
{
#if defined(__LIB_RETRO__)
return make_unique<FrameBufferLIBRETRO>(osystem);
#else
#elif defined(SDL_SUPPORT)
return make_unique<FrameBufferSDL2>(osystem);
#else
#error Unsupported platform for FrameBuffer!
#endif
}
static unique_ptr<Sound> createAudio(OSystem& osystem, AudioSettings& audioSettings)
{
#ifdef SOUND_SUPPORT
#if defined(SOUND_SUPPORT)
#if defined(__LIB_RETRO__)
return make_unique<SoundLIBRETRO>(osystem, audioSettings);
#elif defined(SOUND_SUPPORT)
#elif defined(SOUND_SUPPORT) && defined(SDL_SUPPORT)
return make_unique<SoundSDL2>(osystem, audioSettings);
#endif
#else
return make_unique<SoundNull>(osystem);
#endif
#else
return make_unique<SoundNull>(osystem);
#endif
@ -161,25 +171,28 @@ class MediaFactory
static unique_ptr<EventHandler> createEventHandler(OSystem& osystem)
{
#if defined(__LIB_RETRO__)
return make_unique<EventHandlerLIBRETRO>(osystem);
#else
return make_unique<EventHandlerSDL2>(osystem);
#endif
return make_unique<EventHandlerLIBRETRO>(osystem);
#elif defined(SDL_SUPPORT)
return make_unique<EventHandlerSDL2>(osystem);
#else
#error Unsupported platform for EventHandler!
#endif
}
static void cleanUp()
{
#if defined(SDL_SUPPORT)
SDL_Quit();
#endif
}
static string backendName()
{
ostringstream buf;
SDL_version ver;
SDL_GetVersion(&ver);
buf << "SDL " << int(ver.major) << "." << int(ver.minor) << "." << int(ver.patch);
return buf.str();
#if defined(SDL_SUPPORT)
return SDLVersion();
#else
return "Custom backend";
#endif
}
private:

View File

@ -18,6 +18,8 @@
#ifndef SDL_LIB_HXX
#define SDL_LIB_HXX
#include "bspf.hxx"
/*
* We can't control the quality of code from outside projects, so for now
* just disable warnings for it.
@ -43,4 +45,13 @@
#undef pixel
#undef bool
#endif
static inline string SDLVersion()
{
ostringstream buf;
SDL_version ver;
SDL_GetVersion(&ver);
buf << "SDL " << int(ver.major) << "." << int(ver.minor) << "." << int(ver.patch);
return buf.str();
}
#endif // SDL_LIB_HXX

View File

@ -18,7 +18,9 @@
#ifndef STELLA_KEYS_HXX
#define STELLA_KEYS_HXX
#include "SDL_lib.hxx"
#ifdef SDL_SUPPORT
#include "SDL_lib.hxx"
#endif
/**
This class implements a thin wrapper around the SDL keysym enumerations,
@ -439,7 +441,11 @@ namespace StellaKeyName
{
inline const char* const forKey(StellaKey key)
{
#ifdef SDL_SUPPORT
return SDL_GetScancodeName(SDL_Scancode(key));
#else
return "";
#endif
}
};

View File

@ -3026,6 +3026,7 @@
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
SDL_SUPPORT,
CHEATCODE_SUPPORT,
DEBUGGER_SUPPORT,
JOYSTICK_SUPPORT,
@ -3080,6 +3081,7 @@
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_OPTIMIZATION_LEVEL = 3;
GCC_PREPROCESSOR_DEFINITIONS = (
SDL_SUPPORT,
CHEATCODE_SUPPORT,
DEBUGGER_SUPPORT,
JOYSTICK_SUPPORT,

View File

@ -157,7 +157,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;DEBUG_BUILD;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;DEBUG_BUILD;SDL_SUPPORT;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@ -193,7 +193,7 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;DEBUG_BUILD;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;DEBUG_BUILD;SDL_SUPPORT;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@ -226,7 +226,7 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>false</WholeProgramOptimization>
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;SDL_SUPPORT;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<PrecompiledHeader>
@ -260,7 +260,7 @@
<OmitFramePointers>true</OmitFramePointers>
<WholeProgramOptimization>false</WholeProgramOptimization>
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;SDL_SUPPORT;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<PrecompiledHeader>
@ -298,7 +298,7 @@
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;SDL_SUPPORT;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<PrecompiledHeader>
@ -335,7 +335,7 @@
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;SDL_SUPPORT;PNG_SUPPORT;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<PrecompiledHeader>