SDL_image: cmake: use sdlcpu.cmake for cpu detection + emscripten does not support shared libraries

From 5ffd6babbe96d90c415b4604f51c410c4946e946 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Fri, 25 Oct 2024 16:35:19 +0200
Subject: [PATCH] cmake: use sdlcpu.cmake for cpu detection + emscripten does
 not support shared libraries

---
 CMakeLists.txt                    | 18 ++++++-------
 cmake/CPackProjectConfig.cmake.in | 12 ++++-----
 cmake/CheckCPUArchitecture.cmake  | 42 -------------------------------
 3 files changed, 13 insertions(+), 59 deletions(-)
 delete mode 100644 cmake/CheckCPUArchitecture.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e43eb833..7abeffc7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,9 +17,9 @@ project(SDL3_image
     VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}"
 )
 
-include("${CMAKE_CURRENT_LIST_DIR}/cmake/CheckCPUArchitecture.cmake")
-include("${CMAKE_CURRENT_LIST_DIR}/cmake/GetGitRevisionDescription.cmake" )
-include("${CMAKE_CURRENT_LIST_DIR}/cmake/PrivateSdlFunctions.cmake" )
+include("${CMAKE_CURRENT_LIST_DIR}/cmake/GetGitRevisionDescription.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/cmake/PrivateSdlFunctions.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/cmake/sdlcpu.cmake")
 include("${CMAKE_CURRENT_LIST_DIR}/cmake/sdlplatform.cmake")
 include("${CMAKE_CURRENT_LIST_DIR}/cmake/sdlmanpages.cmake")
 sdl_calculate_derived_version_variables(${MAJOR_VERSION} ${MINOR_VERSION} ${MICRO_VERSION})
@@ -60,7 +60,7 @@ include(CMakePackageConfigHelpers)
 include(GNUInstallDirs)
 
 set(PLATFORM_SUPPORTS_SHARED ON)
-if(VITA OR PSP OR PS2 OR N3DS OR RISCOS)
+if(EMSCRIPTEN OR VITA OR PSP OR PS2 OR N3DS OR RISCOS)
   set(PLATFORM_SUPPORTS_SHARED OFF)
 endif()
 
@@ -218,7 +218,7 @@ if(NOT TARGET SDL3::Headers OR NOT TARGET ${sdl3_target_name})
     find_package(SDL3 ${SDL_REQUIRED_VERSION} REQUIRED COMPONENTS ${sdl_required_components})
 endif()
 
-SDL_DetectCPUArchitecture()
+SDL_DetectTargetCPUArchitectures(SDL_CPU_NAMES)
 SDL_DetectCMakePlatform()
 
 # Set PROJECT_VERSION of subprojects to "" if it's project call does not set VERSION
@@ -417,7 +417,7 @@ if(SDLIMAGE_DAV1D)
         message(STATUS "${PROJECT_NAME}: Using vendored dav1d")
         set(BUILD_SHARED_LIBS ${SDLIMAGE_DAV1D_SHARED})
         add_subdirectory(external/dav1d EXCLUDE_FROM_ALL)
-        if(DAV1D_ASM AND (CHECK_CPU_ARCHITECTURE_X64 OR CHECK_CPU_ARCHITECTURE_X86))
+        if(DAV1D_ASM AND (SDL_CPU_X64 OR SDL_CPU_X86))
             enable_language(ASM_NASM)
         endif()
         set(DAV1D_LIBRARY dav1d)
@@ -1016,10 +1016,8 @@ if(SDLIMAGE_INSTALL)
 
     if(WIN32 AND NOT MINGW)
         set(SDLIMAGE_INSTALL_CMAKEDIR "${SDLIMAGE_INSTALL_CMAKEDIR_ROOT}")
-        set(LICENSES_PREFIX "licenses/SDL3_image")
     else()
         set(SDLIMAGE_INSTALL_CMAKEDIR "${SDLIMAGE_INSTALL_CMAKEDIR_ROOT}/SDL3_image")
-        set(LICENSES_PREFIX "${CMAKE_INSTALL_DATAROOTDIR}/licenses/SDL3_image")
     endif()
 
     configure_package_config_file(cmake/SDL3_imageConfig.cmake.in SDL3_imageConfig.cmake
@@ -1062,9 +1060,7 @@ if(SDLIMAGE_INSTALL)
     )
 
     if(SDLIMAGE_INSTALL_CPACK)
