Fixes issues using DepsPath(32|64), was using ${lib_suffix} instead of ${_lib_suffix} so 32/64-sepcific directories wouldn't work properly. Also the DepsPath environment/cmake variable wasn't specified for the library search. Also added the same dependency search paths for libfdk (if someone wants to use it on windows for whatever reason)
152 lines
5.3 KiB
CMake
152 lines
5.3 KiB
CMake
#
|
|
# This module defines the following variables:
|
|
#
|
|
# FFMPEG_FOUND - All required components and the core library were found
|
|
# FFMPEG_INCLUDE_DIRS - Combined list of all components include dirs
|
|
# FFMPEG_LIBRARIES - Combined list of all componenets libraries
|
|
# FFMPEG_VERSION_STRING - Version of the first component requested
|
|
#
|
|
# For each requested component the following variables are defined:
|
|
#
|
|
# FFMPEG_<component>_FOUND - The component was found
|
|
# FFMPEG_<component>_INCLUDE_DIRS - The components include dirs
|
|
# FFMPEG_<component>_LIBRARIES - The components libraries
|
|
# FFMPEG_<component>_VERSION_STRING - The components version string
|
|
# FFMPEG_<component>_VERSION_MAJOR - The components major version
|
|
# FFMPEG_<component>_VERSION_MINOR - The components minor version
|
|
# FFMPEG_<component>_VERSION_MICRO - The components micro version
|
|
#
|
|
# <component> is the uppercase name of the component
|
|
|
|
|
|
find_package(PkgConfig QUIET)
|
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(_lib_suffix 64)
|
|
else()
|
|
set(_lib_suffix 32)
|
|
endif()
|
|
|
|
function(find_ffmpeg_library component header)
|
|
string(TOUPPER "${component}" component_u)
|
|
set(FFMPEG_${component_u}_FOUND FALSE PARENT_SCOPE)
|
|
set(FFMpeg_${component}_FOUND FALSE PARENT_SCOPE)
|
|
|
|
if(PKG_CONFIG_FOUND)
|
|
pkg_check_modules(PC_FFMPEG_${component} QUIET lib${component})
|
|
endif()
|
|
|
|
find_path(FFMPEG_${component}_INCLUDE_DIR
|
|
NAMES
|
|
"lib${component}/${header}" "lib${component}/version.h"
|
|
HINTS
|
|
ENV FFmpegPath${_lib_suffix}
|
|
ENV FFmpegPath
|
|
ENV DepsPath${_lib_suffix}
|
|
ENV DepsPath
|
|
${FFmpegPath${_lib_suffix}}
|
|
${FFmpegPath}
|
|
${DepsPath${_lib_suffix}}
|
|
${DepsPath}
|
|
${PC_FFMPEG_${component}_INCLUDE_DIRS}
|
|
PATH_SUFFIXES ffmpeg libav)
|
|
|
|
find_library(FFMPEG_${component}_LIBRARY
|
|
NAMES
|
|
"${component}" "lib${component}"
|
|
HINTS
|
|
ENV FFmpegPath${_lib_suffix}
|
|
ENV FFmpegPath
|
|
ENV DepsPath${_lib_suffix}
|
|
ENV DepsPath
|
|
${FFmpegPath${_lib_suffix}}
|
|
${FFmpegPath}
|
|
${DepsPath${_lib_suffix}}
|
|
${DepsPath}
|
|
${PC_FFMPEG_${component}_LIBRARY_DIRS}
|
|
PATH_SUFFIXES
|
|
lib${_lib_suffix} lib
|
|
libs${_lib_suffix} libs
|
|
bin${_lib_suffix} bin
|
|
../lib${_lib_suffix} ../lib
|
|
../libs${_lib_suffix} ../libs
|
|
../bin${_lib_suffix} ../bin)
|
|
|
|
set(FFMPEG_${component_u}_INCLUDE_DIRS ${FFMPEG_${component}_INCLUDE_DIR} PARENT_SCOPE)
|
|
set(FFMPEG_${component_u}_LIBRARIES ${FFMPEG_${component}_LIBRARY} PARENT_SCOPE)
|
|
|
|
mark_as_advanced(FFMPEG_${component}_INCLUDE_DIR FFMPEG_${component}_LIBRARY)
|
|
|
|
if(FFMPEG_${component}_INCLUDE_DIR AND FFMPEG_${component}_LIBRARY)
|
|
set(FFMPEG_${component_u}_FOUND TRUE PARENT_SCOPE)
|
|
set(FFMpeg_${component}_FOUND TRUE PARENT_SCOPE)
|
|
|
|
list(APPEND FFMPEG_INCLUDE_DIRS ${FFMPEG_${component}_INCLUDE_DIR})
|
|
list(REMOVE_DUPLICATES FFMPEG_INCLUDE_DIRS)
|
|
set(FFMPEG_INCLUDE_DIRS "${FFMPEG_INCLUDE_DIRS}" PARENT_SCOPE)
|
|
|
|
list(APPEND FFMPEG_LIBRARIES ${FFMPEG_${component}_LIBRARY})
|
|
list(REMOVE_DUPLICATES FFMPEG_LIBRARIES)
|
|
set(FFMPEG_LIBRARIES "${FFMPEG_LIBRARIES}" PARENT_SCOPE)
|
|
|
|
set(FFMPEG_${component_u}_VERSION_STRING "unknown" PARENT_SCOPE)
|
|
set(_vfile "${FFMPEG_${component}_INCLUDE_DIR}/lib${component}/version.h")
|
|
|
|
if(EXISTS "${_vfile}")
|
|
file(STRINGS "${_vfile}" _version_parse REGEX "^.*VERSION_(MAJOR|MINOR|MICRO)[ \t]+[0-9]+[ \t]*$")
|
|
string(REGEX REPLACE ".*VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" _major "${_version_parse}")
|
|
string(REGEX REPLACE ".*VERSION_MINOR[ \t]+([0-9]+).*" "\\1" _minor "${_version_parse}")
|
|
string(REGEX REPLACE ".*VERSION_MICRO[ \t]+([0-9]+).*" "\\1" _micro "${_version_parse}")
|
|
|
|
set(FFMPEG_${component_u}_VERSION_MAJOR "${_major}" PARENT_SCOPE)
|
|
set(FFMPEG_${component_u}_VERSION_MINOR "${_minor}" PARENT_SCOPE)
|
|
set(FFMPEG_${component_u}_VERSION_MICRO "${_micro}" PARENT_SCOPE)
|
|
|
|
set(FFMPEG_${component_u}_VERSION_STRING "${_major}.${_minor}.${_micro}" PARENT_SCOPE)
|
|
else()
|
|
message(STATUS "Failed parsing FFMpeg ${component} version")
|
|
endif()
|
|
endif()
|
|
endfunction()
|
|
|
|
set(FFMPEG_INCLUDE_DIRS)
|
|
set(FFMPEG_LIBRARIES)
|
|
|
|
if(NOT FFMpeg_FIND_COMPONENTS)
|
|
message(FATAL_ERROR "No FFMpeg components requested")
|
|
endif()
|
|
|
|
list(GET FFMpeg_FIND_COMPONENTS 0 _first_comp)
|
|
string(TOUPPER "${_first_comp}" _first_comp)
|
|
|
|
foreach(component ${FFMpeg_FIND_COMPONENTS})
|
|
if(component STREQUAL "avcodec")
|
|
find_ffmpeg_library("${component}" "avcodec.h")
|
|
elseif(component STREQUAL "avdevice")
|
|
find_ffmpeg_library("${component}" "avdevice.h")
|
|
elseif(component STREQUAL "avfilter")
|
|
find_ffmpeg_library("${component}" "avfilter.h")
|
|
elseif(component STREQUAL "avformat")
|
|
find_ffmpeg_library("${component}" "avformat.h")
|
|
elseif(component STREQUAL "avresample")
|
|
find_ffmpeg_library("${component}" "avresample.h")
|
|
elseif(component STREQUAL "avutil")
|
|
find_ffmpeg_library("${component}" "avutil.h")
|
|
elseif(component STREQUAL "postproc")
|
|
find_ffmpeg_library("${component}" "postprocess.h")
|
|
elseif(component STREQUAL "swresample")
|
|
find_ffmpeg_library("${component}" "swresample.h")
|
|
elseif(component STREQUAL "swscale")
|
|
find_ffmpeg_library("${component}" "swscale.h")
|
|
else()
|
|
message(FATAL_ERROR "Unknown FFMpeg component requested: ${component}")
|
|
endif()
|
|
endforeach()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(FFMpeg
|
|
FOUND_VAR FFMPEG_FOUND
|
|
REQUIRED_VARS FFMPEG_${_first_comp}_LIBRARIES FFMPEG_${_first_comp}_INCLUDE_DIRS
|
|
VERSION_VAR FFMPEG_${_first_comp}_VERSION_STRING
|
|
HANDLE_COMPONENTS)
|