diff options
Diffstat (limited to 'project/cmake/modules/FindFFMPEG.cmake')
| -rw-r--r-- | project/cmake/modules/FindFFMPEG.cmake | 26 |
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 |
| 47 | if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}-test* ]] | 61 | if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}.so* || $@ == *${APP_NAME_LC}-test* ]] |
| 48 | then | 62 | then |
| 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 | ||
| 58 | else | 71 | else |
| 59 | $@ | 72 | $@ |
| 60 | fi") | 73 | fi") |
| @@ -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}\") |
| 96 | endif() | 111 | endif() |
| 112 | set_target_properties(ffmpeg PROPERTIES FOLDER "External Projects") | ||
| 97 | 113 | ||
| 98 | mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES FFMPEG_DEFINITIONS FFMPEG_FOUND) | 114 | mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES FFMPEG_DEFINITIONS FFMPEG_FOUND) |
