aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-03-02 07:29:00 -0800
committerRobert Schumacher <roschuma@microsoft.com>2017-03-02 07:29:19 -0800
commit2f8d8d8b18f8a6dd7dad6e3290074dc6044395ce (patch)
tree420e50644413041ac7098a9118139811827e0cce
parent605ad4cf2f47f81ffeb8f3e3f076946aa83fbaf3 (diff)
downloadvcpkg-2f8d8d8b18f8a6dd7dad6e3290074dc6044395ce.tar.gz
vcpkg-2f8d8d8b18f8a6dd7dad6e3290074dc6044395ce.zip
[ffmpeg] Initial commit of version 3.2.4
-rw-r--r--ports/ffmpeg/CONTROL4
-rw-r--r--ports/ffmpeg/build.sh17
-rw-r--r--ports/ffmpeg/portfile.cmake97
-rw-r--r--scripts/cmake/vcpkg_acquire_msys.cmake30
-rw-r--r--scripts/cmake/vcpkg_common_functions.cmake3
5 files changed, 150 insertions, 1 deletions
diff --git a/ports/ffmpeg/CONTROL b/ports/ffmpeg/CONTROL
new file mode 100644
index 000000000..30d957b6c
--- /dev/null
+++ b/ports/ffmpeg/CONTROL
@@ -0,0 +1,4 @@
+Source: ffmpeg
+Version: 3.2.4
+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..4bd8ea4bc
--- /dev/null
+++ b/ports/ffmpeg/portfile.cmake
@@ -0,0 +1,97 @@
+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)
+
+file(REMOVE ${EXP_FILES} ${LIB_FILES} ${DEF_FILES} ${EXE_FILES})
+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)
diff --git a/scripts/cmake/vcpkg_acquire_msys.cmake b/scripts/cmake/vcpkg_acquire_msys.cmake
new file mode 100644
index 000000000..20e249c8b
--- /dev/null
+++ b/scripts/cmake/vcpkg_acquire_msys.cmake
@@ -0,0 +1,30 @@
+function(vcpkg_acquire_msys PATH_TO_ROOT_OUT)
+ set(TOOLPATH ${DOWNLOADS}/tools/msys2)
+ set(TOOLSUBPATH msys32)
+ set(URL "https://sourceforge.net/projects/msys2/files/Base/i686/msys2-base-i686-20161025.tar.xz/download")
+ set(ARCHIVE "msys2-base-i686-20161025.tar.xz")
+ set(HASH c9260a38e0c6bf963adeaea098c4e376449c1dd0afe07480741d6583a1ac4c138951ccb0c5388bd148e04255a5c1a23bf5ee2d58dcd6607c14f1eaa5639a7c85)
+
+ set(PATH_TO_ROOT ${TOOLPATH}/${TOOLSUBPATH})
+
+ if(NOT EXISTS "${TOOLPATH}/initialized-msys2.stamp")
+ message(STATUS "Acquiring MSYS2...")
+ file(DOWNLOAD ${URL} ${DOWNLOADS}/${ARCHIVE}
+ EXPECTED_HASH SHA512=${HASH}
+ )
+ file(REMOVE_RECURSE ${TOOLPATH})
+ file(MAKE_DIRECTORY ${TOOLPATH})
+ execute_process(
+ COMMAND ${CMAKE_COMMAND} -E tar xzf ${DOWNLOADS}/${ARCHIVE}
+ WORKING_DIRECTORY ${TOOLPATH}
+ )
+ execute_process(
+ COMMAND ${PATH_TO_ROOT}/usr/bin/bash.exe --noprofile --norc -c "PATH=/usr/bin:\$PATH;pacman-key --init;pacman-key --populate"
+ WORKING_DIRECTORY ${TOOLPATH}
+ )
+ file(WRITE "${TOOLPATH}/initialized-msys2.stamp" "0")
+ message(STATUS "Acquiring MSYS2... OK")
+ endif()
+
+ set(${PATH_TO_ROOT_OUT} ${PATH_TO_ROOT} PARENT_SCOPE)
+endfunction() \ No newline at end of file
diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake
index 44278ebba..a003548d5 100644
--- a/scripts/cmake/vcpkg_common_functions.cmake
+++ b/scripts/cmake/vcpkg_common_functions.cmake
@@ -1,3 +1,4 @@
+include(vcpkg_acquire_msys)
include(vcpkg_download_distfile)
include(vcpkg_extract_source_archive)
include(vcpkg_execute_required_process)
@@ -16,4 +17,4 @@ include(vcpkg_copy_pdbs)
include(vcpkg_copy_tool_dependencies)
include(vcpkg_get_program_files_32_bit)
include(vcpkg_get_program_files_platform_bitness)
-include(vcpkg_get_windows_sdk)
+include(vcpkg_get_windows_sdk) \ No newline at end of file