[CMake] Detecting Mac OS X Version
Mike Jackson
imikejackson at gmail.com
Wed Oct 31 16:06:18 EDT 2007
On Oct 31, 2007, at 1:26 PM, James Bigler wrote:
> Sean McBride wrote:
>> On 10/31/07 9:28 AM, Mike Jackson said:
>>> Would someone have an example of detecting the specific version
>>> of OS X that cmake is running on? I would like add values based
>>> on OS X version.
>>>
>>> IF (OS_X_VERSION matches "10.5")
>>> ......
>>> ENDIF (OS_X_VERSION matches "10.5")
>>>
>>> or something to that effect..
>> Mike,
>> I'm curious... in what situation does it matter which version of
>> the OS
>> is being run? Wouldn't it be better to check which SDK is being
>> used? Or the deployment version?
>
> Is there an easy way to determine the deployment version of the
> integrated X environment?
>
> OSX 10.5 changed to using Xorg instead of XFree86 and some of the
> paths have changed. As well there is some confusion with the
> linker when trying to link the X version of libGL. Here's what one
> of our developers said about it:
>
> "The main issue is linkpaths, OSX has two GL libraries that seem to
> conflict and with the default CMake settings it picks up the wrong
> library. Basically CMake does not write out the proper linking
> instructions. To fix this for Leopard, a hack is added that adds
> the OpenGL libraries to the LINK_FLAGS variables, which circumvents
> the parsing of filenames in -Lpath -llibname, the latter will cause
> OSX to find the OpenGL version in the frameworks. Currently CMake
> does not have an option to include paths directly, hence we hacked
> it to make it work."
>
> 738··IF·(APPLE_LEOPARD)
> 739····SET·(GL_LIBRARY·""·CACHE·INTERNAL·"OpenGL·Libs"·FORCE)
> 740····SET·(GL_LINK·"·/usr/X11R6/lib/libGL.dylib·/usr/X11R6/lib/
> libGLU.dylib·-
> framework·AGL"·CACHE·INTERNAL·"Link·options·for·OpenGL·libs"·FORCE)
> 741····SET·(X_LIBRARY·""·CACHE·INTERNAL·"OpenGL·Libs"·FORCE)
> 742····SET·(X_LINK·"·/usr/X11R6/lib/libX11.dylib·/usr/X11R6/lib/
> libXext.dylib·-
> framework·Carbon"·CACHE·INTERNAL·"Link·options·for·X11·libs"·FORCE)
> 743
> 744··ELSE·(APPLE_LEOPARD)
> 745····SET·(GL_LIBRARY·/usr/X11R6/lib/libGL.dylib·/usr/X11R6/lib/
> libGLU.dylib·"-framework·AGL"·CACHE·INTERNAL·"OpenGL·Libs")
> 746····SET·
> (GL_LINK·""·CACHE·INTERNAL·"Link·options·for·OpenGL·libs"·FORCE)
> 747····SET·(X_LINK·""·CACHE·INTERNAL·"Link·options·for·X·libs"·FORCE)
> 748····SET·(SCIRUN_INCLUDE_ADDITIONAL·${SCIRUN_INCLUDE_ADDITIONAL}·$
> {GL_INCLUDE})····
> 749··ENDIF·(APPLE_LEOPARD)
>
> 87··IF(APPLE_LEOPARD)
> 88····SET_TARGET_PROPERTIES(Core_Events·PROPERTIES·LINK_FLAGS··"$
> {GL_LINK}·${X_LINK}")
> 89··ENDIF(APPLE_LEOPARD)
>
> James
I was having the same problem that james was having with ParaView
2.6.1. Here is the solution that I came up with based from a web page;
#-- Put the following in ${ParaView_SOURCE_DIR}/CMake/
OSXLeopardX11OpenGL.cmake
IF ( OSX_LEOPARD_OPENGL_FIX )
IF (APPLE)
IF (VTK_USE_X)
#IF(CMAKE_COMPILER_IS_GNUCXX)
SET (CMAKE_EXE_LINKER_FLAGS "-Wl,-dylib_file,/System/
Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/
System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/
libGL.dylib" )
SET (CMAKE_SHARED_LINKER_FLAGS "-Wl,-dylib_file,/System/
Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/
System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/
libGL.dylib")
# ENDIF(CMAKE_COMPILER_IS_GNUCXX)
ENDIF (VTK_USE_X)
ENDIF (APPLE)
ENDIF ( OSX_LEOPARD_OPENGL_FIX )
In the Top Level CmakeLists.txt file insert a new option into the OS
X section:
OPTION(OSX_LEOPARD_OPENGL_FIX "Adds Linker arguments needed to
correctly select the X11 OpenGL Library" TRUE)
# ----------------- End OS X 10.5 X11 Patch
----------------------------------
http://wiki.finkproject.org/index.php/
Fink:Packaging:Preparing_for_10.5#OpenGL_Bug
Also, X11 move to the X.org code base for Leopard and there are LOTS
of problems so far. The XDarwin maintainer has just released a new
binary for Leopard users that starts to fix some of the problems.
http://lists.apple.com/archives/X11-users/2007/Oct/msg00123.html
http://lists.apple.com/archives/X11-users/2007/Oct/msg00201.html
So the reason I want to know is that this work-around may only be
needed for 10.5.0 or certain versions of X11. Certainly do not need
it for 10.4.
I guess I could look for a certain version of X11 on Leopard? But the
real thing is the linker issue so I think this issue may be here to
stay. Just a guess. I know nothing about any of this. I just need
ParaView to work on Leopard.
--
Mike Jackson Senior Research Engineer
Innovative Management & Technology Services
More information about the CMake
mailing list