-        if(SDL2COMPAT_FRAMEWORK)
-            set(CPACK_GENERATOR "DragNDrop")
-        elseif(MSVC)
+        if(MSVC)
             set(CPACK_GENERATOR "ZIP")
         else()
             set(CPACK_GENERATOR "TGZ")
diff --git a/cmake/CPackProjectConfig.cmake.in b/cmake/CPackProjectConfig.cmake.in
index 735e2ea2..4c7ce7d5 100644
--- a/cmake/CPackProjectConfig.cmake.in
+++ b/cmake/CPackProjectConfig.cmake.in
@@ -9,17 +9,17 @@ set(SDL_CMAKE_PLATFORM "@SDL_CMAKE_PLATFORM@")
 set(SDL_CPU_NAMES "@SDL_CPU_NAMES@")
 list(SORT SDL_CPU_NAMES)
 
+string(TOLOWER "${SDL_CMAKE_PLATFORM}" SDL_CMAKE_PLATFORM)
+string(TOLOWER "${SDL_CPU_NAMES}" SDL_CPU_NAMES)
+if(lower_sdl_cmake_platform STREQUAL lower_sdl_cpu_names)
+    set(SDL_CPU_NAMES_WITH_DASHES)
+endif()
+
 string(REPLACE ";" "-" SDL_CPU_NAMES_WITH_DASHES "${SDL_CPU_NAMES}")
 if(SDL_CPU_NAMES_WITH_DASHES)
     set(SDL_CPU_NAMES_WITH_DASHES "-${SDL_CPU_NAMES_WITH_DASHES}")
 endif()
 
-string(TOLOWER "${SDL_CMAKE_PLATFORM}" lower_sdl_cmake_platform)
-string(TOLOWER "${SDL_CPU_NAMES}" lower_sdl_cpu_names)
-if(lower_sdl_cmake_platform STREQUAL lower_sdl_cpu_names)
-    set(SDL_CPU_NAMES_WITH_DASHES)
-endif()
-
 set(MSVC @MSVC@)
 set(MINGW @MINGW@)
 if(MSVC)
diff --git a/cmake/CheckCPUArchitecture.cmake b/cmake/CheckCPUArchitecture.cmake
deleted file mode 100644
index 1eebbd4f..00000000
--- a/cmake/CheckCPUArchitecture.cmake
+++ /dev/null
@@ -1,42 +0,0 @@
-include(CheckCSourceCompiles)
-include(CMakePushCheckState)
-
-function(_internal_check_cpu_architecture macro_check NAME VARIABLE)
-  cmake_push_check_state()
-  string(TOUPPER "${NAME}" UPPER_NAME)
-  set(CACHE_VARIABLE "CHECK_CPU_ARCHITECTURE_${UPPER_NAME}")
-  set(test_src "
-int main(int argc, char *argv[]) {
-#if ${macro_check}
-  return 0;
-#else
-  choke
-#endif
-}
-")
-  check_c_source_compiles("${test_src}" "${CACHE_VARIABLE}")
-  cmake_pop_check_state()
-  if(${CACHE_VARIABLE})
-    set(${VARIABLE} "TRUE" PARENT_SCOPE)
-  else()
-    set(${VARIABLE} "FALSE" PARENT_SCOPE)
-  endif()
-endfunction()
-
-function(check_cpu_architecture ARCH VARIABLE)
-  if(ARCH STREQUAL "x86")
-    _internal_check_cpu_architecture("defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) ||defined( __i386) || defined(_M_IX86)" x86 ${VARIABLE})
-  elseif(ARCH STREQUAL "x64")
-    _internal_check_cpu_architecture("defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)" x64 ${VARIABLE})
-  elseif(ARCH STREQUAL "arm32")
-    _internal_check_cpu_architecture("defined(__arm__) || defined(_M_ARM)" arm32 ${VARIABLE})
-  elseif(ARCH STREQUAL "arm64")
-    _internal_check_cpu_architecture("defined(__aarch64__) || defined(_M_ARM64)" arm64 ${VARIABLE})
-  elseif(ARCH STREQUAL "loongarch64")
-    _internal_check_cpu_architecture("defined(__loongarch64)" loongarch64 ${VARIABLE})
-  else()
-    message(WARNING "Unknown CPU architectures (${ARCH}).")
-    set(${VARIABLE} FALSE)
-  endif()
-  set("${VARIABLE}" "${${VARIABLE}}" PARENT_SCOPE)
-endfunction()