From 15ebad6e7d0ede2d811cc83100ddcd258a052ca8 Mon Sep 17 00:00:00 2001
From: Charlie Birks <[EMAIL REDACTED]>
Date: Sat, 22 Jan 2022 13:31:11 +0000
Subject: [PATCH] emscripten: Implement SDL_OpenURL
---
CMakeLists.txt | 5 +++++
configure | 3 +++
configure.ac | 3 +++
src/misc/emscripten/SDL_sysurl.c | 37 ++++++++++++++++++++++++++++++++
4 files changed, 48 insertions(+)
create mode 100644 src/misc/emscripten/SDL_sysurl.c
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b20c805bfa7..5f19e445cb8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1170,6 +1170,11 @@ elseif(EMSCRIPTEN)
# Hide noisy warnings that intend to aid mostly during initial stages of porting a new
# project. Uncomment at will for verbose cross-compiling -I/../ path info.
target_compile_options(sdl-build-options INTERFACE "-Wno-warn-absolute-paths")
+
+ file(GLOB EMSRIPTEN_MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/emscripten/*.c)
+ set(SOURCE_FILES ${SOURCE_FILES} ${EMSRIPTEN_MISC_SOURCES})
+ set(HAVE_SDL_MISC TRUE)
+
if(SDL_AUDIO)
set(SDL_AUDIO_DRIVER_EMSCRIPTEN 1)
file(GLOB EM_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/emscripten/*.c)
diff --git a/configure b/configure
index dcb9adad112..5276429e9ca 100755
--- a/configure
+++ b/configure
@@ -26618,6 +26618,9 @@ $as_echo "#define SDL_AUDIO_DRIVER_EMSCRIPTEN 1" >>confdefs.h
CheckClockGettime
CheckEmscriptenGLES
+ SOURCES="$SOURCES $srcdir/src/misc/emscripten/*.c"
+ have_misc=yes
+
# Set up files for the power library
if test x$enable_power = xyes; then
diff --git a/configure.ac b/configure.ac
index 15033798efb..b54e8b222c3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4339,6 +4339,9 @@ dnl BeOS support removed after SDL 2.0.1. Haiku still works. --ryan.
CheckClockGettime
CheckEmscriptenGLES
+ SOURCES="$SOURCES $srcdir/src/misc/emscripten/*.c"
+ have_misc=yes
+
# Set up files for the power library
if test x$enable_power = xyes; then
AC_DEFINE(SDL_POWER_EMSCRIPTEN, 1, [ ])
diff --git a/src/misc/emscripten/SDL_sysurl.c b/src/misc/emscripten/SDL_sysurl.c
new file mode 100644
index 00000000000..f344232ab95
--- /dev/null
+++ b/src/misc/emscripten/SDL_sysurl.c
@@ -0,0 +1,37 @@
+/*
+ Simple DirectMedia Layer
+ Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.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.
+*/
+
+#include "../SDL_sysurl.h"
+
+#include <emscripten/emscripten.h>
+
+int
+SDL_SYS_OpenURL(const char *url)
+{
+ EM_ASM({
+ window.open(UTF8ToString($0), "_blank");
+ }, url);
+
+ return 0;
+}
+
+/* vi: set ts=4 sw=4 expandtab: */
+