aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/x264
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/x264')
-rw-r--r--vcpkg/ports/x264/allow-clang-cl.patch15
-rw-r--r--vcpkg/ports/x264/configure.patch40
-rw-r--r--vcpkg/ports/x264/parallel-install.patch14
-rw-r--r--vcpkg/ports/x264/portfile.cmake132
-rw-r--r--vcpkg/ports/x264/uwp-cflags.patch12
-rw-r--r--vcpkg/ports/x264/vcpkg.json41
-rw-r--r--vcpkg/ports/x264/version.diff.in15
7 files changed, 269 insertions, 0 deletions
diff --git a/vcpkg/ports/x264/allow-clang-cl.patch b/vcpkg/ports/x264/allow-clang-cl.patch
new file mode 100644
index 0000000..c4fe44d
--- /dev/null
+++ b/vcpkg/ports/x264/allow-clang-cl.patch
@@ -0,0 +1,15 @@
+diff --git a/configure b/configure
+index 6f95e2314..e677e36f4 100644
+--- a/configure
++++ b/configure
+@@ -606,9 +606,9 @@ if [[ $host_os = mingw* || $host_os = msys* || $host_os = cygwin* ]]; then
+ if cc_check '' -Qdiag-error:10006,10157 ; then
+ CHECK_CFLAGS="$CHECK_CFLAGS -Qdiag-error:10006,10157"
+ fi
+- elif [[ "$cc_base" = cl || "$cc_base" = cl[\ .]* ]]; then
++ elif [[ "$cc_base" = cl || "$cc_base" = cl[\ .]* || "$cc_base" = clang-cl || "$cc_base" = clang-cl[\ .]* ]]; then
+ # Standard Microsoft Visual Studio
+ compiler=CL
+ compiler_style=MS
+ CFLAGS="$CFLAGS -nologo -GS- -DHAVE_STRING_H -I\$(SRCPATH)/extras"
+ cpp_check '' '' '_MSC_VER > 1800 || (_MSC_VER == 1800 && _MSC_FULL_VER >= 180030324)' || die "Microsoft Visual Studio support requires Visual Studio 2013 Update 2 or newer"
diff --git a/vcpkg/ports/x264/configure.patch b/vcpkg/ports/x264/configure.patch
new file mode 100644
index 0000000..788a1a5
--- /dev/null
+++ b/vcpkg/ports/x264/configure.patch
@@ -0,0 +1,40 @@
+diff --git a/configure b/configure
+index e242e73c..e0d1df76 100755
+--- a/configure
++++ b/configure
+@@ -1,4 +1,7 @@
+-#!/bin/bash
++#!/usr/bin/env bash
++
++export CFLAGS="${CPPFLAGS} ${CFLAGS}"
++test "${AS:-:}" = ":" && unset AS
+
+ if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
+ cat <<EOF
+@@ -837,6 +840,7 @@ case $host_cpu in
+ AS="${AS-${SRCPATH}/tools/gas-preprocessor.pl -arch aarch64 -as-type armasm -- armasm64 -nologo}"
+ else
+ AS="${AS-${CC}}"
++ test "${AS}" = "${CC}" && ASFLAGS="${CPPFLAGS} ${ASFLAGS}"
+ fi
+ ;;
+ arm*)
+@@ -855,6 +859,7 @@ case $host_cpu in
+ AS="${AS-${SRCPATH}/tools/gas-preprocessor.pl -arch arm -as-type clang -force-thumb -- ${CC} -mimplicit-it=always}"
+ else
+ AS="${AS-${CC}}"
++ test "${AS}" = "${CC}" && ASFLAGS="${CPPFLAGS} ${ASFLAGS}"
+ fi
+ ;;
+ s390|s390x)
+@@ -1354,8 +1359,10 @@ if [ $SYS = WINDOWS -a $ARCH = X86 -a $compiler = GNU ] ; then
+ fi
+
+ if cc_check "stdio.h" "" "fseeko(stdin,0,0);" ; then
++ if cc_check "" "" "#if defined(__ANDROID_API__) && __ANDROID_API__ < 24\n#error\n#endif\n" ; then
+ define fseek fseeko
+ define ftell ftello
++ fi
+ elif cc_check "stdio.h" "" "fseeko64(stdin,0,0);" ; then
+ define fseek fseeko64
+ define ftell ftello64
diff --git a/vcpkg/ports/x264/parallel-install.patch b/vcpkg/ports/x264/parallel-install.patch
new file mode 100644
index 0000000..b2c24e0
--- /dev/null
+++ b/vcpkg/ports/x264/parallel-install.patch
@@ -0,0 +1,14 @@
+diff --git a/configure b/configure
+index 6f95e23..30924ba 100755
+--- a/configure
++++ b/configure
+@@ -1565,7 +1565,8 @@ fi
+
+ if [ "$cli" = "yes" ]; then
+ echo 'default: cli' >> config.mak
+- echo 'install: install-cli' >> config.mak
++ echo 'install:' >> config.mak
++ echo ' $(MAKE) install-cli' >> config.mak
+ fi
+
+ if [ "$shared" = "yes" ]; then
diff --git a/vcpkg/ports/x264/portfile.cmake b/vcpkg/ports/x264/portfile.cmake
new file mode 100644
index 0000000..a2523d6
--- /dev/null
+++ b/vcpkg/ports/x264/portfile.cmake
@@ -0,0 +1,132 @@
+# The latest ref in branch stable
+set(ref 31e19f92f00c7003fa115047ce50978bc98c3a0d)
+
+# Note on x264 versioning:
+# The pc file exports "0.164.<N>" where is the number of commits.
+# The binary releases on https://artifacts.videolan.org/x264/ are named x264-r<N>-<COMMIT>.
+# With a git clone, this can be determined by running `versions.sh`.
+# With vcpkg_from_gitlab, we modify `versions.sh` accordingly.
+# For --editable mode, use configured patch instead of vcpkg_replace_string.
+string(REGEX MATCH "^......." short_ref "${ref}")
+string(REGEX MATCH "[0-9]+\$" revision "${VERSION}")
+configure_file("${CURRENT_PORT_DIR}/version.diff.in" "${CURRENT_BUILDTREES_DIR}/src/version-${VERSION}.diff" @ONLY)
+
+vcpkg_from_gitlab(
+ GITLAB_URL https://code.videolan.org/
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO videolan/x264
+ REF "${ref}"
+ SHA512 707ff486677a1b5502d6d8faa588e7a03b0dee45491c5cba89341be4be23d3f2e48272c3b11d54cfc7be1b8bf4a3dfc3c3bb6d9643a6b5a2ed77539c85ecf294
+ HEAD_REF master
+ PATCHES
+ "${CURRENT_BUILDTREES_DIR}/src/version-${VERSION}.diff"
+ uwp-cflags.patch
+ parallel-install.patch
+ allow-clang-cl.patch
+ configure.patch
+)
+
+function(add_cross_prefix)
+ if(configure_env MATCHES "CC=([^\/]*-)gcc$")
+ vcpkg_list(APPEND arg_OPTIONS "--cross-prefix=${CMAKE_MATCH_1}")
+ endif()
+ set(arg_OPTIONS "${arg_OPTIONS}" PARENT_SCOPE)
+endfunction()
+
+set(nasm_archs x86 x64)
+set(gaspp_archs arm arm64)
+if(NOT "asm" IN_LIST FEATURES)
+ vcpkg_list(APPEND OPTIONS --disable-asm)
+elseif(NOT "$ENV{AS}" STREQUAL "")
+ # Accept setting from triplet
+elseif(VCPKG_TARGET_ARCHITECTURE IN_LIST nasm_archs)
+ vcpkg_find_acquire_program(NASM)
+ vcpkg_insert_program_into_path("${NASM}")
+ set(ENV{AS} "${NASM}")
+elseif(VCPKG_TARGET_ARCHITECTURE IN_LIST gaspp_archs AND VCPKG_TARGET_IS_WINDOWS AND VCPKG_HOST_IS_WINDOWS)
+ vcpkg_find_acquire_program(GASPREPROCESSOR)
+ list(FILTER GASPREPROCESSOR INCLUDE REGEX gas-preprocessor)
+ file(INSTALL "${GASPREPROCESSOR}" DESTINATION "${SOURCE_PATH}/tools" RENAME "gas-preprocessor.pl")
+endif()
+
+vcpkg_list(SET OPTIONS_RELEASE)
+if("tool" IN_LIST FEATURES)
+ vcpkg_list(APPEND OPTIONS_RELEASE --enable-cli)
+else()
+ vcpkg_list(APPEND OPTIONS_RELEASE --disable-cli)
+endif()
+
+if("chroma-format-all" IN_LIST FEATURES)
+ vcpkg_list(APPEND OPTIONS --chroma-format=all)
+endif()
+
+if(NOT "gpl" IN_LIST FEATURES)
+ vcpkg_list(APPEND OPTIONS --disable-gpl)
+endif()
+
+if(VCPKG_TARGET_IS_UWP)
+ list(APPEND OPTIONS --extra-cflags=-D_WIN32_WINNT=0x0A00)
+endif()
+
+vcpkg_make_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ DISABLE_CPPFLAGS # Build is not using CPP/CPPFLAGS
+ DISABLE_MSVC_WRAPPERS
+ LANGUAGES ASM C CXX # Requires NASM to compile
+ DISABLE_MSVC_TRANSFORMATIONS # disable warnings about unknown -Xcompiler/-Xlinker flags
+ PRE_CONFIGURE_CMAKE_COMMANDS
+ add_cross_prefix
+ OPTIONS
+ ${OPTIONS}
+ --enable-pic
+ --disable-lavf
+ --disable-swscale
+ --disable-avs
+ --disable-ffms
+ --disable-gpac
+ --disable-lsmash
+ --disable-bashcompletion
+ OPTIONS_RELEASE
+ ${OPTIONS_RELEASE}
+ --enable-strip
+ "--bindir=\\\${prefix}/bin"
+ OPTIONS_DEBUG
+ --enable-debug
+ --disable-cli
+ "--bindir=\\\${prefix}/bin"
+)
+
+vcpkg_make_install()
+
+if("tool" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES x264 AUTO_CLEAN)
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/x264.pc" "-lx264" "-llibx264")
+ if(NOT VCPKG_BUILD_TYPE)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/x264.pc" "-lx264" "-llibx264")
+ endif()
+endif()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic" AND VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ file(RENAME "${CURRENT_PACKAGES_DIR}/lib/libx264.dll.lib" "${CURRENT_PACKAGES_DIR}/lib/libx264.lib")
+ if (NOT VCPKG_BUILD_TYPE)
+ file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/libx264.dll.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/libx264.lib")
+ endif()
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/x264.h" "#ifdef X264_API_IMPORTS" "#if 1")
+elseif(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/x264.h" "defined(U_STATIC_IMPLEMENTATION)" "1" IGNORE_UNCHANGED)
+ file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/bin"
+ "${CURRENT_PACKAGES_DIR}/debug/bin"
+ )
+endif()
+
+vcpkg_fixup_pkgconfig()
+
+vcpkg_copy_pdbs()
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
diff --git a/vcpkg/ports/x264/uwp-cflags.patch b/vcpkg/ports/x264/uwp-cflags.patch
new file mode 100644
index 0000000..792e999
--- /dev/null
+++ b/vcpkg/ports/x264/uwp-cflags.patch
@@ -0,0 +1,12 @@
+diff --git a/configure b/configure
+index f7b14d9..2c92b2a 100644
+--- a/configure
++++ b/configure
+@@ -821,7 +821,6 @@ if [ $SYS = WINDOWS ]; then
+ if cpp_check "winapifamily.h" "" "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" ; then
+ [ $compiler = CL ] || die "WinRT requires MSVC"
+ define HAVE_WINRT
+- CFLAGS="$CFLAGS -MD"
+ LDFLAGS="$LDFLAGS -appcontainer"
+ if ! cpp_check "" "" "defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0603" ; then
+ die "_WIN32_WINNT must be defined to at least 0x0603 (Windows 8.1) for WinRT"
diff --git a/vcpkg/ports/x264/vcpkg.json b/vcpkg/ports/x264/vcpkg.json
new file mode 100644
index 0000000..1a9b14f
--- /dev/null
+++ b/vcpkg/ports/x264/vcpkg.json
@@ -0,0 +1,41 @@
+{
+ "name": "x264",
+ "version": "0.164.3108",
+ "port-version": 2,
+ "description": "x264 is a free software library and application for encoding video streams into the H.264/MPEG-4 AVC compression format",
+ "homepage": "https://www.videolan.org/developers/x264.html",
+ "license": "GPL-2.0-or-later",
+ "supports": "!xbox",
+ "dependencies": [
+ {
+ "name": "vcpkg-make",
+ "host": true
+ }
+ ],
+ "default-features": [
+ {
+ "name": "asm",
+ "platform": "!(arm32 & windows)"
+ },
+ {
+ "name": "gpl",
+ "platform": "!(arm32 & windows)"
+ }
+ ],
+ "features": {
+ "asm": {
+ "description": "Enable platform-specific assembly optimizations",
+ "supports": "!(arm32 & windows)"
+ },
+ "chroma-format-all": {
+ "description": "Output all chroma formats"
+ },
+ "gpl": {
+ "description": "Allow use of GPL code, the resulting libs and binaries will be under GPL"
+ },
+ "tool": {
+ "description": "Build the command line tool",
+ "supports": "!uwp"
+ }
+ }
+}
diff --git a/vcpkg/ports/x264/version.diff.in b/vcpkg/ports/x264/version.diff.in
new file mode 100644
index 0000000..3f13fda
--- /dev/null
+++ b/vcpkg/ports/x264/version.diff.in
@@ -0,0 +1,15 @@
+diff --git a/version.sh b/version.sh
+index 178fc952..06728796 100755
+--- a/version.sh
++++ b/version.sh
+@@ -3,8 +3,8 @@
+ cd "$(dirname "$0")" >/dev/null && [ -f x264.h ] || exit 1
+
+ api="$(grep '#define X264_BUILD' < x264.h | sed 's/^.* \([1-9][0-9]*\).*$/\1/')"
+-ver="x"
+-version=""
++ver="@revision@ @short_ref@"
++version=" r${ver} vcpkg"
+
+ if [ -d .git ] && command -v git >/dev/null 2>&1 ; then
+ localver="$(($(git rev-list HEAD | wc -l)))"