aboutsummaryrefslogtreecommitdiff
blob: e2918d5b2be719690e8768c99043bb1e3664a017 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit xdg cmake java-pkg-opt-2

DESCRIPTION="JPEG XL image format reference implementation"
HOMEPAGE="https://github.com/libjxl/libjxl"
SRC_URI="https://github.com/libjxl/libjxl/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"

KEYWORDS="~amd64"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="abi_x86_64 cpu_flags_arm_neon benchmark devtools examples java man +openexr plugins profile +sjpeg +skcms tcmalloc tools viewers" #emscripten fuzzers

CDEPEND="
	app-arch/brotli
	dev-cpp/highway:=
	media-libs/libpng
	media-libs/lodepng:=
	media-libs/giflib
	sys-libs/zlib

	benchmark? (
		media-libs/libavif
		media-libs/libwebp
		virtual/jpeg
	)
	openexr? ( media-libs/openexr:= )
	plugins? (
		dev-libs/glib:2
		media-gfx/gimp
		media-libs/babl
		media-libs/gegl
		media-libs/skcms:=
		x11-libs/gdk-pixbuf
		x11-misc/shared-mime-info
	)
	sjpeg? ( media-libs/sjpeg:= )
	!skcms? ( media-libs/lcms )
	skcms? ( media-libs/skcms:= )
	tcmalloc? ( dev-util/google-perftools )
	viewers? (
		dev-qt/qtconcurrent
		dev-qt/qtwidgets
		dev-qt/qtx11extras
		media-libs/lcms
		x11-libs/libxcb
	)
"
RDEPEND="
	${CDEPEND}
	java? ( virtual/jre:1.8 )
"
DEPEND="
	${CDEPEND}
	dev-cpp/gtest
	kde-frameworks/extra-cmake-modules
	java? ( virtual/jdk:1.8 )
	plugins? ( x11-misc/xdg-utils )
"
BDEPEND="
	virtual/pkgconfig
	man? ( app-text/asciidoc )
"

PATCHES=( "${FILESDIR}/${P}-system-libs.patch" )
REQUIRED_USE="tcmalloc? ( abi_x86_64 )"
DOCS=( AUTHORS README.md SECURITY.md PATENTS CONTRIBUTORS CHANGELOG.md )

CMAKE_IN_SOURCE_BUILD=1

src_prepare() {
	# remove bundled libs cmake
	rm third_party/*.cmake || die
	cmake_src_prepare
}

src_configure() {
	local mycmakeargs=(
		-DJPEGXL_ENABLE_BENCHMARK=$(usex benchmark)
		-DJPEGXL_ENABLE_DEVTOOLS=$(usex devtools)
		-DJPEGXL_ENABLE_EXAMPLES=$(usex examples)
		-DJPEGXL_ENABLE_JNI=$(usex java)
		-DJPEGXL_ENABLE_MANPAGES=$(usex man)
		-DJPEGXL_ENABLE_OPENEXR=$(usex openexr)
		-DJPEGXL_ENABLE_PLUGINS=$(usex plugins)
		-DJPEGXL_ENABLE_PROFILER=$(usex profile)
		-DJPEGXL_ENABLE_SJPEG=$(usex sjpeg)
		-DJPEGXL_ENABLE_SKCMS=$(usex skcms)
		-DJPEGXL_ENABLE_TCMALLOC=$(usex tcmalloc)
		-DJPEGXL_ENABLE_TOOLS=$(usex tools)
		-DJPEGXL_ENABLE_VIEWERS=$(usex viewers)
		-DJPEGXL_FORCE_NEON=$(usex cpu_flags_arm_neon)

		-DBUILD_SHARED_LIBS=ON
		-DJPEGXL_BUNDLE_SKCMS=OFF
		-DJPEGXL_ENABLE_COVERAGE=OFF
		-DJPEGXL_ENABLE_FUZZERS=OFF
		-DJPEGXL_ENABLE_TRANSCODE_JPEG=ON
		-DJPEGXL_FORCE_SYSTEM_BROTLI=ON
		-DJPEGXL_FORCE_SYSTEM_GTEST=ON
		-DJPEGXL_FORCE_SYSTEM_HWY=ON
		-DJPEGXL_STATIC=OFF
		-DJPEGXL_WARNINGS_AS_ERRORS=OFF
	)

	cmake_src_configure
}

src_install() {
	cmake_src_install
	einstalldocs
	#TODO: install documentation
	exeinto "/usr/libexec/${PN}"
	if use examples; then
		doexe {en,de}code_oneshot
		dobin jxlinfo
	fi
	pushd "${BUILD_DIR}/tools" || die
	insinto "/usr/share/${PN}"
	doins progressive_saliency.conf example_tree.txt
	if use java; then
		dolib.so libjxl_jni.so
		rm libjxl_jni.so || die
		doins *.jar
	fi
	if use benchmark; then
		docinto "/usr/share/doc/${PF}/benchmark/hm"
		dodoc benchmark/hm/README.md
	else
		rm -r benchmark || die
	fi
	# remove non executable or non .m files
	find . -type f \! -name '*.m' \! -executable -delete || die
	# delete empty dirs
	find . -type d -empty -print -delete || die
	mkdir -p "${ED}/usr/libexec/${PN}/tools/" || die
	# install tools
	cp -r . "${ED}/usr/libexec/${PN}/tools/" || die

	# keep in /usr/bin only the executables with jxl in the name
	rm -f "${ED}"/usr/libexec/${PN}/tools/*jxl* || die
	rm -f "${ED}"/usr/bin/{fuzzer_corpus,*_main,decode_and_encode,*_hlg,tone_map,xyb_range} || die

	find "${D}" -name '*.a' -delete || die
}

pkg_postinst() {
	xdg_mimeinfo_database_update
}

pkg_postrm() {
	xdg_mimeinfo_database_update
}