Skip to content

Commit

Permalink
#19 / #31 Now building fine with Makefiles on Mac OS X
Browse files Browse the repository at this point in the history
This is not working with Xcode yet (target dependency issue), and not
tested on other platforms.

Building against the builtin/user/system FFmpeg seems to work fine.
  • Loading branch information
Ceylo committed Jul 21, 2013
1 parent c0ffa6a commit 9a28286
Show file tree
Hide file tree
Showing 4 changed files with 157 additions and 111 deletions.
245 changes: 143 additions & 102 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ set (BUILD_SFEMOVIE_SAMPLE FALSE CACHE BOOL "TRUE to build the sfeMovie sample")
set (BUILD_FFMPEG TRUE CACHE BOOL "TRUE to build the provided FFmpeg, FALSE to skip rebuilding FFmpeg")

if (${BUILD_FFMPEG} AND NOT ${LINK_AGAINST_PROVIDED_FFMPEG})
message(WARNING "BUILD_FFMPEG set to true but LINK_AGAINST_PROVIDED_FFMPEG is false. Inconsistent behaviour. LINK_AGAINST_PROVIDED_FFMPEG set to true.")
set (LINK_AGAINST_PROVIDED_FFMPEG TRUE)
message(WARNING "BUILD_FFMPEG set to true but LINK_AGAINST_PROVIDED_FFMPEG is false: inconsistent behaviour. LINK_AGAINST_PROVIDED_FFMPEG set to true.")
set (LINK_AGAINST_PROVIDED_FFMPEG TRUE CACHE BOOL "TRUE to build sfeMovie with the provided FFmpeg sources, FALSE to build with the system libraries" FORCE)
endif()

# Set some env vars
Expand All @@ -48,74 +48,74 @@ set (PUBLIC_HEADERS "include")
set (PRIVATE_HEADERS "src")
set (OTHER_LIBRARIES "")
set (EXTERNAL_LIBRARIES_DIR "")
set (FFMPEG_BUILD_DIR "${CMAKE_SOURCE_DIR}/deps/ffmpeg-build")
set (BUILTIN_FFMPEG_BUILD_DIR "${CMAKE_SOURCE_DIR}/deps/ffmpeg-build")

if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
add_definitions("-O2")
endif()

macro(find_ffmpeg searchPath)
find_library(FFMPEG_LIBAVFORMAT_LIBRARIES
NAMES avformat
PATHS "${searchPath}"
NO_DEFAULT_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH)
find_library(FFMPEG_LIBAVDEVICE_LIBRARIES
NAMES avdevice
PATHS "${searchPath}"
NO_DEFAULT_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH)
find_library(FFMPEG_LIBAVCODEC_LIBRARIES
NAMES avcodec
PATHS "${searchPath}"
NO_DEFAULT_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH)
find_library(FFMPEG_LIBAVUTIL_LIBRARIES
NAMES avutil
PATHS "${searchPath}"
NO_DEFAULT_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH)
find_library(FFMPEG_LIBSWSCALE_LIBRARIES
NAMES swscale
PATHS "${searchPath}"
NO_DEFAULT_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH)
#################################################################################################################
# ============================================== FFMPEG SETUP ================================================= #
#################################################################################################################

