[Beignet] [PATCH] Use pkg-config to check modules

Zhenyu Wang zhenyuw at linux.intel.com
Tue Apr 8 19:17:00 PDT 2014


Instead of use pre-defined path for dependent modules, e.g libdrm,
libdrm_intel, etc. Use pkg-config helper for cmake instead. This makes
it easy to work with developer own built version of those dependences.

Also remove libGL dependence for 'gbe_bin_generator' which is not required.
libutest.so still requires libGL now but might be fixed by checking real
GL dependence.

Signed-off-by: Zhenyu Wang <zhenyuw at linux.intel.com>
---
 CMake/FindDRM.cmake        | 42 -----------------------------------
 CMake/FindDRMIntel.cmake   | 43 ------------------------------------
 CMake/FindEGL.cmake        | 55 ----------------------------------------------
 CMake/FindMesaSrc.cmake    | 26 ++++++++++++++++++++++
 CMake/FindXext.cmake       | 35 -----------------------------
 CMake/FindXfixes.cmake     | 35 -----------------------------
 CMakeLists.txt             | 43 ++++++++++++++++++++++++------------
 backend/src/CMakeLists.txt |  5 ++---
 src/CMakeLists.txt         | 12 +++++-----
 utests/CMakeLists.txt      |  3 ++-
 10 files changed, 65 insertions(+), 234 deletions(-)
 delete mode 100644 CMake/FindDRM.cmake
 delete mode 100644 CMake/FindDRMIntel.cmake
 delete mode 100644 CMake/FindEGL.cmake
 create mode 100644 CMake/FindMesaSrc.cmake
 delete mode 100644 CMake/FindXext.cmake
 delete mode 100644 CMake/FindXfixes.cmake

