Bladeren bron

cmake: make sure SDL2::SDL2 is always available

Anonymous Maarten 2 jaren geleden
bovenliggende
commit
6d1dfc8322
3 gewijzigde bestanden met toevoegingen van 23 en 5 verwijderingen
  1. 5 0
      CMakeLists.txt
  2. 7 5
      SDL2Config.cmake.in
  3. 11 0
      sdl2-config.cmake.in

+ 5 - 0
CMakeLists.txt

@@ -3194,3 +3194,8 @@ endif()
 
 ##### Fix Objective C builds #####
 set(CMAKE_OBJC_FLAGS "${CMAKE_OBJC_FLAGS} ${CMAKE_C_FLAGS}")
+
+# Make sure SDL2::SDL2 always exists
+if(TARGET SDL2::SDL2-static AND NOT TARGET SDL2::SDL2)
+  add_library(SDL2::SDL2 ALIAS SDL2-static)
+endif()

+ 7 - 5
SDL2Config.cmake.in

@@ -30,12 +30,14 @@ endif()
 check_required_components(SDL2)
 
 # Create SDL2::SDL2 alias for static-only builds
-if(NOT TARGET SDL2::SDL2 AND TARGET SDL2::SDL2-static)
+if(TARGET SDL2::SDL2-static AND NOT TARGET SDL2::SDL2)
   if(CMAKE_VERSION VERSION_LESS "3.18")
-    # Aliasing local targets is not supported on CMake < 3.18, so make it global.
-    set_target_properties(SDL2::SDL2-static PROPERTIES IMPORTED_GLOBAL TRUE)
+    # FIXME: Aliasing local targets is not supported on CMake < 3.18, so make it global.
+    add_library(SDL2::SDL2 INTERFACE IMPORTED)
+    set_target_properties(SDL2::SDL2 PROPERTIES INTERFACE_LINK_LIBRARIES "SDL2::SDL2-static")
+  else()
+    add_library(SDL2::SDL2 ALIAS SDL2::SDL2-static)
   endif()
-  add_library(SDL2::SDL2 ALIAS SDL2::SDL2-static)
 endif()
 
 # For compatibility with autotools sdl2-config.cmake, provide SDL2_* variables.
@@ -57,4 +59,4 @@ if(TARGET SDL2::SDL2main)
   list(INSERT SDL2_STATIC_LIBRARIES 0 SDL2::SDL2main)
 endif()
 
-set(SDL2TEST_LIBRARY SDL2::SDL2test)
+set(SDL2TEST_LIBRARY SDL2::SDL2test)

+ 11 - 0
sdl2-config.cmake.in

@@ -192,3 +192,14 @@ macro(check_required_components _NAME)
 endmacro()
 
 check_required_components(SDL2)
+
+# Create SDL2::SDL2 alias for static-only builds
+if(TARGET SDL2::SDL2-static AND NOT TARGET SDL2::SDL2)
+  if(CMAKE_VERSION VERSION_LESS "3.18")
+    # FIXME: Aliasing local targets is not supported on CMake < 3.18, so make it global.
+    add_library(SDL2::SDL2 INTERFACE IMPORTED)
+    set_target_properties(SDL2::SDL2 PROPERTIES INTERFACE_LINK_LIBRARIES "SDL2::SDL2-static")
+  else()
+    add_library(SDL2::SDL2 ALIAS SDL2::SDL2-static)
+  endif()
+endif()