From 8ea97e9b31b661e570421ec259b86bf956589628 Mon Sep 17 00:00:00 2001 From: "Amine B. Hassouna" Date: Sun, 10 Feb 2019 21:38:14 +0100 Subject: [PATCH] Update cmake/sdl2 --- cmake/sdl2/FindSDL2.cmake | 52 ++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/cmake/sdl2/FindSDL2.cmake b/cmake/sdl2/FindSDL2.cmake index 42c4ffb..c20d809 100644 --- a/cmake/sdl2/FindSDL2.cmake +++ b/cmake/sdl2/FindSDL2.cmake @@ -59,6 +59,7 @@ This module will set the following variables in your project: SDL2_LIBRARIES, the name of the library to link against SDL2_INCLUDE_DIRS, where to find SDL.h SDL2_FOUND, if false, do not try to link to SDL2 + SDL2MAIN_FOUND, if false, do not try to link to SDL2main SDL2_VERSION_STRING, human-readable string containing the version of SDL2 @@ -310,9 +311,15 @@ endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 - REQUIRED_VARS SDL2_LIBRARIES SDL2_INCLUDE_DIRS + REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR VERSION_VAR SDL2_VERSION_STRING) +if(SDL2MAIN_LIBRARY) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2main + REQUIRED_VARS SDL2MAIN_LIBRARY SDL2_INCLUDE_DIR + VERSION_VAR SDL2_VERSION_STRING) +endif() + mark_as_advanced(SDL2_PATH SDL2_NO_DEFAULT_PATH @@ -343,16 +350,6 @@ if(SDL2_FOUND) set_property(TARGET SDL2::Core APPEND PROPERTY INTERFACE_LINK_LIBRARIES Threads::Threads) endif() - - # MinGW needs an additional link flag, -mwindows - # and link to mingw32 - if(MINGW) - set_property(TARGET SDL2::Core APPEND PROPERTY - INTERFACE_LINK_LIBRARIES mingw32) - set_property(TARGET SDL2::Core APPEND PROPERTY - INTERFACE_LINK_OPTIONS "-mwindows") - endif() - endif() # SDL2::Main target @@ -360,20 +357,31 @@ if(SDL2_FOUND) # For more details, please see above. if(NOT SDL2_BUILDING_LIBRARY AND NOT TARGET SDL2::Main) - if(SDL2_INCLUDE_DIR MATCHES ".framework" ) + if(SDL2_INCLUDE_DIR MATCHES ".framework" OR NOT SDL2MAIN_LIBRARY) add_library(SDL2::Main INTERFACE IMPORTED) - elseif(SDL2MAIN_LIBRARY) - add_library(SDL2::Main UNKNOWN IMPORTED) - set_property(TARGET SDL2::Main PROPERTY - IMPORTED_LOCATION "${SDL2MAIN_LIBRARY}") - elseif(UNIX) - add_library(SDL2::Main INTERFACE IMPORTED) - endif() - - # Add SDL2::Core as a dependency - if(TARGET SDL2::Main) set_property(TARGET SDL2::Main PROPERTY INTERFACE_LINK_LIBRARIES SDL2::Core) + elseif(SDL2MAIN_LIBRARY) + # MinGW requires that the mingw32 library is specified before the + # libSDL2main.a static library when linking. + # The SDL2::MainInternal target is used internally to make sure that + # CMake respects this condition. + add_library(SDL2::MainInternal UNKNOWN IMPORTED) + set_property(TARGET SDL2::MainInternal PROPERTY + IMPORTED_LOCATION "${SDL2MAIN_LIBRARY}") + set_property(TARGET SDL2::MainInternal PROPERTY + INTERFACE_LINK_LIBRARIES SDL2::Core) + + add_library(SDL2::Main INTERFACE IMPORTED) + + if(MINGW) + # MinGW needs an additional link flag '-mwindows' and link to mingw32 + set_property(TARGET SDL2::Main PROPERTY + INTERFACE_LINK_LIBRARIES "mingw32" "-mwindows") + endif() + + set_property(TARGET SDL2::Main APPEND PROPERTY + INTERFACE_LINK_LIBRARIES SDL2::MainInternal) endif() endif()