diff --git a/CMake/FindDRM.cmake b/CMake/FindDRM.cmake
deleted file mode 100644
index a5a4ebc..0000000
--- a/CMake/FindDRM.cmake
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Try to find X library and include path.
-# Once done this will define
-#
-# DRM_FOUND
-# DRM_INCLUDE_PATH
-# DRM_LIBRARY
-# 
-
-FIND_PATH(DRM_INCLUDE_PATH
-  NAMES
-  drm.h
-  PATHS
-  ${CMAKE_INCLUDE_PATH}/include/libdrm/
-  ~/include/libdrm/
-  /usr/include/libdrm/
-  /usr/local/include/libdrm/
-  /sw/include/libdrm/
-  /opt/local/include/libdrm/
-  DOC "The directory where drm.h resides")
-FIND_LIBRARY(DRM_LIBRARY
-  NAMES DRM drm
-  PATHS
-  ${CMAKE_LIBRARY_PATH}/lib/
-  ~/lib/
-  /usr/lib64
-  /usr/lib
-  /usr/local/lib64
-  /usr/local/lib
-  /sw/lib
-  /opt/local/lib
-  DOC "The DRM library")
-
-IF(DRM_INCLUDE_PATH)
-  INCLUDE_DIRECTORIES(${DRM_INCLUDE_PATH})
-  SET(DRM_FOUND 1 CACHE STRING "Set to 1 if DRM is found, 0 otherwise")
-ELSE(DRM_INCLUDE_PATH)
-  SET(DRM_FOUND 0 CACHE STRING "Set to 1 if DRM is found, 0 otherwise")
-ENDIF(DRM_INCLUDE_PATH)
-
-MARK_AS_ADVANCED(DRM_FOUND)
-
diff --git a/CMake/FindDRMIntel.cmake b/CMake/FindDRMIntel.cmake
deleted file mode 100644
index 0aab1c7..0000000
--- a/CMake/FindDRMIntel.cmake
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# Try to find X library and include path.
-# Once done this will define
-#
-# DRM_INTEL_FOUND
-# DRM_INTEL_INCLUDE_PATH
-# 
-
-FIND_PATH(DRM_INTEL_INCLUDE_PATH
-  NAMES
-  intel_bufmgr.h
-  PATHS
-  ${CMAKE_INCLUDE_PATH}/include/libdrm/
-  ~/include/libdrm/
-  /usr/include/libdrm/
-  /usr/local/include/libdrm/
-  /sw/include/libdrm/
-  /opt/local/include/libdrm/
-  DOC "The directory where intel_bufmgr.h resides")
-
-FIND_LIBRARY(DRM_INTEL_LIBRARY
-  NAMES DRM_INTEL drm_intel
-  PATHS
-  ${CMAKE_LIBRARY_PATH}/lib/
-  ~/lib/
-  /usr/lib64
-  /usr/lib
-  /usr/local/lib64
-  /usr/local/lib
-  /sw/lib
-  /opt/local/lib
-  /usr/lib/i386-linux-gnu/
-  DOC "The DRM_INTEL library")
-
-IF(DRM_INTEL_INCLUDE_PATH)
-  INCLUDE_DIRECTORIES(${DRM_INTEL_INCLUDE_PATH})
-  SET(DRM_INTEL_FOUND 1 CACHE STRING "Set to 1 if DRM_INTEL is found, 0 otherwise")
-ELSE(DRM_INTEL_INCLUDE_PATH)
-  SET(DRM_INTEL_FOUND 0 CACHE STRING "Set to 1 if DRM_INTEL is found, 0 otherwise")
-ENDIF(DRM_INTEL_INCLUDE_PATH)
-
-MARK_AS_ADVANCED(DRM_INTEL_FOUND)
-
diff --git a/CMake/FindEGL.cmake b/CMake/FindEGL.cmake
deleted file mode 100644
index 597b4a5..0000000
--- a/CMake/FindEGL.cmake
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# Try to find EGL library and include path.
-# Once done this will define
-#
-# EGL_FOUND
-# EGL_INCLUDE_PATH
-# EGL_LIBRARY
-#
-
-FIND_PATH(EGL_INCLUDE_PATH EGL/egl.h
-  ~/include/
-  /usr/include/
-  /usr/local/include/
-  /sw/include/
-  /opt/local/include/
-  DOC "The directory where gen/program.h resides")
-FIND_LIBRARY(EGL_LIBRARY
-  NAMES EGL egl
-  PATHS
-  ~/lib/
-  /usr/lib64
-  /usr/lib
-  /usr/local/lib64
-  /usr/local/lib
-  /sw/lib
-  /opt/local/lib
-  DOC "The EGL library")
-
-IF(EGL_INCLUDE_PATH)
-  INCLUDE_DIRECTORIES(${EGL_INCLUDE_PATH})
-  SET(EGL_FOUND 1 CACHE STRING "Set to 1 if EGL is found, 0 otherwise")
-ELSE(EGL_INCLUDE_PATH)
-  SET(EGL_FOUND 0 CACHE STRING "Set to 1 if EGL is found, 0 otherwise")
-ENDIF(EGL_INCLUDE_PATH)
-
-# Find mesa source code.
-FIND_PATH(MESA_SOURCE_PREFIX src/mesa/main/texobj.c
-  $ENV{MESA_SOURCE_DIR}
-  ${MAKE_CURRENT_SOURCE_DIR}/../mesa
-  ~/mesa
-  DOC "The mesa source directory which is needed for cl_khr_gl_sharing.")
-
-IF(MESA_SOURCE_PREFIX)
-SET(MESA_SOURCE_INCLUDES ${MESA_SOURCE_PREFIX}/src/mesa
-                         ${MESA_SOURCE_PREFIX}/include
-                         ${MESA_SOURCE_PREFIX}/src/mapi
-                         ${MESA_SOURCE_PREFIX}/src/mesa/drivers/dri/i965/
-                         ${MESA_SOURCE_PREFIX}/src/mesa/drivers/dri/intel/
-                         ${MESA_SOURCE_PREFIX}/src/mesa/drivers/dri/common/)
-SET(MESA_SOURCE_FOUND 1 CACHE STRING "Set to 1 if mesa source code is found, 0 otherwise")
-ELSE(MESA_SOURCE_PREFIX)
-SET(MESA_SOURCE_FOUND 0 CACHE STRING "Set to 1 if mesa source code is found, 0 otherwise")
-ENDIF(MESA_SOURCE_PREFIX)
-
-MARK_AS_ADVANCED(EGL_FOUND)
diff --git a/CMake/FindMesaSrc.cmake b/CMake/FindMesaSrc.cmake
new file mode 100644
index 0000000..c1d4fc6
--- /dev/null
+++ b/CMake/FindMesaSrc.cmake
@@ -0,0 +1,26 @@
+#
+# Try to find mesa source code
+# Once done this will define
+#
+# MESA_SOURCE_FOUND
+# MESA_SOURCE_INCLUDES
+#
+
+# Find mesa source code.
+FIND_PATH(MESA_SOURCE_PREFIX src/mesa/main/texobj.c
+  $ENV{MESA_SOURCE_DIR}
+  ${MAKE_CURRENT_SOURCE_DIR}/../mesa
+  ~/mesa
+  DOC "The mesa source directory which is needed for cl_khr_gl_sharing.")
+
+IF(MESA_SOURCE_PREFIX)
+SET(MESA_SOURCE_INCLUDES ${MESA_SOURCE_PREFIX}/src/mesa
+                         ${MESA_SOURCE_PREFIX}/include
+                         ${MESA_SOURCE_PREFIX}/src/mapi
+                         ${MESA_SOURCE_PREFIX}/src/mesa/drivers/dri/i965/
+                         ${MESA_SOURCE_PREFIX}/src/mesa/drivers/dri/intel/
+                         ${MESA_SOURCE_PREFIX}/src/mesa/drivers/dri/common/)
+SET(MESA_SOURCE_FOUND 1 CACHE STRING "Set to 1 if mesa source code is found, 0 otherwise")
+ELSE(MESA_SOURCE_PREFIX)
+SET(MESA_SOURCE_FOUND 0 CACHE STRING "Set to 1 if mesa source code is found, 0 otherwise")
+ENDIF(MESA_SOURCE_PREFIX)
diff --git a/CMake/FindXext.cmake b/CMake/FindXext.cmake
deleted file mode 100644
index 5bbd719..0000000
--- a/CMake/FindXext.cmake
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Try to find Xext library path.
-# Once done this will define
-#
-# XEXT_FOUND
-# XEXT_LIBRARY
-# 
-
-FIND_PATH(XEXT_INCLUDE_PATH X11/extensions/Xext.h
-  /usr/include
-  /usr/local/include
-  /sw/include
-  /opt/local/include
-  DOC "The directory where Xext.h resides")
-
-FIND_LIBRARY(XEXT_LIBRARY
-  NAMES XEXT Xext
-  PATHS
-  /usr/lib64
-  /usr/lib
-  /usr/local/lib64
-  /usr/local/lib
-  /sw/lib
-  /opt/local/lib
-  DOC "The XEXT library")
-
-IF(XEXT_INCLUDE_PATH)
-  INCLUDE_DIRECTORIES(${XEXT_INCLUDE_PATH})
-  SET(XEXT_FOUND 1 CACHE STRING "Set to 1 if XEXT is found, 0 otherwise")
-ELSE(XEXT_INCLUDE_PATH)
-  SET(XEXT_FOUND 0 CACHE STRING "Set to 1 if XEXT is found, 0 otherwise")
-ENDIF(XEXT_INCLUDE_PATH)
-
-MARK_AS_ADVANCED(XEXT_FOUND)
-
diff --git a/CMake/FindXfixes.cmake b/CMake/FindXfixes.cmake
deleted file mode 100644
index 47259e1..0000000
--- a/CMake/FindXfixes.cmake
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Try to find Xfixes library path.
-# Once done this will define
-#
-# XFIXES_FOUND
-# XFIXES_LIBRARY
-# 
-
-FIND_PATH(XFIXES_INCLUDE_PATH X11/extensions/Xfixes.h
-  /usr/include
-  /usr/local/include
-  /sw/include
-  /opt/local/include
-  DOC "The directory where Xfixes.h resides")
-
-FIND_LIBRARY(XFIXES_LIBRARY
-  NAMES XFIXES Xfixes
-  PATHS
-  /usr/lib64
-  /usr/lib
-  /usr/local/lib64
-  /usr/local/lib
-  /sw/lib
-  /opt/local/lib
-  DOC "The XFIXES library")
-
-IF(XFIXES_INCLUDE_PATH)
-  INCLUDE_DIRECTORIES(${XFIXES_INCLUDE_PATH})
-  SET(XFIXES_FOUND 1 CACHE STRING "Set to 1 if XFIXES is found, 0 otherwise")
-ELSE(XFIXES_INCLUDE_PATH)
-  SET(XFIXES_FOUND 0 CACHE STRING "Set to 1 if XFIXES is found, 0 otherwise")
-ENDIF(XFIXES_INCLUDE_PATH)
-
-MARK_AS_ADVANCED(XFIXES_FOUND)
-
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4ed27b5..a4254f8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,6 +21,8 @@ configure_file (
 
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
 
+INCLUDE (FindPkgConfig)
+
 SET(CMAKE_VERBOSE_MAKEFILE "false")
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/")
 if (NOT LIB_INSTALL_DIR)
@@ -80,44 +82,57 @@ ELSE(X11_FOUND)
 ENDIF(X11_FOUND)
 
 # DRM
-Find_Package(DRM)
+pkg_check_modules(DRM REQUIRED libdrm)
 IF(DRM_FOUND)
-  MESSAGE(STATUS "Looking for DRM - found")
+  MESSAGE(STATUS "Looking for DRM - found at ${DRM_PREFIX}")
+  INCLUDE_DIRECTORIES(${DRM_INCLUDE_DIRS})
 ELSE(DRM_FOUND)
   MESSAGE(STATUS "Looking for DRM - not found")
 ENDIF(DRM_FOUND)
 
-# OpenGL
-Find_Package(OpenGL)
-# Threads
-Find_Package(Threads)
 # DRM Intel
-Find_Package(DRMIntel)
+pkg_check_modules(DRM_INTEL REQUIRED libdrm_intel)
 IF(DRM_INTEL_FOUND)
-  MESSAGE(STATUS "Looking for DRM Intel - found")
+  INCLUDE_DIRECTORIES(${DRM_INTEL_INCLUDE_DIRS})
+  MESSAGE(STATUS "Looking for DRM Intel - found at ${DRM_INTEL_PREFIX}")
 ELSE(DRM_INTEL_FOUND)
   MESSAGE(STATUS "Looking for DRM Intel - not found")
 ENDIF(DRM_INTEL_FOUND)
 
+# OpenGL (not use cmake helper)
+pkg_check_modules(OPENGL REQUIRED gl)
+IF(OPENGL_FOUND)
+  INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIRS})
+  MESSAGE(STATUS "Looking for OpenGL - found at ${OPENGL_PREFIX}")
+ELSE(OPENGL_FOUND)
+  MESSAGE(STATUS "Looking for OpenGL - not found")
+ENDIF(OPENGL_FOUND)
+
+
+# Threads
+Find_Package(Threads)
+
 # Xext
