100 lines
2.6 KiB
CMake
100 lines
2.6 KiB
CMake
#[=======================================================================[.rst:
|
|
FindV4L2
|
|
----------
|
|
|
|
Find V4L2 headers and libv4l2
|
|
|
|
|
|
This module accepts optional COMPONENTS:
|
|
|
|
videodev2 (default)
|
|
libv4l2
|
|
|
|
IMPORTED Targets
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module defines the following :prop_tgt:`IMPORTED` targets::
|
|
|
|
``V4L2::videodev2``
|
|
The Video for Linux Two header file, if found.
|
|
``V4L2::libv4l2``
|
|
A thin abstraction layer on top of video4linux2 devices, if found.
|
|
|
|
Result Variables
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
``V4L2_FOUND``
|
|
System has v4l2 support. If no components are specified only the videodev2.h header has to be found.
|
|
``V4L2_INCLUDE_DIRS``
|
|
The v4l2 include directories.
|
|
``V4L2_LIBRARIES``
|
|
The libraries needed to have v4l2 support according to the specified components.
|
|
#]=======================================================================]
|
|
|
|
find_path(V4L2_VIDEODEV2_INCLUDE_DIR
|
|
NAMES linux/videodev2.h)
|
|
mark_as_advanced(V4L2_VIDEODEV2_INCLUDE_DIR)
|
|
|
|
if(EXISTS "${V4L2_VIDEODEV2_INCLUDE_DIR}")
|
|
set(V4L2_videodev2_FOUND TRUE)
|
|
else()
|
|
set(V4L2_videodev2_FOUND FALSE)
|
|
endif()
|
|
|
|
pkg_check_modules(PC_V4L2_LIBV4L2 QUIET libv4l2)
|
|
|
|
find_path(V4L2_LIBV4L2_INCLUDE_DIR
|
|
NAMES libv4l2.h
|
|
HINTS
|
|
${PC_V4L2_LIBV4L2_INCLUDEDIR}
|
|
${PC_V4L2_LIBV4L2_INCLUDE_DIRS})
|
|
mark_as_advanced(V4L2_LIBV4L2_INCLUDE_DIR)
|
|
|
|
find_library(V4L2_LIBV4L2_LIBRARY
|
|
NAMES ${PC_V4L2_LIBV4L2_LIBRARIES}
|
|
HINTS
|
|
${PC_V4L2_LIBV4L2_LIBDIR}
|
|
${PC_V4L2_LIBV4L2_LIBRARY_DIR})
|
|
mark_as_advanced(V4L2_LIBV4L2_LIBRARY)
|
|
|
|
if(EXISTS "${V4L2_LIBV4L2_INCLUDE_DIR}" AND
|
|
EXISTS "${V4L2_LIBV4L2_LIBRARY}")
|
|
set(V4L2_libv4l2_FOUND TRUE)
|
|
else()
|
|
set(V4L2_libv4l2_FOUND FALSE)
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(V4L2
|
|
REQUIRED_VARS
|
|
V4L2_VIDEODEV2_INCLUDE_DIR
|
|
HANDLE_COMPONENTS)
|
|
|
|
set(V4L2_INCLUDE_DIRS)
|
|
set(V4L2_LIBRARIES)
|
|
|
|
if(V4L2_videodev2_FOUND)
|
|
set(V4L2_VIDEODEV2_INCLUDE_DIRS ${V4L2_VIDEODEV2_INCLUDE_DIR})
|
|
list(APPEND V4L2_INCLUDE2_DIRS
|
|
"${V4L2_VIDEODEV2_INCLUDE_DIRS}")
|
|
|
|
add_library(V4L2::videodev2 INTERFACE IMPORTED)
|
|
set_target_properties(V4L2::videodev2 PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${V4L2_VIDEODEV2_INCLUDE_DIRS}")
|
|
endif()
|
|
|
|
if(V4L2_libv4l2_FOUND)
|
|
set(V4L2_LIBV4L2_INCLUDE_DIRS ${V4L2_LIBV4L2_INCLUDE_DIR})
|
|
set(V4L2_LIBV4L2_LIBRARIES ${V4L2_LIBV4L2_LIBRARY})
|
|
|
|
list(APPEND V4L2_INCLUDE_DIRS
|
|
"${V4L2_LIBV4L2_INCLUDE_DIRS}")
|
|
list(APPEND V4L2_LIBRARIES
|
|
"${V4L2_LIBV4L2_LIBRARIES}")
|
|
|
|
add_library(V4L2::libv4l2 UNKNOWN IMPORTED)
|
|
set_target_properties(V4L2::libv4l2 PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${V4L2_LIBV4L2_INCLUDE_DIRS}"
|
|
IMPORTED_LOCATION "${V4L2_LIBV4L2_LIBRARY}")
|
|
endif()
|