diff options
Diffstat (limited to 'vcpkg/ports/libjxl')
| -rw-r--r-- | vcpkg/ports/libjxl/avoid-exe-linker-flags.patch | 31 | ||||
| -rw-r--r-- | vcpkg/ports/libjxl/disambiguate-pow-calls.patch | 20 | ||||
| -rw-r--r-- | vcpkg/ports/libjxl/fix-dependencies.patch | 39 | ||||
| -rw-r--r-- | vcpkg/ports/libjxl/msvc-remove-libm.patch | 19 | ||||
| -rw-r--r-- | vcpkg/ports/libjxl/portfile.cmake | 73 | ||||
| -rw-r--r-- | vcpkg/ports/libjxl/vcpkg.json | 29 |
6 files changed, 211 insertions, 0 deletions
diff --git a/vcpkg/ports/libjxl/avoid-exe-linker-flags.patch b/vcpkg/ports/libjxl/avoid-exe-linker-flags.patch new file mode 100644 index 0000000..e119038 --- /dev/null +++ b/vcpkg/ports/libjxl/avoid-exe-linker-flags.patch @@ -0,0 +1,31 @@ +--- a/lib/jxl.cmake ++++ b/lib/jxl.cmake +@@ -224,9 +224,9 @@ set_target_properties(jxl_dec PROPERTIES + # Check whether the linker support excluding libs + set(LINKER_EXCLUDE_LIBS_FLAG "-Wl,--exclude-libs=ALL") + include(CheckCSourceCompiles) +-list(APPEND CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG}) ++list(APPEND CMAKE_REQUIRED_LINK_OPTIONS ${LINKER_EXCLUDE_LIBS_FLAG}) + check_c_source_compiles("int main(){return 0;}" LINKER_SUPPORT_EXCLUDE_LIBS) +-list(REMOVE_ITEM CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG}) ++list(REMOVE_ITEM CMAKE_REQUIRED_LINK_OPTIONS ${LINKER_EXCLUDE_LIBS_FLAG}) + + if(NOT BUILD_SHARED_LIBS) + target_compile_definitions(jxl PUBLIC -DJXL_STATIC_DEFINE) +diff --git a/lib/jxl_cms.cmake b/lib/jxl_cms.cmake +index 62d5b651fd5fcf25b8853a813f8e1c3098c2e93f..e23823c66d2b0d9c99138e52c44c7d3d02630a01 100644 +--- a/lib/jxl_cms.cmake ++++ b/lib/jxl_cms.cmake +@@ -46,9 +46,9 @@ set_target_properties(jxl_cms PROPERTIES + # Check whether the linker support excluding libs + set(LINKER_EXCLUDE_LIBS_FLAG "-Wl,--exclude-libs=ALL") + include(CheckCSourceCompiles) +-list(APPEND CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG}) ++list(APPEND CMAKE_REQUIRED_LINK_OPTIONS ${LINKER_EXCLUDE_LIBS_FLAG}) + check_c_source_compiles("int main(){return 0;}" LINKER_SUPPORT_EXCLUDE_LIBS) +-list(REMOVE_ITEM CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG}) ++list(REMOVE_ITEM CMAKE_REQUIRED_LINK_OPTIONS ${LINKER_EXCLUDE_LIBS_FLAG}) + + if(LINKER_SUPPORT_EXCLUDE_LIBS) + set_property(TARGET jxl_cms APPEND_STRING PROPERTY + diff --git a/vcpkg/ports/libjxl/disambiguate-pow-calls.patch b/vcpkg/ports/libjxl/disambiguate-pow-calls.patch new file mode 100644 index 0000000..acf6cd1 --- /dev/null +++ b/vcpkg/ports/libjxl/disambiguate-pow-calls.patch @@ -0,0 +1,20 @@ +--- a/lib/jxl/enc_ac_strategy.cc.orig Tue Nov 26 13:02:35 2024 ++++ b/lib/jxl/enc_ac_strategy.cc Tue May 20 08:17:46 2025 +@@ -486,7 +486,7 @@ + } + float loss_scalar = + pow(GetLane(SumOfLanes(df8, loss)) / (num_blocks * kDCTBlockSize), +- 1.0 / 8.0) * ++ 1.0f / 8.0f) * + (num_blocks * kDCTBlockSize) / quant_norm16; + entropy *= entropy_mul; + entropy += config.info_loss_multiplier * loss_scalar; +@@ -569,7 +569,7 @@ + tx.type == AcStrategyType::IDENTITY) && + butteraugli_target < 5.0) { + static const float kFavor2X2AtHighQuality = 0.4; +- float weight = pow((5.0f - butteraugli_target) / 5.0f, 2.0); ++ float weight = pow((5.0f - butteraugli_target) / 5.0f, 2.0f); + entropy_mul -= kFavor2X2AtHighQuality * weight; + } + if ((tx.type != AcStrategyType::DCT && tx.type != AcStrategyType::DCT2X2 && diff --git a/vcpkg/ports/libjxl/fix-dependencies.patch b/vcpkg/ports/libjxl/fix-dependencies.patch new file mode 100644 index 0000000..d0c6ad2 --- /dev/null +++ b/vcpkg/ports/libjxl/fix-dependencies.patch @@ -0,0 +1,39 @@ +diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt +index ea22103e..c6dbbe9f 100644 +--- a/third_party/CMakeLists.txt ++++ b/third_party/CMakeLists.txt +@@ -31,8 +31,9 @@ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/highway/CMakeLists.txt" AND + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/highway/LICENSE" + ${PROJECT_BINARY_DIR}/LICENSE.highway COPYONLY) + else() +- find_package(HWY 1.0.7) +- if (NOT HWY_FOUND) ++ find_package(HWY NAMES hwy REQUIRED) ++ add_library(hwy ALIAS hwy::hwy) ++ if (NOT TARGET hwy::hwy) + message(FATAL_ERROR + "Highway library (hwy) not found. Install libhwy-dev or download it " + "to third_party/highway from https://github.com/google/highway . " +@@ -48,7 +49,11 @@ endif() + # brotli + if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/brotli/c/include/brotli/decode.h" OR + JPEGXL_FORCE_SYSTEM_BROTLI) +- find_package(Brotli) ++ find_package(Brotli NAMES unofficial-brotli REQUIRED) ++ foreach(brlib IN ITEMS brotlienc brotlidec brotlicommon) ++ add_library(${brlib} ALIAS unofficial::brotli::${brlib}) ++ add_library(${brlib}-static ALIAS unofficial::brotli::${brlib}) ++ endforeach() + if (NOT Brotli_FOUND) + message(FATAL_ERROR + "Brotli not found, install brotli-dev or download brotli source code to" +@@ -106,7 +111,8 @@ if (JPEGXL_ENABLE_SKCMS) + endif () + if (JPEGXL_ENABLE_VIEWERS OR NOT JPEGXL_ENABLE_SKCMS OR JPEGXL_ENABLE_PLUGINS) + if( NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lcms/.git" OR JPEGXL_FORCE_SYSTEM_LCMS2 ) +- find_package(LCMS2 2.12) ++ find_package(LCMS2 NAMES lcms2 REQUIRED) ++ add_library(lcms2 ALIAS lcms2::lcms2) + if ( NOT LCMS2_FOUND ) + message(FATAL_ERROR "Please install lcms2 or run git submodule update --init") + endif () diff --git a/vcpkg/ports/libjxl/msvc-remove-libm.patch b/vcpkg/ports/libjxl/msvc-remove-libm.patch new file mode 100644 index 0000000..051557a --- /dev/null +++ b/vcpkg/ports/libjxl/msvc-remove-libm.patch @@ -0,0 +1,19 @@ +diff --git a/lib/jxl.cmake b/lib/jxl.cmake +index 404b976..119f49e 100644 +--- a/lib/jxl.cmake ++++ b/lib/jxl.cmake +@@ -271,10 +271,14 @@ set(JPEGXL_LIBRARY_REQUIRES + + if (BUILD_SHARED_LIBS) + set(JPEGXL_REQUIRES_TYPE "Requires.private") ++ if (NOT MSVC) + set(JPEGXL_PRIVATE_LIBS "-lm ${PKGCONFIG_CXX_LIB}") ++ endif() + else() + set(JPEGXL_REQUIRES_TYPE "Requires") ++ if (NOT MSVC) + set(JPEGXL_PUBLIC_LIBS "-lm ${PKGCONFIG_CXX_LIB}") ++ endif() + endif() + + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/jxl/libjxl.pc.in" diff --git a/vcpkg/ports/libjxl/portfile.cmake b/vcpkg/ports/libjxl/portfile.cmake new file mode 100644 index 0000000..826cec2 --- /dev/null +++ b/vcpkg/ports/libjxl/portfile.cmake @@ -0,0 +1,73 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO libjxl/libjxl + REF "v${VERSION}" + SHA512 0cfd81d9d3b783f96bd04f244d73ffbc12186c89993d46064a2751bef0a446a5e86be05add5c10f60d4482d39333d9bf3f9a866d6eb84f8fa0d4e8b5828fd74c + HEAD_REF main + PATCHES + fix-dependencies.patch + avoid-exe-linker-flags.patch # https://github.com/libjxl/libjxl/pull/4229 + msvc-remove-libm.patch + disambiguate-pow-calls.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + tools JPEGXL_ENABLE_TOOLS + INVERTED_FEATURES + tools CMAKE_DISABLE_FIND_PACKAGE_GIF + tools CMAKE_DISABLE_FIND_PACKAGE_JPEG + tools CMAKE_DISABLE_FIND_PACKAGE_PNG + tools CMAKE_DISABLE_FIND_PACKAGE_ZLIB +) + +if(VCPKG_TARGET_IS_UWP) + string(APPEND VCPKG_C_FLAGS " /wd4146") + string(APPEND VCPKG_CXX_FLAGS " /wd4146") +endif() + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + "-DJPEGXL_VERSION=${JPEGXL_VERSION}" + -DJPEGXL_FORCE_SYSTEM_HWY=ON + -DJPEGXL_FORCE_SYSTEM_BROTLI=ON + -DJPEGXL_FORCE_SYSTEM_HWY=ON + -DJPEGXL_FORCE_SYSTEM_LCMS2=ON + ${FEATURE_OPTIONS} + -DJPEGXL_ENABLE_BENCHMARK=OFF + -DJPEGXL_ENABLE_DOXYGEN=OFF + -DJPEGXL_ENABLE_EXAMPLES=OFF + -DJPEGXL_ENABLE_FUZZERS=OFF + -DJPEGXL_ENABLE_JNI=OFF + -DJPEGXL_ENABLE_MANPAGES=OFF + -DJPEGXL_ENABLE_OPENEXR=OFF + -DJPEGXL_ENABLE_PLUGINS=OFF + -DJPEGXL_ENABLE_SJPEG=OFF + -DJPEGXL_ENABLE_SKCMS=OFF + -DJPEGXL_ENABLE_TCMALLOC=OFF + -DBUILD_TESTING=OFF + -DCMAKE_FIND_PACKAGE_TARGETS_GLOBAL=ON + -DJPEGXL_BUNDLE_LIBPNG=OFF + MAYBE_UNUSED_VARIABLES + CMAKE_DISABLE_FIND_PACKAGE_GIF + CMAKE_DISABLE_FIND_PACKAGE_JPEG + CMAKE_DISABLE_FIND_PACKAGE_PNG + CMAKE_DISABLE_FIND_PACKAGE_ZLIB +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_fixup_pkgconfig() + +if(JPEGXL_ENABLE_TOOLS) + vcpkg_copy_tools(TOOL_NAMES cjxl djxl jxlinfo AUTO_CLEAN) +endif() + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/jxl/jxl_export.h" "ifdef JXL_STATIC_DEFINE" "if 1") +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/vcpkg/ports/libjxl/vcpkg.json b/vcpkg/ports/libjxl/vcpkg.json new file mode 100644 index 0000000..df8b89e --- /dev/null +++ b/vcpkg/ports/libjxl/vcpkg.json @@ -0,0 +1,29 @@ +{ + "name": "libjxl", + "version-semver": "0.11.1", + "port-version": 4, + "description": "JPEG XL image format reference implementation", + "homepage": "https://github.com/libjxl/libjxl", + "license": "BSD-3-Clause", + "dependencies": [ + "brotli", + "highway", + "lcms", + { + "name": "vcpkg-cmake", + "host": true + } + ], + "features": { + "tools": { + "description": "Build user tools: cjxl and djxl", + "supports": "!uwp", + "dependencies": [ + "giflib", + "libjpeg-turbo", + "libpng", + "zlib" + ] + } + } +} |