cmake: use compatible interface properties to disallow linking to a different version of SDL
This commit is contained in:
1 parent
96a2a6b945
commit
6c495a92f0
4 files changed
+28
-2
No files matched your search
+10
-2
@@ -3278,6 +3278,8 @@ if(NOT WINDOWS_STORE AND NOT SDL2_DISABLE_SDL2MAIN)
|
||||
if (NOT ANDROID)
|
||||
set_target_properties(SDL2main PROPERTIES DEBUG_POSTFIX "${SDL_CMAKE_DEBUG_POSTFIX}")
|
||||
endif()
|
||||
set_property(TARGET SDL2main APPEND PROPERTY COMPATIBLE_INTERFACE_STRING "SDL_VERSION")
|
||||
set_property(TARGET SDL2main PROPERTY INTERFACE_SDL_VERSION "SDL2")
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
@@ -3365,8 +3367,10 @@ if(SDL_SHARED)
|
||||
set_target_properties(SDL2 PROPERTIES DEBUG_POSTFIX "${SDL_CMAKE_DEBUG_POSTFIX}")
|
||||
endif()
|
||||
# Use `Compatible Interface Properties` to allow consumers to enforce a shared/static library
|
||||
set_property(TARGET SDL2 PROPERTY INTERFACE_SDL2_SHARED TRUE)
|
||||
set_property(TARGET SDL2 APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SDL2_SHARED)
|
||||
set_property(TARGET SDL2 PROPERTY INTERFACE_SDL2_SHARED TRUE)
|
||||
set_property(TARGET SDL2 APPEND PROPERTY COMPATIBLE_INTERFACE_STRING "SDL_VERSION")
|
||||
set_property(TARGET SDL2 PROPERTY INTERFACE_SDL_VERSION "SDL2")
|
||||
endif()
|
||||
|
||||
if(SDL_STATIC)
|
||||
@@ -3393,8 +3397,10 @@ if(SDL_STATIC)
|
||||
set_target_properties(SDL2-static PROPERTIES DEBUG_POSTFIX "${SDL_CMAKE_DEBUG_POSTFIX}")
|
||||
endif()
|
||||
# Use `Compatible Interface Properties` to allow consumers to enforce a shared/static library
|
||||
set_property(TARGET SDL2-static PROPERTY INTERFACE_SDL2_SHARED FALSE)
|
||||
set_property(TARGET SDL2-static APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SDL2_SHARED)
|
||||
set_property(TARGET SDL2-static PROPERTY INTERFACE_SDL2_SHARED FALSE)
|
||||
set_property(TARGET SDL2-static APPEND PROPERTY COMPATIBLE_INTERFACE_STRING "SDL_VERSION")
|
||||
set_property(TARGET SDL2-static PROPERTY INTERFACE_SDL_VERSION "SDL2")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSDL_BUILD_MAJOR_VERSION=${SDL_MAJOR_VERSION}")
|
||||
@@ -3416,6 +3422,8 @@ if(SDL_TEST)
|
||||
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
||||
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/SDL2>")
|
||||
target_link_libraries(SDL2_test PRIVATE ${EXTRA_TEST_LIBS})
|
||||
set_property(TARGET SDL2_test APPEND PROPERTY COMPATIBLE_INTERFACE_STRING "SDL_VERSION")
|
||||
set_property(TARGET SDL2_test PROPERTY INTERFACE_SDL_VERSION "SDL2")
|
||||
endif()
|
||||
|
||||
##### Installation targets #####
|
||||
|
||||
Reference in new issue
Block a user