aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libjxl
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libjxl
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/libjxl')
-rw-r--r--vcpkg/ports/libjxl/avoid-exe-linker-flags.patch31
-rw-r--r--vcpkg/ports/libjxl/disambiguate-pow-calls.patch20
-rw-r--r--vcpkg/ports/libjxl/fix-dependencies.patch39
-rw-r--r--vcpkg/ports/libjxl/msvc-remove-libm.patch19
-rw-r--r--vcpkg/ports/libjxl/portfile.cmake73
-rw-r--r--vcpkg/ports/libjxl/vcpkg.json29
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"
+ ]
+ }
+ }
+}