-Find_Package(Xext)
+pkg_check_modules(XEXT REQUIRED xext)
 IF(XEXT_FOUND)
-  MESSAGE(STATUS "Looking for Xext - found")
+  INCLUDE_DIRECTORIES(${XEXT_INCLUDE_DIRS})
+  MESSAGE(STATUS "Looking for Xext - found at ${XEXT_PREFIX}")
 ELSE(XEXT_FOUND)
   MESSAGE(STATUS "Looking for Xext - not found")
 ENDIF(XEXT_FOUND)
 
 # Xfixes
-Find_Package(Xfixes)
+pkg_check_modules(XFIXES REQUIRED xfixes)
 IF(XFIXES_FOUND)
-  MESSAGE(STATUS "Looking for Xfixes - found")
+  INCLUDE_DIRECTORIES(${XFIXES_INCLUDE_DIRS})
+  MESSAGE(STATUS "Looking for Xfixes - found at ${XFIXES_PREFIX}")
 ELSE(XFIXES_FOUND)
   MESSAGE(STATUS "Looking for Xfixes - not found")
 ENDIF(XFIXES_FOUND)
 
-Find_Package(EGL)
+pkg_check_modules(EGL egl)
 IF(EGL_FOUND)
-  MESSAGE(STATUS "Looking for EGL - found")
+  MESSAGE(STATUS "Looking for EGL - found at ${EGL_PREFIX}")
 ELSE(EGL_FOUND)
   MESSAGE(STATUS "Looking for EGL - not found")
 ENDIF(EGL_FOUND)
