From 7042799d5b296a453786b4a710e8ed14e1e66073 Mon Sep 17 00:00:00 2001 From: codebase7 Date: Sun, 30 Jun 2013 05:27:21 -0400 Subject: [PATCH] Add manual ffmpeg path support to cmake This commit adds support for allowing the user to define the full path to the static ffmpeg libraries. In addition it also makes cmake output the location for the static ffmpeg libraries that it will use. --- CMakeLists.txt | 65 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a8fecb0392..cde03a17fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1116,9 +1116,36 @@ if(USE_FFMPEG AND NOT DEFINED FFMPEG_BUILDDIR) link_directories(ffmpeg/${PLATFORM_ARCH}/lib) set(FFMPEG_LIBRARIES libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a) else() - message(WARNING "FFMPEG_BUILDDIR variable is required to enable FFmpeg. Disabling it.") - unset(USE_FFMPEG) - endif() + # Manual definition of system library locations by the user. + if (DEFINED FFMPEG_INCLUDE_PATH) + include_directories(ffmpeg ${FFMPEG_INCLUDE_PATH}) + endif() + if (DEFINED AVFORMAT_PATH) + add_library(libavformat STATIC IMPORTED) + set_target_properties(libavformat PROPERTIES IMPORTED_LOCATION ${AVFORMAT_PATH}) + SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libavformat) + endif() + if (DEFINED AVCODEC_PATH) + add_library(libavcodec STATIC IMPORTED) + set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${AVCODEC_PATH}) + SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libavcodec) + endif() + if (DEFINED AVUTIL_PATH) + add_library(libavutil STATIC IMPORTED) + set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${AVUTIL_PATH}) + SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libavutil) + endif() + if (DEFINED SWRESAMPLE_PATH) + add_library(libswresample STATIC IMPORTED) + set_target_properties(libswresample PROPERTIES IMPORTED_LOCATION ${SWRESAMPLE_PATH}) + SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libswresample) + endif() + if (DEFINED SWSCALE_PATH) + add_library(libswscale STATIC IMPORTED) + set_target_properties(libswscale PROPERTIES IMPORTED_LOCATION ${SWSCALE_PATH}) + SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libswscale) + endif() + endif(DEFINED PLATFORM_ARCH) endif(USE_FFMPEG AND NOT DEFINED FFMPEG_BUILDDIR) if(USE_FFMPEG) @@ -1145,6 +1172,7 @@ if(USE_FFMPEG) libswscale ) endif() + if(IOS OR BLACKBERRY) set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} iconv) endif() @@ -1155,11 +1183,40 @@ if(USE_FFMPEG) set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} "-framework VideoDecodeAcceleration") endif() endif(APPLE) - + set(LinkCommon ${LinkCommon} ${FFMPEG_LIBRARIES}) add_definitions(-DUSE_FFMPEG) endif(USE_FFMPEG) +# Modification to show where we are pulling the ffmpeg libraries from. +if(USE_FFMPEG AND DEFINED FFMPEG_LIBRARIES) + target_link_libraries(Common ${FFMPEG_LIBRARIES}) + message(STATUS "FFMPEG library locations:") + if(DEFINED PLATFORM_ARCH) + set(TEMP ${CMAKE_SOURCE_DIR}/ffmpeg/${PLATFORM_ARCH}/lib) + message(STATUS "libavcodec location: ${TEMP}/libavcodec.a") + message(STATUS "libavformat location: ${TEMP}/libavformat.a") + message(STATUS "libavutil location: ${TEMP}/libavutil.a") + message(STATUS "libswresample location: ${TEMP}/libswresample.a") + message(STATUS "libswscale location: ${TEMP}/libswscale.a") + else() + get_target_property(TEMP libavcodec IMPORTED_LOCATION) + message(STATUS "libavcodec location: ${TEMP}") + get_target_property(TEMP libavformat IMPORTED_LOCATION) + message(STATUS "libavformat location: ${TEMP}") + get_target_property(TEMP libavutil IMPORTED_LOCATION) + message(STATUS "libavutil location: ${TEMP}") + get_target_property(TEMP libswresample IMPORTED_LOCATION) + message(STATUS "libswresample location: ${TEMP}") + get_target_property(TEMP libswscale IMPORTED_LOCATION) + message(STATUS "libswscale location: ${TEMP}") + endif(DEFINED PLATFORM_ARCH) +endif() +if(USE_FFMPEG AND NOT DEFINED FFMPEG_LIBRARIES) + message(WARNING "FFMPEG_BUILDDIR variable or manual path definition is required to enable FFmpeg. Disabling it.") + unset(USE_FFMPEG) +endif() + if (TargetBin) if (IOS) add_executable(${TargetBin} MACOSX_BUNDLE ${NativeAppSource})