vcpkg/ports/x264/portfile.cmake

152 lines
5.2 KiB
CMake
Raw Normal View History

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO mirror/x264
REF eaa68fad9e5d201d42fde51665f2d137ae96baf0 # 0.164.3107 in pc file, to be updated below
SHA512 9181b222e7f8bbde4331141ff399e1ef20d3e2e7a8f939b373fbe08df6f3caa99b992afb0e559cc19f78c96f0105b88b2eb4e4b935484e25b2c15da7903d179b
HEAD_REF stable
[x64-windows-release] add a single config community triplet based on x64-windows and make it work on some ports (#15983) * add a single config community triplet based on x64-windows * add a failed port, otherwise mechanism does not support empty list * add failures to baseline * remove duplicate entry * second round of failures added to baseline * third round of regressions added to CI * [ade] fix single-config builds * [ade] update refs * remove duplicate entries * [unix2dos] restore eol in script file * add even more ports now failing in singleConfig... * [libjpeg-turbo] remove unnecessary check * [libjpeg-turbo] fix references * [baseline] restore check for ports that were added recently * [libmodplug] enable single config triplets * [tensorflow-common] enable single config triplets * update baseline * fix references * remove wrong check for single config triplets * fix references * [ogre] fix single config builds * [ogre] fix references * [untested] force x64-windows-release as host triplet when testing x64-windows-release in CI * fix * [x264] fix for single config * [x264] update refs * [libffi] enable single config builds * [libffi] update refs * remove cli broken arguments * [calceph] enable single-config builds * [calceph] fix references * [kf5config] enable single-config builds * [kf5config] fix references * [detours] enable single-config builds * [detours] fix references * [kf5*] enable single-config builds * [kf5*] fix references * fix * kf5config fix reference * trying again to force host triplet in CI * [boost] fix for single-config builds * [boost] update references * fix * [boost] update refs * disable host triplet in ci because it's not necessary * retrigger a build for ports previously failing * remove host triplet in ci, not necessary anymore? * make PR dry * [tensorflow-common] bump version * [tensorflow-common] fix references * Fix version database for boost-modular-build-helper. * fix references * restore CRLF on some ports * bump versions * fix references * bump port versions * fix references * boost-modular-build-helper: Reverted due to no changes. detours, kf5config, kf5holidays, libbacktrace: Reverted due to only whitespace changes. libffi: bumped port-version libmodplug: reverted due to no functional changes ogre, ogre-next: reverted due to incorrect case of "Debug" vs. "Release" already fixed in master. And rebuilt version database. Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
2021-12-20 23:50:45 +08:00
PATCHES
uwp-cflags.patch
parallel-install.patch
allow-clang-cl.patch
configure-as.patch # Ignore ':' from `vcpkg_configure_make`
)
vcpkg_replace_string("${SOURCE_PATH}/configure" [[/bin/bash]] [[/usr/bin/env bash]])
# Note on x264 versioning:
# The pc file exports "0.164.<N>" where is the number of commits.
# This must be fixed here because vcpkg uses a GH tarball instead of cloning the source.
# (The binary releases on https://artifacts.videolan.org/x264/ are named x264-r<N>-<COMMIT>.)
vcpkg_replace_string("${SOURCE_PATH}/version.sh" [[ver="x"]] [[ver="3095"]])
# Ensure that 'ENV{PATH}' leads to tool 'name' exactly at 'filepath'.
function(ensure_tool_in_path name filepath)
unset(program_found CACHE)
find_program(program_found "${name}" PATHS ENV PATH NO_DEFAULT_PATH NO_CACHE)
if(NOT filepath STREQUAL program_found)
cmake_path(GET filepath PARENT_PATH parent_path)
vcpkg_add_to_path(PREPEND "${parent_path}")
endif()
endfunction()
# Ensure that parent-scope variable 'var' doesn't contain a space,
# updating 'ENV{PATH}' and 'var' if needed.
function(transform_path_no_space var)
set(path "${${var}}")
if(path MATCHES " ")
cmake_path(GET path FILENAME program_name)
set("${var}" "${program_name}" PARENT_SCOPE)
ensure_tool_in_path("${program_name}" "${path}")
endif()
endfunction()
vcpkg_cmake_get_vars(cmake_vars_file)
include("${cmake_vars_file}")
transform_path_no_space(VCPKG_DETECTED_CMAKE_C_COMPILER)
set(ENV{CC} "${VCPKG_DETECTED_CMAKE_C_COMPILER}")
vcpkg_list(SET OPTIONS)
if(VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES "([^\/]*-)gcc$")
vcpkg_list(APPEND OPTIONS "--cross-prefix=${CMAKE_MATCH_1}")
endif()
vcpkg_list(SET EXTRA_ARGS)
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)
transform_path_no_space(NASM)
list(APPEND EXTRA_ARGS CONFIGURE_ENVIRONMENT_VARIABLES AS)
set(AS "${NASM}") # for CONFIGURE_ENVIRONMENT_VARIABLES
set(ENV{AS} "${NASM}") # for non-WIN32
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()
if(VCPKG_TARGET_IS_LINUX)
list(APPEND OPTIONS --enable-pic)
endif()
vcpkg_configure_make(
SOURCE_PATH "${SOURCE_PATH}"
NO_ADDITIONAL_PATHS
DETERMINE_BUILD_TRIPLET
${EXTRA_ARGS}
OPTIONS
${OPTIONS}
--disable-lavf
--disable-swscale
--disable-avs
--disable-ffms
--disable-gpac
--disable-lsmash
--disable-bashcompletion
OPTIONS_RELEASE
${OPTIONS_RELEASE}
--enable-strip
OPTIONS_DEBUG
--enable-debug
--disable-cli
)
vcpkg_install_make()
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()
file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)