Re: [cmake-developers] [PATCH 4/5] FindGLUT.cmake: Add imported targets and documentation

2014-06-24 Thread Brad King
On 06/10/2014 05:55 AM, Philipp Möller wrote:
 The APPLE part works, but definitely could be improved upon.
[snip]
 +if(APPLE)
 +  # Using the hardcoded paths is certainly not the best thing to
 +  # do, but it is done the include path already.
 +  set_target_properties(GLUT::GLUT PROPERTIES
 +IMPORTED_LOCATION /System/Library/Frameworks/GLUT.framework/GLUT)
 +  if(NOT TARGET GLUT::Cocoa)
 +add_library(GLUT::Cocoa UNKNOWN IMPORTED)
 +set_target_properties(GLUT::Cocoa PROPERTIES
 +  IMPORTED_LOCATION 
 /System/Library/Frameworks/Cocoa.framework/Cocoa)
 +  endif()
 +  set_target_properties(GLUT::GLUT PROPERTIES
 +INTERFACE_LINK_LIBRARIES GLUT::Cocoa)
 +else()

The path to the framework is hard-coded for the include path only
as a possible search location, not as a result.  The above code
hard-codes it as a result.  FindGLUT is one of the only modules
left that hard-codes -framework XYZ as a result on OS X instead
of allowing find_library to locate the framework.  That needs to
be fixed first, and then the framework path can be handled here
the same way as it is in FindOpenGL.

Thanks,
-Brad

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers


Re: [cmake-developers] [PATCH 4/5] FindGLUT.cmake: Add imported targets and documentation

2014-06-24 Thread Philipp Moeller
Brad King brad.k...@kitware.com writes:

 On 06/10/2014 05:55 AM, Philipp Möller wrote:
 The APPLE part works, but definitely could be improved upon.
 [snip]
 +if(APPLE)
 +  # Using the hardcoded paths is certainly not the best thing to
 +  # do, but it is done the include path already.
 +  set_target_properties(GLUT::GLUT PROPERTIES
 +IMPORTED_LOCATION /System/Library/Frameworks/GLUT.framework/GLUT)
 +  if(NOT TARGET GLUT::Cocoa)
 +add_library(GLUT::Cocoa UNKNOWN IMPORTED)
 +set_target_properties(GLUT::Cocoa PROPERTIES
 +  IMPORTED_LOCATION 
 /System/Library/Frameworks/Cocoa.framework/Cocoa)
 +  endif()
 +  set_target_properties(GLUT::GLUT PROPERTIES
 +INTERFACE_LINK_LIBRARIES GLUT::Cocoa)
 +else()

 The path to the framework is hard-coded for the include path only
 as a possible search location, not as a result.  The above code
 hard-codes it as a result.  FindGLUT is one of the only modules
 left that hard-codes -framework XYZ as a result on OS X instead
 of allowing find_library to locate the framework.  That needs to
 be fixed first, and then the framework path can be handled here
 the same way as it is in FindOpenGL.

I removed the -framework part and the code now checks if find_library
returned a path to a framework. I also removed the hard-coded path from
the find_library call so this now behaves like most other Find Modules. 

diff --git a/Modules/FindGLUT.cmake b/Modules/FindGLUT.cmake
index be7c0cd..9fe8aa0 100644
--- a/Modules/FindGLUT.cmake
+++ b/Modules/FindGLUT.cmake
@@ -2,7 +2,20 @@
 # FindGLUT
 # 
 #
-# try to find glut library and include files
+# try to find glut library and include files.
+#
+# IMPORTED Targets
+# 
+#
+# This module defines the :prop_tgt:`IMPORTED` targets:
+#
+# ``GLUT::GLUT``
+#  Defined if the system has GLUT.
+#
+# Result Variables
+# 
+#
+# This module sets the following variables:
 #
 # ::
 #
