|  | include("${CMAKE_CURRENT_LIST_DIR}/SDL2Targets.cmake") | 
|  |  | 
|  | # on static-only builds create an alias | 
|  | if(NOT TARGET SDL2::SDL2 AND TARGET SDL2::SDL2-static) | 
|  | 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) | 
|  | endif() | 
|  | add_library(SDL2::SDL2 ALIAS SDL2::SDL2-static) | 
|  | endif() | 
|  |  | 
|  | # provide ${SDL2_LIBRARIES}, ${SDL2_INCLUDE_DIRS} etc, like sdl2-config.cmake does, | 
|  | # for compatibility between SDL2 built with autotools and SDL2 built with CMake | 
|  |  | 
|  | # the following seems to work on Windows for both MSVC and MINGW+MSYS and with both SDL2Config/Target.cmake | 
|  | # from vcpkg and from building myself with cmake from latest git | 
|  | # AND on Linux when building SDL2 (tested current git) with CMake | 
|  |  | 
|  | # the headers are easy - but note that this adds both .../include/ and .../include/SDL2/ | 
|  | # while the SDL2_INCLUDE_DIRS of sdl2-config.cmake only add ...include/SDL2/ | 
|  | # But at least if building worked with sdl2-config.cmake it will also work with this. | 
|  | get_target_property(SDL2_INCLUDE_DIRS SDL2::SDL2 INTERFACE_INCLUDE_DIRECTORIES) | 
|  |  | 
|  | # get the paths to the files to link against (.lib or .dll.a on Windows, .so or .a on Unix, ...) for both SDL2 and SDL2main | 
|  |  | 
|  | # for the "normal"/release build they could be in lots of different properties.. | 
|  | set(relprops IMPORTED_IMPLIB_RELEASE IMPORTED_IMPLIB_NOCONFIG IMPORTED_IMPLIB IMPORTED_IMPLIB_MINSIZEREL IMPORTED_IMPLIB_RELWITHDEBINFO | 
|  | IMPORTED_LOCATION_RELEASE IMPORTED_LOCATION_NOCONFIG IMPORTED_LOCATION IMPORTED_LOCATION_MINSIZEREL IMPORTED_LOCATION_RELWITHDEBINFO) | 
|  |  | 
|  | # fewer possibilities for debug builds | 
|  | set(dbgprops IMPORTED_IMPLIB_DEBUG IMPORTED_LOCATION_DEBUG) | 
|  |  | 
|  | foreach(prop ${relprops}) | 
|  | get_target_property(sdl2implib SDL2::SDL2 ${prop}) | 
|  | if(sdl2implib) | 
|  | #message("set sdl2implib from ${prop}") | 
|  | break() | 
|  | endif() | 
|  | endforeach() | 
|  |  | 
|  | foreach(prop ${relprops}) | 
|  | get_target_property(sdl2mainimplib SDL2::SDL2main ${prop}) | 
|  | if(sdl2mainimplib) | 
|  | #message("set sdl2mainimplib from ${prop}") | 
|  | break() | 
|  | endif() | 
|  | endforeach() | 
|  |  | 
|  | foreach(prop ${dbgprops}) | 
|  | get_target_property(sdl2implibdbg SDL2::SDL2 ${prop}) | 
|  | if(sdl2implibdbg) | 
|  | #message("set sdl2implibdbg from ${prop}") | 
|  | break() | 
|  | endif() | 
|  | endforeach() | 
|  |  | 
|  | foreach(prop ${dbgprops}) | 
|  | get_target_property(sdl2mainimplibdbg SDL2::SDL2main ${prop}) | 
|  | if(sdl2mainimplibdbg) | 
|  | #message("set sdl2mainimplibdbg from ${prop}") | 
|  | break() | 
|  | endif() | 
|  | endforeach() | 
|  |  | 
|  | if( sdl2implib AND sdl2mainimplib AND sdl2implibdbg AND sdl2mainimplibdbg ) | 
|  | # we have both release and debug builds of SDL2 and SDL2main, so use this ugly | 
|  | # generator expression in SDL2_LIBRARIES to support both in MSVC, depending on build type configured there | 
|  | set(SDL2_LIBRARIES $<IF:$<CONFIG:Debug>,${sdl2mainimplibdbg},${sdl2mainimplib}>   $<IF:$<CONFIG:Debug>,${sdl2implibdbg},${sdl2implib}>) | 
|  | else() | 
|  | if( (NOT sdl2implib) AND sdl2implibdbg ) # if we only have a debug version of the lib | 
|  | set(sdl2implib ${sdl2implibdbg}) | 
|  | endif() | 
|  | if( (NOT sdl2mainimplib) AND sdl2mainimplibdbg ) # if we only have a debug version of the lib | 
|  | set(sdl2mainimplib ${sdl2mainimplibdbg}) | 
|  | endif() | 
|  |  | 
|  | if( sdl2implib AND sdl2mainimplib ) | 
|  | set(SDL2_LIBRARIES ${sdl2mainimplib}  ${sdl2implib}) | 
|  | elseif(WIN32 OR APPLE) # I think these platforms have a non-dummy SDLmain? | 
|  | message(FATAL_ERROR, "SDL2::SDL2 and/or SDL2::SDL2main don't seem to contain any kind of IMPORTED_IMPLIB* or IMPORTED_LOCATION*") | 
|  | elseif(sdl2implib) # on other platforms just libSDL2 will hopefully do? | 
|  | set(SDL2_LIBRARIES ${sdl2implib}) | 
|  | message(STATUS, "No SDL2main lib not found, I hope you don't need it..") | 
|  | else() | 
|  | message(FATAL_ERROR, "SDL2::SDL2 doesn't seem to contain any kind of lib to link against in IMPORTED_IMPLIB* or IMPORTED_LOCATION*") | 
|  | endif() | 
|  |  | 
|  | # TODO: should something like INTERFACE_LINK_LIBRARIES be appended? or wherever -mwindows and things like that | 
|  | #       might be defined (if they were defined by the CMake build at all; autotools has @SDL_RLD_FLAGS@ @SDL_LIBS@)? | 
|  | #       LINK_DEPENDS? LINK_FLAGS? | 
|  |  | 
|  | endif() | 
|  |  | 
|  | get_filename_component(SDL2_LIBDIR ${sdl2implib} PATH) | 
|  |  | 
|  | # NOTE: SDL2_LIBRARIES now looks like "c:/path/to/SDL2main.lib;c:/path/to/SDL2.lib" | 
|  | #       which is different to what it looks like when coming from sdl2-config.cmake | 
|  | #       (there it's more like "-L${SDL2_LIBDIR} -lSDL2main -lSDL2" - and also -lmingw32 and -mwindows) | 
|  | #       This seems to work with both MSVC and MinGW though, while the other only worked with MinGW | 
|  | #   On Linux it looks like "/tmp/sdl2inst/lib/libSDL2main.a;/tmp/sdl2inst/lib/libSDL2-2.0.so.0.14.1" which also seems to work | 
|  |  | 
|  | # the exec prefix is one level up from lib/ - TODO: really, always? at least on Linux there's /usr/lib/x86_64-bla-blub/libSDL2-asdf.so.0 .. | 
|  | get_filename_component(SDL2_EXEC_PREFIX ${SDL2_LIBDIR} PATH) | 
|  | set(SDL2_PREFIX ${SDL2_EXEC_PREFIX}) # TODO: could this be somewhere else? parent dir of include or sth? | 
|  |  | 
|  | unset(sdl2implib) | 
|  | unset(sdl2mainimplib) | 
|  | unset(sdl2implibdbg) | 
|  | unset(sdl2mainimplibdbg) | 
|  | unset(relprops) | 
|  | unset(dbgprops) |