summaryrefslogtreecommitdiffhomepage
path: root/cmake/FindGL.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindGL.cmake')
-rw-r--r--cmake/FindGL.cmake265
1 files changed, 265 insertions, 0 deletions
diff --git a/cmake/FindGL.cmake b/cmake/FindGL.cmake
new file mode 100644
index 00000000..d2e91ada
--- /dev/null
+++ b/cmake/FindGL.cmake
@@ -0,0 +1,265 @@
+# F I N D G L . C M A K E
+# BRL-CAD
+#
+# Copyright (c) 2001-2013 United States Government as represented by
+# the U.S. Army Research Laboratory.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+#
+# 3. The name of the author may not be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+###
+# - Try to find OpenGL
+# Once done this will define
+#
+# OPENGL_FOUND - system has OpenGL
+# OPENGL_XMESA_FOUND - system has XMESA
+# OPENGL_GLU_FOUND - system has GLU
+# OPENGL_INCLUDE_DIR_GL - the GL include directory
+# OPENGL_INCLUDE_DIR_GLX - the GLX include directory
+# OPENGL_LIBRARIES - Link these to use OpenGL and GLU
+#
+# If you want to use just GL you can use these values
+# OPENGL_gl_LIBRARY - Path to OpenGL Library
+# OPENGL_glu_LIBRARY - Path to GLU Library
+#
+# Define controlling option OPENGL_USE_AQUA if on Apple -
+# if this is not true, look for the X11 OpenGL. Defaults
+# to true.
+
+#=============================================================================
+# Copyright 2001-2009 Kitware, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the names of Kitware, Inc., the Insight Software Consortium,
+# nor the names of their contributors may be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# ------------------------------------------------------------------------------
+#
+# The above copyright and license notice applies to distributions of
+# CMake in source and binary form. Some source files contain additional
+# notices of original copyright by their contributors; see each source
+# for details. Third-party software packages supplied with CMake under
+# compatible licenses provide their own copyright notices documented in
+# corresponding subdirectories.
+#
+# ------------------------------------------------------------------------------
+#
+# CMake was initially developed by Kitware with the following sponsorship:
+#
+# * National Library of Medicine at the National Institutes of Health
+# as part of the Insight Segmentation and Registration Toolkit (ITK).
+#
+# * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
+# Visualization Initiative.
+#
+# * National Alliance for Medical Image Computing (NAMIC) is funded by the
+# National Institutes of Health through the NIH Roadmap for Medical Research,
+# Grant U54 EB005149.
+#
+# * Kitware, Inc.
+#
+#=============================================================================
+
+if(WIN32)
+ set(OPENGL_gl_LIBRARY opengl32 CACHE STRING "OpenGL library for win32")
+ set(OPENGL_glu_LIBRARY glu32 CACHE STRING "GLU library for win32")
+else(WIN32)
+
+ # 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>
+
+
+ set(OPENGL_INC_SEARCH_PATH
+ /usr/share/doc/NVIDIA_GLX-1.0/include
+ /usr/X11/include
+ /usr/X11R7/include
+ /usr/X11R6/include
+ /usr/include/X11
+ /usr/local/include/X11
+ /usr/local/include
+ /usr/include
+ /usr/openwin/share/include
+ /usr/openwin/include
+ /usr/pkg/xorg/include
+ /opt/graphics/OpenGL/include
+ )
+ # 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/
+ /opt/graphics/OpenGL/lib/pa20_64)
+ endif(CMAKE_SIZEOF_VOID_P EQUAL 4)
+
+ get_property(SEARCH_64BIT GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
+ if(SEARCH_64BIT)
+ set(64BIT_DIRS "/usr/lib64/X11;/usr/lib64")
+ else(SEARCH_64BIT)
+ set(32BIT_DIRS "/usr/lib/X11;/usr/lib")
+ endif(SEARCH_64BIT)
+
+ set(OPENGL_LIB_SEARCH_PATH
+ ${64BIT_DIRS}
+ ${32BIT_DIRS}
+ /usr/X11/lib
+ /usr/X11R7/lib
+ /usr/X11R6/lib
+ /usr/shlib
+ /usr/openwin/lib
+ /opt/graphics/OpenGL/lib
+ /usr/pkg/xorg/lib
+ ${HPUX_IA_OPENGL_LIB_PATH}
+ )
+
+ if(APPLE)
+ OPTION(OPENGL_USE_AQUA "Require native OSX Framework version of OpenGL." ON)
+ endif(APPLE)
+
+ if(OPENGL_USE_AQUA)
+ 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_GL OpenGL/gl.h DOC "Include for OpenGL on OSX")
+ else(OPENGL_USE_AQUA)
+ # If we're on Apple and not using Aqua, we don't want frameworks
+ set(CMAKE_FIND_FRAMEWORK "NEVER")
+
+ find_path(OPENGL_INCLUDE_DIR_GL GL/gl.h ${OPENGL_INC_SEARCH_PATH})
+ find_path(OPENGL_INCLUDE_DIR_GLX GL/glx.h ${OPENGL_INC_SEARCH_PATH})
+ find_path(OPENGL_xmesa_INCLUDE_DIR GL/xmesa.h ${OPENGL_INC_SEARCH_PATH})
+ find_library(OPENGL_gl_LIBRARY NAMES GL MesaGL PATHS ${OPENGL_LIB_SEARCH_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(FindX11)
+ endif(NOT X11_FOUND)
+ if(X11_FOUND)
+ set(OPENGL_LIBRARIES ${X11_LIBRARIES})
+ endif(X11_FOUND)
+ endif(OPENGL_gl_LIBRARY)
+
+ find_library(OPENGL_glu_LIBRARY NAMES GLU MesaGLU PATHS ${OPENGL_LIB_SEARCH_PATH})
+ endif(OPENGL_USE_AQUA)
+
+endif(WIN32)
+
+set( OPENGL_FOUND "NO" )
+
+if(X11_FOUND)
+ if(OPENGL_INCLUDE_DIR_GLX AND OPENGL_INCLUDE_DIR_GL AND OPENGL_gl_LIBRARY)
+ set(OPENGL_FOUND "YES" )
+ endif(OPENGL_INCLUDE_DIR_GLX AND OPENGL_INCLUDE_DIR_GL AND OPENGL_gl_LIBRARY)
+else(X11_FOUND)
+ if(MSVC OR MINGW)
+ if(OPENGL_gl_LIBRARY)
+ set(OPENGL_FOUND "YES" )
+ endif(OPENGL_gl_LIBRARY)
+ else(MSVC OR MINGW)
+ if(OPENGL_INCLUDE_DIR_GL AND OPENGL_gl_LIBRARY)
+ set(OPENGL_FOUND "YES" )
+ endif(OPENGL_INCLUDE_DIR_GL AND OPENGL_gl_LIBRARY)
+ endif(MSVC OR MINGW)
+endif(X11_FOUND)
+
+
+if(OPENGL_FOUND)
+ 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)
+
+ set(OPENGL_LIBRARIES ${OPENGL_gl_LIBRARY} ${OPENGL_LIBRARIES})
+ if(OPENGL_glu_LIBRARY)
+ set(OPENGL_GLU_FOUND "YES" )
+ set(OPENGL_LIBRARIES ${OPENGL_glu_LIBRARY} ${OPENGL_LIBRARIES} )
+ else(OPENGL_glu_LIBRARY)
+ set( OPENGL_GLU_FOUND "NO" )
+ endif(OPENGL_glu_LIBRARY)
+
+ # This deprecated setting is for backward compatibility with CMake1.4
+ set(OPENGL_LIBRARY ${OPENGL_LIBRARIES})
+else(OPENGL_FOUND)
+ # We don't have enough, so no partials - clean up
+ set(OPENGL_INCLUDE_DIR_GL "" CACHE STRING "OpenGL not found" FORCE)
+ set(OPENGL_INCLUDE_DIR_GLX "" CACHE STRING "OpenGL not found" FORCE)
+ set(OPENGL_xmesa_INCLUDE_DIR "" CACHE STRING "OpenGL not found" FORCE)
+ set(OPENGL_glu_LIBRARY "" CACHE STRING "OpenGL not found" FORCE)
+ set(OPENGL_gl_LIBRARY "" CACHE STRING "OpenGL not found" FORCE)
+endif(OPENGL_FOUND)
+
+mark_as_advanced(
+ OPENGL_INCLUDE_DIR_GL
+ OPENGL_INCLUDE_DIR_GLX
+ OPENGL_xmesa_INCLUDE_DIR
+ OPENGL_glu_LIBRARY
+ OPENGL_gl_LIBRARY
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8