ENH: move EstimateFormatLength to kwsys
[cmake.git] / Modules / FindOpenGL.cmake
blob5a278d86e1ea52ec33ae059e7efc7bd91902e3a9
1 # Try to find OpenGL
2 # Once done this will define
4 # OPENGL_FOUND        - system has OpenGL and it should be used
5 # OPENGL_XMESA_FOUND  - system has XMESA, and it should be used.
6 # OPENGL_GLU_FOUND    - system has GLU and it should be used.
7 # OPENGL_INCLUDE_DIR  - where the GL include directory can be found
8 # OPENGL_LIBRARIES    - Link these to use OpenGL and GLU
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
15 # On OSX default to using the framework version of opengl
16 # People will have to change the cache values of OPENGL_glu_LIBRARY 
17 # and OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX
18 IF (APPLE)
19   SET (OPENGL_gl_LIBRARY "-framework OpenGL" CACHE STRING "OpenGL lib for OSX")
20   SET (OPENGL_glu_LIBRARY "-framework AGL" CACHE STRING "AGL lib for OSX")
21 ENDIF (APPLE)
23 IF (WIN32)
24   IF (CYGWIN)
26     FIND_PATH(OPENGL_INCLUDE_DIR GL/gl.h
27       /usr/include
28       /usr/include/w32api
29       /usr/X11R6/include
30     )
32     FIND_LIBRARY(OPENGL_gl_LIBRARY opengl32
33       /usr/lib
34       /usr/lib/w32api
35     )
37     FIND_LIBRARY(OPENGL_glu_LIBRARY glu32
38       /usr/lib
39       /usr/lib/w32api
40     )
42   ELSE (CYGWIN)
44     IF(BORLAND)
45       SET (OPENGL_gl_LIBRARY import32 CACHE STRING "OpenGL library for win32")
46       SET (OPENGL_glu_LIBRARY import32 CACHE STRING "GLU library for win32")
47     ELSE(BORLAND)
48       SET (OPENGL_gl_LIBRARY opengl32 CACHE STRING "OpenGL library for win32")
49       SET (OPENGL_glu_LIBRARY glu32 CACHE STRING "GLU library for win32")
50     ENDIF(BORLAND)
52   ENDIF (CYGWIN)
54 ELSE (WIN32)
56   # The first line below is to make sure that the proper headers
57   # are used on a Linux machine with the NVidia drivers installed.
58   # They replace Mesa with NVidia's own library but normally do not
59   # install headers and that causes the linking to
60   # fail since the compiler finds the Mesa headers but NVidia's library.
61   # Make sure the NVIDIA directory comes BEFORE the others.
62   #  - Atanas Georgiev <atanas@cs.columbia.edu>
64   FIND_PATH(OPENGL_INCLUDE_DIR GL/gl.h
65     /usr/share/doc/NVIDIA_GLX-1.0/include
66     /usr/include
67     /usr/local/include
68     /usr/openwin/share/include
69     /opt/graphics/OpenGL/include
70     /usr/X11R6/include
71   )
73   FIND_PATH(OPENGL_xmesa_INCLUDE_DIR GL/xmesa.h
74     /usr/share/doc/NVIDIA_GLX-1.0/include
75     /usr/include
76     /usr/local/include
77     /usr/openwin/share/include
78     /opt/graphics/OpenGL/include
79     /usr/X11R6/include
80   )
82   FIND_LIBRARY(OPENGL_gl_LIBRARY
83     NAMES MesaGL GL
84     PATHS /usr/lib
85           /usr/local/lib
86           /opt/graphics/OpenGL/lib
87           /usr/openwin/lib
88           /usr/X11R6/lib
89           /usr/shlib
90   )
92   # On Unix OpenGL most certainly always requires X11.
93   # Feel free to tighten up these conditions if you don't 
94   # think this is always true.
95   # It's not true on OSX.
97   IF (OPENGL_gl_LIBRARY)
98     INCLUDE(FindX11)
99     IF (X11_FOUND)
100       IF (NOT APPLE)
101         SET (OPENGL_LIBRARIES ${X11_LIBRARIES})
102       ENDIF (NOT APPLE)
103     ENDIF (X11_FOUND)
104   ENDIF (OPENGL_gl_LIBRARY)
106   FIND_LIBRARY(OPENGL_glu_LIBRARY
107     NAMES MesaGLU GLU
108     PATHS ${OPENGL_gl_LIBRARY}
109           /usr/lib
110           /usr/local/lib
111           /opt/graphics/OpenGL/lib
112           /usr/openwin/lib
113           /usr/X11R6/lib
114           /usr/shlib
115   )
117 ENDIF (WIN32)
119 SET( OPENGL_FOUND "NO" )
120 IF(OPENGL_gl_LIBRARY)
122     IF(OPENGL_xmesa_INCLUDE_DIR)
123       SET( OPENGL_XMESA_FOUND "YES" )
124     ELSE(OPENGL_xmesa_INCLUDE_DIR)
125       SET( OPENGL_XMESA_FOUND "NO" )
126     ENDIF(OPENGL_xmesa_INCLUDE_DIR)
128     SET( OPENGL_LIBRARIES  ${OPENGL_gl_LIBRARY} ${OPENGL_LIBRARIES})
129     IF(OPENGL_glu_LIBRARY)
130       SET( OPENGL_GLU_FOUND "YES" )
131       SET( OPENGL_LIBRARIES ${OPENGL_glu_LIBRARY} ${OPENGL_LIBRARIES} )
132     ELSE(OPENGL_glu_LIBRARY)
133       SET( OPENGL_GLU_FOUND "NO" )
134     ENDIF(OPENGL_glu_LIBRARY)
136     SET( OPENGL_FOUND "YES" )
138     # This deprecated setting is for backward compatibility with CMake1.4
140     SET (OPENGL_LIBRARY ${OPENGL_LIBRARIES})
142 ENDIF(OPENGL_gl_LIBRARY)
144 # This deprecated setting is for backward compatibility with CMake1.4
145 SET(OPENGL_INCLUDE_PATH ${OPENGL_INCLUDE_DIR})
147 MARK_AS_ADVANCED(
148   OPENGL_INCLUDE_DIR
149   OPENGL_xmesa_INCLUDE_DIR
150   OPENGL_glu_LIBRARY
151   OPENGL_gl_LIBRARY