Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion WindowsRequirements.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@
"woff2",
"pixman",
"cairo",
"libpsl"
"libpsl",
"libavif"
]
15 changes: 15 additions & 0 deletions ports/libavif/disable-source-utf8.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6d9431c..29d7d60 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -161,8 +161,8 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
# A C4556 warning will be generated on violation.
# Commonly used /utf-8 flag assumes UTF-8 for both source and console, which is usually not the case.
# Warnings can be suppressed but there will still be random characters printed to the console.
- /source-charset:utf-8
- /execution-charset:us-ascii
+ #/source-charset:utf-8
+ #/execution-charset:us-ascii
)
else()
message(FATAL_ERROR "libavif: Unknown compiler, bailing out")
63 changes: 63 additions & 0 deletions ports/libavif/find-dependency.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index aca5d6f..48a26c3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -156,7 +156,10 @@ if(AVIF_LOCAL_LIBYUV)
set(libyuv_FOUND TRUE)
message(STATUS "libavif: local libyuv found; libyuv-based fast paths enabled.")
else(AVIF_LOCAL_LIBYUV)
- find_package(libyuv QUIET) # not required
+ find_package(libyuv_config NAMES libyuv CONFIG REQUIRED)
+ set(LIBYUV_INCLUDE_DIR "${libyuv_INCLUDE_DIRS}")
+ set(LIBYUV_LIBRARY "yuv")
+ find_package(libyuv MODULE REQUIRED)
if(libyuv_FOUND)
# libyuv 1755 exposed all of the I*Matrix() functions, which libavif relies on.
# libyuv 1774 exposed ScalePlane_12 function, which libavif can use for some additional optimizations.
@@ -660,7 +663,7 @@ endif()
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
install(
TARGETS avif
- EXPORT ${PROJECT_NAME}-config
+ EXPORT ${PROJECT_NAME}-targets
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
@@ -668,7 +671,7 @@ if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)

# Enable CMake configs in VCPKG mode
if(BUILD_SHARED_LIBS OR VCPKG_TARGET_TRIPLET)
- install(EXPORT ${PROJECT_NAME}-config DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+ install(EXPORT ${PROJECT_NAME}-targets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})

include(CMakePackageConfigHelpers)
write_basic_package_version_file(
@@ -677,6 +680,28 @@ if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake.in "@PACKAGE_INIT@\n")
+ if(NOT BUILD_SHARED_LIBS)
+ file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake.in "
+ include(CMakeFindDependencyMacro)
+ find_dependency(libyuv CONFIG)
+ set(THREADS_PREFER_PTHREAD_FLAG ON)
+ find_dependency(Threads)
+ ")
+ endif()
+ file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake.in "include(\${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}-targets.cmake)")
+
+ # Install CMake configuration export file.
+ configure_package_config_file(
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+ NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO
+ )
+ install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+ )
endif()

# Handle both relative and absolute paths (e.g. NixOS) for a relocatable package
41 changes: 41 additions & 0 deletions ports/libavif/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO AOMediaCodec/libavif
REF "v${VERSION}"
SHA512 37f0de757180c6414778e688006940395960b316c25192d6beb97a07942aff4bd3b712dec2eff52cd26f5d72c352731442175dfeb90e2e1381133539760142b0
HEAD_REF master
PATCHES
disable-source-utf8.patch
find-dependency.patch # from https://github.com/AOMediaCodec/libavif/pull/1339
)

vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
aom AVIF_CODEC_AOM
dav1d AVIF_CODEC_DAV1D
)

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DAVIF_BUILD_APPS=OFF
-DCMAKE_DISABLE_FIND_PACKAGE_libsharpyuv=ON
${FEATURE_OPTIONS}
)

vcpkg_cmake_install()

vcpkg_copy_pdbs()

# Move cmake configs
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT})

# Fix pkg-config files
vcpkg_fixup_pkgconfig()

# Remove duplicate files
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include"
"${CURRENT_PACKAGES_DIR}/debug/share")

# Handle copyright
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
37 changes: 37 additions & 0 deletions ports/libavif/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "libavif",
"version-semver": "1.0.4",
"port-version": 2,
"description": "Library for encoding and decoding AVIF files",
"homepage": "https://github.com/AOMediaCodec/libavif",
"license": "BSD-2-Clause AND Apache-2.0",
"dependencies": [
"libyuv",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
},
{
"name": "vcpkg-cmake-webkit",
"host": true
}
],
"features": {
"aom": {
"description": "AV1 codec library",
"dependencies": [
"aom"
]
},
"dav1d": {
"description": "dav1d decoder library",
"dependencies": [
"dav1d"
]
}
}
}
46 changes: 46 additions & 0 deletions ports/libyuv/cmake.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9a20941..945c5a4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,8 +4,8 @@

