FindOpenGL.cmake 4.19 KB
Newer Older
Ian Scott's avatar
Ian Scott committed
1
2
# Try to find OpenGL
# Once done this will define
Ken Martin's avatar
Ken Martin committed
3
#
Ian Scott's avatar
Ian Scott committed
4
5
6
7
# OPENGL_FOUND        - system has OpenGL and it should be used
# OPENGL_XMESA_FOUND  - system has XMESA, and it should be used.
# OPENGL_GLU_FOUND    - system has GLU and it should be used.
# OPENGL_INCLUDE_DIR  - where the GL include directory can be found
Ken Martin's avatar
Ken Martin committed
8
# OPENGL_LIBRARIES    - Link these to use OpenGL and GLU
Ken Martin's avatar
Ken Martin committed
9
#
Ken Martin's avatar
Ken Martin committed
10
# If you want to use just GL you can use these values
Ian Scott's avatar
Ian Scott committed
11
# OPENGL_gl_LIBRARY   - Path to OpenGL Library
12
# OPENGL_glu_LIBRARY  - Path to GLU Library
Ken Martin's avatar
Ken Martin committed
13
14
#

15
# On OSX default to using the framework version of opengl
Ken Martin's avatar
Ken Martin committed
16
17
# People will have to change the cache values of OPENGL_glu_LIBRARY 
# and OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX
18
19
20
21
22
IF (APPLE)
  SET (OPENGL_gl_LIBRARY "-framework OpenGL" CACHE STRING "OpenGL lib for OSX")
  SET (OPENGL_glu_LIBRARY "-framework AGL" CACHE STRING "AGL lib for OSX")
ENDIF (APPLE)

Ken Martin's avatar
Ken Martin committed
23
IF (WIN32)
Ian Scott's avatar
Ian Scott committed
24
25
26
27
  IF (CYGWIN)

    FIND_PATH(OPENGL_INCLUDE_DIR GL/gl.h
      /usr/include
28
      /usr/include/w32api
Ian Scott's avatar
Ian Scott committed
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
      /usr/X11R6/include
    )

    FIND_LIBRARY(OPENGL_gl_LIBRARY opengl32
      /usr/lib
      /usr/lib/w32api
    )

    FIND_LIBRARY(OPENGL_glu_LIBRARY glu32
      /usr/lib
      /usr/lib/w32api
    )

  ELSE (CYGWIN)

    IF(BORLAND)
      SET (OPENGL_gl_LIBRARY import32 CACHE STRING "OpenGL library for win32")
      SET (OPENGL_glu_LIBRARY import32 CACHE STRING "GLU library for win32")
    ELSE(BORLAND)
      SET (OPENGL_gl_LIBRARY opengl32 CACHE STRING "OpenGL library for win32")
      SET (OPENGL_glu_LIBRARY glu32 CACHE STRING "GLU library for win32")
    ENDIF(BORLAND)

  ENDIF (CYGWIN)

Ken Martin's avatar
Ken Martin committed
54
ELSE (WIN32)
Ian Scott's avatar
Ian Scott committed
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

  # The first line below is to make sure that the proper headers
  # are used on a Linux machine with the NVidia drivers installed.
  # They replace Mesa with NVidia's own library but normally do not
  # install headers and that causes the linking to
  # fail since the compiler finds the Mesa headers but NVidia's library.
  # Make sure the NVIDIA directory comes BEFORE the others.
  #  - Atanas Georgiev <atanas@cs.columbia.edu>

  FIND_PATH(OPENGL_INCLUDE_DIR GL/gl.h
    /usr/share/doc/NVIDIA_GLX-1.0/include
    /usr/include
    /usr/local/include
    /usr/openwin/share/include
    /opt/graphics/OpenGL/include
    /usr/X11R6/include
  )

  FIND_PATH(OPENGL_xmesa_INCLUDE_DIR GL/xmesa.h
    /usr/share/doc/NVIDIA_GLX-1.0/include
    /usr/include
    /usr/local/include
    /usr/openwin/share/include
    /opt/graphics/OpenGL/include
    /usr/X11R6/include
  )

  FIND_LIBRARY(OPENGL_gl_LIBRARY
    NAMES MesaGL GL
    PATHS /usr/lib
          /usr/local/lib
          /opt/graphics/OpenGL/lib
          /usr/openwin/lib
          /usr/X11R6/lib
89
          /usr/shlib
Ian Scott's avatar
Ian Scott committed
90
91
  )

