From d943f22c93b776aa9f89b60c6d959169503bee70 Mon Sep 17 00:00:00 2001
From: Laurent Gomila <laurent.gom@gmail.com>
Date: Wed, 14 Dec 2011 19:54:44 +0100
Subject: [PATCH] FindSFML.cmake is now installed to the same directory as
 other SFML files, not to <cmake install>/Modules anymore (admin rights
 problems)

---
 CMakeLists.txt | 224 ++++++++++++++++++++++++-------------------------
 1 file changed, 112 insertions(+), 112 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4ac5b128..f428bc66 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,14 +31,14 @@ set(BUILD_EXAMPLES FALSE CACHE BOOL "TRUE to build the SFML examples, FALSE to i
 set(BUILD_DOC FALSE CACHE BOOL "TRUE to generate the API documentation, FALSE to ignore it")
 
 # Mac OS X specific options
-if(MACOSX)
-    # add an option to build frameworks instead of dylibs (release only)
-    set(BUILD_FRAMEWORKS FALSE CACHE BOOL "TRUE to build SFML as frameworks libraries (release only), FALSE to build according to BUILD_SHARED_LIBS")
-    
-    # add an option to let the user specify a custom directory for frameworks installation (SFML, sndfile, ...)
-    set(CMAKE_INSTALL_FRAMEWORK_PREFIX "/Library/Frameworks" CACHE STRING "Frameworks installation directory")
-
-    # add an option to automatically install Xcode 4 templates
+if(MACOSX)
+    # add an option to build frameworks instead of dylibs (release only)
+    set(BUILD_FRAMEWORKS FALSE CACHE BOOL "TRUE to build SFML as frameworks libraries (release only), FALSE to build according to BUILD_SHARED_LIBS")
+    
+    # add an option to let the user specify a custom directory for frameworks installation (SFML, sndfile, ...)
+    set(CMAKE_INSTALL_FRAMEWORK_PREFIX "/Library/Frameworks" CACHE STRING "Frameworks installation directory")
+
+    # add an option to automatically install Xcode 4 templates
     set(INSTALL_XCODE4_TEMPLATES FALSE CACHE BOOL "TRUE to automatically install the Xcode 4 templates, FALSE to do nothing about it")
 endif()
 
@@ -71,59 +71,59 @@ endif()
 # disable the rpath stuff
 set(CMAKE_SKIP_BUILD_RPATH TRUE)
 
-# Setup Mac OS X stuff
-if(MACOSX)
-    # multi arch support - by default : i386 and x86_64
-    if(NOT CMAKE_OSX_ARCHITECTURES)
-        set(CMAKE_OSX_ARCHITECTURES "i386;x86_64" CACHE STRING "Build architectures for OSX" FORCE)
+# Setup Mac OS X stuff
+if(MACOSX)
+    # multi arch support - by default : i386 and x86_64
+    if(NOT CMAKE_OSX_ARCHITECTURES)
+        set(CMAKE_OSX_ARCHITECTURES "i386;x86_64" CACHE STRING "Build architectures for OSX" FORCE)
     endif()
 
-    # multi SDK support - by default we choose the older SDK available starting by 10.5 SDK
-    if(NOT OSX_CONFIG_HAS_BEEN_RUN_BEFORE)
-        if(EXISTS /Developer/SDKs/MacOSX10.5.sdk)
-            # target 10.5 system
-            set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.5.sdk"
-                CACHE STRING "The product will be built against the headers and libraries located inside the indicated SDK. Set to empty string for default value."
-                FORCE)
-            set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" 
-                CACHE STRING "Minimum OS X version to target for deployment (at runtime); ewer APIs weak linked."
-                FORCE)
-        elseif(EXISTS /Developer/SDKs/MacOSX10.6.sdk)
-            # target 10.6 system
-            set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.6.sdk"
-                CACHE STRING "The product will be built against the headers and libraries located inside the indicated SDK. Set to empty string for default value."
-                FORCE)
-            set(CMAKE_OSX_DEPLOYMENT_TARGET "10.6" 
-                CACHE STRING "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked."
-                FORCE)
-        else()
-            # use default SDK.
-        endif()
-
-        # note : we use OSX_CONFIG_HAS_BEEN_RUN_BEFORE to be able to let the user set his/her custom settings
-        #        so we don't always have to FORCE the value of CMAKE_OSX_DEPLOYMENT_TARGET and CMAKE_OSX_SYSROOT
-        set(OSX_CONFIG_HAS_BEEN_RUN_BEFORE TRUE
-            CACHE BOOL "Don't edit this value; you should instead empty your cache."
-            FORCE)
-        mark_as_advanced(OSX_CONFIG_HAS_BEEN_RUN_BEFORE)
-    endif()
-
-    # BUILD_FRAMEWORKS needs two things :
-    # first, it's available only for release
-    #    (because cmake currently doesn't allow specifying a custom framework name so XXX-d is not possible)
-    # secondly, it works only with BUILD_SHARED_LIBS enabled
-    if(BUILD_FRAMEWORKS)
-        # requirement #1
-        if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
-            message(WARNING "CMAKE_BUILD_TYPE should be \"Release\" when BUILD_FRAMEWORKS is TRUE")
-            return()
-        endif()
-
-        # requirement #2
-        if(NOT BUILD_SHARED_LIBS)
-            message(WARNING "BUILD_SHARED_LIBS should be TRUE when BUILD_FRAMEWORKS is TRUE")
-            return()
-        endif()
+    # multi SDK support - by default we choose the older SDK available starting by 10.5 SDK
+    if(NOT OSX_CONFIG_HAS_BEEN_RUN_BEFORE)
+        if(EXISTS /Developer/SDKs/MacOSX10.5.sdk)
+            # target 10.5 system
+            set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.5.sdk"
+                CACHE STRING "The product will be built against the headers and libraries located inside the indicated SDK. Set to empty string for default value."
+                FORCE)
+            set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" 
+                CACHE STRING "Minimum OS X version to target for deployment (at runtime); ewer APIs weak linked."
+                FORCE)
+        elseif(EXISTS /Developer/SDKs/MacOSX10.6.sdk)
+            # target 10.6 system
+            set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.6.sdk"
+                CACHE STRING "The product will be built against the headers and libraries located inside the indicated SDK. Set to empty string for default value."
+                FORCE)
+            set(CMAKE_OSX_DEPLOYMENT_TARGET "10.6" 
+                CACHE STRING "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked."
+                FORCE)
+        else()
+            # use default SDK.
+        endif()
+
+        # note : we use OSX_CONFIG_HAS_BEEN_RUN_BEFORE to be able to let the user set his/her custom settings
+        #        so we don't always have to FORCE the value of CMAKE_OSX_DEPLOYMENT_TARGET and CMAKE_OSX_SYSROOT
+        set(OSX_CONFIG_HAS_BEEN_RUN_BEFORE TRUE
+            CACHE BOOL "Don't edit this value; you should instead empty your cache."
+            FORCE)
+        mark_as_advanced(OSX_CONFIG_HAS_BEEN_RUN_BEFORE)
+    endif()
+
+    # BUILD_FRAMEWORKS needs two things :
+    # first, it's available only for release
+    #    (because cmake currently doesn't allow specifying a custom framework name so XXX-d is not possible)
+    # secondly, it works only with BUILD_SHARED_LIBS enabled
+    if(BUILD_FRAMEWORKS)
+        # requirement #1
+        if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
+            message(WARNING "CMAKE_BUILD_TYPE should be \"Release\" when BUILD_FRAMEWORKS is TRUE")
+            return()
+        endif()
+
+        # requirement #2
+        if(NOT BUILD_SHARED_LIBS)
+            message(WARNING "BUILD_SHARED_LIBS should be TRUE when BUILD_FRAMEWORKS is TRUE")
+            return()
+        endif()
     endif()
 endif()
 
