sdl2-compat: cmake: use SDL3::Headers target for headers

From 0aedb7e689b457a6d973f2a823cc43f689f4bd20 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 30 Jan 2023 06:06:56 +0100
Subject: [PATCH] cmake: use SDL3::Headers target for headers

---
 CMakeLists.txt | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f9c8177..8038f75 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -96,14 +96,19 @@ endif()
 
 set(CMAKE_SKIP_RPATH TRUE)
 
-find_package(SDL3 QUIET)
-if(NOT SDL3_INCLUDE_DIRS)
+if(NOT TARGET SDL3::Headers)
+  find_package(SDL3 QUIET COMPONENTS Headers)
+endif()
+
+if(NOT TARGET SDL3::Headers)
   find_path(SDL3_INCLUDE_DIRS
     NAMES "SDL3/SDL.h"
   )
-endif()
-if(NOT SDL3_INCLUDE_DIRS)
-  message(FATAL_ERROR "Cannot find SDL3 headers: configure with -DCMAKE_PREFIX_PATH=\"/root/to/SDL3\" or -DSDL3_INCLUDE_DIRS=\"/root/to/SDL3/include\"")
+  if(NOT SDL3_INCLUDE_DIRS)
+    message(FATAL_ERROR "Cannot find SDL3 headers: configure with -DCMAKE_PREFIX_PATH=\"/root/to/SDL3\" or -DSDL3_INCLUDE_DIRS=\"/root/to/SDL3/include\"")
+  endif()
+  add_library(SDL3::Headers INTERFACE IMPORTED)
+  set_property(TARGET SDL3::Headers PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${SDL3_INCLUDE_DIRS}")
 endif()
 
 find_package(Git)
@@ -169,9 +174,8 @@ endif()
 
 add_library(SDL2 SHARED ${SDL2COMPAT_SRCS})
 add_library(SDL2::SDL2 ALIAS SDL2)
+target_link_libraries(SDL2 PRIVATE $<BUILD_INTERFACE:SDL3::Headers>)
 target_include_directories(SDL2
-  PRIVATE
-    ${SDL3_INCLUDE_DIRS}
   INTERFACE
     "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
     "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/SDL2>"
@@ -489,9 +493,8 @@ set(installed_targets SDL2)
 if(SDL2COMPAT_STATICDEVEL AND SDL2COMPAT_DEVEL)
   add_library(SDL2-static STATIC ${SDL2COMPAT_SRCS})
   add_library(SDL2::SDL2-static ALIAS SDL2-static)
+  target_link_libraries(SDL2-static PRIVATE $<BUILD_INTERFACE:SDL3::Headers>)
   target_include_directories(SDL2-static
-    PRIVATE
-      ${SDL3_INCLUDE_DIRS}
     INTERFACE
       "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"
       "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/SDL2>"