SDL: cmake: avoid adding full path to SDL_EXTRA_LIBS

From e85e11b21107f9349dd4496a889aaabf9b06ec1f Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sat, 7 Jan 2023 20:38:33 +0100
Subject: [PATCH] cmake: avoid adding full path to SDL_EXTRA_LIBS

This avoids placing e.g. -l/path/to/libX11.so in sdl3.pc when configuring with -DSDL_X11_SHARED=OFF
---
 cmake/sdlchecks.cmake | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake
index f2721b7c5973..ee24d574ba71 100644
--- a/cmake/sdlchecks.cmake
+++ b/cmake/sdlchecks.cmake
@@ -27,6 +27,8 @@ macro(FindLibraryAndSONAME _LIB)
       string(REGEX REPLACE "(\\.[0-9]*)\\.[0-9\\.]*$" "\\1" _LIB_REGEXD "${_LIB_JUSTNAME}")
     endif()
 
+    get_filename_component(${_LNAME}_LIBDIR   ${${_LNAME}_LIB} DIRECTORY)
+
     SET(_DEBUG_FindSONAME FALSE)
     if(_DEBUG_FindSONAME)
       message_warn("DYNLIB OUTPUTVAR: ${_LIB} ... ${_LNAME}_LIB")
@@ -269,7 +271,6 @@ macro(CheckLibSampleRate)
         endif()
       else()
         target_link_libraries(sdl-build-options INTERFACE SampleRate::samplerate)
-        list(APPEND SDL_REQUIRES_PRIVATE SampleRate::samplerate)
       endif()
     else()
       check_include_file(samplerate.h HAVE_LIBSAMPLERATE_H)
@@ -283,7 +284,7 @@ macro(CheckLibSampleRate)
           set(SDL_LIBSAMPLERATE_DYNAMIC "\"${SAMPLERATE_LIB_SONAME}\"")
           set(HAVE_LIBSAMPLERATE_SHARED TRUE)
         else()
-          list(APPEND SDL_EXTRA_LDFLAGS -lsamplerate)
+          list(APPEND SDL_EXTRA_LIBS samplerate)
         endif()
       endif()
     endif()
@@ -371,18 +372,21 @@ macro(CheckX11)
           if(HAVE_X11_SHARED)
             set(SDL_VIDEO_DRIVER_X11_DYNAMIC "\"${X11_LIB_SONAME}\"")
           else()
-            list(APPEND SDL_EXTRA_LIBS ${X11_LIB})
+            list(APPEND SDL_EXTRA_LDFLAGS "-L${X11_LIBDIR}")
+            list(APPEND SDL_EXTRA_LIBS X11)
           endif()
         endif()
         if(XEXT_LIB)
           if(HAVE_X11_SHARED)
             set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "\"${XEXT_LIB_SONAME}\"")
           else()
-            list(APPEND SDL_EXTRA_LIBS ${XEXT_LIB_SONAME})
+            list(APPEND SDL_EXTRA_LDFLAGS "-L${XEXT_LIBDIR}")
+            list(APPEND SDL_EXTRA_LIBS Xext)
           endif()
         endif()
       else()
-          list(APPEND SDL_EXTRA_LIBS ${X11_LIB} ${XEXT_LIB})
+          list(APPEND SDL_EXTRA_LDFLAGS "-L${X11_LIBDIR}" "-L${XEXT_LIBDIR}")
+          list(APPEND SDL_EXTRA_LIBS X11 Xext)
       endif()
 
       list(APPEND CMAKE_REQUIRED_LIBRARIES ${X11_LIB})
@@ -408,7 +412,8 @@ macro(CheckX11)
         if(HAVE_X11_SHARED)
           set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR "\"${XCURSOR_LIB_SONAME}\"")
         else()
-          list(APPEND SDL_EXTRA_LIBS ${XCURSOR_LIB})
+          list(APPEND SDL_EXTRA_LDFLAGS "-L${XCURSOR_LIBDIR}")
+          list(APPEND SDL_EXTRA_LIBS Xcursor)
         endif()
         set(SDL_VIDEO_DRIVER_X11_XCURSOR 1)
       endif()
@@ -423,7 +428,8 @@ macro(CheckX11)
         if(HAVE_X11_SHARED)
           set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "\"${XI_LIB_SONAME}\"")
         else()
-          list(APPEND SDL_EXTRA_LIBS ${XI_LIB})
+          list(APPEND SDL_EXTRA_LDFLAGS "-L${XI_LIBDIR}")
+          list(APPEND SDL_EXTRA_LIBS Xi)
         endif()
         set(SDL_VIDEO_DRIVER_X11_XINPUT2 1)
 
@@ -457,7 +463,8 @@ macro(CheckX11)
         if(HAVE_X11_SHARED)
           set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES "\"${XFIXES_LIB_SONAME}\"")
         else()
-          list(APPEND SDL_EXTRA_LIBS ${XFIXES_LIB})
+          list(APPEND SDL_EXTRA_LDFLAGS "-L${XFIXES_LIBDIR}")
+          list(APPEND SDL_EXTRA_LIBS Xfixes)
         endif()
         set(SDL_VIDEO_DRIVER_X11_XFIXES 1)
         set(HAVE_X11_XFIXES TRUE)
@@ -467,7 +474,8 @@ macro(CheckX11)
         if(HAVE_X11_SHARED)
           set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "\"${XRANDR_LIB_SONAME}\"")
         else()
-          list(APPEND SDL_EXTRA_LIBS ${XRANDR_LIB})
+          list(APPEND SDL_EXTRA_LDFLAGS "-L${XRANDR_LIBDIR}")
+          list(APPEND SDL_EXTRA_LIBS Xrandr)
         endif()
         set(SDL_VIDEO_DRIVER_X11_XRANDR 1)
         set(HAVE_X11_XRANDR TRUE)
@@ -477,7 +485,8 @@ macro(CheckX11)
         if(HAVE_X11_SHARED)
           set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "\"${XSS_LIB_SONAME}\"")
         else()
-          list(APPEND SDL_EXTRA_LIBS ${XSS_LIB})
+          list(APPEND SDL_EXTRA_LDFLAGS "-L${XSS_LIBDIR}")
+          list(APPEND SDL_EXTRA_LIBS Xss)
         endif()
         set(SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1)
         set(HAVE_X11_XSCRNSAVER TRUE)
@@ -914,7 +923,7 @@ macro(CheckUSBHID)
     endif()
     check_library_exists(usb hid_init "" LIBUSB)
     if(LIBUSB)
-      set(USB_LIBS ${USB_LIBS} usb)
+      list(APPEND USB_LIBS usb)
     endif()
   endif()