diff --git a/backend/src/CMakeLists.txt b/backend/src/CMakeLists.txt
index 6e37d95..12d337b 100644
--- a/backend/src/CMakeLists.txt
+++ b/backend/src/CMakeLists.txt
@@ -179,9 +179,8 @@ ll_add_library (${pcm_lib} pcm_sources)
 ADD_DEPENDENCIES (gbe pch_object ${pcm_lib})
 target_link_libraries(
                       gbe
-                      ${DRM_INTEL_LIBRARY}
-                      ${DRM_LIBRARY}
-                      ${OPENGL_LIBRARIES}
+                      ${DRM_INTEL_LIBRARIES}
+                      ${DRM_LIBRARIES}
                       ${CLANG_LIBRARIES}
                       ${LLVM_MODULE_LIBS}
                       ${LLVM_SYSTEM_LIBS}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d690d9a..8164a44 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,6 @@
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}
-                    ${DRM_INCLUDE_PATH}
-                    ${DRM_INCLUDE_PATH}/../
+                    ${DRM_INCLUDE_DIRS}
+                    ${DRM_INCLUDE_DIRS}/../
                     ${CMAKE_CURRENT_SOURCE_DIR}/../backend/src/backend/
                     ${CMAKE_CURRENT_SOURCE_DIR}/../include
                     ${MESA_SOURCE_INCLUDES})
