Use pkg-config to check modules
authorZhenyu Wang <zhenyuw@linux.intel.com>
Thu, 10 Apr 2014 10:09:44 +0000 (18:09 +0800)
committerZhigang Gong <zhigang.gong@intel.com>
Thu, 17 Apr 2014 02:04:36 +0000 (10:04 +0800)
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.

v2: Fix build with mesa source (92e6260) and link required EGL lib with utests too.

Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Reviewed-by:Zhigang Gong <zhigang.gong@linux.intel.com>

CMake/FindDRM.cmake [deleted file]
CMake/FindDRMIntel.cmake [deleted file]
CMake/FindMesaSrc.cmake [moved from CMake/FindEGL.cmake with 55% similarity]
CMake/FindXext.cmake [deleted file]
CMake/FindXfixes.cmake [deleted file]
CMakeLists.txt
backend/src/CMakeLists.txt
src/CMakeLists.txt
utests/CMakeLists.txt

diff --git a/CMake/FindDRM.cmake b/CMake/FindDRM.cmake
deleted file mode 100644 (file)
index a5a4ebc..0000000
+++ /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 (file)
index 0aab1c7..0000000
+++ /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)
-
similarity index 55%
rename from CMake/FindEGL.cmake
rename to CMake/FindMesaSrc.cmake
index 597b4a5..c1d4fc6 100644 (file)
@@ -1,38 +1,11 @@
 #
-# Try to find EGL library and include path.
+# Try to find mesa source code
 # Once done this will define
 #
-# EGL_FOUND
-# EGL_INCLUDE_PATH
-# EGL_LIBRARY
+# MESA_SOURCE_FOUND
+# MESA_SOURCE_INCLUDES
 #
 
-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}
@@ -51,5 +24,3 @@ SET(MESA_SOURCE_FOUND 1 CACHE STRING "Set to 1 if mesa source code is found, 0 o
 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/FindXext.cmake b/CMake/FindXext.cmake
deleted file mode 100644 (file)
index 5bbd719..0000000
+++ /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 (file)
index 47259e1..0000000
+++ /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)
-
index 4ed27b5..60e6358 100644 (file)
@@ -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,50 +82,65 @@ 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)
 
+# cl_khr_gl_sharing requires to build with mesa source
+Find_Package(MesaSrc)
 IF(MESA_SOURCE_FOUND)
-  MESSAGE(STATUS "Looking for mesa source code - found")
+  MESSAGE(STATUS "Looking for mesa source code - found at ${MESA_SOURCE_PREFIX}")
 ELSE(MESA_SOURCE_FOUND)
   MESSAGE(STATUS "Looking for mesa source code - not found, cl_khr_gl_sharing will be disabled.")
 ENDIF(MESA_SOURCE_FOUND)
index d6f2d3c..420e50d 100644 (file)
@@ -180,9 +180,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}
index d690d9a..8164a44 100644 (file)
@@ -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)
index 9ca9c8b..aa7efa6 100644 (file)
@@ -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
@@ -202,11 +203,14 @@ if (EGL_FOUND AND MESA_SOURCE_FOUND)
 SET(utests_sources ${utests_sources} compiler_fill_gl_image.cpp)
 SET(CMAKE_CXX_FLAGS "-DHAS_EGL ${CMAKE_CXX_FLAGS} ${DEF_OCL_PCH_PCM_PATH}")
 SET(CMAKE_C_FLAGS "-DHAS_EGL ${CMAKE_C_FLAGS} ${DEF_OCL_PCH_PCM_PATH}")
-endif (EGL_FOUND AND MESA_SOURCE_FOUND)
+SET(UTESTS_REQUIRED_EGL_LIB ${EGL_LIBRARIES})
+else()
+SET(UTESTS_REQUIRED_EGL_LIB "")
+endif()
 
 ADD_LIBRARY(utests SHARED ${ADDMATHFUNC} ${utests_sources})
 
-TARGET_LINK_LIBRARIES(utests cl m ${OPENGL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
+TARGET_LINK_LIBRARIES(utests cl m ${OPENGL_LIBRARIES} ${UTESTS_REQUIRED_EGL_LIB} ${CMAKE_THREAD_LIBS_INIT})
 
 ADD_EXECUTABLE(utest_run utest_run.cpp)
 TARGET_LINK_LIBRARIES(utest_run utests)