@@ -136,59 +136,59 @@ if(BUILD_DOC)
     add_subdirectory(doc)
 endif()
 
-# setup the install rules
+# setup the install rules
 if(NOT BUILD_FRAMEWORKS)
     install(DIRECTORY include
             DESTINATION .
             COMPONENT devel
-            PATTERN ".svn" EXCLUDE)
-else()
-    # find only "root" headers
-    file(GLOB SFML_HEADERS RELATIVE ${PROJECT_SOURCE_DIR} "include/SFML/*")
-
-    # in fact we have to fool cmake to copy all the headers in subdirectories
-    # to do that we have to add the "root" headers to the PUBLIC_HEADER
-    # then we can run a post script to copy the remaining headers
-
-    # we need a dummy file in order to compile the framework
-    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
-                       COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
-
-    set(SFML_SOURCES ${SFML_HEADERS})
-    list(APPEND SFML_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
-
-    # create SFML.framework
-    add_library(SFML ${SFML_SOURCES})
-
-    # edit target properties
-    set_target_properties(SFML PROPERTIES 
-                          FRAMEWORK TRUE
-                          FRAMEWORK_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
-                          MACOSX_FRAMEWORK_IDENTIFIER org.sfml-dev.SFML
-                          MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
-                          MACOSX_FRAMEWORK_BUNDLE_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
-                          PUBLIC_HEADER "${SFML_HEADERS}")
-
-    # add the remaining headers
-    add_custom_command(TARGET SFML 
-                       POST_BUILD
-                       COMMAND cp -r ${PROJECT_SOURCE_DIR}/include/SFML/* SFML.framework/Versions/2.0.0/Headers)
-
-    # adapt install directory to allow distributing dylibs/frameworks in user’s frameworks/application bundle
-    # NOTE : it's not required to link agains SFML.framework
-    set_target_properties(SFML PROPERTIES 
-                          BUILD_WITH_INSTALL_RPATH 1 
-                          INSTALL_NAME_DIR "@executable_path/../Frameworks")
-
-    # install rule
-    install(TARGETS SFML
-            FRAMEWORK DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX}
-            COMPONENT devel)
-endif()
-
-install(FILES cmake/Modules/FindSFML.cmake DESTINATION ${CMAKE_ROOT}/Modules)
-install(FILES license.txt DESTINATION ${INSTALL_MISC_DIR})
-
+            PATTERN ".svn" EXCLUDE)
+else()
+    # find only "root" headers
+    file(GLOB SFML_HEADERS RELATIVE ${PROJECT_SOURCE_DIR} "include/SFML/*")
+
+    # in fact we have to fool cmake to copy all the headers in subdirectories
+    # to do that we have to add the "root" headers to the PUBLIC_HEADER
+    # then we can run a post script to copy the remaining headers
+
+    # we need a dummy file in order to compile the framework
+    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp
+                       COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
+
+    set(SFML_SOURCES ${SFML_HEADERS})
+    list(APPEND SFML_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
+
+    # create SFML.framework
+    add_library(SFML ${SFML_SOURCES})
+
+    # edit target properties
+    set_target_properties(SFML PROPERTIES 
+                          FRAMEWORK TRUE
+                          FRAMEWORK_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
+                          MACOSX_FRAMEWORK_IDENTIFIER org.sfml-dev.SFML
+                          MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
+                          MACOSX_FRAMEWORK_BUNDLE_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
+                          PUBLIC_HEADER "${SFML_HEADERS}")
+
+    # add the remaining headers
+    add_custom_command(TARGET SFML 
+                       POST_BUILD
+                       COMMAND cp -r ${PROJECT_SOURCE_DIR}/include/SFML/* SFML.framework/Versions/2.0.0/Headers)
+
+    # adapt install directory to allow distributing dylibs/frameworks in user’s frameworks/application bundle
+    # NOTE : it's not required to link agains SFML.framework
+    set_target_properties(SFML PROPERTIES 
+                          BUILD_WITH_INSTALL_RPATH 1 
+                          INSTALL_NAME_DIR "@executable_path/../Frameworks")
+
+    # install rule
+    install(TARGETS SFML
+            FRAMEWORK DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX}
+            COMPONENT devel)
+endif()
+
+install(FILES cmake/Modules/FindSFML.cmake DESTINATION ${INSTALL_MISC_DIR}/cmake/Modules)
+install(FILES license.txt DESTINATION ${INSTALL_MISC_DIR})
+
 if(WINDOWS)
     if(ARCH_32BITS)
         install(FILES extlibs/bin/x86/libsndfile-1.dll DESTINATION bin)
@@ -198,9 +198,9 @@ if(WINDOWS)
         install(FILES extlibs/bin/x64/openal32.dll DESTINATION bin)
     endif()
 elseif(MACOSX)
-    install(DIRECTORY extlibs/libs-osx/Frameworks/sndfile.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
-
-    if(INSTALL_XCODE4_TEMPLATES)
-        install(DIRECTORY xcode/templates/SFML DESTINATION $ENV{HOME}/Library/Developer/Xcode/Templates)
+    install(DIRECTORY extlibs/libs-osx/Frameworks/sndfile.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
+
+    if(INSTALL_XCODE4_TEMPLATES)
+        install(DIRECTORY xcode/templates/SFML DESTINATION $ENV{HOME}/Library/Developer/Xcode/Templates)
     endif()
 endif()