SDL: cmake: declutter root + remove obsolete variables

From 653893f1886c398f60bc8cc57850ee4a6188a1b7 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sun, 18 Dec 2022 02:24:42 +0100
Subject: [PATCH] cmake: declutter root + remove obsolete variables

---
 .editorconfig                                 |  2 +-
 CMakeLists.txt                                | 35 ++++---------------
 .../SDL3Config.cmake.in                       |  0
 .../cmake_uninstall.cmake.in                  |  7 ++--
 cmake/macros.cmake                            | 19 +++++-----
 sdl3.pc.in => cmake/sdl3.pc.in                |  8 ++---
 6 files changed, 25 insertions(+), 46 deletions(-)
 rename SDL3Config.cmake.in => cmake/SDL3Config.cmake.in (100%)
 rename cmake_uninstall.cmake.in => cmake/cmake_uninstall.cmake.in (86%)
 rename sdl3.pc.in => cmake/sdl3.pc.in (77%)

diff --git a/.editorconfig b/.editorconfig
index ab843547042a..fb73dae34674 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -22,7 +22,7 @@ indent_style = space
 insert_final_newline = true
 trim_trailing_whitespace = true
 
-[{cmake_uninstall.cmake.in,test/CMakeLists.txt,./SDL3Config.cmake.in}]
+[{cmake/cmake_uninstall.cmake.in,test/CMakeLists.txt,cmake/SDL3Config.cmake.in}]
 indent_size = 4
 indent_style = space
 insert_final_newline = true
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dba551ea2fe9..d1cc977ef09e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2915,34 +2915,15 @@ else()
   set(sdl_static_libname "SDL3")
 endif()
 
-set(prefix ${CMAKE_INSTALL_PREFIX})
-file(RELATIVE_PATH bin_prefix_relpath "${CMAKE_INSTALL_FULL_BINDIR}" "${CMAKE_INSTALL_PREFIX}")
-
-set(exec_prefix "\${prefix}")
-set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
-set(bindir "\${exec_prefix}/${CMAKE_INSTALL_BINDIR}")
-set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
-if(SDL_STATIC)
-  set(ENABLE_STATIC_TRUE "")
-  set(ENABLE_STATIC_FALSE "#")
-else()
-  set(ENABLE_STATIC_TRUE "#")
-  set(ENABLE_STATIC_FALSE "")
-endif()
 if(SDL_SHARED)
