From d1d54b8c56aa1025c663655d8f00e84eaa7a5ef3 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Fri, 15 May 2026 02:35:10 +0200
Subject: [PATCH] test: build testsprite as c++ application
---
test/CMakeLists.txt | 9 +++++++++
test/testsprite.cpp | 1 +
test/testutils.h | 14 +++++++++++---
3 files changed, 21 insertions(+), 3 deletions(-)
create mode 100644 test/testsprite.cpp
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 654ff1887436a..4c5a416e61e6e 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -13,10 +13,16 @@ set(SDL3_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../cmake")
include(CheckIncludeFile)
+include(CheckLanguage)
include(CheckStructHasMember)
include(CMakePushCheckState)
include(sdlcompilers)
+check_language(CXX)
+if(CMAKE_CXX_COMPILER)
+ enable_language(CXX)
+endif()
+
find_package(Python3 COMPONENTS Interpreter)
if(NOT PYTHON3_EXECUTABLE)
set(PYTHON3_EXECUTABLE "python3")
@@ -449,6 +455,9 @@ add_sdl_test_executable(testsoftwaretransparent SOURCES testsoftwaretransparent.
add_sdl_test_executable(testsprite MAIN_CALLBACKS NEEDS_RESOURCES TESTUTILS SOURCES testsprite.c NAME83 sprite)
add_sdl_test_executable(testspriteminimal SOURCES testspriteminimal.c ${icon_png_header} DEPENDS generate-icon_png_header NAME83 spritmin)
add_sdl_test_executable(testspritesurface SOURCES testspritesurface.c ${icon_png_header} DEPENDS generate-icon_png_header NAME83 spritsrf)
+if(CMAKE_CXX_COMPILER)
+ add_sdl_test_executable(testspritecxx MAIN_CALLBACKS NEEDS_RESOURCES TESTUTILS SOURCES testsprite.cpp NAME83 spritexx)
+endif()
add_sdl_test_executable(testpalette SOURCES testpalette.c NAME83 palette)
add_sdl_test_executable(testtimer NONINTERACTIVE NONINTERACTIVE_ARGS --no-interactive NONINTERACTIVE_TIMEOUT 60 SOURCES testtimer.c NAME83 timer)
add_sdl_test_executable(testurl SOURCES testurl.c NAME83 url)
diff --git a/test/testsprite.cpp b/test/testsprite.cpp
new file mode 100644
index 0000000000000..17b537c23b48f
--- /dev/null
+++ b/test/testsprite.cpp
@@ -0,0 +1 @@
+#include "testsprite.c"
diff --git a/test/testutils.h b/test/testutils.h
index 25b326b35ba04..83d7c295a33bb 100644
--- a/test/testutils.h
+++ b/test/testutils.h
@@ -16,8 +16,16 @@
#include <SDL3/SDL.h>
-SDL_Texture *LoadTexture(SDL_Renderer *renderer, const char *file, bool transparent);
-char *GetNearbyFilename(const char *file);
-char *GetResourceFilename(const char *user_specified, const char *def);
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern SDL_Texture *LoadTexture(SDL_Renderer *renderer, const char *file, bool transparent);
+extern char *GetNearbyFilename(const char *file);
+extern char *GetResourceFilename(const char *user_specified, const char *def);
+
+#ifdef __cplusplus
+}
+#endif
#endif