From 15ebad6e7d0ede2d811cc83100ddcd258a052ca8 Mon Sep 17 00:00:00 2001 From: Charlie Birks 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 b20c805bf..5f19e445c 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 dcb9adad1..5276429e9 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 15033798e..b54e8b222 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 000000000..f344232ab --- /dev/null +++ b/src/misc/emscripten/SDL_sysurl.c @@ -0,0 +1,37 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2022 Sam Lantinga + + 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 + +int +SDL_SYS_OpenURL(const char *url) +{ + EM_ASM({ + window.open(UTF8ToString($0), "_blank"); + }, url); + + return 0; +} + +/* vi: set ts=4 sw=4 expandtab: */ +