From cecd52124bfd7c79108e36cae549354b16c2ef4e Mon Sep 17 00:00:00 2001 From: Zhenyu Wang Date: Thu, 10 Apr 2014 18:09:44 +0800 Subject: [PATCH] Use pkg-config to check modules MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Reviewed-by:Zhigang Gong --- CMake/FindDRM.cmake | 42 -------------------------- CMake/FindDRMIntel.cmake | 43 --------------------------- CMake/{FindEGL.cmake => FindMesaSrc.cmake} | 35 ++-------------------- CMake/FindXext.cmake | 35 ---------------------- CMake/FindXfixes.cmake | 35 ---------------------- CMakeLists.txt | 47 ++++++++++++++++++++---------- backend/src/CMakeLists.txt | 5 ++-- src/CMakeLists.txt | 12 ++++---- utests/CMakeLists.txt | 10 +++++-- 9 files changed, 50 insertions(+), 214 deletions(-) delete mode 100644 CMake/FindDRM.cmake delete mode 100644 CMake/FindDRMIntel.cmake rename CMake/{FindEGL.cmake => FindMesaSrc.cmake} (55%) 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/FindMesaSrc.cmake similarity index 55% rename from CMake/FindEGL.cmake rename to CMake/FindMesaSrc.cmake index 597b4a5..c1d4fc6 100644 --- a/CMake/FindEGL.cmake +++ b/CMake/FindMesaSrc.cmake @@ -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 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..60e6358 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,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) diff --git a/backend/src/CMakeLists.txt b/backend/src/CMakeLists.txt index d6f2d3c..420e50d 100644 --- a/backend/src/CMakeLists.txt +++ b/backend/src/CMakeLists.txt @@ -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} 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..aa7efa6 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 @@ -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) -- 2.7.4