mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-14 23:34:08 +00:00
ae6e9c875b
OBS CMake build framework 3.0 is a minor overhaul of version 2.0. Due to close proximity of the 2.0 rework, the amount of actual changes to project files are minimal and mostly concern application generation. This commit contains the bootstrap elements only and requires OS-specific implementations to be functional.
112 lines
3.3 KiB
CMake
112 lines
3.3 KiB
CMake
#[=======================================================================[.rst
|
|
FindLibVLC
|
|
----------
|
|
|
|
FindModule for LibVLC and associated libraries
|
|
|
|
.. versionchanged:: 3.0
|
|
Updated FindModule to CMake standards
|
|
|
|
Imported Targets
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
.. versionadded:: 2.0
|
|
|
|
This module defines the :prop_tgt:`IMPORTED` target ``VLC::LibVLC``.
|
|
|
|
Result Variables
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module sets the following variables:
|
|
|
|
``LibVLC_FOUND``
|
|
True, if all required components and the core library were found.
|
|
``LibVLC_VERSION``
|
|
Detected version of found LibVLC libraries.
|
|
|
|
Cache variables
|
|
^^^^^^^^^^^^^^^
|
|
|
|
The following cache variables may also be set:
|
|
|
|
``LibVLC_LIBRARY``
|
|
Path to the library component of LibVLC.
|
|
``LibVLC_INCLUDE_DIR``
|
|
Directory containing ``libvlc.h``.
|
|
|
|
#]=======================================================================]
|
|
|
|
# cmake-format: off
|
|
# cmake-lint: disable=C0103
|
|
# cmake-lint: disable=C0301
|
|
# cmake-format: on
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
|
|
find_package(PkgConfig QUIET)
|
|
if(PKG_CONFIG_FOUND)
|
|
pkg_search_module(PC_LibVLC QUIET libvlc)
|
|
endif()
|
|
|
|
find_path(
|
|
LibVLC_INCLUDE_DIR
|
|
NAMES libvlc.h
|
|
HINTS ${PC_LibVLC_INCLUDE_DIRS}
|
|
PATHS /usr/include /usr/local/include
|
|
PATH_SUFFIXES vlc include/vlc include
|
|
DOC "LibVLC include directory")
|
|
|
|
find_library(
|
|
LibVLC_LIBRARY
|
|
NAMES vlc libvlc
|
|
HINTS ${PC_LibVLC_LIBRARY_DIRS}
|
|
PATHS /usr/lib /usr/local/lib
|
|
DOC "LibVLC location")
|
|
|
|
if(PC_LibVLC_VERSION VERSION_GREATER 0)
|
|
set(LibVLC_VERSION ${PC_LibVLC_VERSION})
|
|
elseif(EXISTS "${LibVLC_INCLUDE_DIR}/libvlc_version.h")
|
|
file(STRINGS "${LibVLC_INCLUDE_DIR}/libvlc_version.h" _VERSION_STRING
|
|
REGEX "^.*LIBVLC_VERSION_(MAJOR|MINOR|PATCH)[ \t]+[0-9]+[ \t]*$")
|
|
string(REGEX REPLACE ".*LIBVLC_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" VERSION_MAJOR "${_VERSION_STRING}")
|
|
string(REGEX REPLACE ".*LIBVLC_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" VERSION_MINOR "${_VERSION_STRING}")
|
|
string(REGEX REPLACE ".*LIBVLC_VERSION_REVISION[ \t]+([0-9]+).*" "\\1" VERSION_REVISION "${_VERSION_STRING}")
|
|
set(LibVLC_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
|
|
else()
|
|
if(NOT LibVLC_FIND_QUIETLY)
|
|
message(AUTHOR_WARNING "Failed to find LibVLC version.")
|
|
endif()
|
|
set(LibVLC_VERSION 0.0.0)
|
|
endif()
|
|
|
|
find_package_handle_standard_args(
|
|
LibVLC
|
|
REQUIRED_VARS LibVLC_LIBRARY LibVLC_INCLUDE_DIR
|
|
VERSION_VAR LibVLC_VERSION REASON_FAILURE_MESSAGE "Ensure that libvlc-dev (vlc on BSD) is installed on the system.")
|
|
mark_as_advanced(LibVLC_INCLUDE_DIR LibVLC_LIBRARY)
|
|
|
|
if(LibVLC_FOUND)
|
|
if(NOT TARGET VLC::LibVLC)
|
|
if(IS_ABSOLUTE "${LibVLC_LIBRARY}")
|
|
add_library(VLC::LibVLC UNKNOWN IMPORTED)
|
|
set_property(TARGET VLC::LibVLC PROPERTY IMPORTED_LOCATION "${LibVLC_LIBRARY}")
|
|
else()
|
|
add_library(VLC::LibVLC INTERFACE IMPORTED)
|
|
set_property(TARGET VLC::LibVLC PROPERTY IMPORTED_LIBNAME "${LibVLC_LIBRARY}")
|
|
endif()
|
|
|
|
set_target_properties(
|
|
VLC::LibVLC
|
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_LibVLC_CFLAGS_OTHER}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${LibVLC_INCLUDE_DIR}"
|
|
VERSION ${LibVLC_VERSION})
|
|
endif()
|
|
endif()
|
|
|
|
include(FeatureSummary)
|
|
set_package_properties(
|
|
LibVLC PROPERTIES
|
|
URL "https://www.videolan.org/vlc/libvlc.html"
|
|
DESCRIPTION
|
|
"libVLC is the core engine and the interface to the multimedia framework on which VLC media player is based.")
|