FindOpenGL.cmake 4.37 KB
Newer Older
1
# - Try to find OpenGL
Ian Scott's avatar
Ian Scott committed
2
# Once done this will define
3
#  
Ken Martin's avatar
Ken Martin committed
4
5
6
7
#  OPENGL_FOUND        - system has OpenGL
#  OPENGL_XMESA_FOUND  - system has XMESA
#  OPENGL_GLU_FOUND    - system has GLU
#  OPENGL_INCLUDE_DIR  - the GL include directory
8
9
#  OPENGL_LIBRARIES    - Link these to use OpenGL and GLU
#   
Ken Martin's avatar
Ken Martin committed
10
# If you want to use just GL you can use these values
11
12
13
#  OPENGL_gl_LIBRARY   - Path to OpenGL Library
#  OPENGL_glu_LIBRARY  - Path to GLU Library
#  
14
# On OSX default to using the framework version of opengl
Ken Martin's avatar
Ken Martin committed
15
16
# People will have to change the cache values of OPENGL_glu_LIBRARY 
# and OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX
17

Ken Martin's avatar
Ken Martin committed
18
IF (WIN32)
Ian Scott's avatar
Ian Scott committed
19
20
  IF (CYGWIN)

Alexander Neundorf's avatar
   
Alexander Neundorf committed
21
    FIND_PATH(OPENGL_INCLUDE_DIR GL/gl.h )
Ian Scott's avatar
Ian Scott committed
22

Alexander Neundorf's avatar
   
Alexander Neundorf committed
23
    FIND_LIBRARY(OPENGL_gl_LIBRARY opengl32 )
Ian Scott's avatar
Ian Scott committed
24

Alexander Neundorf's avatar
   
Alexander Neundorf committed
25
    FIND_LIBRARY(OPENGL_glu_LIBRARY glu32 )
Ian Scott's avatar
Ian Scott committed
26
27
28
29
30
31
32
33
34
35
36
37
38

  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
39
ELSE (WIN32)
Alexander Neundorf's avatar
   
Alexander Neundorf committed
40
41
42
43
44
45
46
47

  IF (APPLE)

    FIND_LIBRARY(OPENGL_gl_LIBRARY OpenGL DOC "OpenGL lib for OSX")
    FIND_LIBRARY(OPENGL_glu_LIBRARY AGL DOC "AGL lib for OSX")
    FIND_PATH(OPENGL_INCLUDE_DIR OpenGL/gl.h DOC "Include for OpenGL on OSX")

  ELSE(APPLE)
48
49
50
51
52
53
54
    # Handle HP-UX cases where we only want to find OpenGL in either hpux64
    # or hpux32 depending on if we're doing a 64 bit build.
    IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
      SET(HPUX_IA_OPENGL_LIB_PATH /opt/graphics/OpenGL/lib/hpux32/)
    ELSE(CMAKE_SIZEOF_VOID_P EQUAL 4)
      SET(HPUX_IA_OPENGL_LIB_PATH /opt/graphics/OpenGL/lib/hpux64/)
    ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4)
Alexander Neundorf's avatar
   
Alexander Neundorf committed
55
56
57
58
59
60
61
62
63
64
65
66

    # 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/openwin/share/include
67
      /opt/graphics/OpenGL/include /usr/X11R6/include
Alexander Neundorf's avatar
   
Alexander Neundorf committed
68
69
70
71
72
    )

    FIND_PATH(OPENGL_xmesa_INCLUDE_DIR GL/xmesa.h
      /usr/share/doc/NVIDIA_GLX-1.0/include
      /usr/openwin/share/include
73
      /opt/graphics/OpenGL/include /usr/X11R6/include
Alexander Neundorf's avatar
   
Alexander Neundorf committed
74
75
76
77
    )

    FIND_LIBRARY(OPENGL_gl_LIBRARY
      NAMES GL MesaGL
Alexander Neundorf's avatar
   
Alexander Neundorf committed
78
      PATHS /opt/graphics/OpenGL/lib
Alexander Neundorf's avatar
   
Alexander Neundorf committed
79
            /usr/openwin/lib
80
            /usr/shlib /usr/X11R6/lib
81
            ${HPUX_IA_OPENGL_LIB_PATH}
Alexander Neundorf's avatar
   
Alexander Neundorf committed
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
    )

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

    IF (OPENGL_gl_LIBRARY)
      IF(NOT X11_FOUND)
        INCLUDE(FindX11)
      ENDIF(NOT X11_FOUND)
      IF (X11_FOUND)
        IF (NOT APPLE)
          SET (OPENGL_LIBRARIES ${X11_LIBRARIES})
        ENDIF (NOT APPLE)
      ENDIF (X11_FOUND)
    ENDIF (OPENGL_gl_LIBRARY)

    FIND_LIBRARY(OPENGL_glu_LIBRARY
      NAMES GLU MesaGLU
      PATHS ${OPENGL_gl_LIBRARY}
            /opt/graphics/OpenGL/lib
            /usr/openwin/lib
105
            /usr/shlib /usr/X11R6/lib
Alexander Neundorf's avatar
   
Alexander Neundorf committed
106
107
108
    )

  ENDIF(APPLE)
109
110
ENDIF (WIN32)

Ian Scott's avatar
Ian Scott committed
111
SET( OPENGL_FOUND "NO" )
Ken Martin's avatar
Ken Martin committed
112
IF(OPENGL_gl_LIBRARY)
Ian Scott's avatar
Ian Scott committed
113
114
115
116
117
118
119

    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)

120
    SET( OPENGL_LIBRARIES  ${OPENGL_gl_LIBRARY} ${OPENGL_LIBRARIES})
Ian Scott's avatar
Ian Scott committed
121
122
    IF(OPENGL_glu_LIBRARY)
      SET( OPENGL_GLU_FOUND "YES" )
123
124
      SET( OPENGL_LIBRARIES ${OPENGL_glu_LIBRARY} ${OPENGL_LIBRARIES} )
    ELSE(OPENGL_glu_LIBRARY)
Ian Scott's avatar
Ian Scott committed
125
126
127
128
129
      SET( OPENGL_GLU_FOUND "NO" )
    ENDIF(OPENGL_glu_LIBRARY)

    SET( OPENGL_FOUND "YES" )

130
    # This deprecated setting is for backward compatibility with CMake1.4
131

Ian Scott's avatar
Ian Scott committed
132
133
    SET (OPENGL_LIBRARY ${OPENGL_LIBRARIES})

Ken Martin's avatar
Ken Martin committed
134
ENDIF(OPENGL_gl_LIBRARY)
135

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

139
140
141
142
143
144
MARK_AS_ADVANCED(
  OPENGL_INCLUDE_DIR
  OPENGL_xmesa_INCLUDE_DIR
  OPENGL_glu_LIBRARY
  OPENGL_gl_LIBRARY
)