Преглед изворни кода

Merge topic 'OpenGL-require-includes'

5be3593 FindOpenGL: require headers to be found on non-Windows platforms (#13746)
b10a171 FindOpenGL: simplify OS selection code
Brad King пре 12 година
родитељ
комит
d04e765d76
1 измењених фајлова са 88 додато и 91 уклоњено
  1. 88 91
      Modules/FindOpenGL.cmake

+ 88 - 91
Modules/FindOpenGL.cmake

@@ -28,111 +28,107 @@
 # (To distribute this file outside of CMake, substitute the full
 #  License text for the above reference.)
 
-if (WIN32)
-  if (CYGWIN)
+set(_OpenGL_REQUIRED_VARS OPENGL_gl_LIBRARY)
 
-    find_path(OPENGL_INCLUDE_DIR GL/gl.h )
+if (CYGWIN)
 
-    find_library(OPENGL_gl_LIBRARY opengl32 )
+  find_path(OPENGL_INCLUDE_DIR GL/gl.h )
+  list(APPEND _OpenGL_REQUIRED_VARS OPENGL_INCLUDE_DIR)
 
-    find_library(OPENGL_glu_LIBRARY glu32 )
+  find_library(OPENGL_gl_LIBRARY opengl32 )
 
-  else ()
+  find_library(OPENGL_glu_LIBRARY glu32 )
 
-    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()
-      set (OPENGL_gl_LIBRARY opengl32 CACHE STRING "OpenGL library for win32")
-      set (OPENGL_glu_LIBRARY glu32 CACHE STRING "GLU library for win32")
-    endif()
-
-  endif ()
+elseif (WIN32)
 
-else ()
+  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()
+    set (OPENGL_gl_LIBRARY opengl32 CACHE STRING "OpenGL library for win32")
+    set (OPENGL_glu_LIBRARY glu32 CACHE STRING "GLU library for win32")
+  endif()
 
-  if (APPLE)
+elseif (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")
+  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")
+  list(APPEND _OpenGL_REQUIRED_VARS OPENGL_INCLUDE_DIR)
 
-  else()
-    if (CMAKE_SYSTEM_NAME MATCHES "HP-UX")
-      # 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(_OPENGL_LIB_PATH
-          /opt/graphics/OpenGL/lib/hpux32/)
-      else()
-        set(_OPENGL_LIB_PATH
-          /opt/graphics/OpenGL/lib/hpux64/
-          /opt/graphics/OpenGL/lib/pa20_64)
-      endif()
-    elseif(CMAKE_SYSTEM_NAME STREQUAL Haiku)
+else()
+  if (CMAKE_SYSTEM_NAME MATCHES "HP-UX")
+    # 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(_OPENGL_LIB_PATH
-        /boot/develop/lib/x86)
-      set(_OPENGL_INCLUDE_PATH
-        /boot/develop/headers/os/opengl)
+        /opt/graphics/OpenGL/lib/hpux32/)
+    else()
+      set(_OPENGL_LIB_PATH
+        /opt/graphics/OpenGL/lib/hpux64/
+        /opt/graphics/OpenGL/lib/pa20_64)
     endif()
+  elseif(CMAKE_SYSTEM_NAME STREQUAL Haiku)
+    set(_OPENGL_LIB_PATH
+      /boot/develop/lib/x86)
+    set(_OPENGL_INCLUDE_PATH
+      /boot/develop/headers/os/opengl)
+  endif()
 
-    # 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 <[email protected]>
-
-    find_path(OPENGL_INCLUDE_DIR GL/gl.h
-      /usr/share/doc/NVIDIA_GLX-1.0/include
-      /usr/openwin/share/include
-      /opt/graphics/OpenGL/include /usr/X11R6/include
-      ${_OPENGL_INCLUDE_PATH}
-    )
-
-    find_path(OPENGL_xmesa_INCLUDE_DIR GL/xmesa.h
-      /usr/share/doc/NVIDIA_GLX-1.0/include
-      /usr/openwin/share/include
-      /opt/graphics/OpenGL/include /usr/X11R6/include
-    )
-
-    find_library(OPENGL_gl_LIBRARY
-      NAMES GL MesaGL
-      PATHS /opt/graphics/OpenGL/lib
-            /usr/openwin/lib
-            /usr/shlib /usr/X11R6/lib
-            ${_OPENGL_LIB_PATH}
-    )
-
-    unset(_OPENGL_INCLUDE_PATH)
-    unset(_OPENGL_LIB_PATH)
-
-    # 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(${CMAKE_CURRENT_LIST_DIR}/FindX11.cmake)
-      endif()
-      if (X11_FOUND)
-        if (NOT APPLE)
-          set (OPENGL_LIBRARIES ${X11_LIBRARIES})
-        endif ()
-      endif ()
+  # 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 <[email protected]>
+
+  find_path(OPENGL_INCLUDE_DIR GL/gl.h
+    /usr/share/doc/NVIDIA_GLX-1.0/include
+    /usr/openwin/share/include
+    /opt/graphics/OpenGL/include /usr/X11R6/include
+    ${_OPENGL_INCLUDE_PATH}
+  )
+  list(APPEND _OpenGL_REQUIRED_VARS OPENGL_INCLUDE_DIR)
+
+  find_path(OPENGL_xmesa_INCLUDE_DIR GL/xmesa.h
+    /usr/share/doc/NVIDIA_GLX-1.0/include
+    /usr/openwin/share/include
+    /opt/graphics/OpenGL/include /usr/X11R6/include
+  )
+
+  find_library(OPENGL_gl_LIBRARY
+    NAMES GL MesaGL
+    PATHS /opt/graphics/OpenGL/lib
+          /usr/openwin/lib
+          /usr/shlib /usr/X11R6/lib
+          ${_OPENGL_LIB_PATH}
+  )
+
+  unset(_OPENGL_INCLUDE_PATH)
+  unset(_OPENGL_LIB_PATH)
+
+  # On Unix OpenGL most certainly always requires X11.
+  # Feel free to tighten up these conditions if you don't
+  # think this is always true.
+
+  if (OPENGL_gl_LIBRARY)
+    if(NOT X11_FOUND)
+      include(${CMAKE_CURRENT_LIST_DIR}/FindX11.cmake)
+    endif()
+    if (X11_FOUND)
+      set (OPENGL_LIBRARIES ${X11_LIBRARIES})
     endif ()
+  endif ()
 
-    find_library(OPENGL_glu_LIBRARY
-      NAMES GLU MesaGLU
-      PATHS ${OPENGL_gl_LIBRARY}
-            /opt/graphics/OpenGL/lib
-            /usr/openwin/lib
-            /usr/shlib /usr/X11R6/lib
-    )
+  find_library(OPENGL_glu_LIBRARY
+    NAMES GLU MesaGLU
+    PATHS ${OPENGL_gl_LIBRARY}
+          /opt/graphics/OpenGL/lib
+          /usr/openwin/lib
+          /usr/shlib /usr/X11R6/lib
+  )
 
-  endif()
 endif ()
 
 if(OPENGL_gl_LIBRARY)
@@ -162,7 +158,8 @@ set(OPENGL_INCLUDE_PATH ${OPENGL_INCLUDE_DIR})
 # handle the QUIETLY and REQUIRED arguments and set OPENGL_FOUND to TRUE if
 # all listed variables are TRUE
 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenGL DEFAULT_MSG OPENGL_gl_LIBRARY)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenGL REQUIRED_VARS ${_OpenGL_REQUIRED_VARS})
+unset(_OpenGL_REQUIRED_VARS)
 
 mark_as_advanced(
   OPENGL_INCLUDE_DIR