@@ -42,13 +55,21 @@ if (WIN32)
 else ()
 
   if (APPLE)
-# These values for Apple could probably do with improvement.
-find_path( GLUT_INCLUDE_DIR glut.h
-  /System/Library/Frameworks/GLUT.framework/Versions/A/Headers
-  ${OPENGL_LIBRARY_DIR}
-  )
-set(GLUT_glut_LIBRARY -framework GLUT CACHE STRING GLUT library for OSX)
-set(GLUT_cocoa_LIBRARY -framework Cocoa CACHE STRING Cocoa framework for OSX)
+find_path(GLUT_INCLUDE_DIR glut.h ${OPENGL_LIBRARY_DIR})
+find_library(GLUT_glut_LIBRARY GLUT DOC GLUT library for OSX)
+find_library(GLUT_cocoa_LIBRARY Cocoa DOC Cocoa framework for OSX)
+
+if(GLUT_cocoa_LIBRARY AND NOT TARGET GLUT::Cocoa)
+  add_library(GLUT::Cocoa UNKNOWN IMPORTED)
+  # Cocoa should always be a Framework, but we check to make sure.
+  if(GLUT_cocoa_LIBRARY MATCHES /([^/]+)\\.framework$)
+set_target_properties(GLUT::Cocoa PROPERTIES
+  IMPORTED_LOCATION ${GLUT_cocoa_LIBRARY}/${CMAKE_MATCH_1})
+  else()
+set_target_properties(GLUT::Cocoa PROPERTIES
+  IMPORTED_LOCATION ${GLUT_cocoa_LIBRARY})
+  endif()
+endif()
   else ()
 
 if (BEOS)
@@ -66,6 +87,18 @@ else ()
 /usr/openwin/lib
 )
 
+  if(GLUT_Xi_LIBRARY AND NOT TARGET GLUT::Xi)
+add_library(GLUT::Xi UNKNOWN IMPORTED)
+set_target_properties(GLUT::Xi PROPERTIES
+  IMPORTED_LOCATION ${GLUT_Xi_LIBRARY})
+  endif()
+
+  if(GLUT_Xmu_LIBRARY AND NOT TARGET GLUT::Xmu)
+add_library(GLUT::Xmu UNKNOWN IMPORTED)
+set_target_properties(GLUT::Xmu PROPERTIES
+  IMPORTED_LOCATION ${GLUT_Xmu_LIBRARY})
+  endif()
+
 endif ()
 
 find_path( GLUT_INCLUDE_DIR GL/glut.h
@@ -102,6 +135,34 @@ if (GLUT_FOUND)
 ${GLUT_cocoa_LIBRARY}
 )
 
+  if(NOT TARGET GLUT::GLUT)
+add_library(GLUT::GLUT UNKNOWN IMPORTED)
+set_target_properties(GLUT::GLUT PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES ${GLUT_INCLUDE_DIR})
+if(GLUT_glut_LIBRARY MATCHES /([^/]+)\\.framework$)
+  set_target_properties(GLUT::GLUT PROPERTIES
+IMPORTED_LOCATION ${GLUT_glut_LIBRARY}/${CMAKE_MATCH_1})
+else()
+  set_target_properties(GLUT::GLUT PROPERTIES
+IMPORTED_LOCATION ${GLUT_glut_LIBRARY})
+endif()
+
+if(TARGET GLUT::Xmu)
+  set_property(TARGET GLUT::GLUT APPEND 
+PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xmu)
+endif()
+
+if(TARGET GLUT::Xi)
+  set_property(TARGET GLUT::GLUT APPEND 
+PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xi)
+endif()
+
+if(TARGET GLUT::Cocoa)
+  set_property(TARGET GLUT::GLUT APPEND 
+PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Cocoa)
+endif()
+  endif()
+
   #The following deprecated settings are for backwards compatibility with CMake1.4
   set (GLUT_LIBRARY ${GLUT_LIBRARIES})
   set (GLUT_INCLUDE_PATH ${GLUT_INCLUDE_DIR})
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 

