summaryrefslogtreecommitdiffstats
path: root/project/cmake/modules/FindFFMPEG.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'project/cmake/modules/FindFFMPEG.cmake')
-rw-r--r--project/cmake/modules/FindFFMPEG.cmake26
1 files changed, 21 insertions, 5 deletions
diff --git a/project/cmake/modules/FindFFMPEG.cmake b/project/cmake/modules/FindFFMPEG.cmake
index 7f8e37f..a9f88fb 100644
--- a/project/cmake/modules/FindFFMPEG.cmake
+++ b/project/cmake/modules/FindFFMPEG.cmake
@@ -12,6 +12,18 @@ if(ENABLE_INTERNAL_FFMPEG)
12 if(FFMPEG_PATH) 12 if(FFMPEG_PATH)
13 message(WARNING "Internal FFmpeg enabled, but FFMPEG_PATH given, ignoring") 13 message(WARNING "Internal FFmpeg enabled, but FFMPEG_PATH given, ignoring")
14 endif() 14 endif()
15
16 # allow user to override the download URL with a local tarball
17 # needed for offline build envs
18 if(FFMPEG_URL)
19 get_filename_component(FFMPEG_URL "${FFMPEG_URL}" ABSOLUTE)
20 else()
21 set(FFMPEG_URL ${FFMPEG_BASE_URL}/${FFMPEG_VER}.tar.gz)
22 endif()
23 if(VERBOSE)
24 message(STATUS "FFMPEG_URL: ${FFMPEG_URL}")
25 endif()
26
15 if(CMAKE_CROSSCOMPILING) 27 if(CMAKE_CROSSCOMPILING)
16 set(CROSS_ARGS -DDEPENDS_PATH=${DEPENDS_PATH} 28 set(CROSS_ARGS -DDEPENDS_PATH=${DEPENDS_PATH}
17 -DPKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE} 29 -DPKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}
@@ -28,7 +40,9 @@ if(ENABLE_INTERNAL_FFMPEG)
28 endif() 40 endif()
29 41
30 externalproject_add(ffmpeg 42 externalproject_add(ffmpeg
31 URL ${FFMPEG_BASE_URL}/${FFMPEG_VER}.tar.gz 43 URL ${FFMPEG_URL}
44 DOWNLOAD_NAME ffmpeg-${FFMPEG_VER}.tar.gz
45 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
32 PREFIX ${CORE_BUILD_DIR}/ffmpeg 46 PREFIX ${CORE_BUILD_DIR}/ffmpeg
33 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} 47 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
34 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} 48 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
@@ -44,7 +58,7 @@ if(ENABLE_INTERNAL_FFMPEG)
44 58
45 file(WRITE ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg/ffmpeg-link-wrapper 59 file(WRITE ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg/ffmpeg-link-wrapper
46"#!/bin/bash 60"#!/bin/bash
47if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}-test* ]] 61if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}.so* || $@ == *${APP_NAME_LC}-test* ]]
48then 62then
49 avformat=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavcodec` 63 avformat=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavcodec`
50 avcodec=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavformat` 64 avcodec=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavformat`
@@ -53,8 +67,7 @@ then
53 swscale=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libswscale` 67 swscale=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libswscale`
54 swresample=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libswresample` 68 swresample=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libswresample`
55 gnutls=`PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig/ ${PKG_CONFIG_EXECUTABLE} --libs-only-l --static --silence-errors gnutls` 69 gnutls=`PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig/ ${PKG_CONFIG_EXECUTABLE} --libs-only-l --static --silence-errors gnutls`
56 vorbisenc=`PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig/ ${PKG_CONFIG_EXECUTABLE} --libs-only-l --static --silence-errors vorbisenc` 70 $@ $avcodec $avformat $avcodec $avfilter $swscale $swresample -lpostproc $gnutls
57 $@ $avcodec $avformat $avcodec $avfilter $swscale $swresample -lpostproc $gnutls $vorbisenc
58else 71else
59 $@ 72 $@
60fi") 73fi")
@@ -62,6 +75,7 @@ fi")
62 DESTINATION ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} 75 DESTINATION ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
63 FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) 76 FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
64 set(FFMPEG_LINK_EXECUTABLE "${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg-link-wrapper <CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" PARENT_SCOPE) 77 set(FFMPEG_LINK_EXECUTABLE "${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg-link-wrapper <CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" PARENT_SCOPE)
78 set(FFMPEG_CREATE_SHARED_LIBRARY "${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg-link-wrapper <CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>" PARENT_SCOPE)
65 set(FFMPEG_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include) 79 set(FFMPEG_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include)
66 list(APPEND FFMPEG_DEFINITIONS -DFFMPEG_VER_SHA=\"${FFMPEG_VER}\" 80 list(APPEND FFMPEG_DEFINITIONS -DFFMPEG_VER_SHA=\"${FFMPEG_VER}\"
67 -DUSE_STATIC_FFMPEG=1) 81 -DUSE_STATIC_FFMPEG=1)
@@ -72,10 +86,11 @@ else()
72 endif() 86 endif()
73 set(FFMPEG_PKGS libavcodec>=56.26.100 libavfilter>=5.11.100 libavformat>=56.25.101 87 set(FFMPEG_PKGS libavcodec>=56.26.100 libavfilter>=5.11.100 libavformat>=56.25.101
74 libavutil>=54.20.100 libswscale>=3.1.101 libswresample>=1.1.100 libpostproc>=53.3.100) 88 libavutil>=54.20.100 libswscale>=3.1.101 libswresample>=1.1.100 libpostproc>=53.3.100)
75 if(PKG_CONFIG_FOUND) 89 if(PKG_CONFIG_FOUND AND NOT WIN32)
76 pkg_check_modules (FFMPEG ${FFMPEG_PKGS}) 90 pkg_check_modules (FFMPEG ${FFMPEG_PKGS})
77 string(REGEX REPLACE "framework;" "framework " FFMPEG_LDFLAGS "${FFMPEG_LDFLAGS}") 91 string(REGEX REPLACE "framework;" "framework " FFMPEG_LDFLAGS "${FFMPEG_LDFLAGS}")
78 set(FFMPEG_LIBRARIES ${FFMPEG_LDFLAGS}) 92 set(FFMPEG_LIBRARIES ${FFMPEG_LDFLAGS})
93 add_custom_target(ffmpeg)
79 else() 94 else()
80 find_path(FFMPEG_INCLUDE_DIRS libavcodec/avcodec.h PATH_SUFFIXES ffmpeg) 95 find_path(FFMPEG_INCLUDE_DIRS libavcodec/avcodec.h PATH_SUFFIXES ffmpeg)
81 find_library(FFMPEG_LIBAVCODEC NAMES avcodec libavcodec PATH_SUFFIXES ffmpeg/libavcodec) 96 find_library(FFMPEG_LIBAVCODEC NAMES avcodec libavcodec PATH_SUFFIXES ffmpeg/libavcodec)
@@ -94,5 +109,6 @@ else()
94 set(FFMPEG_FOUND 1) 109 set(FFMPEG_FOUND 1)
95 list(APPEND FFMPEG_DEFINITIONS -DFFMPEG_VER_SHA=\"${FFMPEG_VER}\") 110 list(APPEND FFMPEG_DEFINITIONS -DFFMPEG_VER_SHA=\"${FFMPEG_VER}\")
96endif() 111endif()
112set_target_properties(ffmpeg PROPERTIES FOLDER "External Projects")
97 113
98mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES FFMPEG_DEFINITIONS FFMPEG_FOUND) 114mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES FFMPEG_DEFINITIONS FFMPEG_FOUND)