[Scummvm-git-logs] scummvm master -> 3cfaa9506e3b2a4f395dcd1aab6a40014ccd974c
bluegr
noreply at scummvm.org
Sun Jun 15 20:27:00 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
3cfaa9506e CREATE_PROJECT: Add support for SDL3
Commit: 3cfaa9506e3b2a4f395dcd1aab6a40014ccd974c
https://github.com/scummvm/scummvm/commit/3cfaa9506e3b2a4f395dcd1aab6a40014ccd974c
Author: SupSuper (supsuper at gmail.com)
Date: 2025-06-15T23:26:58+03:00
Commit Message:
CREATE_PROJECT: Add support for SDL3
Changed paths:
devtools/create_project/cmake.cpp
devtools/create_project/cmake.h
devtools/create_project/codeblocks.cpp
devtools/create_project/create_project.cpp
devtools/create_project/create_project.h
devtools/create_project/msbuild.cpp
devtools/create_project/msvc.cpp
devtools/create_project/msvc.h
devtools/create_project/xcode.cpp
diff --git a/devtools/create_project/cmake.cpp b/devtools/create_project/cmake.cpp
index f064ce5d7ef..c178cef2371 100644
--- a/devtools/create_project/cmake.cpp
+++ b/devtools/create_project/cmake.cpp
@@ -33,10 +33,11 @@ CMakeProvider::CMakeProvider(StringList &global_warnings, std::map<std::string,
: ProjectProvider(global_warnings, project_warnings, global_errors, version) {
}
-const CMakeProvider::Library *CMakeProvider::getLibraryFromFeature(const char *feature, bool useSDL2) const {
+const CMakeProvider::Library *CMakeProvider::getLibraryFromFeature(const char *feature, SDLVersion useSDL) const {
static const Library s_libraries[] = {
{ "sdl", "sdl", kSDLVersion1, "FindSDL", "SDL", "SDL_INCLUDE_DIR", "SDL_LIBRARY", nullptr, nullptr },
{ "sdl", "sdl2", kSDLVersion2, nullptr, "SDL2", nullptr, "SDL2_LIBRARIES", nullptr, nullptr },
+ { "sdl", "sdl3", kSDLVersion3, nullptr, "SDL3", nullptr, "SDL3_LIBRARIES", nullptr, nullptr },
{ "freetype2", "freetype2", kSDLVersionAny, "FindFreetype", "Freetype", "FREETYPE_INCLUDE_DIRS", "FREETYPE_LIBRARIES", nullptr, nullptr },
{ "zlib", "zlib", kSDLVersionAny, "FindZLIB", "ZLIB", "ZLIB_INCLUDE_DIRS", "ZLIB_LIBRARIES", nullptr, nullptr },
{ "png", "libpng", kSDLVersionAny, "FindPNG", "PNG", "PNG_INCLUDE_DIRS", "PNG_LIBRARIES", nullptr, nullptr },
@@ -46,6 +47,7 @@ const CMakeProvider::Library *CMakeProvider::getLibraryFromFeature(const char *f
{ "libcurl", "libcurl", kSDLVersionAny, "FindCURL", "CURL", "CURL_INCLUDE_DIRS", "CURL_LIBRARIES", nullptr, "ws2_32" },
{ "sdlnet", nullptr, kSDLVersion1, "FindSDL_net", "SDL_net", "SDL_NET_INCLUDE_DIRS", "SDL_NET_LIBRARIES", nullptr, nullptr },
LibraryProps("sdlnet", "SDL2_net", kSDLVersion2).Libraries("SDL2_net"),
+ LibraryProps("sdlnet", "SDL3_net", kSDLVersion3).Libraries("SDL3_net"),
LibraryProps("flac", "flac").Libraries("FLAC"),
LibraryProps("mad", "mad").Libraries("mad"),
LibraryProps("mikmod", "mikmod").Libraries("mikmod"),
@@ -68,8 +70,7 @@ const CMakeProvider::Library *CMakeProvider::getLibraryFromFeature(const char *f
for (unsigned int i = 0; i < sizeof(s_libraries) / sizeof(s_libraries[0]); i++) {
bool matchingSDL = (s_libraries[i].sdlVersion == kSDLVersionAny)
- || (useSDL2 && s_libraries[i].sdlVersion == kSDLVersion2)
- || (!useSDL2 && s_libraries[i].sdlVersion == kSDLVersion1);
+ || (s_libraries[i].sdlVersion == useSDL);
if (std::strcmp(feature, s_libraries[i].feature) == 0 && matchingSDL) {
return &s_libraries[i];
}
@@ -223,7 +224,7 @@ file(APPEND "engines/plugins_table.h" "/* This file is automatically generated b
}
void CMakeProvider::writeFeatureLibSearch(const BuildSetup &setup, std::ofstream &workspace, const char *feature) const {
- const Library *library = getLibraryFromFeature(feature, setup.useSDL2);
+ const Library *library = getLibraryFromFeature(feature, setup.useSDL);
if (library) {
workspace << "find_feature(";
workspace << "name " << library->feature;
@@ -332,7 +333,7 @@ void CMakeProvider::createProjectFile(const std::string &name, const std::string
writeEnginesLibrariesHandling(setup, project);
project << "# Libraries\n";
- const Library *sdlLibrary = getLibraryFromFeature("sdl", setup.useSDL2);
+ const Library *sdlLibrary = getLibraryFromFeature("sdl", setup.useSDL);
std::string libraryDirsList;
for (const std::string &libraryDir : setup.libraryDirs)
libraryDirsList += libraryDir + ' ';
@@ -387,8 +388,10 @@ void CMakeProvider::writeDefines(const BuildSetup &setup, std::ofstream &output)
output << "endif()\n";
output << "add_definitions(-DSDL_BACKEND)\n";
- if (setup.useSDL2) {
+ if (setup.useSDL == kSDLVersion2) {
output << "add_definitions(-DUSE_SDL2)\n";
+ } else if (setup.useSDL == kSDLVersion3) {
+ output << "add_definitions(-DUSE_SDL3)\n";
}
if (getFeatureBuildState("opengl", setup.features)) {
diff --git a/devtools/create_project/cmake.h b/devtools/create_project/cmake.h
index 7bb38bf0b1b..91a5fb69eab 100644
--- a/devtools/create_project/cmake.h
+++ b/devtools/create_project/cmake.h
@@ -56,12 +56,6 @@ protected:
private:
std::stringstream enginesStr;
- enum SDLVersion {
- kSDLVersionAny,
- kSDLVersion1,
- kSDLVersion2
- };
-
/**
* CMake properties for a library required by a feature
*/
@@ -85,7 +79,7 @@ private:
LibraryProps &WinLibraries(const char *libs) { winLibraries = libs; return *this; }
};
- const Library *getLibraryFromFeature(const char *feature, bool useSDL2) const;
+ const Library *getLibraryFromFeature(const char *feature, SDLVersion useSDL) const;
void writeWarnings(std::ofstream &output) const;
void writeDefines(const BuildSetup &setup, std::ofstream &output) const;
diff --git a/devtools/create_project/codeblocks.cpp b/devtools/create_project/codeblocks.cpp
index a5e88d6b364..119417698e2 100644
--- a/devtools/create_project/codeblocks.cpp
+++ b/devtools/create_project/codeblocks.cpp
@@ -55,6 +55,10 @@ void CodeBlocksProvider::createWorkspace(const BuildSetup &setup) {
StringList getFeatureLibraries(const BuildSetup &setup) {
StringList libraries;
+ std::string libSDL = "lib";
+ libSDL += setup.getSDLName();
+ libraries.push_back(libSDL);
+
for (FeatureList::const_iterator i = setup.features.begin(); i != setup.features.end(); ++i) {
if (i->enable && i->library) {
std::string libname;
@@ -68,11 +72,7 @@ StringList getFeatureLibraries(const BuildSetup &setup) {
} else if (!std::strcmp(i->name, "png")) {
libname = "libpng16";
} else if (!std::strcmp(i->name, "sdlnet")) {
- if (setup.useSDL2) {
- libname = "libSDL2_net";
- } else {
- libname = "libSDL_net";
- }
+ libname = libSDL + "_net";
libraries.push_back("iphlpapi");
} else {
libname = "lib";
@@ -82,12 +82,6 @@ StringList getFeatureLibraries(const BuildSetup &setup) {
}
}
- if (setup.useSDL2) {
- libraries.push_back("libSDL2");
- } else {
- libraries.push_back("libSDL");
- }
-
// Win32 libraries
libraries.push_back("ole32");
libraries.push_back("uuid");
diff --git a/devtools/create_project/create_project.cpp b/devtools/create_project/create_project.cpp
index 4d698b43024..7d2c5b86372 100644
--- a/devtools/create_project/create_project.cpp
+++ b/devtools/create_project/create_project.cpp
@@ -300,7 +300,11 @@ int main(int argc, char *argv[]) {
} else if (!std::strcmp(argv[i], "--tests")) {
setup.tests = true;
} else if (!std::strcmp(argv[i], "--sdl1")) {
- setup.useSDL2 = false;
+ setup.useSDL = kSDLVersion1;
+ } else if (!std::strcmp(argv[i], "--sdl2")) {
+ setup.useSDL = kSDLVersion2;
+ } else if (!std::strcmp(argv[i], "--sdl3")) {
+ setup.useSDL = kSDLVersion3;
} else if (!std::strcmp(argv[i], "--use-canonical-lib-names")) {
// Deprecated: Kept here so it doesn't error
} else if (!std::strcmp(argv[i], "--use-windows-unicode")) {
@@ -476,11 +480,17 @@ int main(int argc, char *argv[]) {
}
setup.defines.push_back("SDL_BACKEND");
- if (!setup.useSDL2) {
+ if (setup.useSDL == kSDLVersion1) {
cout << "\nBuilding against SDL 1.2\n\n";
- } else {
- cout << "\nBuilding against SDL 2.0\n\n";
+ } else if (setup.useSDL == kSDLVersion2) {
+ cout << "\nBuilding against SDL 2\n\n";
setup.defines.push_back("USE_SDL2");
+ } else if (setup.useSDL == kSDLVersion3) {
+ cout << "\nBuilding against SDL 3\n\n";
+ setup.defines.push_back("USE_SDL3");
+ } else {
+ std::cerr << "ERROR: Unsupported SDL version\n";
+ return -1;
}
if (setup.useStaticDetection) {
@@ -492,9 +502,13 @@ int main(int argc, char *argv[]) {
}
// HACK: Add IMGUI SDL Renderer support
- // This needs SDL 2.0.18+
if (getFeatureBuildState("imgui", setup.features)) {
- setup.defines.push_back("USE_IMGUI_SDLRENDERER2");
+ // This needs SDL 2.0.18+
+ if (setup.useSDL == kSDLVersion2) {
+ setup.defines.push_back("USE_IMGUI_SDLRENDERER2");
+ } else if (setup.useSDL == kSDLVersion3) {
+ setup.defines.push_back("USE_IMGUI_SDLRENDERER3");
+ }
}
// List of global warnings and map of project-specific warnings
@@ -803,6 +817,7 @@ void displayHelp(const char *exe) {
" --use-windows-ansi Use Windows ANSI APIs\n"
" (default: false)\n"
" --use-windows-subsystem Use Windows subsystem instead of Console\n"
+ " (default: false)\n"
" --libs-path path Specify the path of pre-built libraries instead of using the\n"
" " LIBS_DEFINE " environment variable\n "
" --vcpkg Use vcpkg-provided libraries instead of pre-built libraries\n"
@@ -820,7 +835,9 @@ void displayHelp(const char *exe) {
" --disable-<name> disable inclusion of the feature \"name\"\n"
"\n"
"SDL settings:\n"
- " --sdl1 link to SDL 1.2, instead of SDL 2.0\n"
+ " --sdl1 link to SDL 1.2\n"
+ " --sdl2 link to SDL 2 (default)\n"
+ " --sdl3 link to SDL 3\n"
"\n"
" There are the following features available:\n"
"\n";
@@ -1292,8 +1309,8 @@ static void fixupFeatures(ProjectType projectType, BuildSetup &setup) {
// Check IMGUI dependencies
if (!getFeatureBuildState("opengl", setup.features) ||
!getFeatureBuildState("freetype2", setup.features) ||
- !setup.useSDL2) {
- std::cerr << "WARNING: imgui requires opengl, freetype2 and sdl2\n";
+ setup.useSDL == kSDLVersion1) {
+ std::cerr << "WARNING: imgui requires opengl, freetype2 and sdl2+\n";
setFeatureBuildState("imgui", setup.features, false);
}
// IMGUI is not available on Xcode
@@ -2715,3 +2732,11 @@ Feature BuildSetup::getFeature(const std::string &feature) const {
return *itr;
}
+
+const char *BuildSetup::getSDLName() const {
+ switch (useSDL) {
+ case kSDLVersion2: return "SDL2";
+ case kSDLVersion3: return "SDL3";
+ default: return "SDL";
+ }
+}
diff --git a/devtools/create_project/create_project.h b/devtools/create_project/create_project.h
index 4a64e3af274..d11f8f85b1a 100644
--- a/devtools/create_project/create_project.h
+++ b/devtools/create_project/create_project.h
@@ -253,6 +253,16 @@ bool setFeatureBuildState(const std::string &name, FeatureList &features, bool e
*/
bool getFeatureBuildState(const std::string &name, const FeatureList &features);
+/**
+ * Specifies the required SDL version of a feature.
+ */
+enum SDLVersion {
+ kSDLVersionAny = 0,
+ kSDLVersion1, ///< SDL 1.2
+ kSDLVersion2, ///< SDL 2
+ kSDLVersion3 ///< SDL 3
+};
+
/**
* Structure to describe a build setup.
*
@@ -284,7 +294,7 @@ struct BuildSetup {
bool tests = false; ///< Generate project files for the tests
bool runBuildEvents = false; ///< Run build events as part of the build (generate revision number and copy engine/theme data & needed files to the build folder
bool createInstaller = false; ///< Create installer after the build
- bool useSDL2 = true; ///< Whether to use SDL2 or not.
+ SDLVersion useSDL = kSDLVersion2; ///< Which version of SDL to use.
bool useStaticDetection = true; ///< Whether to link detection features inside the executable or not.
bool useWindowsUnicode = true; ///< Whether to use Windows Unicode APIs or ANSI APIs.
bool useWindowsSubsystem = false; ///< Whether to use Windows subsystem or Console subsystem (default: Console)
@@ -294,6 +304,7 @@ struct BuildSetup {
bool featureEnabled(const std::string &feature) const;
Feature getFeature(const std::string &feature) const;
+ const char *getSDLName() const;
};
/**
diff --git a/devtools/create_project/msbuild.cpp b/devtools/create_project/msbuild.cpp
index d37ee4c13ba..514c19a9884 100644
--- a/devtools/create_project/msbuild.cpp
+++ b/devtools/create_project/msbuild.cpp
@@ -356,7 +356,7 @@ void MSBuildProvider::outputGlobalPropFile(const BuildSetup &setup, std::ofstrea
if (setup.runBuildEvents)
definesList += REVISION_DEFINE ";";
- std::string includeSDL = (setup.useSDL2 ? "SDL2" : "SDL");
+ std::string includeSDL = setup.getSDLName();
properties << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
<< "<Project DefaultTargets=\"Build\" ToolsVersion=\"" << _msvcVersion.project << "\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n"
@@ -433,7 +433,7 @@ void MSBuildProvider::createBuildProp(const BuildSetup &setup, bool isRelease, M
for (StringList::const_iterator i = setup.includeDirs.begin(); i != setup.includeDirs.end(); ++i)
includeDirsList += convertPathToWin(*i) + ';';
- std::string includeSDL = (setup.useSDL2 ? "SDL2" : "SDL");
+ std::string includeSDL = setup.getSDLName();
std::string libraryDirsList;
for (StringList::const_iterator i = setup.libraryDirs.begin(); i != setup.libraryDirs.end(); ++i)
diff --git a/devtools/create_project/msvc.cpp b/devtools/create_project/msvc.cpp
index de874fe3ffc..79f19c85d26 100644
--- a/devtools/create_project/msvc.cpp
+++ b/devtools/create_project/msvc.cpp
@@ -50,50 +50,48 @@ MSVCProvider::MSVCProvider(StringList &global_warnings, std::map<std::string, St
std::string MSVCProvider::getLibraryFromFeature(const char *feature, const BuildSetup &setup, bool isRelease) const {
static const MSVCLibrary s_libraries[] = {
// Libraries
- { "sdl", "SDL.lib", "SDLd.lib", "winmm.lib imm32.lib version.lib setupapi.lib" },
- { "sdl2", "SDL2.lib", "SDL2d.lib", "winmm.lib imm32.lib version.lib setupapi.lib" },
- { "zlib", "zlib.lib", "zlibd.lib", nullptr },
- { "mad", "mad.lib", nullptr, nullptr },
- { "fribidi", "fribidi.lib", nullptr, nullptr },
- { "ogg", "ogg.lib", nullptr, nullptr },
- { "vorbis", "vorbis.lib vorbisfile.lib", nullptr, nullptr },
- { "tremor", "vorbisidec.lib", nullptr, nullptr },
- { "flac", "FLAC.lib", nullptr, nullptr },
- { "png", "libpng16.lib", "libpng16d.lib", nullptr },
- { "gif", "gif.lib", nullptr, nullptr },
- { "faad", "faad.lib", nullptr, nullptr },
- { "mikmod", "mikmod.lib", nullptr, nullptr },
- { "openmpt", "openmpt.lib", nullptr, nullptr },
- { "mpeg2", "mpeg2.lib", nullptr, nullptr },
- { "theoradec", "theora.lib", nullptr, nullptr },
- { "vpx", "vpx.lib", nullptr, nullptr },
- { "freetype2", "freetype.lib", "freetyped.lib", nullptr },
- { "jpeg", "jpeg.lib", nullptr, nullptr },
- {"fluidsynth", "fluidsynth.lib", nullptr, nullptr },
- { "fluidlite", "fluidlite.lib", nullptr, nullptr },
- { "libcurl", "libcurl.lib", "libcurl-d.lib", "ws2_32.lib wldap32.lib crypt32.lib normaliz.lib" },
- { "sdlnet", "SDL_net.lib", nullptr, "iphlpapi.lib" },
- { "sdl2net", "SDL2_net.lib", "SDL2_netd.lib", "iphlpapi.lib" },
- { "discord", "discord-rpc.lib", nullptr, nullptr },
- { "retrowave", "RetroWave.lib", nullptr, nullptr },
- { "a52", "a52.lib", nullptr, nullptr },
- { "mpc", "libmpcdec.lib", "libmpcdec_d.lib", nullptr },
+ { "sdl", "SDL.lib", "SDLd.lib", kSDLVersion1, "winmm.lib imm32.lib version.lib setupapi.lib" },
+ { "sdl", "SDL2.lib", "SDL2d.lib", kSDLVersion2, "winmm.lib imm32.lib version.lib setupapi.lib" },
+ { "sdl", "SDL3.lib", "SDL3d.lib", kSDLVersion3, "winmm.lib imm32.lib version.lib setupapi.lib" },
+ { "zlib", "zlib.lib", "zlibd.lib", kSDLVersionAny, nullptr },
+ { "mad", "mad.lib", nullptr, kSDLVersionAny, nullptr },
+ { "fribidi", "fribidi.lib", nullptr, kSDLVersionAny, nullptr },
+ { "ogg", "ogg.lib", nullptr, kSDLVersionAny, nullptr },
+ { "vorbis", "vorbis.lib vorbisfile.lib", nullptr, kSDLVersionAny, nullptr },
+ { "tremor", "vorbisidec.lib", nullptr, kSDLVersionAny, nullptr },
+ { "flac", "FLAC.lib", nullptr, kSDLVersionAny, nullptr },
+ { "png", "libpng16.lib", "libpng16d.lib", kSDLVersionAny, nullptr },
+ { "gif", "gif.lib", nullptr, kSDLVersionAny, nullptr },
+ { "faad", "faad.lib", nullptr, kSDLVersionAny, nullptr },
+ { "mikmod", "mikmod.lib", nullptr, kSDLVersionAny, nullptr },
+ { "openmpt", "openmpt.lib", nullptr, kSDLVersionAny, nullptr },
+ { "mpeg2", "mpeg2.lib", nullptr, kSDLVersionAny, nullptr },
+ { "theoradec", "theora.lib", nullptr, kSDLVersionAny, nullptr },
+ { "vpx", "vpx.lib", nullptr, kSDLVersionAny, nullptr },
+ { "freetype2", "freetype.lib", "freetyped.lib", kSDLVersionAny, nullptr },
+ { "jpeg", "jpeg.lib", nullptr, kSDLVersionAny, nullptr },
+ {"fluidsynth", "fluidsynth.lib", nullptr, kSDLVersionAny, nullptr },
+ { "fluidlite", "fluidlite.lib", nullptr, kSDLVersionAny, nullptr },
+ { "libcurl", "libcurl.lib", "libcurl-d.lib", kSDLVersionAny, "ws2_32.lib wldap32.lib crypt32.lib normaliz.lib" },
+ { "sdlnet", "SDL_net.lib", nullptr, kSDLVersion1, "iphlpapi.lib" },
+ { "sdlnet", "SDL2_net.lib", "SDL2_netd.lib", kSDLVersion2, "iphlpapi.lib" },
+ { "sdlnet", "SDL3_net.lib", "SDL3_netd.lib", kSDLVersion3, "iphlpapi.lib" },
+ { "discord", "discord-rpc.lib", nullptr, kSDLVersionAny, nullptr },
+ { "retrowave", "RetroWave.lib", nullptr, kSDLVersionAny, nullptr },
+ { "a52", "a52.lib", nullptr, kSDLVersionAny, nullptr },
+ { "mpc", "libmpcdec.lib", "libmpcdec_d.lib", kSDLVersionAny, nullptr },
// Feature flags with library dependencies
- { "updates", "WinSparkle.lib", nullptr, nullptr },
- { "tts", nullptr, nullptr, "sapi.lib" },
- { "opengl", nullptr, nullptr, nullptr },
- { "enet", nullptr, nullptr, "winmm.lib ws2_32.lib" }
+ { "updates", "WinSparkle.lib", nullptr, kSDLVersionAny, nullptr },
+ { "tts", nullptr, nullptr, kSDLVersionAny, "sapi.lib" },
+ { "opengl", nullptr, nullptr, kSDLVersionAny, nullptr },
+ { "enet", nullptr, nullptr, kSDLVersionAny, "winmm.lib ws2_32.lib" }
};
- // HACK for switching SDL_net to SDL2_net
- const char *sdl2net = "sdl2net";
- if (std::strcmp(feature, "sdlnet") == 0 && setup.useSDL2) {
- feature = sdl2net;
- }
-
const MSVCLibrary *library = nullptr;
for (unsigned int i = 0; i < sizeof(s_libraries) / sizeof(s_libraries[0]); i++) {
- if (std::strcmp(feature, s_libraries[i].feature) == 0) {
+ if (std::strcmp(feature, s_libraries[i].feature) == 0 &&
+ ((s_libraries[i].sdl == kSDLVersionAny) ||
+ (s_libraries[i].sdl == setup.useSDL))) {
library = &s_libraries[i];
break;
}
@@ -126,11 +124,8 @@ std::string MSVCProvider::getLibraryFromFeature(const char *feature, const Build
std::string MSVCProvider::outputLibraryDependencies(const BuildSetup &setup, bool isRelease) const {
std::string libs;
- if (setup.useSDL2) {
- libs += getLibraryFromFeature("sdl2", setup, isRelease);
- } else {
- libs += getLibraryFromFeature("sdl", setup, isRelease);
- }
+ // SDL is always enabled
+ libs += getLibraryFromFeature("sdl", setup, isRelease);
libs += " ";
for (FeatureList::const_iterator i = setup.features.begin(); i != setup.features.end(); ++i) {
if (i->enable) {
@@ -284,7 +279,7 @@ std::string MSVCProvider::getPostBuildEvent(MSVC_Architecture arch, const BuildS
"echo.\n"
"@call "$(SolutionDir)../../devtools/create_project/scripts/postbuild.cmd" "$(SolutionDir)/../.." "$(OutDir)" ";
- cmdLine += (setup.useSDL2) ? "SDL2" : "SDL";
+ cmdLine += setup.getSDLName();
if (setup.useVcpkg) {
cmdLine += " "$(_ZVcpkgCurrentInstalledDir)";
diff --git a/devtools/create_project/msvc.h b/devtools/create_project/msvc.h
index 86ea9c61ba5..d9b4901076a 100644
--- a/devtools/create_project/msvc.h
+++ b/devtools/create_project/msvc.h
@@ -46,6 +46,7 @@ protected:
const char *feature; ///< Feature ID.
const char *release; ///< Filename of the Release build of the library.
const char *debug; ///< Filename of the Debug build of the library.
+ SDLVersion sdl; ///< Required SDL version.
const char *depends; ///< Win32 libs this library must be linked against.
};
diff --git a/devtools/create_project/xcode.cpp b/devtools/create_project/xcode.cpp
index 386b19e4266..677a3f1971d 100644
--- a/devtools/create_project/xcode.cpp
+++ b/devtools/create_project/xcode.cpp
@@ -496,6 +496,8 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
DEF_SYSFRAMEWORK("SystemConfiguration");
DEF_SYSTBD("libiconv");
+ std::string libSDL = setup.getSDLName();
+
// Local libraries
if (CONTAINS_DEFINE(setup.defines, "USE_FAAD")) {
DEF_LOCALLIB_STATIC("libfaad");
@@ -597,15 +599,19 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
DEF_LOCALXCFRAMEWORK("mpcdec", projectOutputDirectory);
}
- if (setup.useSDL2) {
- DEF_LOCALLIB_STATIC("libSDL2main");
+ if (setup.useSDL == kSDLVersion3) {
+ DEF_LOCALLIB_STATIC("libSDL3");
+ if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET")) {
+ DEF_LOCALLIB_STATIC("libSDL3_net");
+ DEF_LOCALXCFRAMEWORK("SDL3_net", projectOutputDirectory);
+ }
+ } else if (setup.useSDL == kSDLVersion2) {
DEF_LOCALLIB_STATIC("libSDL2");
if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET")) {
DEF_LOCALLIB_STATIC("libSDL2_net");
DEF_LOCALXCFRAMEWORK("SDL2_net", projectOutputDirectory);
}
- } else {
- DEF_LOCALLIB_STATIC("libSDLmain");
+ } else if (setup.useSDL == kSDLVersion1) {
DEF_LOCALLIB_STATIC("libSDL");
if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET")) {
DEF_LOCALLIB_STATIC("libSDL_net");
@@ -721,11 +727,7 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
frameworks_iOS.push_back("Security.framework");
}
if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET")) {
- if (setup.useSDL2) {
- frameworks_iOS.push_back(getLibString("SDL2_net", setup.useXCFramework));
- } else {
- frameworks_iOS.push_back(getLibString("SDL_net", setup.useXCFramework));
- }
+ frameworks_iOS.push_back(getLibString(libSDL + "_net", setup.useXCFramework));
}
for (ValueList::iterator framework = frameworks_iOS.begin(); framework != frameworks_iOS.end(); framework++) {
@@ -841,17 +843,9 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
frameworks_osx.push_back(getLibString("mpcdec", setup.useXCFramework));
}
- if (setup.useSDL2) {
- frameworks_osx.push_back(getLibString("SDL2main", setup.useXCFramework));
- frameworks_osx.push_back(getLibString("SDL2", setup.useXCFramework));
- if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET"))
- frameworks_osx.push_back(getLibString("SDL2_net", setup.useXCFramework));
- } else {
- frameworks_osx.push_back(getLibString("SDLmain", setup.useXCFramework));
- frameworks_osx.push_back(getLibString("SDL", setup.useXCFramework));
- if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET"))
- frameworks_osx.push_back(getLibString("SDL_net", setup.useXCFramework));
- }
+ frameworks_osx.push_back(getLibString(libSDL, setup.useXCFramework));
+ if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET"))
+ frameworks_osx.push_back(getLibString(libSDL + "_net", setup.useXCFramework));
order = 0;
for (ValueList::iterator framework = frameworks_osx.begin(); framework != frameworks_osx.end(); framework++) {
@@ -964,11 +958,7 @@ void XcodeProvider::setupFrameworksBuildPhase(const BuildSetup &setup) {
frameworks_tvOS.push_back("Security.framework");
}
if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET")) {
- if (setup.useSDL2) {
- frameworks_tvOS.push_back(getLibString("SDL2_net", setup.useXCFramework));
- } else {
- frameworks_tvOS.push_back(getLibString("SDL_net", setup.useXCFramework));
- }
+ frameworks_tvOS.push_back(getLibString(libSDL + "_net", setup.useXCFramework));
}
for (ValueList::iterator framework = frameworks_tvOS.begin(); framework != frameworks_tvOS.end(); framework++) {
@@ -1304,6 +1294,8 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
projectOutputDirectory = rp;
#endif
+ std::string libSDL = setup.getSDLName();
+
/****************************************
* ScummVM - Project Level
****************************************/
@@ -1419,10 +1411,7 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
if (!setup.useXCFramework) {
iPhone_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "/include\"");
if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET")) {
- if (setup.useSDL2)
- iPhone_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "/include/SDL2\"");
- else
- iPhone_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "include/SDL\"");
+ iPhone_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "/include/" + libSDL + "\"");
}
}
ADD_SETTING_LIST(iPhone_Debug, "HEADER_SEARCH_PATHS", iPhone_HeaderSearchPaths, kSettingsAsList | kSettingsQuoteVariable, 5);
@@ -1498,20 +1487,19 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
ValueList scummvmOSX_defines;
ADD_DEFINE(scummvmOSX_defines, "\"$(inherited)\"");
ADD_DEFINE(scummvmOSX_defines, "SDL_BACKEND");
- ADD_DEFINE(scummvmOSX_defines, "USE_SDL2");
+ if (setup.useSDL == kSDLVersion2) {
+ ADD_DEFINE(scummvmOSX_defines, "USE_SDL2");
+ } else if (setup.useSDL == kSDLVersion3) {
+ ADD_DEFINE(scummvmOSX_defines, "USE_SDL3");
+ }
ADD_DEFINE(scummvmOSX_defines, "MACOSX");
ADD_SETTING_LIST(scummvmOSX_Debug, "GCC_PREPROCESSOR_DEFINITIONS", scummvmOSX_defines, kSettingsNoQuote | kSettingsAsList, 5);
ADD_SETTING_QUOTE(scummvmOSX_Debug, "GCC_VERSION", "");
ValueList scummvmOSX_HeaderPaths;
for (StringList::const_iterator i = setup.includeDirs.begin(); i != setup.includeDirs.end(); ++i)
scummvmOSX_HeaderPaths.push_back("\"" + *i + "\"");
- if (setup.useSDL2) {
- scummvmOSX_HeaderPaths.push_back("/usr/local/include/SDL2");
- scummvmOSX_HeaderPaths.push_back("/opt/local/include/SDL2");
- } else {
- scummvmOSX_HeaderPaths.push_back("/usr/local/include/SDL");
- scummvmOSX_HeaderPaths.push_back("/opt/local/include/SDL");
- }
+ scummvmOSX_HeaderPaths.push_back("/usr/local/include/" + libSDL);
+ scummvmOSX_HeaderPaths.push_back("/opt/local/include/" + libSDL);
scummvmOSX_HeaderPaths.push_back("/usr/local/include");
scummvmOSX_HeaderPaths.push_back("/opt/local/include");
scummvmOSX_HeaderPaths.push_back("/usr/local/include/freetype2");
@@ -1584,10 +1572,7 @@ void XcodeProvider::setupBuildConfiguration(const BuildSetup &setup) {
tvOS_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "\"");
tvOS_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "/include\"");
if (CONTAINS_DEFINE(setup.defines, "USE_SDL_NET")) {
- if (setup.useSDL2)
- tvOS_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "/include/SDL2\"");
- else
- tvOS_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "include/SDL\"");
+ tvOS_HeaderSearchPaths.push_back("\"" + projectOutputDirectory + "/include/" + libSDL + "\"");
}
ADD_SETTING_LIST(tvOS_Debug, "HEADER_SEARCH_PATHS", tvOS_HeaderSearchPaths, kSettingsAsList | kSettingsQuoteVariable, 5);
ADD_SETTING_QUOTE(tvOS_Debug, "INFOPLIST_FILE", "$(SRCROOT)/dists/tvos/Info.plist");
More information about the Scummvm-git-logs
mailing list