[cmake-developers] [PATCH 4/5] FindGLUT.cmake: Add imported targets and documentation

2014-06-20 Thread Philipp Möller

The APPLE part works, but definitely could be improved upon.
---
 Modules/FindGLUT.cmake | 58 +-
 1 file changed, 57 insertions(+), 1 deletion(-)

diff --git a/Modules/FindGLUT.cmake b/Modules/FindGLUT.cmake
index be7c0cd..6098108 100644
--- a/Modules/FindGLUT.cmake
+++ b/Modules/FindGLUT.cmake
@@ -2,7 +2,20 @@
 # FindGLUT
 # 
 #
-# try to find glut library and include files
+# try to find glut library and include files.
+#
+# IMPORTED Targets
+# 
+#
+# This module defines the :prop_tgt:`IMPORTED` targets:
+#
+# ``GLUT::GLUT``
+#  Defined if the system has GLUT.
+#
+# Result Variables
+# 
+#
+# This module sets the following variables:
 #
 # ::
 #
@@ -66,6 +79,18 @@ else ()
 /usr/openwin/lib
 )
 
+  if(GLUT_Xi_LIBRARY AND NOT TARGET GLUT::Xi)
+add_library(GLUT::Xi UNKNOWN IMPORTED)
+set_target_properties(GLUT::Xi PROPERTIES
+  IMPORTED_LOCATION ${GLUT_Xi_LIBRARY})
+  endif()
+
+  if(GLUT_Xmu_LIBRARY AND NOT TARGET GLUT::Xmu)
+add_library(GLUT::Xmu UNKNOWN IMPORTED)
+set_target_properties(GLUT::Xmu PROPERTIES
+  IMPORTED_LOCATION ${GLUT_Xmu_LIBRARY})
+  endif()
+
 endif ()
 
 find_path( GLUT_INCLUDE_DIR GL/glut.h
@@ -102,6 +127,37 @@ if (GLUT_FOUND)
 ${GLUT_cocoa_LIBRARY}
 )
 
+  if(NOT TARGET GLUT::GLUT)
+add_library(GLUT::GLUT UNKNOWN IMPORTED)
+set_target_properties(GLUT::GLUT PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES ${GLUT_INCLUDE_DIR})
+if(APPLE)
+  # Using the hardcoded paths is certainly not the best thing to
+  # do, but it is done the include path already.
+  set_target_properties(GLUT::GLUT PROPERTIES
+IMPORTED_LOCATION /System/Library/Frameworks/GLUT.framework/GLUT)
+  if(NOT TARGET GLUT::Cocoa)
+add_library(GLUT::Cocoa UNKNOWN IMPORTED)
+set_target_properties(GLUT::Cocoa PROPERTIES
+  IMPORTED_LOCATION /System/Library/Frameworks/Cocoa.framework/Cocoa)
+  endif()
+  set_target_properties(GLUT::GLUT PROPERTIES
+INTERFACE_LINK_LIBRARIES GLUT::Cocoa)
+else()
+  set_target_properties(GLUT::GLUT PROPERTIES
+IMPORTED_LOCATION ${GLUT_glut_LIBRARY})
+endif()
+
+if(TARGET GLUT::Xmu)
+  set_property(TARGET GLUT::GLUT APPEND 
+PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xmu)
+endif()
+if(TARGET GLUT::Xi)
+  set_property(TARGET GLUT::GLUT APPEND 
+PROPERTY INTERFACE_LINK_LIBRARIES GLUT::Xi)
+endif()
+  endif()
+
   #The following deprecated settings are for backwards compatibility with CMake1.4
   set (GLUT_LIBRARY ${GLUT_LIBRARIES})
   set (GLUT_INCLUDE_PATH ${GLUT_INCLUDE_DIR})
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers