From cd04e0857d83a752fca4de3da1b0202c4ae487b9 Mon Sep 17 00:00:00 2001
From: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca>
Date: Tue, 5 Oct 2021 21:25:15 -0400
Subject: media-libs/libjxl: add 0.6, various fixes

---
 media-libs/libjxl/Manifest                |  2 +
 media-libs/libjxl/files/system-lcms.patch | 47 +++++++++++++++
 media-libs/libjxl/libjxl-0.6.ebuild       | 97 +++++++++++++++++++++++++++++++
 media-libs/libjxl/libjxl-9999.ebuild      | 38 ++++++++++--
 4 files changed, 178 insertions(+), 6 deletions(-)
 create mode 100644 media-libs/libjxl/Manifest
 create mode 100644 media-libs/libjxl/files/system-lcms.patch
 create mode 100644 media-libs/libjxl/libjxl-0.6.ebuild

(limited to 'media-libs/libjxl')

diff --git a/media-libs/libjxl/Manifest b/media-libs/libjxl/Manifest
new file mode 100644
index 0000000..05256c8
--- /dev/null
+++ b/media-libs/libjxl/Manifest
@@ -0,0 +1,2 @@
+DIST libjxl-0.6.tar.gz 16953410 BLAKE2B 8941987f6d31096a7286f9d98cdcc16e5fe338e6b3d966343f97fc5b5b932ec92c994fab5781448aa7d96324e5c9ce5c83754b01cf6e752d0702ce9fc0a2087f SHA512 934c86d079c7a1f5382fad158efac225b9d1b27e551ea85ea7ec43e7ffd5cba85ddbfa35658b242a9f9c9589decf245568349abfa8a4fe12898af78d51608852
+DIST lodepng-48e5364ef48ec2408f44c727657ac1b6703185f8.tar.gz 240079 BLAKE2B 08240bd72d22f789bc0e06ed1d641fbca21ca674697880d4f004e4e76bb1b6cf595e931d2447544d896c79576e942db3cbdcca91d717f4ad8ddcfbd6c5bdc97e SHA512 50a515f1f15122fa017637be30df0db05980d07f8891f16b0b68697ef0df797176bbe005df623e9f2dbb68b750b0a87e69c3cef215c7bf15187d00491c4023c7
diff --git a/media-libs/libjxl/files/system-lcms.patch b/media-libs/libjxl/files/system-lcms.patch
new file mode 100644
index 0000000..537e02c
--- /dev/null
+++ b/media-libs/libjxl/files/system-lcms.patch
@@ -0,0 +1,47 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 280d4af..c9186df 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -127,6 +127,8 @@ set(JPEGXL_FORCE_SYSTEM_BROTLI false CACHE BOOL
+     "Force using system installed brotli instead of third_party/brotli source.")
+ set(JPEGXL_FORCE_SYSTEM_HWY false CACHE BOOL
+     "Force using system installed highway (libhwy-dev) instead of third_party/highway source.")
++set(JPEGXL_FORCE_SYSTEM_LCMS false CACHE BOOL
++    "Force using system installed lcms instead of third_party/lcms source.")
+ 
+ # Check minimum compiler versions. Older compilers are not supported and fail
+ # with hard to understand errors.
+diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
+index b5e1899..887d31d 100644
+--- a/third_party/CMakeLists.txt
++++ b/third_party/CMakeLists.txt
+@@ -201,13 +201,23 @@ if (JPEGXL_ENABLE_SKCMS OR JPEGXL_ENABLE_PLUGINS)
+   configure_file("${CMAKE_CURRENT_SOURCE_DIR}/skcms/LICENSE"
+                  ${PROJECT_BINARY_DIR}/LICENSE.skcms COPYONLY)
+ endif ()
+-if (JPEGXL_ENABLE_VIEWERS OR NOT JPEGXL_ENABLE_SKCMS)
+-  if( NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lcms/.git" )
+-    message(SEND_ERROR "Please run git submodule update --init")
++if ((JPEGXL_ENABLE_VIEWERS OR NOT JPEGXL_ENABLE_SKCMS))
++  if(JPEGXL_FORCE_SYSTEM_LCMS)
++    pkg_check_modules(LCMS REQUIRED IMPORTED_TARGET lcms2)
++    add_library(lcms2 INTERFACE IMPORTED GLOBAL)
++    target_link_libraries(lcms2 INTERFACE PkgConfig::LCMS)
++  else()
++    if(JPEGXL_DEP_LICENSE_DIR)
++      configure_file("${JPEGXL_DEP_LICENSE_DIR}/libhwy-dev/copyright"
++                     ${PROJECT_BINARY_DIR}/LICENSE.highway COPYONLY)
++    endif()  # JPEGXL_DEP_LICENSE_DIR
++    if( NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/lcms/.git" )
++      message(SEND_ERROR "Please run git submodule update --init")
++    endif()
++    include(lcms2.cmake)
++    configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lcms/COPYING"
++                   ${PROJECT_BINARY_DIR}/LICENSE.lcms COPYONLY)
+   endif()
+-  include(lcms2.cmake)
+-  configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lcms/COPYING"
+-                 ${PROJECT_BINARY_DIR}/LICENSE.lcms COPYONLY)
+ endif()
+ 
+ # sjpeg
diff --git a/media-libs/libjxl/libjxl-0.6.ebuild b/media-libs/libjxl/libjxl-0.6.ebuild
new file mode 100644
index 0000000..60b401d
--- /dev/null
+++ b/media-libs/libjxl/libjxl-0.6.ebuild
@@ -0,0 +1,97 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit xdg cmake
+
+DESCRIPTION="JPEG XL image format reference implementation"
+HOMEPAGE="https://github.com/libjxl/libjxl"
+
+if [[ ${PV} == 9999 ]]; then
+	inherit git-r3
+	EGIT_REPO_URI="https://github.com/libjxl/libjxl.git"
+	EGIT_SUBMODULES=(third_party/lodepng)
+else
+	LODEPNG_COMMIT="48e5364ef48ec2408f44c727657ac1b6703185f8"
+	SRC_URI="
+		https://github.com/libjxl/libjxl/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
+		https://github.com/lvandeve/lodepng/archive/${LODEPNG_COMMIT}.tar.gz -> lodepng-${LODEPNG_COMMIT}.tar.gz
+	"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="apng doc gif java jpeg +man openexr static-libs test viewers"
+
+RDEPEND="app-arch/brotli
+	dev-libs/highway
+	media-libs/lcms
+	apng? (
+		media-libs/libpng
+		sys-libs/zlib
+	)
+	gif? ( media-libs/giflib )
+	java? ( virtual/jdk )
+	jpeg? ( virtual/jpeg )
+	man? ( app-text/asciidoc )
+	openexr? ( media-libs/openexr:= )
+	viewers? (
+		dev-qt/qtwidgets
+		dev-qt/qtx11extras
+	)
+"
+BDEPEND="
+	doc? ( app-doc/doxygen )
+"
+DEPEND="${RDEPEND}
+	test? ( dev-cpp/gtest )
+"
+
+PATCHES=("${FILESDIR}/system-lcms.patch")
+
+src_prepare() {
+	if [[ ${PV} != 9999 ]]; then
+		rmdir third_party/lodepng
+		ln -sv ../../lodepng-${LODEPNG_COMMIT} third_party/lodepng || die
+	fi
+	cmake_src_prepare
+}
+
+src_configure() {
+	local mycmakeargs=(
+		-DBUILD_TESTING=$(usex test ON OFF)
+		-DJPEGXL_ENABLE_BENCHMARK=OFF
+		-DJPEGXL_ENABLE_COVERAGE=OFF
+		-DJPEGXL_ENABLE_EXAMPLES=OFF
+		-DJPEGXL_ENABLE_FUZZERS=OFF
+		-DJPEGXL_ENABLE_JNI=$(usex java ON OFF)
+		-DJPEGXL_ENABLE_MANPAGES=$(usex man ON OFF)
+		-DJPEGXL_ENABLE_OPENEXR=$(usex openexr ON OFF)
+		-DJPEGXL_ENABLE_PLUGINS=OFF
+		-DJPEGXL_ENABLE_SJPEG=OFF
+		-DJPEGXL_ENABLE_SKCMS=OFF
+		-DJPEGXL_ENABLE_VIEWERS=$(usex viewers ON OFF)
+		-DJPEGXL_FORCE_SYSTEM_GTEST=ON
+		-DJPEGXL_FORCE_SYSTEM_BROTLI=ON
+		-DJPEGXL_FORCE_SYSTEM_HWY=ON
+		-DJPEGXL_FORCE_SYSTEM_LCMS=ON
+		-DJPEGXL_WARNINGS_AS_ERRORS=OFF
+
+		$(cmake_use_find_package apng PNG)
+		$(cmake_use_find_package apng ZLIB)
+		$(cmake_use_find_package doc Doxygen)
+		$(cmake_use_find_package gif GIF)
+		$(cmake_use_find_package jpeg JPEG)
+	)
+
+	cmake_src_configure
+}
+
+src_install() {
+	cmake_src_install
+	if ! use static-libs; then
+		rm "${ED}"/usr/$(get_libdir)/libjxl{,_dec}.a || die
+	fi
+}
diff --git a/media-libs/libjxl/libjxl-9999.ebuild b/media-libs/libjxl/libjxl-9999.ebuild
index a2b5eaf..60b401d 100644
--- a/media-libs/libjxl/libjxl-9999.ebuild
+++ b/media-libs/libjxl/libjxl-9999.ebuild
@@ -3,25 +3,37 @@
 
 EAPI="7"
 