92
93
94
  # On Unix OpenGL most certainly always requires X11.
  # Feel free to tighten up these conditions if you don't 
  # think this is always true.
95
  # It's not true on OSX.
96

97
98
99
  IF (OPENGL_gl_LIBRARY)
    INCLUDE( ${CMAKE_ROOT}/Modules/FindX11.cmake )
    IF (X11_FOUND)
100
101
102
      IF (NOT APPLE)
        SET (OPENGL_LIBRARIES ${X11_LIBRARIES})
      ENDIF (NOT APPLE)
103
104
105
    ENDIF (X11_FOUND)
  ENDIF (OPENGL_gl_LIBRARY)

Ian Scott's avatar
Ian Scott committed
106
107
  FIND_LIBRARY(OPENGL_glu_LIBRARY
    NAMES MesaGLU GLU
108
109
    PATHS ${OPENGL_gl_LIBRARY}
          /usr/lib
Ian Scott's avatar
Ian Scott committed
110
111
112
113
          /usr/local/lib
          /opt/graphics/OpenGL/lib
          /usr/openwin/lib
          /usr/X11R6/lib
114
          /usr/shlib
Ian Scott's avatar
Ian Scott committed
115
116
  )

117
118
ENDIF (WIN32)

Ian Scott's avatar
Ian Scott committed
119
SET( OPENGL_FOUND "NO" )
Ken Martin's avatar
Ken Martin committed
120
IF(OPENGL_gl_LIBRARY)
Ian Scott's avatar
Ian Scott committed
121
122
123
124
125
126
127

    IF(OPENGL_xmesa_INCLUDE_DIR)
      SET( OPENGL_XMESA_FOUND "YES" )
    ELSE(OPENGL_xmesa_INCLUDE_DIR)
      SET( OPENGL_XMESA_FOUND "NO" )
    ENDIF(OPENGL_xmesa_INCLUDE_DIR)

128
    SET( OPENGL_LIBRARIES  ${OPENGL_gl_LIBRARY} ${OPENGL_LIBRARIES})
Ian Scott's avatar
Ian Scott committed
129
130
    IF(OPENGL_glu_LIBRARY)
      SET( OPENGL_GLU_FOUND "YES" )
131
132
      SET( OPENGL_LIBRARIES ${OPENGL_glu_LIBRARY} ${OPENGL_LIBRARIES} )
    ELSE(OPENGL_glu_LIBRARY)
Ian Scott's avatar
Ian Scott committed
133
134
135
136
137
      SET( OPENGL_GLU_FOUND "NO" )
    ENDIF(OPENGL_glu_LIBRARY)

    SET( OPENGL_FOUND "YES" )

138
    # This deprecated setting is for backward compatibility with CMake1.4
139

Ian Scott's avatar
Ian Scott committed
140
141
    SET (OPENGL_LIBRARY ${OPENGL_LIBRARIES})

Ken Martin's avatar
Ken Martin committed
142
ENDIF(OPENGL_gl_LIBRARY)
143

Ken Martin's avatar
Ken Martin committed
144
145
# This deprecated setting is for backward compatibility with CMake1.4
SET(OPENGL_INCLUDE_PATH ${OPENGL_INCLUDE_DIR})
146

147
148
149
150
151
152
MARK_AS_ADVANCED(
  OPENGL_INCLUDE_DIR
  OPENGL_xmesa_INCLUDE_DIR
  OPENGL_glu_LIBRARY
  OPENGL_gl_LIBRARY
)