Imported Upstream version 2.8.11.2
[platform/upstream/cmake.git] / Modules / FindOpenGL.cmake
1 # - Try to find OpenGL
2 # Once done this will define
3 #
4 #  OPENGL_FOUND        - system has OpenGL
5 #  OPENGL_XMESA_FOUND  - system has XMESA
6 #  OPENGL_GLU_FOUND    - system has GLU
7 #  OPENGL_INCLUDE_DIR  - the GL include directory
8 #  OPENGL_LIBRARIES    - Link these to use OpenGL and GLU
9 #
10 # If you want to use just GL you can use these values
11 #  OPENGL_gl_LIBRARY   - Path to OpenGL Library
12 #  OPENGL_glu_LIBRARY  - Path to GLU Library
13 #
14 # On OSX default to using the framework version of opengl
15 # People will have to change the cache values of OPENGL_glu_LIBRARY
16 # and OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX
17
18 #=============================================================================
19 # Copyright 2001-2009 Kitware, Inc.
20 #
21 # Distributed under the OSI-approved BSD License (the "License");
22 # see accompanying file Copyright.txt for details.
23 #
24 # This software is distributed WITHOUT ANY WARRANTY; without even the
25 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26 # See the License for more information.
27 #=============================================================================
28 # (To distribute this file outside of CMake, substitute the full
29 #  License text for the above reference.)
30
31 if (WIN32)
32   if (CYGWIN)
33
34     find_path(OPENGL_INCLUDE_DIR GL/gl.h )
35
36     find_library(OPENGL_gl_LIBRARY opengl32 )
37
38     find_library(OPENGL_glu_LIBRARY glu32 )
39
40   else ()
41
42     if(BORLAND)
43       set (OPENGL_gl_LIBRARY import32 CACHE STRING "OpenGL library for win32")
44       set (OPENGL_glu_LIBRARY import32 CACHE STRING "GLU library for win32")
45     else()
46       set (OPENGL_gl_LIBRARY opengl32 CACHE STRING "OpenGL library for win32")
47       set (OPENGL_glu_LIBRARY glu32 CACHE STRING "GLU library for win32")
48     endif()
49
50   endif ()
51
52 else ()
53
54   if (APPLE)
55
56     find_library(OPENGL_gl_LIBRARY OpenGL DOC "OpenGL lib for OSX")
57     find_library(OPENGL_glu_LIBRARY AGL DOC "AGL lib for OSX")
58     find_path(OPENGL_INCLUDE_DIR OpenGL/gl.h DOC "Include for OpenGL on OSX")
59
60   else()
61     if (CMAKE_SYSTEM_NAME MATCHES "HP-UX")
62       # Handle HP-UX cases where we only want to find OpenGL in either hpux64
63       # or hpux32 depending on if we're doing a 64 bit build.
64       if(CMAKE_SIZEOF_VOID_P EQUAL 4)
65         set(_OPENGL_LIB_PATH
66           /opt/graphics/OpenGL/lib/hpux32/)
67       else()
68         set(_OPENGL_LIB_PATH
69           /opt/graphics/OpenGL/lib/hpux64/
70           /opt/graphics/OpenGL/lib/pa20_64)
71       endif()
72     elseif(CMAKE_SYSTEM_NAME STREQUAL Haiku)
73       set(_OPENGL_LIB_PATH
74         /boot/develop/lib/x86)
75       set(_OPENGL_INCLUDE_PATH
76         /boot/develop/headers/os/opengl)
77     endif()
78
79     # The first line below is to make sure that the proper headers
80     # are used on a Linux machine with the NVidia drivers installed.
81     # They replace Mesa with NVidia's own library but normally do not
82     # install headers and that causes the linking to
83     # fail since the compiler finds the Mesa headers but NVidia's library.
84     # Make sure the NVIDIA directory comes BEFORE the others.
85     #  - Atanas Georgiev <atanas@cs.columbia.edu>
86
87     find_path(OPENGL_INCLUDE_DIR GL/gl.h
88       /usr/share/doc/NVIDIA_GLX-1.0/include
89       /usr/openwin/share/include
90       /opt/graphics/OpenGL/include /usr/X11R6/include
91       ${_OPENGL_INCLUDE_PATH}
92     )
93
94     find_path(OPENGL_xmesa_INCLUDE_DIR GL/xmesa.h
95       /usr/share/doc/NVIDIA_GLX-1.0/include
96       /usr/openwin/share/include
97       /opt/graphics/OpenGL/include /usr/X11R6/include
98     )
99
100     find_library(OPENGL_gl_LIBRARY
101       NAMES GL MesaGL
102       PATHS /opt/graphics/OpenGL/lib
103             /usr/openwin/lib
104             /usr/shlib /usr/X11R6/lib
105             ${_OPENGL_LIB_PATH}
106     )
107
108     unset(_OPENGL_INCLUDE_PATH)
109     unset(_OPENGL_LIB_PATH)
110
111     # On Unix OpenGL most certainly always requires X11.
112     # Feel free to tighten up these conditions if you don't
113     # think this is always true.
114     # It's not true on OSX.
115
116     if (OPENGL_gl_LIBRARY)
117       if(NOT X11_FOUND)
118         include(${CMAKE_CURRENT_LIST_DIR}/FindX11.cmake)
119       endif()
120       if (X11_FOUND)
121         if (NOT APPLE)
122           set (OPENGL_LIBRARIES ${X11_LIBRARIES})
123         endif ()
124       endif ()
125     endif ()
126
127     find_library(OPENGL_glu_LIBRARY
128       NAMES GLU MesaGLU
129       PATHS ${OPENGL_gl_LIBRARY}
130             /opt/graphics/OpenGL/lib
131             /usr/openwin/lib
132             /usr/shlib /usr/X11R6/lib
133     )
134
135   endif()
136 endif ()
137
138 if(OPENGL_gl_LIBRARY)
139
140     if(OPENGL_xmesa_INCLUDE_DIR)
141       set( OPENGL_XMESA_FOUND "YES" )
142     else()
143       set( OPENGL_XMESA_FOUND "NO" )
144     endif()
145
146     set( OPENGL_LIBRARIES  ${OPENGL_gl_LIBRARY} ${OPENGL_LIBRARIES})
147     if(OPENGL_glu_LIBRARY)
148       set( OPENGL_GLU_FOUND "YES" )
149       set( OPENGL_LIBRARIES ${OPENGL_glu_LIBRARY} ${OPENGL_LIBRARIES} )
150     else()
151       set( OPENGL_GLU_FOUND "NO" )
152     endif()
153
154     # This deprecated setting is for backward compatibility with CMake1.4
155     set (OPENGL_LIBRARY ${OPENGL_LIBRARIES})
156
157 endif()
158
159 # This deprecated setting is for backward compatibility with CMake1.4
160 set(OPENGL_INCLUDE_PATH ${OPENGL_INCLUDE_DIR})
161
162 # handle the QUIETLY and REQUIRED arguments and set OPENGL_FOUND to TRUE if
163 # all listed variables are TRUE
164 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
165 FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenGL DEFAULT_MSG OPENGL_gl_LIBRARY)
166
167 mark_as_advanced(
168   OPENGL_INCLUDE_DIR
169   OPENGL_xmesa_INCLUDE_DIR
170   OPENGL_glu_LIBRARY
171   OPENGL_gl_LIBRARY
172 )