diff --git a/.gitmodules b/.gitmodules
index 64995f1c3188..e6e29cddda49 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -84,3 +84,6 @@
[submodule "Externals/Vulkan-Headers"]
path = Externals/Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers.git
+[submodule "Externals/SFML/SFML"]
+ path = Externals/SFML/SFML
+ url = https://github.com/SFML/SFML.git
diff --git a/CMake/FindSFML.cmake b/CMake/FindSFML.cmake
index b5b26a5f000e..17d2f6bdf918 100644
--- a/CMake/FindSFML.cmake
+++ b/CMake/FindSFML.cmake
@@ -102,10 +102,14 @@ if(SFML_FIND_VERSION AND SFML_INCLUDE_DIR)
set(SFML_VERSION_OK FALSE)
endif()
else()
- # SFML version is < 2.0
- if (SFML_REQUESTED_VERSION GREATER 19)
+ # SFML version is < 3.0
+ if (SFML_REQUESTED_VERSION GREATER 29)
set(SFML_VERSION_OK FALSE)
- set(SFML_VERSION_MAJOR 1)
+ if (SFML_REQUESTED_VERSION GREATER 19)
+ set(SFML_VERSION_MAJOR 1)
+ else()
+ set(SFML_VERSION_MAJOR 2)
+ endif()
set(SFML_VERSION_MINOR x)
endif()
endif()
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 819ea0440905..717f2a6b4c5c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -709,7 +709,7 @@ if(NOT ANDROID)
add_definitions(-D__LIBUSB__)
endif()
-dolphin_find_optional_system_library(SFML Externals/SFML 2.1 COMPONENTS network system)
+dolphin_find_optional_system_library(SFML Externals/SFML 3.0 COMPONENTS Network System)
if(USE_UPNP)
dolphin_find_optional_system_library(MINIUPNPC Externals/miniupnpc 1.6)
diff --git a/Externals/SFML/CMakeLists.txt b/Externals/SFML/CMakeLists.txt
index 1a5a24ecedf1..6a6e3a04e33e 100644
--- a/Externals/SFML/CMakeLists.txt
+++ b/Externals/SFML/CMakeLists.txt
@@ -1,31 +1,32 @@
set(SRC_NETWORK
- src/SFML/Network/Http.cpp
- src/SFML/Network/IPAddress.cpp
- src/SFML/Network/Packet.cpp
- src/SFML/Network/Socket.cpp
- src/SFML/Network/SocketSelector.cpp
- src/SFML/Network/TcpListener.cpp
- src/SFML/Network/TcpSocket.cpp
- src/SFML/Network/UdpSocket.cpp
+ SFML/src/SFML/Network/Http.cpp
+ SFML/src/SFML/Network/IpAddress.cpp
+ SFML/src/SFML/Network/Packet.cpp
+ SFML/src/SFML/Network/Socket.cpp
+ SFML/src/SFML/Network/SocketSelector.cpp
+ SFML/src/SFML/Network/TcpListener.cpp
+ SFML/src/SFML/Network/TcpSocket.cpp
+ SFML/src/SFML/Network/UdpSocket.cpp
)
if(WIN32)
- list(APPEND SRC_NETWORK src/SFML/Network/Win32/SocketImpl.cpp)
+ list(APPEND SRC_NETWORK SFML/src/SFML/Network/Win32/SocketImpl.cpp)
else()
- list(APPEND SRC_NETWORK src/SFML/Network/Unix/SocketImpl.cpp)
+ list(APPEND SRC_NETWORK SFML/src/SFML/Network/Unix/SocketImpl.cpp)
endif()
set(SRC_SYSTEM
- src/SFML/System/Err.cpp
- src/SFML/System/String.cpp
- src/SFML/System/Time.cpp
+ SFML/src/SFML/System/Err.cpp
+ SFML/include/SFML/System/String.hpp
+ SFML/src/SFML/System/String.cpp
+ SFML/src/SFML/System/Utils.cpp
)
add_library(sfml-network STATIC ${SRC_NETWORK})
add_library(sfml-system STATIC ${SRC_SYSTEM})
target_compile_definitions(sfml-system PUBLIC SFML_STATIC)
-target_include_directories(sfml-system PUBLIC include PRIVATE src)
-target_include_directories(sfml-network PUBLIC include PRIVATE src)
+target_include_directories(sfml-system PUBLIC SFML/include PRIVATE SFML/src)
+target_include_directories(sfml-network PUBLIC SFML/include PRIVATE SFML/src)
target_link_libraries(sfml-network PUBLIC sfml-system)
dolphin_disable_warnings(sfml-network)
-dolphin_disable_warnings(sfml-system)
+dolphin_disable_warnings(sfml-system)
\ No newline at end of file
diff --git a/Externals/SFML/SFML b/Externals/SFML/SFML
new file mode 160000
index 000000000000..7f1162dfea49
--- /dev/null
+++ b/Externals/SFML/SFML
@@ -0,0 +1 @@
+Subproject commit 7f1162dfea4969bc17417563ac55d93b72e84c1e
diff --git a/Externals/SFML/SFML.vcxproj b/Externals/SFML/SFML.vcxproj
new file mode 100644
index 000000000000..072677f94845
--- /dev/null
+++ b/Externals/SFML/SFML.vcxproj
@@ -0,0 +1,67 @@
+
+
+
+
+
+ {93D73454-2512-424E-9CDA-4BB357FE13DD}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SFML\include;SFML\src;%(AdditionalIncludeDirectories)
+ SFML_STATIC;%(PreprocessorDefinitions)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Externals/SFML/build/vc2010/SFML_Network.vcxproj b/Externals/SFML/build/vc2010/SFML_Network.vcxproj
deleted file mode 100644
index f93a95f09272..000000000000
--- a/Externals/SFML/build/vc2010/SFML_Network.vcxproj
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
- {93D73454-2512-424E-9CDA-4BB357FE13DD}
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\..\include;..\..\src;%(AdditionalIncludeDirectories)
- SFML_STATIC;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Externals/SFML/build/vc2010/SFML_Network.vcxproj.filters b/Externals/SFML/build/vc2010/SFML_Network.vcxproj.filters
deleted file mode 100644
index 3e941ca48bd5..000000000000
--- a/Externals/SFML/build/vc2010/SFML_Network.vcxproj.filters
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Win32
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Win32
-
-
-
-
- {8280ecca-24fc-48a2-b7f5-6aca41826b66}
-
-
-
diff --git a/Externals/SFML/exports.props b/Externals/SFML/exports.props
index 546f964aa514..2f162883014f 100644
--- a/Externals/SFML/exports.props
+++ b/Externals/SFML/exports.props
@@ -2,13 +2,13 @@
- $(ExternalsDir)SFML\include;%(AdditionalIncludeDirectories)
+ $(ExternalsDir)SFML\SFML\include;%(AdditionalIncludeDirectories)
SFML_STATIC;%(PreprocessorDefinitions)
-
+
{93d73454-2512-424e-9cda-4bb357fe13dd}
-
+
\ No newline at end of file
diff --git a/Externals/SFML/include/SFML/Config.hpp b/Externals/SFML/include/SFML/Config.hpp
deleted file mode 100644
index aae5f54899e6..000000000000
--- a/Externals/SFML/include/SFML/Config.hpp
+++ /dev/null
@@ -1,236 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_CONFIG_HPP
-#define SFML_CONFIG_HPP
-
-
-////////////////////////////////////////////////////////////
-// Define the SFML version
-////////////////////////////////////////////////////////////
-#define SFML_VERSION_MAJOR 2
-#define SFML_VERSION_MINOR 5
-#define SFML_VERSION_PATCH 0
-
-
-////////////////////////////////////////////////////////////
-// Identify the operating system
-// see http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system
-////////////////////////////////////////////////////////////
-#if defined(_WIN32)
-
- // Windows
- #define SFML_SYSTEM_WINDOWS
- #ifndef NOMINMAX
- #define NOMINMAX
- #endif
-
-#elif defined(__APPLE__) && defined(__MACH__)
-
- // Apple platform, see which one it is
- #include "TargetConditionals.h"
-
- #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
-
- // iOS
- #define SFML_SYSTEM_IOS
-
- #elif TARGET_OS_MAC
-
- // MacOS
- #define SFML_SYSTEM_MACOS
-
- #else
-
- // Unsupported Apple system
- #error This Apple operating system is not supported by SFML library
-
- #endif
-
-#elif defined(__unix__)
-
- // UNIX system, see which one it is
- #if defined(__ANDROID__)
-
- // Android
- #define SFML_SYSTEM_ANDROID
-
- #elif defined(__linux__)
-
- // Linux
- #define SFML_SYSTEM_LINUX
-
- #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-
- // FreeBSD
- #define SFML_SYSTEM_FREEBSD
-
- #elif defined(__OpenBSD__)
-
- // OpenBSD
- #define SFML_SYSTEM_OPENBSD
-
- #else
-
- // Unsupported UNIX system
- #error This UNIX operating system is not supported by SFML library
-
- #endif
-
-#else
-
- // Unsupported system
- #error This operating system is not supported by SFML library
-
-#endif
-
-
-////////////////////////////////////////////////////////////
-// Define a portable debug macro
-////////////////////////////////////////////////////////////
-#if !defined(NDEBUG)
-
- #define SFML_DEBUG
-
-#endif
-
-
-////////////////////////////////////////////////////////////
-// Define helpers to create portable import / export macros for each module
-////////////////////////////////////////////////////////////
-#if !defined(SFML_STATIC)
-
- #if defined(SFML_SYSTEM_WINDOWS)
-
- // Windows compilers need specific (and different) keywords for export and import
- #define SFML_API_EXPORT __declspec(dllexport)
- #define SFML_API_IMPORT __declspec(dllimport)
-
- // For Visual C++ compilers, we also need to turn off this annoying C4251 warning
- #ifdef _MSC_VER
-
- #pragma warning(disable: 4251)
-
- #endif
-
- #else // Linux, FreeBSD, Mac OS X
-
- #if __GNUC__ >= 4
-
- // GCC 4 has special keywords for showing/hidding symbols,
- // the same keyword is used for both importing and exporting
- #define SFML_API_EXPORT __attribute__ ((__visibility__ ("default")))
- #define SFML_API_IMPORT __attribute__ ((__visibility__ ("default")))
-
- #else
-
- // GCC < 4 has no mechanism to explicitely hide symbols, everything's exported
- #define SFML_API_EXPORT
- #define SFML_API_IMPORT
-
- #endif
-
- #endif
-
-#else
-
- // Static build doesn't need import/export macros
- #define SFML_API_EXPORT
- #define SFML_API_IMPORT
-
-#endif
-
-
-////////////////////////////////////////////////////////////
-// Cross-platform warning for deprecated functions and classes
-//
-// Usage:
-// class SFML_DEPRECATED MyClass
-// {
-// SFML_DEPRECATED void memberFunc();
-// };
-//
-// SFML_DEPRECATED void globalFunc();
-////////////////////////////////////////////////////////////
-#if defined(SFML_NO_DEPRECATED_WARNINGS)
-
- // User explicitly requests to disable deprecation warnings
- #define SFML_DEPRECATED
-
-#elif defined(_MSC_VER)
-
- // Microsoft C++ compiler
- // Note: On newer MSVC versions, using deprecated functions causes a compiler error. In order to
- // trigger a warning instead of an error, the compiler flag /sdl- (instead of /sdl) must be specified.
- #define SFML_DEPRECATED __declspec(deprecated)
-
-#elif defined(__GNUC__)
-
- // g++ and Clang
- #define SFML_DEPRECATED __attribute__ ((deprecated))
-
-#else
-
- // Other compilers are not supported, leave class or function as-is.
- // With a bit of luck, the #pragma directive works, otherwise users get a warning (no error!) for unrecognized #pragma.
- #pragma message("SFML_DEPRECATED is not supported for your compiler, please contact the SFML team")
- #define SFML_DEPRECATED
-
-#endif
-
-
-////////////////////////////////////////////////////////////
-// Define portable fixed-size types
-////////////////////////////////////////////////////////////
-namespace sf
-{
- // All "common" platforms use the same size for char, short and int
- // (basically there are 3 types for 3 sizes, so no other match is possible),
- // we can use them without doing any kind of check
-
- // 8 bits integer types
- typedef signed char Int8;
- typedef unsigned char Uint8;
-
- // 16 bits integer types
- typedef signed short Int16;
- typedef unsigned short Uint16;
-
- // 32 bits integer types
- typedef signed int Int32;
- typedef unsigned int Uint32;
-
- // 64 bits integer types
- #if defined(_MSC_VER)
- typedef signed __int64 Int64;
- typedef unsigned __int64 Uint64;
- #else
- typedef signed long long Int64;
- typedef unsigned long long Uint64;
- #endif
-
-} // namespace sf
-
-
-#endif // SFML_CONFIG_HPP
diff --git a/Externals/SFML/include/SFML/Network.hpp b/Externals/SFML/include/SFML/Network.hpp
deleted file mode 100644
index 422497f0948e..000000000000
--- a/Externals/SFML/include/SFML/Network.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_NETWORK_HPP
-#define SFML_NETWORK_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-
-#include
-//#include
-#include
-
-// This file is "IpAddress.hpp" upstream
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-
-#endif // SFML_NETWORK_HPP
-
-////////////////////////////////////////////////////////////
-/// \defgroup network Network module
-///
-/// Socket-based communication, utilities and higher-level
-/// network protocols (HTTP, FTP).
-///
-////////////////////////////////////////////////////////////
diff --git a/Externals/SFML/include/SFML/Network/Export.hpp b/Externals/SFML/include/SFML/Network/Export.hpp
deleted file mode 100644
index e7ebdd4767b8..000000000000
--- a/Externals/SFML/include/SFML/Network/Export.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_NETWORK_EXPORT_HPP
-#define SFML_NETWORK_EXPORT_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include
-
-
-////////////////////////////////////////////////////////////
-// Define portable import / export macros
-////////////////////////////////////////////////////////////
-#if defined(SFML_NETWORK_EXPORTS)
-
- #define SFML_NETWORK_API SFML_API_EXPORT
-
-#else
-
- #define SFML_NETWORK_API SFML_API_IMPORT
-
-#endif
-
-
-#endif // SFML_NETWORK_EXPORT_HPP
diff --git a/Externals/SFML/include/SFML/Network/Http.hpp b/Externals/SFML/include/SFML/Network/Http.hpp
deleted file mode 100644
index 4cdeff99ac1c..000000000000
--- a/Externals/SFML/include/SFML/Network/Http.hpp
+++ /dev/null
@@ -1,482 +0,0 @@
-////////////////////////////////////////////////////////////
-//
-// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
-//
-// This software is provided 'as-is', without any express or implied warranty.
-// In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it freely,
-// subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented;
-// you must not claim that you wrote the original software.
-// If you use this software in a product, an acknowledgment
-// in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such,
-// and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution.
-//
-////////////////////////////////////////////////////////////
-
-#ifndef SFML_HTTP_HPP
-#define SFML_HTTP_HPP
-
-////////////////////////////////////////////////////////////
-// Headers
-////////////////////////////////////////////////////////////
-#include
-#include
-#include
-#include
-#include
-#include