FindOSMesa.cmake
Go to the documentation of this file.
1 # Try to find Mesa off-screen library and include dir.
2 # Once done this will define
3 #
4 # OSMesa_FOUND - true if OSMesa has been found
5 # OSMesa_INCLUDE_DIRS - where the GL/osmesa.h can be found
6 # OSMesa_LIBRARIES - Link this to use OSMesa
7 # OSMesa_VERSION - Version of OSMesa found
8 # OSMesa::OSMesa - Imported target
9 
10 find_path(OSMESA_INCLUDE_DIR
11  NAMES GL/osmesa.h
12  PATHS "${OSMESA_ROOT}/include"
13  "$ENV{OSMESA_ROOT}/include"
14  /usr/openwin/share/include
15  /opt/graphics/OpenGL/include
16  DOC "OSMesa include directory")
17 mark_as_advanced(OSMESA_INCLUDE_DIR)
18 
19 find_library(OSMESA_LIBRARY
20  NAMES OSMesa OSMesa16 OSMesa32
21  PATHS "${OSMESA_ROOT}/lib"
22  "$ENV{OSMESA_ROOT}/lib"
23  /opt/graphics/OpenGL/lib
24  /usr/openwin/lib
25  DOC "OSMesa library")
26 mark_as_advanced(OSMESA_LIBRARY)
27 
28 if (OSMESA_INCLUDE_DIR AND EXISTS "${OSMESA_INCLUDE_DIR}/GL/osmesa.h")
29  file(STRINGS "${OSMESA_INCLUDE_DIR}/GL/osmesa.h" _OSMesa_version_lines
30  REGEX "OSMESA_[A-Z]+_VERSION")
31  string(REGEX REPLACE ".*# *define +OSMESA_MAJOR_VERSION +([0-9]+).*" "\\1" _OSMesa_version_major "${_OSMesa_version_lines}")
32  string(REGEX REPLACE ".*# *define +OSMESA_MINOR_VERSION +([0-9]+).*" "\\1" _OSMesa_version_minor "${_OSMesa_version_lines}")
33  string(REGEX REPLACE ".*# *define +OSMESA_PATCH_VERSION +([0-9]+).*" "\\1" _OSMesa_version_patch "${_OSMesa_version_lines}")
34  set(OSMesa_VERSION "${_OSMesa_version_major}.${_OSMesa_version_minor}.${_OSMesa_version_patch}")
35  unset(_OSMesa_version_major)
36  unset(_OSMesa_version_minor)
37  unset(_OSMesa_version_patch)
38  unset(_OSMesa_version_lines)
39 endif ()
40 
41 include(FindPackageHandleStandardArgs)
42 find_package_handle_standard_args(OSMesa
43  REQUIRED_VARS OSMESA_INCLUDE_DIR OSMESA_LIBRARY
44  VERSION_VAR OSMesa_VERSION)
45 
46 if (OSMesa_FOUND)
47  set(OSMesa_INCLUDE_DIRS "${OSMESA_INCLUDE_DIR}")
48  set(OSMesa_LIBRARIES "${OSMESA_LIBRARY}")
49 
50  if (NOT TARGET OSMesa::OSMesa)
51  add_library(OSMesa::OSMesa UNKNOWN IMPORTED)
52  set_target_properties(OSMesa::OSMesa PROPERTIES
53  IMPORTED_LOCATION "${OSMESA_LIBRARY}"
54  INTERFACE_INCLUDE_DIRECTORIES "${OSMESA_INCLUDE_DIR}")
55  endif ()
56 endif ()
string