-inherit xdg cmake git-r3
+inherit xdg cmake
 
 DESCRIPTION="JPEG XL image format reference implementation"
 HOMEPAGE="https://github.com/libjxl/libjxl"
 
-EGIT_REPO_URI="https://github.com/libjxl/libjxl.git"
-EGIT_SUBMODULES=(third_party/lodepng third_party/skcms)
+if [[ ${PV} == 9999 ]]; then
+	inherit git-r3
+	EGIT_REPO_URI="https://github.com/libjxl/libjxl.git"
+	EGIT_SUBMODULES=(third_party/lodepng)
+else
+	LODEPNG_COMMIT="48e5364ef48ec2408f44c727657ac1b6703185f8"
+	SRC_URI="
+		https://github.com/libjxl/libjxl/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
+		https://github.com/lvandeve/lodepng/archive/${LODEPNG_COMMIT}.tar.gz -> lodepng-${LODEPNG_COMMIT}.tar.gz
+	"
+fi
 
 LICENSE="Apache-2.0"
 SLOT="0"
-IUSE="apng doc gif jpeg +man openexr static-libs test viewers"
+KEYWORDS="~amd64 ~x86"
+IUSE="apng doc gif java jpeg +man openexr static-libs test viewers"
 
 RDEPEND="app-arch/brotli
 	dev-libs/highway
+	media-libs/lcms
 	apng? (
 		media-libs/libpng
 		sys-libs/zlib
 	)
 	gif? ( media-libs/giflib )
+	java? ( virtual/jdk )
 	jpeg? ( virtual/jpeg )
 	man? ( app-text/asciidoc )
 	openexr? ( media-libs/openexr:= )
@@ -37,19 +49,34 @@ DEPEND="${RDEPEND}
 	test? ( dev-cpp/gtest )
 "
 
+PATCHES=("${FILESDIR}/system-lcms.patch")
+
+src_prepare() {
+	if [[ ${PV} != 9999 ]]; then
+		rmdir third_party/lodepng
+		ln -sv ../../lodepng-${LODEPNG_COMMIT} third_party/lodepng || die
+	fi
+	cmake_src_prepare
+}
+
 src_configure() {
 	local mycmakeargs=(
 		-DBUILD_TESTING=$(usex test ON OFF)
 		-DJPEGXL_ENABLE_BENCHMARK=OFF
 		-DJPEGXL_ENABLE_COVERAGE=OFF
-		-DJPEGXL_ENABLE_EXAMPLES=ON
+		-DJPEGXL_ENABLE_EXAMPLES=OFF
 		-DJPEGXL_ENABLE_FUZZERS=OFF
+		-DJPEGXL_ENABLE_JNI=$(usex java ON OFF)
 		-DJPEGXL_ENABLE_MANPAGES=$(usex man ON OFF)
 		-DJPEGXL_ENABLE_OPENEXR=$(usex openexr ON OFF)
 		-DJPEGXL_ENABLE_PLUGINS=OFF
 		-DJPEGXL_ENABLE_SJPEG=OFF
+		-DJPEGXL_ENABLE_SKCMS=OFF
 		-DJPEGXL_ENABLE_VIEWERS=$(usex viewers ON OFF)
+		-DJPEGXL_FORCE_SYSTEM_GTEST=ON
 		-DJPEGXL_FORCE_SYSTEM_BROTLI=ON
+		-DJPEGXL_FORCE_SYSTEM_HWY=ON
+		-DJPEGXL_FORCE_SYSTEM_LCMS=ON
 		-DJPEGXL_WARNINGS_AS_ERRORS=OFF
 
 		$(cmake_use_find_package apng PNG)
@@ -64,7 +91,6 @@ src_configure() {
 
 src_install() {
 	cmake_src_install
-	dobin "${BUILD_DIR}/examples/jxlinfo"
 	if ! use static-libs; then
 		rm "${ED}"/usr/$(get_libdir)/libjxl{,_dec}.a || die
 	fi
-- 
cgit v1.2.3-70-g09d2