summaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindGBM.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/modules/FindGBM.cmake')
-rw-r--r--cmake/modules/FindGBM.cmake68
1 files changed, 68 insertions, 0 deletions
diff --git a/cmake/modules/FindGBM.cmake b/cmake/modules/FindGBM.cmake
new file mode 100644
index 0000000..37a26a7
--- /dev/null
+++ b/cmake/modules/FindGBM.cmake
@@ -0,0 +1,68 @@
+# FindGBM
+# ----------
+# Finds the GBM library
+#
+# This will define the following variables::
+#
+# GBM_FOUND - system has GBM
+# GBM_INCLUDE_DIRS - the GBM include directory
+# GBM_LIBRARIES - the GBM libraries
+# GBM_DEFINITIONS - the GBM definitions
+#
+# and the following imported targets::
+#
+# GBM::GBM - The GBM library
+
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_GBM gbm QUIET)
+endif()
+
+find_path(GBM_INCLUDE_DIR NAMES gbm.h
+ PATHS ${PC_GBM_INCLUDEDIR})
+find_library(GBM_LIBRARY NAMES gbm
+ PATHS ${PC_GBM_LIBDIR})
+
+set(GBM_VERSION ${PC_GBM_VERSION})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GBM
+ REQUIRED_VARS GBM_LIBRARY GBM_INCLUDE_DIR
+ VERSION_VAR GBM_VERSION)
+
+include(CheckCSourceCompiles)
+set(CMAKE_REQUIRED_LIBRARIES ${GBM_LIBRARY})
+check_c_source_compiles("#include <gbm.h>
+
+ int main()
+ {
+ gbm_bo_map(NULL, 0, 0, 0, 0, GBM_BO_TRANSFER_WRITE, NULL, NULL);
+ }
+ " GBM_HAS_BO_MAP)
+
+check_c_source_compiles("#include <gbm.h>
+
+ int main()
+ {
+ gbm_surface_create_with_modifiers(NULL, 0, 0, 0, NULL, 0);
+ }
+ " GBM_HAS_MODIFIERS)
+
+if(GBM_FOUND)
+ set(GBM_LIBRARIES ${GBM_LIBRARY})
+ set(GBM_INCLUDE_DIRS ${GBM_INCLUDE_DIR})
+ set(GBM_DEFINITIONS -DHAVE_GBM=1)
+ if(GBM_HAS_BO_MAP)
+ list(APPEND GBM_DEFINITIONS -DHAS_GBM_BO_MAP=1)
+ endif()
+ if(GBM_HAS_MODIFIERS)
+ list(APPEND GBM_DEFINITIONS -DHAS_GBM_MODIFIERS=1)
+ endif()
+ if(NOT TARGET GBM::GBM)
+ add_library(GBM::GBM UNKNOWN IMPORTED)
+ set_target_properties(GBM::GBM PROPERTIES
+ IMPORTED_LOCATION "${GBM_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GBM_INCLUDE_DIR}")
+ endif()
+endif()
+
+mark_as_advanced(GBM_INCLUDE_DIR GBM_LIBRARY)