@@ -75,10 +75,10 @@ target_link_libraries(
                       cl
                       gbe
                       ${XLIB_LIBRARY}
-                      ${XEXT_LIBRARY}
-                      ${XFIXES_LIBRARY}
-                      ${DRM_INTEL_LIBRARY}
-                      ${DRM_LIBRARY}
+                      ${XEXT_LIBRARIES}
+                      ${XFIXES_LIBRARIES}
+                      ${DRM_INTEL_LIBRARIES}
+                      ${DRM_LIBRARIES}
                       ${OPENGL_LIBRARIES}
                       ${OPTIONAL_EGL_LIBRARY})
 install (TARGETS cl LIBRARY DESTINATION ${LIB_INSTALL_DIR}/beignet)
diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt
index 9ca9c8b..4fcc5dd 100644
--- a/utests/CMakeLists.txt
+++ b/utests/CMakeLists.txt
@@ -18,7 +18,8 @@ configure_file (
   "setenv.sh"
   )
 
-link_directories (${LLVM_LIBRARY_DIR})
+#XXX only need GL if required
+link_directories (${LLVM_LIBRARY_DIR} ${OPENGL_LIBDIR})
 set (utests_sources
   utest_error.c
   compiler_basic_arithmetic.cpp
-- 
1.9.1



More information about the Beignet mailing list