-  set(PKGCONFIG_LIBS_PRIV "
-Libs.private:")
-  set(ENABLE_SHARED_TRUE "")
-  set(ENABLE_SHARED_FALSE "#")
+  set(PKGCONFIG_LIBS_PRIV "\nLibs.private:")
 else()
   set(PKGCONFIG_LIBS_PRIV "")
-  set(ENABLE_SHARED_TRUE "#")
-  set(ENABLE_SHARED_FALSE "")
 endif()
 
 # Clean up the different lists
 listtostr(EXTRA_LIBS _EXTRA_LIBS "-l")
-set(SDL_STATIC_LIBS ${SDL_LIBS} ${EXTRA_LDFLAGS} ${_EXTRA_LIBS})
+set(SDL_STATIC_LIBS ${EXTRA_LDFLAGS} ${_EXTRA_LIBS})
 list(REMOVE_DUPLICATES SDL_STATIC_LIBS)
 listtostr(SDL_STATIC_LIBS _SDL_STATIC_LIBS)
 set(SDL_STATIC_LIBS ${_SDL_STATIC_LIBS})
@@ -2962,8 +2943,7 @@ endif()
 # MESSAGE(STATUS "SDL_LIBS: ${SDL_LIBS}")
 # MESSAGE(STATUS "SDL_STATIC_LIBS: ${SDL_STATIC_LIBS}")
 
-configure_file("${SDL3_SOURCE_DIR}/sdl3.pc.in"
-  "${SDL3_BINARY_DIR}/sdl3.pc" @ONLY)
+configure_file(cmake/sdl3.pc.in sdl3.pc @ONLY)
 
 macro(check_add_debug_flag FLAG SUFFIX)
     check_c_compiler_flag(${FLAG} HAS_C_FLAG_${SUFFIX})
@@ -3299,7 +3279,7 @@ if(NOT SDL3_DISABLE_INSTALL)
   ##### Export files #####
 
   include(CMakePackageConfigHelpers)
-  configure_package_config_file(SDL3Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/SDL3Config.cmake"
+  configure_package_config_file(cmake/SDL3Config.cmake.in SDL3Config.cmake
     PATH_VARS CMAKE_INSTALL_PREFIX CMAKE_INSTALL_FULL_BINDIR CMAKE_INSTALL_FULL_INCLUDEDIR CMAKE_INSTALL_FULL_LIBDIR
     INSTALL_DESTINATION "${SDL_INSTALL_CMAKEDIR}"
   )
@@ -3373,13 +3353,10 @@ endif()
 
 if(NOT SDL3_DISABLE_UNINSTALL)
   if(NOT TARGET uninstall)
-    configure_file(
-        "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
-        "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
-        IMMEDIATE @ONLY)
+    configure_file(cmake/cmake_uninstall.cmake.in cmake_uninstall.cmake IMMEDIATE @ONLY)
 
     add_custom_target(uninstall
-        COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
+        COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
   endif()
 endif()
 
diff --git a/SDL3Config.cmake.in b/cmake/SDL3Config.cmake.in
similarity index 100%
rename from SDL3Config.cmake.in
rename to cmake/SDL3Config.cmake.in
diff --git a/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in
similarity index 86%
rename from cmake_uninstall.cmake.in
rename to cmake/cmake_uninstall.cmake.in
index 1761561b3b00..9a59b4f48bd3 100644
--- a/cmake_uninstall.cmake.in
+++ b/cmake/cmake_uninstall.cmake.in
@@ -1,10 +1,10 @@
 if (NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
     message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_BINARY_DIR@/install_manifest.txt\"")
-endif(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
+endif()
 
 file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
 string(REGEX REPLACE "\n" ";" files "${files}")
-foreach (file ${files})
+foreach(file ${files})
     message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
     execute_process(
         COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}"
@@ -14,5 +14,4 @@ foreach (file ${files})
     if(NOT ${rm_retval} EQUAL 0)
         message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
     endif (NOT ${rm_retval} EQUAL 0)
-endforeach(file)
-
+endforeach()
diff --git a/cmake/macros.cmake b/cmake/macros.cmake
index e5977a8a7700..5e38a7b946af 100644
--- a/cmake/macros.cmake
+++ b/cmake/macros.cmake
@@ -68,19 +68,22 @@ macro(message_tested_option _NAME)
   message(STATUS "  ${_NAME}${_PAD}(Wanted: ${_REQVALUE}): ${HAVE_${_STRIPPEDNAME}}")
 endmacro()
 
-macro(listtostr _LIST _OUTPUT)
+function(listtostr LIST OUTPUT)
   if(${ARGC} EQUAL 3)
     # prefix for each element
-    set(_LPREFIX ${ARGV2})
+    set(LPREFIX ${ARGV2})
   else()
-    set(_LPREFIX "")
+    set(LPREFIX "")
   endif()
-  # Do not use string(REPLACE ";" " ") here to avoid messing up list
-  # entries
-  foreach(_ITEM ${${_LIST}})
-    set(${_OUTPUT} "${${_OUTPUT}} ${_LPREFIX}${_ITEM}")
+  # Do not use string(REPLACE ";" " ") here to avoid messing up list entries
+  set(res)
+  foreach(ITEM ${${LIST}})
+    if(ITEM)
+      set(res "${res} ${LPREFIX}${ITEM}")
+    endif()
   endforeach()
-endmacro()
+  set(${OUTPUT} "${res}" PARENT_SCOPE)
+endfunction()
 
 function(listtostrrev _LIST _OUTPUT)
   if(${ARGC} EQUAL 3)
diff --git a/sdl3.pc.in b/cmake/sdl3.pc.in
similarity index 77%
rename from sdl3.pc.in
rename to cmake/sdl3.pc.in
index c533a403402f..328da05bbd1d 100644
--- a/sdl3.pc.in
+++ b/cmake/sdl3.pc.in
@@ -1,9 +1,9 @@
 # sdl pkg-config source file
 
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
 
 Name: sdl3
 Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.