include(CheckCSourceCompiles)

+cmake_minimum_required(VERSION 3.12)
project ( YUV C CXX ) # "C" is required even for C++ projects
-cmake_minimum_required( VERSION 2.8.12 )
option( UNIT_TEST "Built unit tests" OFF )

set ( ly_base_dir ${PROJECT_SOURCE_DIR} )
@@ -164,7 +164,8 @@ target_link_libraries ( yuvconstants ${ly_lib_static} )
find_package ( JPEG )
if (JPEG_FOUND)
include_directories( ${JPEG_INCLUDE_DIR} )
- target_link_libraries( ${ly_lib_shared} ${JPEG_LIBRARY} )
+ target_link_libraries( ${ly_lib_static} PRIVATE JPEG::JPEG )
+ target_link_libraries( ${ly_lib_shared} PRIVATE JPEG::JPEG )
add_definitions( -DHAVE_JPEG )
endif()

@@ -211,9 +212,18 @@ endif()


# install the conversion tool, .so, .a, and all the header files
-install ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconvert DESTINATION bin )
-install ( TARGETS ${ly_lib_static} DESTINATION lib )
-install ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib RUNTIME DESTINATION bin )
+install(TARGETS yuvconvert)
+if(BUILD_SHARED_LIBS)
+ target_include_directories(${ly_lib_shared} PUBLIC $<INSTALL_INTERFACE:include>)
+ install(TARGETS ${ly_lib_shared} EXPORT libyuv-targets)
+ set_target_properties(${ly_lib_shared} PROPERTIES EXPORT_NAME "${ly_lib_static}") # vcpkg legacy
+ add_definitions(-DLIBYUV_BUILDING_SHARED_LIBRARY)
+else()
+ target_include_directories(${ly_lib_static} PUBLIC $<INSTALL_INTERFACE:include>)
+ install(TARGETS ${ly_lib_static} EXPORT libyuv-targets)
+ set_target_properties(${ly_lib_shared} PROPERTIES EXCLUDE_FROM_ALL 1)
+endif()
+install(EXPORT libyuv-targets DESTINATION share/libyuv)
install ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include )

# create the .deb and .rpm packages using cpack
5 changes: 5 additions & 0 deletions ports/libyuv/libyuv-config.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
include(CMakeFindDependencyMacro)
find_dependency(JPEG)

set(libyuv_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/../../include")
include("${CMAKE_CURRENT_LIST_DIR}/libyuv-targets.cmake")
41 changes: 41 additions & 0 deletions ports/libyuv/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
vcpkg_from_git(
OUT_SOURCE_PATH SOURCE_PATH
URL https://chromium.googlesource.com/libyuv/libyuv
REF c21dda06dd8d19b6e50168c28c324c1f32e94407 # 6 commits after switch to 1895, reason: CMake changes
# Check https://chromium.googlesource.com/libyuv/libyuv/+/refs/heads/main/include/libyuv/version.h for a version!
PATCHES
cmake.diff
)

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
)

vcpkg_cmake_install()
vcpkg_cmake_config_fixup()
vcpkg_copy_pdbs()
vcpkg_copy_tools(TOOL_NAMES yuvconvert AUTO_CLEAN)

if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/libyuv/basic_types.h" "defined(LIBYUV_USING_SHARED_LIBRARY)" "1")
endif()

file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")

file(COPY "${CMAKE_CURRENT_LIST_DIR}/libyuv-config.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")

vcpkg_cmake_get_vars(cmake_vars_file)
include("${cmake_vars_file}")
if(VCPKG_DETECTED_CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
file(APPEND "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" [[

Attention:
You are using MSVC to compile libyuv. This build won't compile any
of the acceleration codes, which results in a very slow library.
See workarounds: https://github.com/microsoft/vcpkg/issues/28446
]])
endif()

vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
5 changes: 5 additions & 0 deletions ports/libyuv/usage
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
libyuv provides CMake targets:

# Unofficial config package and target from vcpkg
find_package(libyuv CONFIG REQUIRED)
target_link_libraries(main PRIVATE yuv)
22 changes: 22 additions & 0 deletions ports/libyuv/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "libyuv",
"version": "1895",
"description": "libyuv is an open source project that includes YUV scaling and conversion functionality",
"homepage": "https://chromium.googlesource.com/libyuv/libyuv",
"license": null,
"dependencies": [
"libjpeg-turbo",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
},
{
"name": "vcpkg-cmake-get-vars",
"host": true
}
]
}