# Set ${output} to the full path of the given library (depends on platform and on dynamic/static settings)
macro(library_path output basePath libName)
# With Visual Studio, we can't use FFmpeg static libraries
if(MSVC)
set(${output} "${basePath}/${CMAKE_DYNAMIC_LIBRARY_PREFIX}${libName}${CMAKE_DYNAMIC_LIBRARY_SUFFIX}")
else()
set(${output} "${basePath}/${CMAKE_STATIC_LIBRARY_PREFIX}${libName}${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()
endmacro(library_path)

# Define ${FFMPEG_LIBRARIES} to the paths of all the required FFmpeg libraries
macro(ffmpeg_paths search_path)
library_path(FFMPEG_LIBAVFORMAT_LIBRARIES "${search_path}" "avformat")
library_path(FFMPEG_LIBAVDEVICE_LIBRARIES "${search_path}" "avdevice")
library_path(FFMPEG_LIBAVCODEC_LIBRARIES "${search_path}" "avcodec")
library_path(FFMPEG_LIBAVUTIL_LIBRARIES "${search_path}" "avutil")
library_path(FFMPEG_LIBSWSCALE_LIBRARIES "${search_path}" "swscale")

set (FFMPEG_LIBRARIES
${FFMPEG_LIBAVFORMAT_LIBRARIES}
${FFMPEG_LIBAVDEVICE_LIBRARIES}
${FFMPEG_LIBAVCODEC_LIBRARIES}
${FFMPEG_LIBAVUTIL_LIBRARIES}
${FFMPEG_LIBSWSCALE_LIBRARIES})
endmacro(ffmpeg_paths)

if (${FFMPEG_LIBAVFORMAT_LIBRARIES} MATCHES "#NOTFOUND$#" OR
${FFMPEG_LIBAVDEVICE_LIBRARIES} MATCHES "#NOTFOUND$#" OR
${FFMPEG_LIBAVCODEC_LIBRARIES} MATCHES "#NOTFOUND$#" OR
${FFMPEG_LIBAVUTIL_LIBRARIES} MATCHES "#NOTFOUND$#" OR
${FFMPEG_LIBSWSCALE_LIBRARIES} MATCHES "#NOTFOUND$#")
message(STATUS "Search results: ${FFMPEG_LIBRARIES}")
message(FATAL_ERROR "FFmpeg libraries not found in ${searchPath}")
endif()
endmacro(find_ffmpeg)

# Check that all of the FFmpeg headers can be found in ${FFMPEG_INCLUDE_DIR}
macro(check_ffmpeg_headers)
foreach(header "libavcodec/avcodec.h" "libavdevice/avdevice.h" "libavformat/avformat.h" "libavutil/avutil.h" "libswscale/swscale.h")
if(NOT EXISTS "${FFMPEG_INCLUDE_DIR}/${header}")
message(FATAL_ERROR "The chosen FFmpeg is missing a header file: ${header}")
endif()
endforeach()
endmacro(check_ffmpeg_headers)

# Check that all of the FFmpeg libraries can be found in ${FFMPEG_LIBRARIES}
macro(check_ffmpeg_libraries)
foreach(lib ${FFMPEG_LIBRARIES})
if(NOT EXISTS "${lib}")
if(${LINK_AGAINST_PROVIDED_FFMPEG})
message(WARNING "You chose to link sfeMovie against the provided FFmpeg but you also chose not to build the provided FFmpeg. However, the builtin FFmpeg has not been built yet and the FFmpeg binaries are missing")
endif()
message(FATAL_ERROR "The chosen FFmpeg is missing a library file: ${lib}")
endif()
endforeach()
endmacro(check_ffmpeg_libraries)

# Setup the paths that will be used for linking against FFmpeg and eventually building it
if (LINK_AGAINST_PROVIDED_FFMPEG)
# Use our own FFmpeg libraries
set (FFMPEG_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/deps/headers")

find_ffmpeg(${FFMPEG_BUILD_DIR})

set (FFMPEG_LIBRARY_DIR "${CMAKE_SOURCE_DIR}/deps/ffmpeg-build")
ffmpeg_paths("${BUILTIN_FFMPEG_BUILD_DIR}")
check_ffmpeg_headers()

if(NOT ${BUILD_FFMPEG})
check_ffmpeg_libraries()
endif()
else()
# Use user's FFmpeg libraries
set (FFMPEG_INCLUDE_DIR "" CACHE PATH "Path to the directory containing the FFmpeg headers directories (libavcodec, libavformat, etc ; leave empty to let CMake find them)")
Expand All @@ -126,21 +126,34 @@ else()

if ("${FFMPEG_FOUND}" STREQUAL "NO")
message(FATAL_ERROR "Could not find a full FFmpeg installation")
else()
set (FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIRS})
find_ffmpeg(${FFMPEG_LIBRARY_DIR})
endif()
else()
ffmpeg_paths("${FFMPEG_LIBRARY_DIR}")
check_ffmpeg_headers()
check_ffmpeg_libraries()
endif()
endif()

message(STATUS "LIB=${FFMPEG_LIBRARIES}")
message(STATUS "Using these FFmpeg libraries:")
foreach(library ${FFMPEG_LIBRARIES})
message(STATUS "- ${library}")
endforeach()

set (SOURCE_FILES ${SOURCES_DIR}/Movie.cpp ${SOURCES_DIR}/Movie_audio.cpp ${SOURCES_DIR}/Movie_video.cpp ${SOURCES_DIR}/utils.cpp ${SOURCES_DIR}/Condition.cpp)

#################################################################################################################
# ================================================ SFML SETUP ================================================= #
#################################################################################################################

find_package (SFML 2 COMPONENTS graphics window system audio REQUIRED)
set(SFML_LIBRARIES ${SFML_GRAPHICS_LIBRARY} ${SFML_WINDOW_LIBRARY} ${SFML_AUDIO_LIBRARY} ${SFML_SYSTEM_LIBRARY})


#################################################################################################################
# ============================================== sfeMovie SETUP =============================================== #
#################################################################################################################

set (SOURCE_FILES ${SOURCES_DIR}/Movie.cpp ${SOURCES_DIR}/Movie_audio.cpp ${SOURCES_DIR}/Movie_video.cpp ${SOURCES_DIR}/utils.cpp ${SOURCES_DIR}/Condition.cpp)

if (LINUX) # ========================================== LINUX ========================================== #

add_definitions(-D__STDC_CONSTANT_MACROS)
Expand Down Expand Up @@ -200,9 +213,81 @@ link_directories (${EXTERNAL_LIBRARIES_DIR})
message (STATUS "Headers directories: ${SFML_INCLUDE_DIR} ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${FFMPEG_INCLUDE_DIR}")
message (STATUS "Libraries directories: ${EXTERNAL_LIBRARIES_DIR}")

# Build FFmpeg if needed
if (${LINK_AGAINST_PROVIDED_FFMPEG} AND ${BUILD_FFMPEG})
if (MSVC)
set( MINGW_DIR C:/MinGW CACHE PATH "Set the path for the MinGW environment")
if (EXISTS "${MINGW_DIR}" AND IS_DIRECTORY "${MINGW_DIR}")
if (EXISTS "${MINGW_DIR}/bin" AND IS_DIRECTORY "${MINGW_DIR}/bin")
if (NOT EXISTS "${MINGW_DIR}/msys/1.0/bin" OR NOT IS_DIRECTORY "${MINGW_DIR}/msys/1.0/bin")
message(FATAL_ERROR "The specified MINGW_DIR does not contain MSYS")
endif()
else()
message(FATAL_ERROR "The specified MINGW_DIR is not a MinGW directory")
endif()
else()
message(FATAL_ERROR "The specified MINGW_DIR is not a valid path to a directory")
endif()
endif()

set (Decoders_that_you_can_enable aac aac_latm aasc ac3 adpcm_4xm adpcm_adx adpcm_afc adpcm_ct
adpcm_ea adpcm_ea_maxis_xa adpcm_ea_r1 adpcm_ea_r2 adpcm_ea_r3 adpcm_ea_xas adpcm_g722 adpcm_g726
adpcm_ima_amv adpcm_ima_apc adpcm_ima_dk3 adpcm_ima_dk4 adpcm_ima_ea_eacs adpcm_ima_ea_sead
adpcm_ima_iss adpcm_ima_oki adpcm_ima_qt adpcm_ima_smjpeg adpcm_ima_wav adpcm_ima_ws adpcm_ms
adpcm_sbpro_2 adpcm_sbpro_3 adpcm_sbpro_4 adpcm_swf adpcm_thp adpcm_xa adpcm_yamaha alac als
amrnb amrwb amv anm ansi ape ass asv1 asv2 atrac1 atrac3 aura aura2 avrn avrp avs avui ayuv
bethsoftvid bfi bink binkaudio_dct binkaudio_rdft bintext bmp bmv_audio bmv_video brender_pix c93
cavs cdgraphics cdxl cinepak cljr cllc comfortnoise cook cpia cscd cyuv dca dfa dirac dnxhd dpx
dsicinaudio dsicinvideo dvbsub dvdsub dvvideo dxa dxtory eac3 eacmv eamad eatgq eatgv eatqi eightbps
eightsvx_exp eightsvx_fib escape124 escape130 exr ffv1 ffvhuff ffwavesynth flac flashsv flashsv2 flic
flv fourxm fraps frwu g723_1 g729 gif gsm gsm_ms h261 h263 h263i h263p h264 h264_crystalhd h264_vda
h264_vdpau huffyuv iac idcin idf iff_byterun1 iff_ilbm imc indeo2 indeo3 indeo4 indeo5 interplay_dpcm
interplay_video jacosub jpeg2000 jpegls jv kgv1 kmvc lagarith libcelt libgsm libgsm_ms libilbc
libopencore_amrnb libopencore_amrwb libopenjpeg libopus libschroedinger libspeex libstagefright_h264
libutvideo libvorbis libvpx loco mace3 mace6 mdec microdvd mimic mjpeg mjpegb mlp mmvideo motionpixels
movtext mp1 mp1float mp2 mp2float mp3 mp3adu mp3adufloat mp3float mp3on4 mp3on4float mpc7 mpc8 mpeg1_vdpau
mpeg1video mpeg2_crystalhd mpeg2video mpeg4 mpeg4_crystalhd mpeg4_vdpau mpeg_vdpau mpeg_xvmc mpegvideo
mpl2 msa1 msmpeg4_crystalhd msmpeg4v1 msmpeg4v2 msmpeg4v3 msrle mss1 mss2 msvideo1 mszh mts2 mvc1 mvc2
mxpeg nellymoser nuv paf_audio paf_video pam pbm pcm_alaw pcm_bluray pcm_dvd pcm_f32be pcm_f32le pcm_f64be
pcm_f64le pcm_lxf pcm_mulaw pcm_s16be pcm_s16be_planar pcm_s16le pcm_s16le_planar pcm_s24be pcm_s24daud
pcm_s24le pcm_s24le_planar pcm_s32be pcm_s32le pcm_s32le_planar pcm_s8 pcm_s8_planar pcm_u16be
pcm_u16le pcm_u24be pcm_u24le pcm_u32be pcm_u32le pcm_u8 pcm_zork pcx pgm pgmyuv pgssub pictor pjs png
ppm prores prores_lgpl ptx qcelp qdm2 qdraw qpeg qtrle r10k r210 ra_144 ra_288 ralf rawvideo realtext
rl2 roq roq_dpcm rpza rv10 rv20 rv30 rv40 s302m sami sanm sgi sgirle shorten sipr smackaud smacker smc
snow sol_dpcm sonic sp5x srt subrip subviewer subviewer1 sunrast svq1 svq3 tak targa targa_y216 text
theora thp tiertexseqvideo tiff tmv truehd truemotion1 truemotion2 truespeech tscc tscc2 tta twinvq txd
ulti utvideo v210 v210x v308 v408 v410 vb vble vc1 vc1_crystalhd vc1_vdpau vc1image vcr1 vima vmdaudio
vmdvideo vmnc vorbis vp3 vp5 vp6 vp6a vp6f vp8 vplayer vqa wavpack webvtt wmalossless wmapro wmav1
wmav2 wmavoice wmv1 wmv2 wmv3 wmv3_crystalhd wmv3_vdpau wmv3image wnv1 ws_snd1 xan_dpcm xan_wc3
xan_wc4 xbin xbm xface xl xsub xwd y41p yop yuv4 zerocodec zlib zmbv CACHE STRING "Available decoders" FORCE)
set (ENABLED_DECODERS theora flac vorbis CACHE STRING "Enabled audio and video decoders")

if (MACOSX)
set(OS_ARG "macosx")
elseif(WINDOWS)
set(OS_ARG "windows")
elseif(LINUX)
set(OS_ARG "linux")
endif()

if (MSVC)
set(VS_ARG "vs")
else()
set(VS_ARG "novs")
endif()

if (MACOSX)
set(ARCH_ARG ${CMAKE_OSX_ARCHITECTURES})
else()
set(ARCH_ARG notosx)
endif()

RunShell(${LIB_NAME} PRE_LINK ./build_ffmpeg.sh ${OS_ARG} ${VS_ARG} ${ARCH_ARG} ${ENABLED_DECODERS})
endif()

# Define the source files sfe should compile
add_library (${LIB_NAME} SHARED ${SOURCE_FILES})

add_dependencies(${LIB_NAME} createWikiReports)

set_target_properties(${LIB_NAME} PROPERTIES
COMPILE_FLAGS "${COMPILER_FLAGS}"
Expand Down Expand Up @@ -253,50 +338,6 @@ install(
# Define the libraries sfe should link against
target_link_libraries (${LIB_NAME} ${SFML_LIBRARIES} ${FFMPEG_LIBRARIES} ${OTHER_LIBRARIES})

# Build FFmpeg if needed
if (${LINK_AGAINST_PROVIDED_FFMPEG} AND ${BUILD_FFMPEG})
if (MSVC)
set( MINGW_DIR C:/MinGW CACHE PATH "Set the path for the MinGW environment")
if (EXISTS "${MINGW_DIR}" AND IS_DIRECTORY "${MINGW_DIR}")
if (EXISTS "${MINGW_DIR}/bin" AND IS_DIRECTORY "${MINGW_DIR}/bin")
if (NOT EXISTS "${MINGW_DIR}/msys/1.0/bin" OR NOT IS_DIRECTORY "${MINGW_DIR}/msys/1.0/bin")
message(FATAL_ERROR "The specified MINGW_DIR does not contain MSYS")
endif()
else()
message(FATAL_ERROR "The specified MINGW_DIR is not a MinGW directory")
endif()
else()
message(FATAL_ERROR "The specified MINGW_DIR is not a valid path to a directory")
endif()
endif()

set (Decoders_you_can_enable aac aac_latm aasc ac3 adpcm_4xm adpcm_adx adpcm_afc adpcm_ct adpcm_ea adpcm_ea_maxis_xa adpcm_ea_r1 adpcm_ea_r2 adpcm_ea_r3 adpcm_ea_xas adpcm_g722 adpcm_g726 adpcm_ima_amv adpcm_ima_apc adpcm_ima_dk3 adpcm_ima_dk4 adpcm_ima_ea_eacs adpcm_ima_ea_sead adpcm_ima_iss adpcm_ima_oki adpcm_ima_qt adpcm_ima_smjpeg adpcm_ima_wav adpcm_ima_ws adpcm_ms adpcm_sbpro_2 adpcm_sbpro_3 adpcm_sbpro_4 adpcm_swf adpcm_thp adpcm_xa adpcm_yamaha alac als amrnb amrwb amv anm ansi ape ass asv1 asv2 atrac1 atrac3 aura aura2 avrn avrp avs avui ayuv bethsoftvid bfi bink binkaudio_dct binkaudio_rdft bintext bmp bmv_audio bmv_video brender_pix c93 cavs cdgraphics cdxl cinepak cljr cllc comfortnoise cook cpia cscd cyuv dca dfa dirac dnxhd dpx dsicinaudio dsicinvideo dvbsub dvdsub dvvideo dxa dxtory eac3 eacmv eamad eatgq eatgv eatqi eightbps eightsvx_exp eightsvx_fib escape124 escape130 exr ffv1 ffvhuff ffwavesynth flac flashsv flashsv2 flic flv fourxm fraps frwu g723_1 g729 gif gsm gsm_ms h261 h263 h263i h263p h264 h264_crystalhd h264_vda h264_vdpau huffyuv iac idcin idf iff_byterun1 iff_ilbm imc indeo2 indeo3 indeo4 indeo5 interplay_dpcm interplay_video jacosub jpeg2000 jpegls jv kgv1 kmvc lagarith libcelt libgsm libgsm_ms libilbc libopencore_amrnb libopencore_amrwb libopenjpeg libopus libschroedinger libspeex libstagefright_h264 libutvideo libvorbis libvpx loco mace3 mace6 mdec microdvd mimic mjpeg mjpegb mlp mmvideo motionpixels movtext mp1 mp1float mp2 mp2float mp3 mp3adu mp3adufloat mp3float mp3on4 mp3on4float mpc7 mpc8 mpeg1_vdpau mpeg1video mpeg2_crystalhd mpeg2video mpeg4 mpeg4_crystalhd mpeg4_vdpau mpeg_vdpau mpeg_xvmc mpegvideo mpl2 msa1 msmpeg4_crystalhd msmpeg4v1 msmpeg4v2 msmpeg4v3 msrle mss1 mss2 msvideo1 mszh mts2 mvc1 mvc2 mxpeg nellymoser nuv paf_audio paf_video pam pbm pcm_alaw pcm_bluray pcm_dvd pcm_f32be pcm_f32le pcm_f64be pcm_f64le pcm_lxf pcm_mulaw pcm_s16be pcm_s16be_planar pcm_s16le pcm_s16le_planar pcm_s24be pcm_s24daud pcm_s24le pcm_s24le_planar pcm_s32be pcm_s32le pcm_s32le_planar pcm_s8 pcm_s8_planar pcm_u16be pcm_u16le pcm_u24be pcm_u24le pcm_u32be pcm_u32le pcm_u8 pcm_zork pcx pgm pgmyuv pgssub pictor pjs png ppm prores prores_lgpl ptx qcelp qdm2 qdraw qpeg qtrle r10k r210 ra_144 ra_288 ralf rawvideo realtext rl2 roq roq_dpcm rpza rv10 rv20 rv30 rv40 s302m sami sanm sgi sgirle shorten sipr smackaud smacker smc snow sol_dpcm sonic sp5x srt subrip subviewer subviewer1 sunrast svq1 svq3 tak targa targa_y216 text theora thp tiertexseqvideo tiff tmv truehd truemotion1 truemotion2 truespeech tscc tscc2 tta twinvq txd ulti utvideo v210 v210x v308 v408 v410 vb vble vc1 vc1_crystalhd vc1_vdpau vc1image vcr1 vima vmdaudio vmdvideo vmnc vorbis vp3 vp5 vp6 vp6a vp6f vp8 vplayer vqa wavpack webvtt wmalossless wmapro wmav1 wmav2 wmavoice wmv1 wmv2 wmv3 wmv3_crystalhd wmv3_vdpau wmv3image wnv1 ws_snd1 xan_dpcm xan_wc3 xan_wc4 xbin xbm xface xl xsub xwd y41p yop yuv4 zerocodec zlib zmbv CACHE STRING "Available decoders" FORCE)
set (ENABLED_DECODERS theora flac vorbis CACHE STRING "Enabled audio and video decoders")

if (MACOSX)
set(OS_ARG "macosx")
elseif(WINDOWS)
set(OS_ARG "windows")
elseif(LINUX)
set(OS_ARG "linux")
endif()

if (MSVC)
set(VS_ARG "vs")
else()
set(VS_ARG "novs")
endif()

if (MACOSX)
set(ARCH_ARG ${CMAKE_OSX_ARCHITECTURES})
else()
set(ARCH_ARG notosx)
endif()

RunShell(${LIB_NAME} PRE_LINK ./build_ffmpeg.sh ${OS_ARG} ${VS_ARG} ${ARCH_ARG} ${ENABLED_DECODERS})

endif()

# Sample building
if (BUILD_SFEMOVIE_SAMPLE)
add_subdirectory(sample)
Expand Down
13 changes: 9 additions & 4 deletions RunShellCommand.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,14 @@ function(RunShell target phase shell_command)
COMMAND BatchBridgeToShell ARGS ${MINGW_DIR} ${cmd}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
else()
add_custom_command(TARGET ${target}
${phase}
COMMAND bash ARGS -c \"${cmd}\"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
message(STATUS "add_custom_command(TARGET ${target} ${phase} COMMAND bash ARGS -c \"${cmd}\" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}")
add_custom_target(BuildFFMPEG ALL DEPENDS "ffmpeg-libs")
add_custom_command(OUTPUT "ffmpeg-libs"
COMMAND bash ARGS -c \"${cmd}\"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
# add_custom_command(TARGET ${target}
# ${phase}
# COMMAND bash ARGS -c \"${cmd}\"
# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
endif()
endfunction(RunShell)
2 changes: 1 addition & 1 deletion RunShellCommand.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Shell script to run the command given as parameter
# If this script is called from a batch script, it is expected to have
#
# two unneeded parameters

if [ "$1" == "--from-batch" ]
then
Expand Down
8 changes: 4 additions & 4 deletions cmake/Modules/FindFFMPEG.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,7 @@ FFMPEG_FIND(LIBAVUTIL avutil avutil.h)
FFMPEG_FIND(LIBSWSCALE swscale swscale.h) # not sure about the header to look for here.

SET(FFMPEG_FOUND "NO")
# Note we don't check FFMPEG_LIBSWSCALE_FOUND here, it's optional.
IF (FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVDEVICE_FOUND AND FFMPEG_LIBAVCODEC_FOUND AND FFMPEG_LIBAVUTIL_FOUND AND STDINT_OK)
IF (FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVDEVICE_FOUND AND FFMPEG_LIBAVCODEC_FOUND AND FFMPEG_LIBAVUTIL_FOUND AND FFMPEG_LIBSWSCALE_FOUND AND STDINT_OK)

SET(FFMPEG_FOUND "YES")

Expand All @@ -136,6 +135,7 @@ IF (FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVDEVICE_FOUND AND FFMPEG_LIBAVCODE
${FFMPEG_LIBAVDEVICE_INCLUDE_DIRS}
${FFMPEG_LIBAVCODEC_INCLUDE_DIRS}
${FFMPEG_LIBAVUTIL_INCLUDE_DIRS}
${FFMPEG_LIBSWSCALE_INCLUDE_DIRS}
)

# Using the new include style for FFmpeg prevents issues with #include <time.h>
Expand All @@ -154,8 +154,8 @@ IF (FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVDEVICE_FOUND AND FFMPEG_LIBAVCODE
${FFMPEG_LIBAVFORMAT_LIBRARIES}
${FFMPEG_LIBAVDEVICE_LIBRARIES}
${FFMPEG_LIBAVCODEC_LIBRARIES}
${FFMPEG_LIBAVUTIL_LIBRARIES})

${FFMPEG_LIBAVUTIL_LIBRARIES}
${FFMPEG_LIBSWSCALE_LIBRARIES})
ELSE ()

# MESSAGE(STATUS "Could not find FFMPEG")
Expand Down

0 comments on commit 9a28286

Please sign in to comment.