Backported #6865: Disable websockets command line option
[platform/upstream/freerdp.git] / cmake / FindFFmpeg.cmake
1 # - Try to find FFmpeg
2 # Using Pkg-config if available for path
3 #
4 #  FFMPEG_FOUND        - all required ffmpeg components found on system
5 #  FFMPEG_INCLUDE_DIRS  - combined include directories
6 #  FFMPEG_LIBRARIES    - combined libraries to link
7
8 set(REQUIRED_AVCODEC_VERSION 0.8)
9 set(REQUIRED_AVCODEC_API_VERSION 53.25.0)
10
11 include(FindPkgConfig)
12
13 if (PKG_CONFIG_FOUND)
14         pkg_check_modules(AVCODEC libavcodec)
15         pkg_check_modules(AVUTIL libavutil)
16         pkg_check_modules(AVRESAMPLE libavresample)
17         pkg_check_modules(SWRESAMPLE libswresample)
18 endif(PKG_CONFIG_FOUND)
19
20 # avcodec
21 find_path(AVCODEC_INCLUDE_DIR libavcodec/avcodec.h PATHS ${AVCODEC_INCLUDE_DIRS})
22 find_library(AVCODEC_LIBRARY avcodec PATHS ${AVCODEC_LIBRARY_DIRS})
23
24 # avutil
25 find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h PATHS ${AVUTIL_INCLUDE_DIRS})
26 find_library(AVUTIL_LIBRARY avutil PATHS ${AVUTIL_LIBRARY_DIRS})
27
28 # swresample
29 find_path(SWRESAMPLE_INCLUDE_DIR libswresample/swresample.h PATHS ${SWRESAMPLE_INCLUDE_DIRS})
30 find_library(SWRESAMPLE_LIBRARY swresample PATHS ${SWRESAMPLE_LIBRARY_DIRS})
31
32 # avresample
33 find_path(AVRESAMPLE_INCLUDE_DIR libavresample/avresample.h PATHS ${AVRESAMPLE_INCLUDE_DIRS})
34 find_library(AVRESAMPLE_LIBRARY avresample PATHS ${AVRESAMPLE_LIBRARY_DIRS})
35
36 if (AVCODEC_INCLUDE_DIR AND AVCODEC_LIBRARY)
37         set(AVCODEC_FOUND TRUE)
38 endif(AVCODEC_INCLUDE_DIR AND AVCODEC_LIBRARY)
39
40 if (AVUTIL_INCLUDE_DIR AND AVUTIL_LIBRARY)
41         set(AVUTIL_FOUND TRUE)
42 endif(AVUTIL_INCLUDE_DIR AND AVUTIL_LIBRARY)
43
44 include(FindPackageHandleStandardArgs)
45 if (SWRESAMPLE_FOUND)
46         FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFmpeg DEFAULT_MSG AVUTIL_FOUND AVCODEC_FOUND SWRESAMPLE_FOUND)
47 else()
48         FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFmpeg DEFAULT_MSG AVUTIL_FOUND AVCODEC_FOUND AVRESAMPLE_FOUND)
49 endif()
50
51 if (AVCODEC_VERSION)
52         if (${AVCODEC_VERSION} VERSION_LESS ${REQUIRED_AVCODEC_API_VERSION})
53                 message(FATAL_ERROR
54                             "libavcodec version >= ${REQUIRED_AVCODEC_VERSION} (API >= ${REQUIRED_AVCODEC_API_VERSION}) is required")
55         endif()
56 else(AVCODEC_VERSION)
57         message("Note: To build libavcodec version >= ${REQUIRED_AVCODEC_VERSION} (API >= ${REQUIRED_AVCODEC_API_VERSION}) is required")
58 endif(AVCODEC_VERSION)
59
60 if (FFMPEG_FOUND)
61         if (SWRESAMPLE_FOUND)
62                 set(FFMPEG_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIR} ${AVUTIL_INCLUDE_DIR} ${SWRESAMPLE_INCLUDE_DIR})
63                 set(FFMPEG_LIBRARIES ${AVCODEC_LIBRARY} ${AVUTIL_LIBRARY} ${SWRESAMPLE_LIBRARY})
64         elseif (AVRESAMPLE_FOUND)
65                 set(FFMPEG_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIR} ${AVUTIL_INCLUDE_DIR} ${AVRESAMPLE_INCLUDE_DIR})
66                 set(FFMPEG_LIBRARIES ${AVCODEC_LIBRARY} ${AVUTIL_LIBRARY} ${AVRESAMPLE_LIBRARY})
67         endif()
68 endif(FFMPEG_FOUND)
69
70 mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES)