kde-playground/kaffeine/cmake/modules/FindVLC.cmake
2015-03-04 07:15:19 +00:00

117 lines
3.7 KiB
CMake

###############################################################################
# CMake module to search for the vlc libraries.
#
# WARNING: This module is experimental work in progress.
#
# This module defines:
# VLC_INCLUDE_DIRS = include dirs to be used when using the vlc library.
# VLC_LIBRARY_DIRS = directories where the libraries are located.
# VLC_LIBRARY = full path to the vlc library.
# VLC_CORE_LIBRARY = full path to the vlccore library.
# VLC_VERSION_STRING = the vlc version found
# VLC_VERSION_MAJOR
# VLC_VERSION_MINOR
# VLC_VERSION_PATCH
# VLC_VERSION_EXTRA
# VLC_FOUND = true if vlc was found.
#
# This module respects:
# LIB_SUFFIX = (64|32|"") Specifies the suffix for the lib directory
#
# Copyright (c) 2011 Michael Jansen <info@michael-jansen.biz>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
###############################################################################
#
### Global Configuration Section
#
SET(_VLC_REQUIRED_VARS VLC_INCLUDE_DIR VLC_LIBRARY)
## FIXME
# SET(_VLC_REQUIRED_VARS VLC_INCLUDE_DIR VLC_LIBRARY VLC_VERSION_MAJOR VLC_VERSION_MINOR)
#
### VLC uses pkgconfig.
#
find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_VLC QUIET libvlc)
endif(PKG_CONFIG_FOUND)
#
### Look for the include files.
#
find_path(
VLC_INCLUDE_DIR
NAMES vlc/vlc.h
HINTS
${PC_VLC_INCLUDEDIR}
${PC_VLC_INCLUDE_DIRS} # Unused for vlc but anyway
DOC "VLC include directory"
)
mark_as_advanced(VLC_INCLUDE_DIR)
set(VLC_INCLUDE_DIRS ${VLC_INCLUDE_DIR})
#
### Look for the libraries (vlc and vlcsore)
#
find_library(
VLC_LIBRARY
NAMES vlc
HINTS
${PC_VLC_LIBDIR}
${PC_VLC_LIBRARY_DIRS} # Unused for vlc but anyway
PATH_SUFFIXES lib${LIB_SUFFIX}
)
get_filename_component(_VLC_LIBRARY_DIR ${VLC_LIBRARY} PATH)
mark_as_advanced(VLC_LIBRARY )
find_library(
VLC_CORE_LIBRARY
NAMES vlccore
HINTS
${PC_VLC_LIBDIR}
${PC_VLC_LIBRARY_DIRS}
PATH_SUFFIXES lib${LIB_SUFFIX}
)
get_filename_component(_VLC_CORE_LIBRARY_DIR ${VLC_CORE_LIBRARY} PATH)
mark_as_advanced(VLC_CORE_LIBRARY )
set(VLC_LIBRARY_DIRS _VLC_CORE_LIBRARY_DIR _VLC_LIBRARY_DIR)
list(REMOVE_DUPLICATES VLC_LIBRARY_DIRS)
mark_as_advanced(VLC_LIBRARY_DIRS)
#
### Now parse the version
#
if(VLC_INCLUDE_DIR)
if(EXISTS "${VLC_INCLUDE_DIR}/vlc/libvlc_version.h" )
file( STRINGS "${VLC_INCLUDE_DIR}/vlc/libvlc_version.h" VLC_INFO_H REGEX "^# *define LIBVLC_VERSION_.*\\([0-9]+\\).*$")
string(REGEX REPLACE ".*LIBVLC_VERSION_MAJOR +\\(([0-9]+)\\).*" "\\1" VLC_VERSION_MAJOR "${VLC_INFO_H}")
string(REGEX REPLACE ".*LIBVLC_VERSION_MINOR +\\(([0-9]+)\\).*" "\\1" VLC_VERSION_MINOR "${VLC_INFO_H}")
string(REGEX REPLACE ".*LIBVLC_VERSION_REVISION +\\(([0-9]+)\\).*" "\\1" VLC_VERSION_PATCH "${VLC_INFO_H}")
string(REGEX REPLACE ".*LIBVLC_VERSION_EXTRA +\\(([0-9]+)\\).*" "\\1" VLC_VERSION_EXTRA "${VLC_INFO_H}")
set(VLC_VERSION_STRING "${VLC_VERSION_MAJOR}.${VLC_VERSION_MINOR}.${VLC_VERSION_PATCH}.${VLC_VERSION_EXTRA}")
mark_as_advanced(
VLC_VERSION_MAJOR
VLC_VERSION_MINOR
VLC_VERSION_PATCH
VLC_VERSION_EXTRA
VLC_VERSION_STRING)
else()
message(FATAL_ERROR "Could not find vlc/vlc_version.h")
endif()
endif()
#
### Check if everything was found and if the version is sufficient.
#
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
VLC
REQUIRED_VARS ${_VLC_REQUIRED_VARS}
VERSION_VAR VLC_VERSION_STRING
)