aboutsummaryrefslogtreecommitdiff
path: root/ports/ffmpeg
diff options
context:
space:
mode:
authorThomas Fussell <thomas.fussell@gmail.com>2017-03-12 17:44:06 -0400
committerThomas Fussell <thomas.fussell@gmail.com>2017-03-12 17:44:06 -0400
commit2f42035ab43dd50cd863b51944aa099a99ae60f0 (patch)
tree4b6cfd43955e946721c58028fd8564c861d5c331 /ports/ffmpeg
parente02e85626f3206feda86a6f5757009005e0cfe3e (diff)
parent1c9873a0daf625f67474aaf3e163c592c27ecb65 (diff)
downloadvcpkg-2f42035ab43dd50cd863b51944aa099a99ae60f0.tar.gz
vcpkg-2f42035ab43dd50cd863b51944aa099a99ae60f0.zip
Merge branch 'master' of git://github.com/Microsoft/vcpkg
Diffstat (limited to 'ports/ffmpeg')
-rw-r--r--ports/ffmpeg/CONTROL4
-rw-r--r--ports/ffmpeg/build.sh17
-rw-r--r--ports/ffmpeg/portfile.cmake105
3 files changed, 126 insertions, 0 deletions
diff --git a/ports/ffmpeg/CONTROL b/ports/ffmpeg/CONTROL
new file mode 100644
index 000000000..eea91d568
--- /dev/null
+++ b/ports/ffmpeg/CONTROL
@@ -0,0 +1,4 @@
+Source: ffmpeg
+Version: 3.2.4-2
+Description: a library to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.
+ FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure FATE across Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations. \ No newline at end of file
diff --git a/ports/ffmpeg/build.sh b/ports/ffmpeg/build.sh
new file mode 100644
index 000000000..3474a111e
--- /dev/null
+++ b/ports/ffmpeg/build.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/bash
+set -e
+export PATH=/usr/bin:$PATH
+pacman -Sy --noconfirm --needed diffutils make
+
+PATH_TO_BUILD_DIR="`cygpath "$1"`"
+PATH_TO_SRC_DIR="`cygpath "$2"`"
+PATH_TO_PACKAGE_DIR="`cygpath "$3"`"
+# Note: $4 is extra configure options
+
+cd "$PATH_TO_BUILD_DIR"
+echo "=== CONFIGURING ==="
+"$PATH_TO_SRC_DIR/configure" --toolchain=msvc "--prefix=$PATH_TO_PACKAGE_DIR" $4
+echo "=== BUILDING ==="
+make -j6
+echo "=== INSTALLING ==="
+make install
diff --git a/ports/ffmpeg/portfile.cmake b/ports/ffmpeg/portfile.cmake
new file mode 100644
index 000000000..7b45fc898
--- /dev/null
+++ b/ports/ffmpeg/portfile.cmake
@@ -0,0 +1,105 @@
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ message(STATUS "Building as static libraries not currently supported. Building as DLLs instead.")
+ set(VCPKG_LIBRARY_LINKAGE "dynamic")
+endif()
+
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/ffmpeg-3.2.4)
+vcpkg_download_distfile(ARCHIVE
+ URLS "http://ffmpeg.org/releases/ffmpeg-3.2.4.tar.bz2"
+ FILENAME "ffmpeg-3.2.4.tar.bz2"
+ SHA512 ba5004d0f2659faa139c7dbf2f0fc6bab1d4e017d919f4ac271a5d2e8e4a3478909176e3a4d1ad33ddf2f62ab28dd9e00ce9be1399efb7cb3276dde79134cdaa
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_find_acquire_program(YASM)
+get_filename_component(YASM_EXE_PATH ${YASM} DIRECTORY)
+set(ENV{PATH} "$ENV{PATH};${YASM_EXE_PATH}")
+
+vcpkg_acquire_msys(MSYS_ROOT)
+set(BASH ${MSYS_ROOT}/usr/bin/bash.exe)
+
+set(_csc_PROJECT_PATH ffmpeg)
+
+file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
+
+set(OPTIONS "--disable-ffmpeg --disable-ffprobe --disable-doc --enable-debug")
+set(OPTIONS "${OPTIONS} --enable-runtime-cpudetect")
+set(OPTIONS_DEBUG "") # Note: --disable-optimizations can't be used due to http://ffmpeg.org/pipermail/libav-user/2013-March/003945.html
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ set(OPTIONS "${OPTIONS} --disable-static --enable-shared")
+endif()
+
+if(VCPKG_CRT_LINKAGE STREQUAL "dynamic")
+ set(OPTIONS_DEBUG "${OPTIONS_DEBUG} --extra-cflags=-MDd --extra-cxxflags=-MDd --extra-ldflags=-NODEFAULTLIB:libcmt")
+else()
+ set(OPTIONS_DEBUG "${OPTIONS_DEBUG} --extra-cflags=-MTd --extra-cxxflags=-MTd --extra-ldflags=-NODEFAULTLIB:libcmt")
+endif()
+
+message(STATUS "Building ${_csc_PROJECT_PATH} for Release")
+file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
+vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc "${CMAKE_CURRENT_LIST_DIR}\\build.sh"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" # BUILD DIR
+ "${SOURCE_PATH}" # SOURCE DIR
+ "${CURRENT_PACKAGES_DIR}" # PACKAGE DIR
+ "${OPTIONS}"
+ WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
+ LOGNAME build-${TARGET_TRIPLET}-rel
+)
+
+message(STATUS "Building ${_csc_PROJECT_PATH} for Debug")
+file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
+vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc "${CMAKE_CURRENT_LIST_DIR}\\build.sh"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg" # BUILD DIR
+ "${SOURCE_PATH}" # SOURCE DIR
+ "${CURRENT_PACKAGES_DIR}/debug" # PACKAGE DIR
+ "${OPTIONS} ${OPTIONS_DEBUG}"
+ WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
+ LOGNAME build-${TARGET_TRIPLET}-dbg
+)
+
+file(GLOB DEF_FILES ${CURRENT_PACKAGES_DIR}/lib/*.def ${CURRENT_PACKAGES_DIR}/debug/lib/*.def)
+
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
+ set(LIB_MACHINE_ARG /machine:ARM)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ set(LIB_MACHINE_ARG /machine:x86)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(LIB_MACHINE_ARG /machine:x64)
+else()
+ message(FATAL_ERROR "Unsupported target architecture")
+endif()
+
+foreach(DEF_FILE ${DEF_FILES})
+ get_filename_component(DEF_FILE_DIR "${DEF_FILE}" DIRECTORY)
+ get_filename_component(DEF_FILE_NAME "${DEF_FILE}" NAME)
+ string(REGEX REPLACE "-[0-9]*\\.def" ".lib" OUT_FILE_NAME "${DEF_FILE_NAME}")
+ file(TO_NATIVE_PATH "${DEF_FILE}" DEF_FILE_NATIVE)
+ file(TO_NATIVE_PATH "${DEF_FILE_DIR}/${OUT_FILE_NAME}" OUT_FILE_NATIVE)
+ message(STATUS "Generating ${OUT_FILE_NATIVE}")
+ vcpkg_execute_required_process(
+ COMMAND lib.exe /def:${DEF_FILE_NATIVE} /out:${OUT_FILE_NATIVE} ${LIB_MACHINE_ARG}
+ WORKING_DIRECTORY ${CURRENT_PACKAGES_DIR}
+ LOGNAME libconvert-${TARGET_TRIPLET}
+ )
+endforeach()
+
+file(GLOB EXP_FILES ${CURRENT_PACKAGES_DIR}/lib/*.exp ${CURRENT_PACKAGES_DIR}/debug/lib/*.exp)
+file(GLOB LIB_FILES ${CURRENT_PACKAGES_DIR}/bin/*.lib ${CURRENT_PACKAGES_DIR}/debug/bin/*.lib)
+file(GLOB EXE_FILES ${CURRENT_PACKAGES_DIR}/bin/*.exe ${CURRENT_PACKAGES_DIR}/debug/bin/*.exe)
+set(FILES_TO_REMOVE ${EXP_FILES} ${LIB_FILES} ${DEF_FILES} ${EXE_FILES})
+list(LENGTH FILES_TO_REMOVE FILES_TO_REMOVE_LEN)
+if(FILES_TO_REMOVE_LEN GREATER 0)
+ file(REMOVE ${FILES_TO_REMOVE})
+endif()
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
+
+vcpkg_copy_pdbs()
+
+# Handle copyright
+# TODO: Examine build log and confirm that this license matches the build output
+file(COPY ${SOURCE_PATH}/COPYING.LGPLv2.1 DESTINATION ${CURRENT_PACKAGES_DIR}/share/ffmpeg)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/ffmpeg/COPYING.LGPLv2.1 ${CURRENT_PACKAGES_DIR}/share/ffmpeg/copyright)