From 18d9adde9649fee733ceb6f464fbc6f2b71daa6c Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Fri, 28 Oct 2005 17:46:44 -0400 Subject: ENH: changes from Eric Wing, bug 2249 --- Modules/FindSDL.cmake | 68 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 50 insertions(+), 18 deletions(-) (limited to 'Modules/FindSDL.cmake') diff --git a/Modules/FindSDL.cmake b/Modules/FindSDL.cmake index 9eef31c650..9ffcce3dfe 100644 --- a/Modules/FindSDL.cmake +++ b/Modules/FindSDL.cmake @@ -7,9 +7,7 @@ # Don't forget to include SDLmain.h and SDLmain.m your project for the # OS X framework based version. (Other versions link to -lSDLmain which # this module will try to find on your behalf.) Also for OS X, this -# module will automatically add the -framework Cocoa on your behalf -# though it is not necessarily visible in the UI. (Maybe somebody else -# can fix this.) +# module will automatically add the -framework Cocoa on your behalf. # # $SDLDIR is an environment variable that would # correspond to the ./configure --prefix=$SDLDIR @@ -33,18 +31,25 @@ # is #include "SDL.h", not . This is done for portability # reasons because not all systems place things in SDL/ (see FreeBSD). FIND_PATH(SDL_INCLUDE_DIR SDL.h + $ENV{SDLDIR}/include ~/Library/Frameworks/SDL.framework/Headers /Library/Frameworks/SDL.framework/Headers - $ENV{SDLDIR}/include + /usr/local/include/SDL /usr/include/SDL + /usr/local/include/SDL12 + /usr/local/include/SDL11 # FreeBSD ports /usr/include/SDL12 /usr/include/SDL11 - /usr/include - /usr/local/include/SDL - /usr/local/include/SDL12 - /usr/local/include/SDL11 /usr/local/include + /usr/include + /sw/include/SDL # Fink /sw/include + /opt/local/include/SDL # DarwinPorts + /opt/local/include + /opt/csw/include/SDL # Blastwave + /opt/csw/include + /opt/include/SDL + /opt/include ) # I'm not sure if I should do a special casing for Apple. It is # unlikely that other Unix systems will find the framework path. @@ -56,17 +61,38 @@ IF(${SDL_INCLUDE_DIR} MATCHES ".framework") # SDLmain.h and SDLmain.m directly into your project. # (Cocoa link moved to bottom of this script.) # SET (SDL_LIBRARY "-framework SDL -framework Cocoa" CACHE STRING "SDL framework for OSX") - SET(SDL_LIBRARY "-framework SDL" CACHE STRING "SDL framework for OSX") + # SET(SDL_LIBRARY "-framework SDL" CACHE STRING "SDL framework for OSX") + # Extract the path the framework resides in so we can use it for the -F flag + STRING(REGEX REPLACE "(.*)/.*\\.framework/.*" "\\1" SDL_FRAMEWORK_PATH_TEMP ${SDL_INCLUDE_DIR}) + IF("${SDL_FRAMEWORK_PATH_TEMP}" STREQUAL "/Library/Frameworks" + OR "${SDL_FRAMEWORK_PATH_TEMP}" STREQUAL "/System/Library/Frameworks" + ) + # String is in default search path, don't need to use -F + SET(SDL_LIBRARY_TEMP "-framework SDL") + ELSE("${SDL_FRAMEWORK_PATH_TEMP}" STREQUAL "/Library/Frameworks" + OR "${SDL_FRAMEWORK_PATH_TEMP}" STREQUAL "/System/Library/Frameworks" + ) + # String is not /Library/Frameworks, need to use -F + SET(SDL_LIBRARY_TEMP "-F${SDL_FRAMEWORK_PATH_TEMP} -framework SDL") + ENDIF("${SDL_FRAMEWORK_PATH_TEMP}" STREQUAL "/Library/Frameworks" + OR "${SDL_FRAMEWORK_PATH_TEMP}" STREQUAL "/System/Library/Frameworks" + ) + # Clear the temp variable so nobody can see it + SET(SDL_FRAMEWORK_PATH_TEMP "" CACHE INTERNAL "") + ELSE(${SDL_INCLUDE_DIR} MATCHES ".framework") # SDL-1.1 is the name used by FreeBSD ports... # don't confuse it for the version number. - FIND_LIBRARY(SDL_LIBRARY + FIND_LIBRARY(SDL_LIBRARY_TEMP NAMES SDL SDL-1.1 PATHS $ENV{SDLDIR}/lib - /usr/lib /usr/local/lib + /usr/lib /sw/lib + /opt/local/lib + /opt/csw/lib + /opt/lib ) # Non-OS X framework versions expect you to also dynamically link to # SDLmain. This is mainly for Windows and OS X. Other platforms @@ -76,9 +102,12 @@ ELSE(${SDL_INCLUDE_DIR} MATCHES ".framework") NAMES SDLmain SDLmain-1.1 PATHS $ENV{SDLDIR}/lib - /usr/lib /usr/local/lib + /usr/lib /sw/lib + /opt/local/lib + /opt/csw/lib + /opt/lib ) ENDIF(${SDL_INCLUDE_DIR} MATCHES ".framework") @@ -98,10 +127,10 @@ IF(MINGW) ENDIF(MINGW) SET(SDL_FOUND "NO") -IF(SDL_LIBRARY) +IF(SDL_LIBRARY_TEMP) # For SDLmain IF(SDLMAIN_LIBRARY) - SET(SDL_LIBRARY ${SDLMAIN_LIBRARY} ${SDL_LIBRARY}) + SET(SDL_LIBRARY_TEMP ${SDLMAIN_LIBRARY} ${SDL_LIBRARY_TEMP}) ENDIF(SDLMAIN_LIBRARY) # For OS X, SDL uses Cocoa as a backend so it must link to Cocoa. @@ -110,21 +139,24 @@ IF(SDL_LIBRARY) # with the CACHE STRING. Maybe somebody else knows how to fix this. # The problem is mainly cosmetic, and not a functional issue. IF(APPLE) - SET(SDL_LIBRARY ${SDL_LIBRARY} "-framework Cocoa") + SET(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} "-framework Cocoa") ENDIF(APPLE) # For threads, as mentioned Apple doesn't need this. # In fact, there seems to be a problem if Find the threads package # and try using this line, so I'm just skipping it entirely for OS X. IF(NOT APPLE) - SET(SDL_LIBRARY ${SDL_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) + SET(SDL_LIBRARY_TEMP ${SDL_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT}) ENDIF(NOT APPLE) # For MinGW library IF(MINGW) - SET(SDL_LIBRARY ${MINGW32_LIBRARY} ${SDL_LIBRARY}) + SET(SDL_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL_LIBRARY_TEMP}) ENDIF(MINGW) + # Set the final string here so the GUI reflects the final state. + SET(SDL_LIBRARY ${SDL_LIBRARY_TEMP} CACHE STRING "Where the SDL Library can be found") + SET(SDL_FOUND "YES") -ENDIF(SDL_LIBRARY) +ENDIF(SDL_LIBRARY_TEMP) -- cgit v1.2.1