summaryrefslogtreecommitdiffstats
path: root/cmake_modules/FindGLFW.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake_modules/FindGLFW.cmake')
-rw-r--r--cmake_modules/FindGLFW.cmake258
1 files changed, 258 insertions, 0 deletions
diff --git a/cmake_modules/FindGLFW.cmake b/cmake_modules/FindGLFW.cmake
new file mode 100644
index 0000000..0640709
--- /dev/null
+++ b/cmake_modules/FindGLFW.cmake
@@ -0,0 +1,258 @@
+#
+# Copyright 2013 Pixar
+#
+# Licensed under the Apache License, Version 2.0 (the "Apache License")
+# with the following modification; you may not use this file except in
+# compliance with the Apache License and the following modification to it:
+# Section 6. Trademarks. is deleted and replaced with:
+#
+# 6. Trademarks. This License does not grant permission to use the trade
+# names, trademarks, service marks, or product names of the Licensor
+# and its affiliates, except as required to comply with Section 4(c) of
+# the License and to reproduce the content of the NOTICE file.
+#
+# You may obtain a copy of the Apache License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the Apache License with the above modification is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the Apache License for the specific
+# language governing permissions and limitations under the Apache License.
+#
+
+# Try to find GLFW library and include path.
+# Once done this will define
+#
+# GLFW_FOUND
+# GLFW_INCLUDE_DIR
+# GLFW_LIBRARIES
+#
+
+find_path( GLFW_INCLUDE_DIR
+ NAMES
+ GLFW/glfw3.h
+ HINTS
+ "${GLFW_LOCATION}/include"
+ "$ENV{GLFW_LOCATION}/include"
+ PATHS
+ "$ENV{PROGRAMFILES}/GLFW/include"
+ "${OPENGL_INCLUDE_DIR}"
+ /usr/openwin/share/include
+ /usr/openwin/include
+ /usr/X11R6/include
+ /usr/include/X11
+ /opt/graphics/OpenGL/include
+ /opt/graphics/OpenGL/contrib/libglfw
+ /usr/local/include
+ /usr/include/GL
+ /usr/include
+ DOC
+ "The directory where GLFW/glfw3.h resides"
+ )
+
+#
+# XXX: Do we still need to search for GL/glfw.h?
+#
+find_path( GLFW_INCLUDE_DIR
+ NAMES
+ GL/glfw.h
+ HINTS
+ "${GLFW_LOCATION}/include"
+ "$ENV{GLFW_LOCATION}/include"
+ PATHS
+ "$ENV{PROGRAMFILES}/GLFW/include"
+ "${OPENGL_INCLUDE_DIR}"
+ /usr/openwin/share/include
+ /usr/openwin/include
+ /usr/X11R6/include
+ /usr/include/X11
+ /opt/graphics/OpenGL/include
+ /opt/graphics/OpenGL/contrib/libglfw
+ /usr/local/include
+ /usr/include/GL
+ /usr/include
+ DOC
+ "The directory where GL/glfw.h resides"
+ )
+
+if (WIN32)
+ if(CYGWIN)
+ find_library( GLFW_glfw_LIBRARY
+ NAMES
+ glfw32
+ HINTS
+ "${GLFW_LOCATION}/lib"
+ "${GLFW_LOCATION}/lib/x64"
+ "$ENV{GLFW_LOCATION}/lib"
+ PATHS
+ "${OPENGL_LIBRARY_DIR}"
+ /usr/lib
+ /usr/lib/w32api
+ /usr/local/lib
+ /usr/X11R6/lib
+ DOC
+ "The GLFW library"
+ )
+ else()
+ find_library( GLFW_glfw_LIBRARY
+ NAMES
+ glfw32
+ glfw32s
+ glfw
+ glfw3
+ HINTS
+ "${GLFW_LOCATION}/lib"
+ "${GLFW_LOCATION}/lib/x64"
+ "${GLFW_LOCATION}/lib-msvc110"
+ "${GLFW_LOCATION}/lib-vc2012"
+ "$ENV{GLFW_LOCATION}/lib"
+ "$ENV{GLFW_LOCATION}/lib/x64"
+ "$ENV{GLFW_LOCATION}/lib-msvc110"
+ "$ENV{GLFW_LOCATION}/lib-vc2012"
+ PATHS
+ "$ENV{PROGRAMFILES}/GLFW/lib"
+ "${OPENGL_LIBRARY_DIR}"
+ DOC
+ "The GLFW library"
+ )
+ endif()
+else ()
+ if (APPLE)
+ find_library( GLFW_glfw_LIBRARY glfw
+ NAMES
+ glfw
+ glfw3
+ HINTS
+ "${GLFW_LOCATION}/lib"
+ "${GLFW_LOCATION}/lib/cocoa"
+ "$ENV{GLFW_LOCATION}/lib"
+ "$ENV{GLFW_LOCATION}/lib/cocoa"
+ PATHS
+ /usr/local/lib
+ )
+ set(GLFW_cocoa_LIBRARY "-framework Cocoa" CACHE STRING "Cocoa framework for OSX")
+ set(GLFW_corevideo_LIBRARY "-framework CoreVideo" CACHE STRING "CoreVideo framework for OSX")
+ set(GLFW_iokit_LIBRARY "-framework IOKit" CACHE STRING "IOKit framework for OSX")
+ else ()
+ # (*)NIX
+
+ find_package(Threads REQUIRED)
+
+ find_package(X11 REQUIRED)
+
+ if(NOT X11_Xrandr_FOUND)
+ message(FATAL_ERROR "Xrandr library not found - required for GLFW")
+ endif()
+
+ if(NOT X11_xf86vmode_FOUND)
+ message(FATAL_ERROR "xf86vmode library not found - required for GLFW")
+ endif()
+
+ if(NOT X11_Xcursor_FOUND)
+ message(FATAL_ERROR "Xcursor library not found - required for GLFW")
+ endif()
+
+ if(NOT X11_Xinerama_FOUND)
+ message(FATAL_ERROR "Xinerama library not found - required for GLFW")
+ endif()
+
+ if(NOT X11_Xi_FOUND)
+ message(FATAL_ERROR "Xi library not found - required for GLFW")
+ endif()
+
+ list(APPEND GLFW_x11_LIBRARY "${X11_Xrandr_LIB}" "${X11_Xxf86vm_LIB}" "${X11_Xcursor_LIB}" "${X11_Xinerama_LIB}" "${X11_Xi_LIB}" "${X11_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT}" -lrt -ldl)
+
+ find_library( GLFW_glfw_LIBRARY
+ NAMES
+ glfw
+ glfw3
+ HINTS
+ "${GLFW_LOCATION}/lib"
+ "$ENV{GLFW_LOCATION}/lib"
+ "${GLFW_LOCATION}/lib/x11"
+ "$ENV{GLFW_LOCATION}/lib/x11"
+ PATHS
+ /usr/lib64
+ /usr/lib
+ /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
+ /usr/local/lib64
+ /usr/local/lib
+ /usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE}
+ /usr/openwin/lib
+ /usr/X11R6/lib
+ DOC
+ "The GLFW library"
+ )
+ endif (APPLE)
+endif (WIN32)
+
+set( GLFW_FOUND "NO" )
+
+if(GLFW_INCLUDE_DIR)
+
+ if(GLFW_glfw_LIBRARY)
+ set( GLFW_LIBRARIES "${GLFW_glfw_LIBRARY}"
+ "${GLFW_x11_LIBRARY}"
+ "${GLFW_cocoa_LIBRARY}"
+ "${GLFW_iokit_LIBRARY}"
+ "${GLFW_corevideo_LIBRARY}" )
+ set( GLFW_FOUND "YES" )
+ set (GLFW_LIBRARY "${GLFW_LIBRARIES}")
+ set (GLFW_INCLUDE_PATH "${GLFW_INCLUDE_DIR}")
+ endif(GLFW_glfw_LIBRARY)
+
+
+ # Tease the GLFW_VERSION numbers from the lib headers
+ function(parseVersion FILENAME VARNAME)
+
+ set(PATTERN "^#define ${VARNAME}.*$")
+
+ file(STRINGS "${GLFW_INCLUDE_DIR}/${FILENAME}" TMP REGEX ${PATTERN})
+
+ string(REGEX MATCHALL "[0-9]+" TMP ${TMP})
+
+ set(${VARNAME} ${TMP} PARENT_SCOPE)
+
+ endfunction()
+
+
+ if(EXISTS "${GLFW_INCLUDE_DIR}/GL/glfw.h")
+
+ parseVersion(GL/glfw.h GLFW_VERSION_MAJOR)
+ parseVersion(GL/glfw.h GLFW_VERSION_MINOR)
+ parseVersion(GL/glfw.h GLFW_VERSION_REVISION)
+
+ elseif(EXISTS "${GLFW_INCLUDE_DIR}/GLFW/glfw3.h")
+
+ parseVersion(GLFW/glfw3.h GLFW_VERSION_MAJOR)
+ parseVersion(GLFW/glfw3.h GLFW_VERSION_MINOR)
+ parseVersion(GLFW/glfw3.h GLFW_VERSION_REVISION)
+
+ endif()
+
+ if(${GLFW_VERSION_MAJOR} OR ${GLFW_VERSION_MINOR} OR ${GLFW_VERSION_REVISION})
+ set(GLFW_VERSION "${GLFW_VERSION_MAJOR}.${GLFW_VERSION_MINOR}.${GLFW_VERSION_REVISION}")
+ set(GLFW_VERSION_STRING "${GLFW_VERSION}")
+ mark_as_advanced(GLFW_VERSION)
+ endif()
+
+endif(GLFW_INCLUDE_DIR)
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(GLFW
+ REQUIRED_VARS
+ GLFW_INCLUDE_DIR
+ GLFW_LIBRARIES
+ VERSION_VAR
+ GLFW_VERSION
+ )
+
+mark_as_advanced(
+ GLFW_INCLUDE_DIR
+ GLFW_LIBRARIES
+ GLFW_glfw_LIBRARY
+ GLFW_cocoa_LIBRARY
+) \ No newline at end of file