aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2022-05-30 10:53:32 +0200
committerPierre Ossman <ossman@cendio.se>2022-06-07 10:06:32 +0200
commit101cef956de048160ddd80f1aaa6e80df0f530fa (patch)
tree141f3b9b046fc7ba90c72da3f30fd06ea82a770c
parent4cf31302a1dd887e72481ed4355a9f435d91eb6c (diff)
downloadtigervnc-101cef956de048160ddd80f1aaa6e80df0f530fa.tar.gz
tigervnc-101cef956de048160ddd80f1aaa6e80df0f530fa.zip
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.
-rw-r--r--CMakeLists.txt15
-rw-r--r--cmake/Modules/FindFfmpeg.cmake17
-rw-r--r--common/rfb/CMakeLists.txt1
3 files changed, 22 insertions, 11 deletions
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)