From 101cef956de048160ddd80f1aaa6e80df0f530fa Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Mon, 30 May 2022 10:53:32 +0200 Subject: [PATCH] Find FFMPEG using pkg-config This is the standard method of finding it on Unix systems, so make sure we use it. Still keep a fallback, though, for other systems, e.g. Windows. --- CMakeLists.txt | 15 ++++----------- cmake/Modules/FindFfmpeg.cmake | 17 +++++++++++++++++ common/rfb/CMakeLists.txt | 1 + 3 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 cmake/Modules/FindFfmpeg.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index e5807def..d88b177f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -179,18 +179,11 @@ if(ENABLE_H264) set(H264_LIBS "WIN") # may be LIBAV in the future set(H264_LIBRARIES ole32 mfplat mfuuid wmcodecdspuuid) else() - check_include_files(libavcodec/avcodec.h HAVE_AVCODEC_H) - check_include_files(libavutil/avutil.h HAVE_AVUTIL_H) - check_include_files(libswscale/swscale.h HAVE_SWSCALE_H) - if (HAVE_AVCODEC_H AND HAVE_AVUTIL_H AND HAVE_SWSCALE_H) - find_path(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h) - find_library(AVCODEC_LIBRARY avcodec) - find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h) - find_library(AVUTIL_LIBRARY avutil) - find_path(SWSCALE_INCLUDE_DIR libswscale/swscale.h) - find_library(SWSCALE_LIBRARY swscale) + find_package(Ffmpeg) + if (AVCODEC_FOUND AND AVUTIL_FOUND AND SWSCALE_FOUND) set(H264_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIRS} ${AVUTIL_INCLUDE_DIRS} ${SWSCALE_INCLUDE_DIRS}) - set(H264_LIBRARIES ${AVCODEC_LIBRARY} ${AVUTIL_LIBRARY} ${SWSCALE_LIBRARY}) + set(H264_LIBRARIES ${AVCODEC_LIBRARIES} ${AVUTIL_LIBRARIES} ${SWSCALE_LIBRARIES}) + set(H264_LIBRARY_DIRS ${AVCODEC_LIBRARY_DIRS} ${AVUTIL_LIBRARY_DIRS} ${SWSCALE_LIBRARY_DIRS}) add_definitions("-D__STDC_CONSTANT_MACROS") add_definitions("-DHAVE_H264") set(H264_LIBS "LIBAV") diff --git a/cmake/Modules/FindFfmpeg.cmake b/cmake/Modules/FindFfmpeg.cmake new file mode 100644 index 00000000..cf09fa4a --- /dev/null +++ b/cmake/Modules/FindFfmpeg.cmake @@ -0,0 +1,17 @@ +find_package(PkgConfig) + +if (PKG_CONFIG_FOUND) + pkg_check_modules(AVCODEC libavcodec) + pkg_check_modules(AVUTIL libavutil) + pkg_check_modules(SWSCALE libswscale) +else() + find_path(AVCODEC_INCLUDE_DIRS NAMES avcodec.h PATH_SUFFIXES libavcodec) + find_library(AVCODEC_LIBRARIES NAMES avcodec) + find_package_handle_standard_args(AVCODEC DEFAULT_MSG AVCODEC_LIBRARIES AVCODEC_INCLUDE_DIRS) + find_path(AVUTIL_INCLUDE_DIRS NAMES avutil.h PATH_SUFFIXES libavutil) + find_library(AVUTIL_LIBRARIES NAMES avutil) + find_package_handle_standard_args(AVUTIL DEFAULT_MSG AVUTIL_LIBRARIES AVUTIL_INCLUDE_DIRS) + find_path(SWSCALE_INCLUDE_DIRS NAMES swscale.h PATH_SUFFIXES libswscale) + find_library(SWSCALE_LIBRARIES NAMES swscale) + find_package_handle_standard_args(SWSCALE DEFAULT_MSG SWSCALE_LIBRARIES SWSCALE_INCLUDE_DIRS) +endif() diff --git a/common/rfb/CMakeLists.txt b/common/rfb/CMakeLists.txt index 66014f3e..994f1196 100644 --- a/common/rfb/CMakeLists.txt +++ b/common/rfb/CMakeLists.txt @@ -76,6 +76,7 @@ if(ENABLE_H264 AND NOT H264_LIBS STREQUAL "NONE") target_sources(rfb PRIVATE H264WinDecoderContext.cxx) endif() target_link_libraries(rfb ${H264_LIBRARIES}) + target_link_directories(rfb PUBLIC ${H264_LIBRARY_DIRS}) endif() if(UNIX) -- 2.39.5