SDL_image: cmake: fix building tests

From 80acfbeda1108cc6e0bc1f2bd9c02aeaf24baddd Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Thu, 5 Jan 2023 17:38:15 +0100
Subject: [PATCH] cmake: fix building tests

---
 CMakeLists.txt      |  1 -
 test/CMakeLists.txt | 41 +++++++++++++++++++++++++++++++++--------
 test/main.c         |  4 +++-
 3 files changed, 36 insertions(+), 10 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 32eca5c2..880bf253 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,7 +56,6 @@ option(SDL3IMAGE_SAMPLES "Build the SDL3_image sample program(s)" ${SDL3IMAGE_SA
 cmake_dependent_option(SDL3IMAGE_SAMPLES_INSTALL "Install the SDL3_image sample program(s)" OFF "SDL3IMAGE_SAMPLES;SDL3IMAGE_INSTALL" OFF)
 
 option(SDL3IMAGE_TESTS "Build unit tests?" OFF)
-cmake_dependent_option(SDL3IMAGE_TESTS_INSTALL "Install unit tests?" OFF "SDL3IMAGE_TESTS;SDL3IMAGE_INSTALL" OFF)
 
 option(SDL3IMAGE_BACKEND_STB "Use stb_image for loading JPEG and PNG files" ON)
 cmake_dependent_option(SDL3IMAGE_BACKEND_WIC "Add WIC backend (Windows Imaging Component)" OFF WIN32 OFF)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 688a7239..34f02cb5 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,5 +1,33 @@
-find_package(SDL2main)
-find_package(SDL2test REQUIRED)
+cmake_minimum_required(VERSION 3.0)
+project(SDL3_image_tests)
+
+enable_testing()
+
+option(SDL3IMAGE_TESTS_LINK_SHARED "link tests to shared SDL library" ON)
+option(SDL3IMAGE_TESTS_INSTALL "Install unit tests?" OFF)
+
+if(SDL3IMAGE_TESTS_LINK_SHARED)
+    set(sdl_name_component SDL3)
+    set(sdl_target_name SDL3::SDL3)
+    set(sdlimage_target_name SDL3_image::SDL3_image)
+else()
+    set(sdl_name_component SDL3-static)
+    set(sdl_target_name SDL3::SDL3-static)
+    set(sdlimage_target_name SDL3_image::SDL3_image-static)
+endif()
+
+if(NOT TARGET ${sdl_target_name})
+    find_package(SDL3 3.0.0 REQUIRED)
+    if(NOT TARGET ${sdl_target_name})
+        message(FATAL_ERROR "find_package(SDL3) did not create ${sdl_target_name}.")
+    endif()
+endif()
+if(NOT TARGET ${sdlimage_target_name})
+    find_package(SDL3_image 3.0.0 REQUIRED)
+    if(NOT TARGET ${sdlimage_target_name})
+        message(FATAL_ERROR "find_package(SDL3_image) did not create ${sdlimage_target_name}.")
+    endif()
+endif()
 
 add_executable(testimage main.c)
 
@@ -38,12 +66,9 @@ set(TESTS_ENVIRONMENT
 )
 
 foreach(prog ${ALL_TESTS})
-    target_compile_definitions(${prog} PRIVATE $<TARGET_PROPERTY:SDL2_image,COMPILE_DEFINITIONS>)
-    target_link_libraries(${prog} PRIVATE SDL2_image::${sdl2_image_export_name})
-    if(TARGET SDL2::SDL2main)
-        target_link_libraries(${prog} PRIVATE SDL2::SDL2main)
-    endif()
-    target_link_libraries(${prog} PRIVATE SDL2::SDL2test ${sdl2_target_name})
+    target_compile_definitions(${prog} PRIVATE $<TARGET_PROPERTY:SDL3_image,COMPILE_DEFINITIONS>)
+    target_link_libraries(${prog} PRIVATE ${sdlimage_target_name})
+    target_link_libraries(${prog} PRIVATE SDL3::SDL3_test ${sdl_target_name})
 
     add_test(
         NAME ${prog}
diff --git a/test/main.c b/test/main.c
index a29a7605..79a457d7 100644
--- a/test/main.c
+++ b/test/main.c
@@ -16,6 +16,8 @@
 #include <SDL3/SDL.h>
 #include <SDL3/SDL_test.h>
 
+#include <stdlib.h>
+
 #if defined(SDL_FILESYSTEM_OS2) || defined(SDL_FILESYSTEM_WINDOWS)
 static const char pathsep[] = "\\";
 #elif defined(SDL_FILESYSTEM_RISCOS)
@@ -524,7 +526,7 @@ ConvertToRgba32(SDL_Surface **surface_p)
     if ((*surface_p)->format->format != SDL_PIXELFORMAT_RGBA32) {
         SDL_Surface *temp;
 
-        temp = SDL_ConvertSurfaceFormat(*surface_p, SDL_PIXELFORMAT_RGBA32, 0);
+        temp = SDL_ConvertSurfaceFormat(*surface_p, SDL_PIXELFORMAT_RGBA32);
         SDLTest_AssertCheck(temp != NULL,
                             "Converting to RGBA should succeed (%s)",
                             SDL_GetError());