Skip to content

Commit

Permalink
cmake: make sure SDL2::SDL2 is always available
Browse files Browse the repository at this point in the history
  • Loading branch information
madebr authored and slouken committed Jun 15, 2022
1 parent 69df26a commit 6d1dfc8
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 5 deletions.
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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()
12 changes: 7 additions & 5 deletions SDL2Config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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 changes: 11 additions & 0 deletions sdl2-config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -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()

0 comments on commit 6d1dfc8

Please sign in to comment.