summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-games/aseprite')
-rw-r--r--dev-games/aseprite/Manifest6
-rw-r--r--dev-games/aseprite/aseprite-1.1.6.ebuild92
-rw-r--r--dev-games/aseprite/aseprite-1.1.7-r1.ebuild111
-rw-r--r--dev-games/aseprite/aseprite-1.1.9.ebuild113
-rw-r--r--dev-games/aseprite/aseprite-1.2.40.ebuild231
-rw-r--r--dev-games/aseprite/aseprite-1.3.5.ebuild233
-rw-r--r--dev-games/aseprite/files/aseprite-1.1.7_type-punned_pointer.patch28
-rw-r--r--dev-games/aseprite/files/aseprite-1.2.35_laf_fixes.patch40
-rw-r--r--dev-games/aseprite/files/aseprite-1.2.40_ixwebsocket-gcc13.patch245
-rw-r--r--dev-games/aseprite/files/aseprite-1.2.40_laf-gcc13.patch47
-rw-r--r--dev-games/aseprite/files/aseprite-1.2.40_musl_pthreads.patch57
-rw-r--r--dev-games/aseprite/files/aseprite-1.2.40_shared_json11.patch54
-rw-r--r--dev-games/aseprite/files/aseprite-1.2.40_shared_libarchive.patch106
-rw-r--r--dev-games/aseprite/files/aseprite-1.2.40_shared_webp.patch72
-rw-r--r--dev-games/aseprite/files/aseprite-1.3.2_shared_fmt.patch52
-rw-r--r--dev-games/aseprite/files/aseprite-1.3.2_shared_json11.patch56
-rw-r--r--dev-games/aseprite/files/aseprite-1.3.2_shared_webp.patch81
-rw-r--r--dev-games/aseprite/files/aseprite-1.3.2_strict-aliasing.patch55
-rw-r--r--dev-games/aseprite/files/aseprite-1.3.5_laf-strict-aliasing.patch155
-rw-r--r--dev-games/aseprite/files/skia-m102_remove_angle2.patch15
-rw-r--r--dev-games/aseprite/metadata.xml10
21 files changed, 1505 insertions, 354 deletions
diff --git a/dev-games/aseprite/Manifest b/dev-games/aseprite/Manifest
index ef7855809398..731ec7f14de6 100644
--- a/dev-games/aseprite/Manifest
+++ b/dev-games/aseprite/Manifest
@@ -1,3 +1,3 @@
-DIST Aseprite-v1.1.6-Source.zip 11801981 BLAKE2B f20186a1669d7f9ab1453a2104a54228c22e2ef1703bba200f44c965b3fb3d9310c1ddd343db9c27ddca3564e4245352476c5228e171f1c0e74c553e5a59d419 SHA512 d87bcc5ece64cbc772ea5d4dc1edf29943d9038221905c0263511852afbb4e9119ce82468502a78c286729bb91389d08e3a8b7f358e4f6f8fe88507e7e69c9ac
-DIST Aseprite-v1.1.7-Source.zip 11801711 BLAKE2B 282492c29ece6b5b5bed029c7f27aa0a287bcb475f60066b6c34f54607b2714f35540e4d6ef4737818712776c2202162ce47c5713ba26b756d9e1c1d8af9c904 SHA512 9a92853042c7de567a7eb33d10ddd38c6d6bd53acfe4b93dc96e11408a7bda39ef7503c159934c483f0455700933c541dfdc0cb4c505d3385778e40686e474e6
-DIST Aseprite-v1.1.9-Source.zip 11746265 BLAKE2B fa16be059a7bb3b83705c56e7e93cbbb71676617a8d0798f0e481b09199ae069b85826615f8609acabb10a4e9a9da0857f2f99b03c2b913f26eee6d4dfdc0f0a SHA512 44c5878c67e69d2510c862e8f6869d727aa47b3d23d41d4e7318eca54c6d72fc5f89e72c70c160ce6da78fa091e11eedefa74e0273dc4cea59b2fe16c8851d9e
+DIST Aseprite-v1.2.40-Source.zip 61802371 BLAKE2B f6f586a3ca222de208e6639e3fc94a63f98e487e1975dccd2974ffa71f937384177639e3799fb81f064afaf1c4a048394fab32a30bcda353320ac55c38b17636 SHA512 0a548428a3362f49cb6cecaa061de8371ad3f0bc22d00bc957e21f22316772e854d7ad36ebb7e5b69274eea376bb62fa39abfd4bc02250524c3707f81a628b1f
+DIST Aseprite-v1.3.5-Source.zip 64189695 BLAKE2B f796f688f0ba565ae32fde2e8d84e39b610f451054440ced078ce1fc847a9208460b45aa6efa059a56c9e0603b4fd156cc476a2c40715ec2c37181e39c06a401 SHA512 885386e84c55b84cc85ffbf16f7269ac1640458abe973c3aa2e3eabd807ea3e1e06ee6e6dfaffff9dd7b09d3b37bd9ac41821152838cd80742edd4d53302c0e3
+DIST skia-m102-3338e90707323d2cd3a150276acb9f39933deee2.gh.tar.gz 53944562 BLAKE2B 9da3e8386cd7a18a6ee9362743bee4146c41038af8868a6f5e8a2dce468e4dc4669b488861d117da8d1bd8461b2ad47bfc300774a33a84153bca345d63a929a7 SHA512 9ae0032ee3861ce4958af6eb7047273d28b1faa3823576ef568e3c7faed7f49a9976540a72c3fa38234a4ae6319ac381324eff807938f9763781fd33ad67d075
diff --git a/dev-games/aseprite/aseprite-1.1.6.ebuild b/dev-games/aseprite/aseprite-1.1.6.ebuild
deleted file mode 100644
index e95b1dcdefed..000000000000
--- a/dev-games/aseprite/aseprite-1.1.6.ebuild
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit cmake-utils eutils flag-o-matic
-
-DESCRIPTION="Animated sprite editor & pixel art tool"
-HOMEPAGE="https://www.aseprite.org"
-SRC_URI="https://github.com/aseprite/aseprite/releases/download/v${PV}/Aseprite-v${PV}-Source.zip"
-
-# See https://github.com/aseprite/aseprite#credits
-# Some bundled third-party packages built-in:
-# gtest duktape modp_b64 simpleini
-LICENSE="BSD GPL-2 MIT"
-SLOT="0"
-KEYWORDS="amd64 x86"
-
-IUSE="debug kde gtk3 test webp"
-RESTRICT="!test? ( test )"
-
-RDEPEND="dev-libs/tinyxml
- media-libs/allegro:0[X,png]
- media-libs/freetype
- media-libs/giflib:=
- webp? ( media-libs/libwebp )
- media-libs/libpng:0=
- net-misc/curl
- sys-libs/zlib
- virtual/jpeg:0
- x11-libs/libX11
- x11-libs/pixman
- gtk3? ( dev-cpp/gtkmm:3.0 )
- kde? (
- dev-qt/qtcore:5
- kde-frameworks/kio:5 )"
-DEPEND="${RDEPEND}
- app-arch/unzip
- gtk3? ( virtual/pkgconfig )
- webp? ( virtual/pkgconfig )"
-
-DOCS=( docs/files/ase.txt
- docs/files/fli.txt
- docs/files/msk.txt
- docs/files/pic.txt
- docs/files/picpro.txt
- README.md )
-
-S="${WORKDIR}"
-
-src_prepare() {
- cmake-utils_src_prepare
-
- # Fix to make flag-o-matic work.
- if use debug ; then
- sed -i '/-DNDEBUG/d' CMakeLists.txt || die
- fi
- # Fix shebang in thumbnailer
- sed -i -e 's:#!/usr/bin/sh:#!/bin/sh:' desktop/aseprite-thumbnailer || die
-}
-
-src_configure() {
- use debug && append-cppflags -DDEBUGMODE -D_DEBUG
-
- local mycmakeargs=(
- -DENABLE_UPDATER=OFF
- -DFULLSCREEN_PLATFORM=ON
- -DUSE_SHARED_ALLEGRO4=ON
- -DUSE_SHARED_CURL=ON
- -DUSE_SHARED_FREETYPE=ON
- -DUSE_SHARED_GIFLIB=ON
- -DUSE_SHARED_JPEGLIB=ON
- -DUSE_SHARED_LIBLOADPNG=ON
- -DUSE_SHARED_LIBPNG=ON
- -DUSE_SHARED_PIXMAN=ON
- -DUSE_SHARED_TINYXML=ON
- -DUSE_SHARED_ZLIB=ON
- -DUSE_SHARED_LIBWEBP=ON
- -DWITH_DESKTOP_INTEGRATION=ON
- -DWITH_GTK_FILE_DIALOG_SUPPORT="$(usex gtk3)"
- -DWITH_QT_THUMBNAILER="$(usex kde)"
- -DWITH_WEBP_SUPPORT="$(usex webp)"
- -DENABLE_TESTS="$(usex test)"
- -DKDE_INSTALL_USE_QT_SYS_PATHS=ON
- )
- cmake-utils_src_configure
-}
-
-src_install() {
- newicon "${S}/data/icons/ase64.png" "${PN}.png"
- cmake-utils_src_install
-}
diff --git a/dev-games/aseprite/aseprite-1.1.7-r1.ebuild b/dev-games/aseprite/aseprite-1.1.7-r1.ebuild
deleted file mode 100644
index c272fa35e70b..000000000000
--- a/dev-games/aseprite/aseprite-1.1.7-r1.ebuild
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit cmake desktop flag-o-matic xdg-utils
-
-DESCRIPTION="Animated sprite editor & pixel art tool"
-HOMEPAGE="https://www.aseprite.org"
-SRC_URI="https://github.com/aseprite/aseprite/releases/download/v${PV}/Aseprite-v${PV}-Source.zip"
-
-# See https://github.com/aseprite/aseprite#credits
-# Some bundled third-party packages built-in:
-# gtest duktape modp_b64 simpleini
-LICENSE="BSD GPL-2 MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-IUSE="bundled-libs debug kde gtk3 test webp"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- !bundled-libs? ( media-libs/allegro:0[X,png] )
- gtk3? ( dev-cpp/gtkmm:3.0 )
- kde? (
- dev-qt/qtcore:5
- kde-frameworks/kio:5
- )
- webp? ( media-libs/libwebp )
- dev-libs/tinyxml
- media-libs/freetype
- media-libs/giflib:=
- media-libs/libpng:0=
- net-misc/curl
- sys-libs/zlib
- virtual/jpeg:0
- x11-libs/libX11
- x11-libs/pixman"
-BDEPEND="
- app-arch/unzip
- gtk3? ( virtual/pkgconfig )
- webp? ( virtual/pkgconfig )"
-
-DOCS=( docs/files/ase.txt
- docs/files/fli.txt
- docs/files/msk.txt
- docs/files/pic.txt
- docs/files/picpro.txt
- README.md )
-
-S="${WORKDIR}"
-
-PATCHES=( "${FILESDIR}/${P}_type-punned_pointer.patch" )
-
-src_prepare() {
- cmake_src_prepare
-
- # Fix to make flag-o-matic work.
- if use debug ; then
- sed -i '/-DNDEBUG/d' CMakeLists.txt || die
- fi
- # Fix shebang in thumbnailer
- sed -i -e 's:#!/usr/bin/sh:#!/bin/sh:' desktop/aseprite-thumbnailer || die
-}
-
-src_configure() {
- use debug && append-cppflags -DDEBUGMODE -D_DEBUG
-
- local mycmakeargs=(
- -DENABLE_UPDATER=OFF
- -DFULLSCREEN_PLATFORM=ON
- -DUSE_SHARED_ALLEGRO4=$(usex !bundled-libs)
- -DUSE_SHARED_CURL=ON
- -DUSE_SHARED_FREETYPE=ON
- -DUSE_SHARED_GIFLIB=ON
- -DUSE_SHARED_JPEGLIB=ON
- -DUSE_SHARED_LIBLOADPNG=ON
- -DUSE_SHARED_LIBPNG=ON
- -DUSE_SHARED_PIXMAN=ON
- -DUSE_SHARED_TINYXML=ON
- -DUSE_SHARED_ZLIB=ON
- -DUSE_SHARED_LIBWEBP=ON
- -DWITH_DESKTOP_INTEGRATION=ON
- -DWITH_GTK_FILE_DIALOG_SUPPORT="$(usex gtk3)"
- -DWITH_QT_THUMBNAILER="$(usex kde)"
- -DWITH_WEBP_SUPPORT="$(usex webp)"
- -DENABLE_TESTS="$(usex test)"
- -DKDE_INSTALL_USE_QT_SYS_PATHS=ON
- )
- cmake_src_configure
-}
-
-src_install() {
- newicon -s 64 "${S}/data/icons/ase64.png" "${PN}.png"
- cmake_src_install
-}
-
-pkg_postinst() {
- if use !bundled-libs ; then
- ewarn "Aseprite has been built with system-wide Allegro 4."
- ewarn "Please note that you will not be able to resize the main window."
- ewarn "For resizing support enable USE-flag bundled-libs and rebuild package."
- fi
- xdg_desktop_database_update
- xdg_mimeinfo_database_update
-}
-
-pkg_postrm() {
- xdg_desktop_database_update
- xdg_mimeinfo_database_update
-}
diff --git a/dev-games/aseprite/aseprite-1.1.9.ebuild b/dev-games/aseprite/aseprite-1.1.9.ebuild
deleted file mode 100644
index b3ab60f8d324..000000000000
--- a/dev-games/aseprite/aseprite-1.1.9.ebuild
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit cmake desktop flag-o-matic xdg-utils
-
-DESCRIPTION="Animated sprite editor & pixel art tool"
-HOMEPAGE="https://www.aseprite.org"
-SRC_URI="https://github.com/aseprite/aseprite/releases/download/v${PV}/Aseprite-v${PV}-Source.zip"
-
-# See https://github.com/aseprite/aseprite#license
-# Some bundled third-party packages built-in:
-# gtest duktape modp_b64 simpleini
-LICENSE="Aseprite-EULA"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-IUSE="bundled-libs debug kde gtk3 test webp"
-RESTRICT="bindist mirror !test? ( test )"
-
-RDEPEND="
- !bundled-libs? ( media-libs/allegro:0[X,png] )
- gtk3? ( dev-cpp/gtkmm:3.0 )
- kde? (
- dev-qt/qtcore:5
- kde-frameworks/kio:5
- )
- webp? ( media-libs/libwebp )
- dev-libs/tinyxml
- media-libs/freetype
- media-libs/giflib:=
- media-libs/libpng:0=
- net-misc/curl
- sys-libs/zlib
- virtual/jpeg:0
- x11-libs/libX11
- x11-libs/pixman"
-BDEPEND="
- app-arch/unzip
- gtk3? ( virtual/pkgconfig )
- webp? ( virtual/pkgconfig )"
-
-DOCS=( docs/files/ase.txt
- docs/files/fli.txt
- docs/files/msk.txt
- docs/files/pic.txt
- docs/files/picpro.txt
- README.md )
-
-S="${WORKDIR}"
-
-PATCHES=( "${FILESDIR}/${PN}-1.1.7_type-punned_pointer.patch" )
-
-src_prepare() {
- cmake_src_prepare
-
- # Fix to make flag-o-matic work.
- if use debug ; then
- sed -i '/-DNDEBUG/d' CMakeLists.txt || die
- fi
- # Fix shebang in thumbnailer
- sed -i -e 's:#!/usr/bin/sh:#!/bin/sh:' desktop/aseprite-thumbnailer || die
-}
-
-src_configure() {
- use debug && append-cppflags -DDEBUGMODE -D_DEBUG
-
- local mycmakeargs=(
- -DENABLE_UPDATER=OFF
- -DFULLSCREEN_PLATFORM=ON
- -DUSE_SHARED_ALLEGRO4=$(usex !bundled-libs)
- -DUSE_SHARED_CURL=ON
- -DUSE_SHARED_FREETYPE=ON
- -DUSE_SHARED_GIFLIB=ON
- -DUSE_SHARED_JPEGLIB=ON
- -DUSE_SHARED_LIBLOADPNG=ON
- -DUSE_SHARED_LIBPNG=ON
- -DUSE_SHARED_PIXMAN=ON
- -DUSE_SHARED_TINYXML=ON
- -DUSE_SHARED_ZLIB=ON
- -DUSE_SHARED_LIBWEBP=ON
- -DWITH_DESKTOP_INTEGRATION=ON
- -DWITH_GTK_FILE_DIALOG_SUPPORT="$(usex gtk3)"
- -DWITH_QT_THUMBNAILER="$(usex kde)"
- -DWITH_WEBP_SUPPORT="$(usex webp)"
- -DENABLE_TESTS="$(usex test)"
- -DKDE_INSTALL_USE_QT_SYS_PATHS=ON
- )
- cmake_src_configure
-}
-
-src_install() {
- newicon -s 64 "${S}/data/icons/ase64.png" "${PN}.png"
- cmake_src_install
-}
-
-pkg_postinst() {
- if use !bundled-libs ; then
- ewarn "Aseprite has been built with system-wide Allegro 4."
- ewarn "Please note that you will not be able to resize the main window."
- ewarn "For resizing support enable USE-flag bundled-libs and rebuild package."
- fi
- xdg_desktop_database_update
- xdg_icon_cache_update
- xdg_mimeinfo_database_update
-}
-
-pkg_postrm() {
- xdg_desktop_database_update
- xdg_icon_cache_update
- xdg_mimeinfo_database_update
-}
diff --git a/dev-games/aseprite/aseprite-1.2.40.ebuild b/dev-games/aseprite/aseprite-1.2.40.ebuild
new file mode 100644
index 000000000000..2a603fddfb1f
--- /dev/null
+++ b/dev-games/aseprite/aseprite-1.2.40.ebuild
@@ -0,0 +1,231 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit cmake desktop flag-o-matic ninja-utils python-any-r1 toolchain-funcs xdg-utils
+
+SKIA_VER="m102"
+# Last commit in ${SKIA_VER} feature branch
+# Don't use skia.googlesource.com, it produces non-reproducible tarballs
+SKIA_REV="3338e90707323d2cd3a150276acb9f39933deee2"
+
+DESCRIPTION="Animated sprite editor & pixel art tool"
+HOMEPAGE="https://www.aseprite.org"
+SRC_URI="https://github.com/aseprite/aseprite/releases/download/v${PV}/Aseprite-v${PV}-Source.zip
+ https://github.com/google/skia/archive/${SKIA_REV}.tar.gz -> skia-${SKIA_VER}-${SKIA_REV}.gh.tar.gz"
+
+# See https://github.com/aseprite/aseprite#license
+LICENSE="Aseprite-EULA"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+IUSE="kde test webp"
+RESTRICT="bindist mirror !test? ( test )"
+
+RDEPEND="
+ app-arch/libarchive:=
+ app-text/cmark:=
+ dev-cpp/json11
+ dev-libs/tinyxml
+ media-libs/freetype
+ media-libs/giflib:=
+ media-libs/harfbuzz:=[truetype]
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ net-misc/curl
+ sys-libs/zlib:=
+ virtual/opengl
+ x11-libs/libX11
+ x11-libs/libXcursor
+ x11-libs/libXi
+ x11-libs/libxcb:=
+ kde? (
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ kde-frameworks/kio:5
+ )
+ webp? ( media-libs/libwebp:= )"
+DEPEND="
+ ${RDEPEND}
+ x11-base/xorg-proto"
+BDEPEND="
+ ${PYTHON_DEPS}
+ test? ( dev-cpp/gtest )
+ app-arch/unzip
+ dev-build/gn
+ virtual/pkgconfig"
+
+DOCS=(
+ docs/ase-file-specs.md
+ docs/gpl-palette-extension.md
+ README.md
+)
+
+S="${WORKDIR}"
+
+PATCHES=(
+ "${FILESDIR}/skia-${SKIA_VER}_remove_angle2.patch"
+ "${FILESDIR}/${PN}-1.2.40_shared_libarchive.patch"
+ "${FILESDIR}/${PN}-1.2.40_shared_json11.patch"
+ "${FILESDIR}/${PN}-1.2.40_shared_webp.patch"
+ "${FILESDIR}/${PN}-1.2.35_laf_fixes.patch"
+ "${FILESDIR}/${PN}-1.2.40_musl_pthreads.patch"
+ "${FILESDIR}/${PN}-1.2.40_ixwebsocket-gcc13.patch"
+ "${FILESDIR}/${PN}-1.2.40_laf-gcc13.patch"
+)
+
+src_prepare() {
+ # Remove extra \r on ends, #895504
+ sed -i -e 's/\r$//' \
+ third_party/IXWebSocket/ixwebsocket/IXWebSocketSendData.h || die
+ cmake_src_prepare
+ # Skia: remove custom optimizations
+ sed -i -e 's:"\/\/gn\/skia\:optimize",::g' \
+ "skia-${SKIA_REV}/gn/BUILDCONFIG.gn" || die
+ # Aseprite: don't install tga bundled library
+ sed -i -e '/install/d' src/tga/CMakeLists.txt || die
+ # Aseprite: don't use bundled gtest
+ sed -i -e '/add_subdirectory(googletest)/d' \
+ laf/third_party/CMakeLists.txt || die
+ # Fix shebang in thumbnailer
+ sed -i -e 's:#!/usr/bin/sh:#!/bin/sh:' \
+ src/desktop/linux/aseprite-thumbnailer || die
+}
+
+src_configure() {
+ # -Werror=strict-aliasing, -Werror=odr, -Werror=lto-type-mismatch
+ # https://bugs.gentoo.org/924692
+ # https://github.com/aseprite/aseprite/issues/4413
+ #
+ # There is a bundled skia that fails with ODR errors. When excluding just
+ # skia from testing, aseprite itself fails with strict-aliasing, and when
+ # that is disabled, fails again with ODR and lto-type-mismatch issues.
+ #
+ # There are a lot of issues, so don't trust any fixes without thorough
+ # testing.
+ append-flags -fno-strict-aliasing
+ filter-lto
+
+ einfo "Skia configuration"
+ cd "${WORKDIR}/skia-${SKIA_REV}" || die
+
+ tc-export AR CC CXX
+
+ passflags() {
+ local _f _x
+ _f=( ${1} )
+ _x="[$(printf '"%s", ' "${_f[@]}")]"
+ myconf_gn+=( ${2}="${_x}" )
+ }
+
+ local myconf_gn=(
+ ar=\"${AR}\"
+ cc=\"${CC}\"
+ cxx=\"${CXX}\"
+
+ is_official_build=true
+ is_component_build=false
+ is_debug=false
+
+ skia_use_egl=false
+ skia_use_dawn=false
+ skia_use_dng_sdk=false
+ skia_use_metal=false
+ skia_use_sfntly=false
+ skia_use_wuffs=false
+
+ skia_enable_pdf=false
+ skia_enable_svg=false
+ skia_use_expat=false
+ skia_use_ffmpeg=false
+ skia_use_fontconfig=false
+ skia_use_freetype=true
+ skia_use_gl=true
+ skia_use_harfbuzz=true
+ skia_use_icu=false
+ skia_use_libjpeg_turbo_decode=true
+ skia_use_libjpeg_turbo_encode=true
+ skia_use_libpng_decode=true
+ skia_use_libpng_encode=true
+ skia_use_libwebp_decode=$(usex webp true false)
+ skia_use_libwebp_encode=$(usex webp true false)
+ skia_use_lua=false
+ skia_use_vulkan=false
+ skia_use_x11=false
+ skia_use_xps=false
+ skia_use_zlib=true
+ )
+
+ passflags "${CFLAGS}" extra_cflags_c
+ passflags "${CXXFLAGS}" extra_cflags_cc
+ passflags "${LDFLAGS}" extra_ldflags
+ myconf_gn="${myconf_gn[@]}"
+ set -- gn gen --args="${myconf_gn% }" out/Static
+ echo "$@"
+ "$@" || die
+
+ einfo "Aseprite configuration"
+ cd "${WORKDIR}" || die
+
+ local mycmakeargs=(
+ -DENABLE_CCACHE=OFF
+ -DENABLE_DESKTOP_INTEGRATION=ON
+ -DENABLE_STEAM=OFF
+ -DENABLE_TESTS="$(usex test)"
+ -DENABLE_QT_THUMBNAILER="$(usex kde)"
+ -DENABLE_UPDATER=OFF
+ -DENABLE_UI=ON
+ -DENABLE_WEBP="$(usex webp)"
+ -DLAF_WITH_EXAMPLES=OFF
+ -DLAF_WITH_TESTS="$(usex test)"
+ -DFULLSCREEN_PLATFORM=ON
+ -DSKIA_DIR="${WORKDIR}/skia-${SKIA_REV}/"
+ -DSKIA_LIBRARY_DIR="${WORKDIR}/skia-${SKIA_REV}/out/Static/"
+ -DSKIA_LIBRARY="${WORKDIR}/skia-${SKIA_REV}/out/Static/libskia.a"
+ -DSKSHAPER_LIBRARY="${WORKDIR}/skia-${SKIA_REV}/out/Static/libskshaper.a"
+ -DUSE_SHARED_CMARK=ON
+ -DUSE_SHARED_CURL=ON
+ -DUSE_SHARED_FREETYPE=ON
+ -DUSE_SHARED_GIFLIB=ON
+ -DUSE_SHARED_HARFBUZZ=ON
+ -DUSE_SHARED_JPEGLIB=ON
+ -DUSE_SHARED_JSON11=ON
+ -DUSE_SHARED_LIBARCHIVE=ON
+ -DUSE_SHARED_LIBPNG=ON
+ -DUSE_SHARED_PIXMAN=ON
+ -DUSE_SHARED_TINYXML=ON
+ -DUSE_SHARED_WEBP=ON
+ -DUSE_SHARED_ZLIB=ON
+ )
+ cmake_src_configure
+}
+
+src_compile() {
+ einfo "Skia compilation"
+ cd "${WORKDIR}/skia-${SKIA_REV}" || die
+ eninja -C out/Static
+
+ einfo "Aseprite compilation"
+ cd "${WORKDIR}" || die
+ cmake_src_compile
+}
+
+src_install() {
+ newicon -s 64 "${S}/data/icons/ase64.png" "${PN}.png"
+ cmake_src_install
+}
+
+pkg_postinst() {
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+ xdg_mimeinfo_database_update
+}
+
+pkg_postrm() {
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+ xdg_mimeinfo_database_update
+}
diff --git a/dev-games/aseprite/aseprite-1.3.5.ebuild b/dev-games/aseprite/aseprite-1.3.5.ebuild
new file mode 100644
index 000000000000..8717c09abd5e
--- /dev/null
+++ b/dev-games/aseprite/aseprite-1.3.5.ebuild
@@ -0,0 +1,233 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit cmake desktop flag-o-matic python-any-r1 toolchain-funcs xdg-utils
+
+SKIA_VER="m102"
+# Last commit in ${SKIA_VER} feature branch
+# Don't use skia.googlesource.com, it produces non-reproducible tarballs
+SKIA_REV="3338e90707323d2cd3a150276acb9f39933deee2"
+
+DESCRIPTION="Animated sprite editor & pixel art tool"
+HOMEPAGE="https://www.aseprite.org"
+SRC_URI="https://github.com/aseprite/aseprite/releases/download/v${PV}/Aseprite-v${PV}-Source.zip
+ https://github.com/google/skia/archive/${SKIA_REV}.tar.gz -> skia-${SKIA_VER}-${SKIA_REV}.gh.tar.gz"
+
+# See https://github.com/aseprite/aseprite#license
+LICENSE="Aseprite-EULA MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE="kde test webp"
+RESTRICT="bindist mirror !test? ( test )"
+
+CDEPEND="
+ app-arch/libarchive:=
+ app-text/cmark:=
+ dev-libs/libfmt:=
+ dev-libs/tinyxml
+ media-libs/freetype
+ media-libs/giflib:=
+ media-libs/harfbuzz:=[truetype]
+ media-libs/libjpeg-turbo:=
+ media-libs/libpng:=
+ net-misc/curl
+ sys-libs/zlib:=
+ virtual/opengl
+ x11-libs/libX11
+ x11-libs/libXcursor
+ x11-libs/libXi
+ x11-libs/libxcb:=
+ kde? (
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ kde-frameworks/kio:5
+ )
+ webp? ( media-libs/libwebp:= )"
+RDEPEND="
+ ${CDEPEND}
+ gnome-extra/zenity
+"
+DEPEND="
+ ${CDEPEND}
+ x11-base/xorg-proto"
+BDEPEND="
+ ${PYTHON_DEPS}
+ test? ( dev-cpp/gtest )
+ app-arch/unzip
+ dev-build/gn
+ virtual/pkgconfig"
+
+DOCS=(
+ docs/ase-file-specs.md
+ docs/gpl-palette-extension.md
+ README.md
+)
+
+S="${WORKDIR}"
+
+PATCHES=(
+ "${FILESDIR}/skia-${SKIA_VER}_remove_angle2.patch"
+ "${FILESDIR}/${PN}-1.2.40_shared_libarchive.patch"
+ "${FILESDIR}/${PN}-1.3.2_shared_json11.patch"
+ "${FILESDIR}/${PN}-1.3.2_shared_webp.patch"
+ "${FILESDIR}/${PN}-1.2.35_laf_fixes.patch"
+ "${FILESDIR}/${PN}-1.3.2_shared_fmt.patch"
+ "${FILESDIR}/${PN}-1.3.2_strict-aliasing.patch"
+ "${FILESDIR}"/aseprite-1.3.5_laf-strict-aliasing.patch
+)
+
+src_prepare() {
+ cmake_src_prepare
+ # Skia: remove custom optimizations
+ sed -i -e 's:"\/\/gn\/skia\:optimize",::g' \
+ "skia-${SKIA_REV}/gn/BUILDCONFIG.gn" || die
+ # Aseprite: don't install tga bundled library
+ sed -i -e '/install/d' src/tga/CMakeLists.txt || die
+ # Aseprite: don't use bundled gtest
+ sed -i -e '/add_subdirectory(googletest)/d' \
+ laf/third_party/CMakeLists.txt || die
+ # Fix shebang in thumbnailer
+ sed -i -e 's:#!/usr/bin/sh:#!/bin/sh:' \
+ src/desktop/linux/aseprite-thumbnailer || die
+}
+
+src_configure() {
+ # -Werror=strict-aliasing, -Werror=odr, -Werror=lto-type-mismatch
+ # https://bugs.gentoo.org/924692
+ # https://github.com/aseprite/aseprite/issues/4413
+ #
+ # There is a bundled skia that fails with ODR errors. When excluding just
+ # skia from testing, aseprite itself failed with strict-aliasing (before
+ # upstream PR#84), and when that is disabled, fails again with ODR and
+ # lto-type-mismatch issues.
+ #
+ # There are a lot of issues, so don't trust any fixes without thorough
+ # testing.
+ filter-lto
+
+ einfo "Skia configuration"
+ cd "${WORKDIR}/skia-${SKIA_REV}" || die
+
+ tc-export AR CC CXX
+
+ passflags() {
+ local _f _x
+ _f=( ${1} )
+ _x="[$(printf '"%s", ' "${_f[@]}")]"
+ myconf_gn+=( ${2}="${_x}" )
+ }
+
+ local myconf_gn=(
+ ar=\"${AR}\"
+ cc=\"${CC}\"
+ cxx=\"${CXX}\"
+
+ is_official_build=true
+ is_component_build=false
+ is_debug=false
+
+ skia_use_egl=false
+ skia_use_dawn=false
+ skia_use_dng_sdk=false
+ skia_use_metal=false
+ skia_use_sfntly=false
+ skia_use_wuffs=false
+
+ skia_enable_pdf=false
+ skia_enable_svg=false
+ skia_use_expat=false
+ skia_use_ffmpeg=false
+ skia_use_fontconfig=false
+ skia_use_freetype=true
+ skia_use_gl=true
+ skia_use_harfbuzz=true
+ skia_use_icu=false
+ skia_use_libjpeg_turbo_decode=true
+ skia_use_libjpeg_turbo_encode=true
+ skia_use_libpng_decode=true
+ skia_use_libpng_encode=true
+ skia_use_libwebp_decode=$(usex webp true false)
+ skia_use_libwebp_encode=$(usex webp true false)
+ skia_use_lua=false
+ skia_use_vulkan=false
+ skia_use_x11=false
+ skia_use_xps=false
+ skia_use_zlib=true
+ )
+
+ passflags "${CFLAGS}" extra_cflags_c
+ passflags "${CXXFLAGS}" extra_cflags_cc
+ passflags "${LDFLAGS}" extra_ldflags
+ myconf_gn="${myconf_gn[@]}"
+ set -- gn gen --args="${myconf_gn% }" out/Static
+ echo "$@"
+ "$@" || die
+
+ einfo "Aseprite configuration"
+ cd "${WORKDIR}" || die
+
+ local mycmakeargs=(
+ -DENABLE_CCACHE=OFF
+ -DENABLE_DESKTOP_INTEGRATION=ON
+ -DENABLE_STEAM=OFF
+ -DENABLE_TESTS="$(usex test)"
+ -DENABLE_QT_THUMBNAILER="$(usex kde)"
+ -DENABLE_UPDATER=OFF
+ -DENABLE_UI=ON
+ -DENABLE_WEBP="$(usex webp)"
+ -DLAF_WITH_EXAMPLES=OFF
+ -DLAF_WITH_TESTS="$(usex test)"
+ -DFULLSCREEN_PLATFORM=ON
+ -DSKIA_DIR="${WORKDIR}/skia-${SKIA_REV}/"
+ -DSKIA_LIBRARY_DIR="${WORKDIR}/skia-${SKIA_REV}/out/Static/"
+ -DSKIA_LIBRARY="${WORKDIR}/skia-${SKIA_REV}/out/Static/libskia.a"
+ -DSKSHAPER_LIBRARY="${WORKDIR}/skia-${SKIA_REV}/out/Static/libskshaper.a"
+ -DUSE_SHARED_CMARK=ON
+ -DUSE_SHARED_CURL=ON
+ -DUSE_SHARED_FMT=ON
+ -DUSE_SHARED_FREETYPE=ON
+ -DUSE_SHARED_GIFLIB=ON
+ -DUSE_SHARED_HARFBUZZ=ON
+ -DUSE_SHARED_JPEGLIB=ON
+ -DUSE_SHARED_JSON11=OFF # Custom methods added to bundled version
+ -DUSE_SHARED_LIBARCHIVE=ON
+ -DUSE_SHARED_LIBPNG=ON
+ -DUSE_SHARED_PIXMAN=ON
+ -DUSE_SHARED_TINYXML=ON
+ -DUSE_SHARED_WEBP=ON
+ -DUSE_SHARED_ZLIB=ON
+ )
+ cmake_src_configure
+}
+
+src_compile() {
+ einfo "Skia compilation"
+ cd "${WORKDIR}/skia-${SKIA_REV}" || die
+ eninja -C out/Static
+
+ einfo "Aseprite compilation"
+ cd "${WORKDIR}" || die
+ cmake_src_compile
+}
+
+src_install() {
+ newicon -s 64 "${S}/data/icons/ase64.png" "${PN}.png"
+ cmake_src_install
+}
+
+pkg_postinst() {
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+ xdg_mimeinfo_database_update
+}
+
+pkg_postrm() {
+ xdg_desktop_database_update
+ xdg_icon_cache_update
+ xdg_mimeinfo_database_update
+}
diff --git a/dev-games/aseprite/files/aseprite-1.1.7_type-punned_pointer.patch b/dev-games/aseprite/files/aseprite-1.1.7_type-punned_pointer.patch
deleted file mode 100644
index ca0921437fc8..000000000000
--- a/dev-games/aseprite/files/aseprite-1.1.7_type-punned_pointer.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/src/allegro/src/x/xkeyboard.c b/src/allegro/src/x/xkeyboard.c
-index f121e62..86fa4f7 100644
---- a/src/allegro/src/x/xkeyboard.c
-+++ b/src/allegro/src/x/xkeyboard.c
-@@ -356,6 +356,14 @@ static int find_unknown_key_assignment (int i)
- return _xwin.keycode_to_scancode[i];
- }
-
-+/* unicode_getc:
-+ * Reads a character from a Unicode string.
-+ */
-+static int unicode_getc(AL_CONST char *s)
-+{
-+ return *((unsigned short *)s);
-+}
-+
-
-
- /* _xwin_keyboard_handler:
-@@ -412,7 +420,7 @@ void _xwin_keyboard_handler(XKeyEvent *event, int dga2_hack)
- }
- buffer[len] = '\0';
- uconvert(buffer, U_UTF8, buffer2, U_UNICODE, sizeof buffer2);
-- unicode = *(unsigned short *)buffer2;
-+ unicode = unicode_getc(buffer2);
-
- #ifdef ALLEGRO_XWINDOWS_WITH_XIM
- r = XFilterEvent((XEvent *)event, _xwin.window);
diff --git a/dev-games/aseprite/files/aseprite-1.2.35_laf_fixes.patch b/dev-games/aseprite/files/aseprite-1.2.35_laf_fixes.patch
new file mode 100644
index 000000000000..31a9ab5b3be9
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.2.35_laf_fixes.patch
@@ -0,0 +1,40 @@
+diff --git a/cmake/FindSkia.cmake b/cmake/FindSkia.cmake
+index 2d18c12..2e37f22 100644
+--- a/laf/cmake/FindSkia.cmake
++++ b/laf/cmake/FindSkia.cmake
+@@ -122,25 +122,25 @@ if(NOT ZLIB_LIBRARIES)
+ set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
+ endif()
+
+-set(FREETYPE_FOUND ON)
+-find_library(FREETYPE_LIBRARY freetype2 PATH "${SKIA_LIBRARY_DIR}" NO_DEFAULT_PATH)
+-set(FREETYPE_LIBRARIES ${FREETYPE_LIBRARY})
+-set(FREETYPE_INCLUDE_DIRS "${SKIA_DIR}/third_party/externals/freetype/include")
+-
+-find_library(HARFBUZZ_LIBRARY harfbuzz PATH "${SKIA_LIBRARY_DIR}" NO_DEFAULT_PATH)
+-set(HARFBUZZ_LIBRARIES ${HARFBUZZ_LIBRARY})
+-set(HARFBUZZ_INCLUDE_DIRS "${SKIA_DIR}/third_party/externals/harfbuzz/src")
+-
+ set(SKIA_LIBRARIES
+ ${SKIA_LIBRARY}
+ ${SKIA_OPENGL_LIBRARY}
++ ${FREETYPE_LIBRARIES}
++ ${JPEG_LIBRARIES}
++ ${HARFBUZZ_LIBRARIES}
++ ${PNG_LIBRARIES}
++ ${WEBP_LIBRARIES}
+ CACHE INTERNAL "Skia libraries")
+
+ add_library(skia INTERFACE)
+ target_include_directories(skia INTERFACE
+ ${SKIA_DIR}
+ ${FREETYPE_INCLUDE_DIRS}
+- ${HARFBUZZ_INCLUDE_DIRS})
++ ${JPEG_INCLUDE_DIRS}
++ ${HARFBUZZ_INCLUDE_DIRS}
++ ${PNG_INCLUDE_DIRS}
++ ${WEBP_INCLUDE_DIRS}
++)
+ target_link_libraries(skia INTERFACE ${SKIA_LIBRARIES})
+ target_compile_definitions(skia INTERFACE
+ SK_INTERNAL
diff --git a/dev-games/aseprite/files/aseprite-1.2.40_ixwebsocket-gcc13.patch b/dev-games/aseprite/files/aseprite-1.2.40_ixwebsocket-gcc13.patch
new file mode 100644
index 000000000000..85ae6739beb8
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.2.40_ixwebsocket-gcc13.patch
@@ -0,0 +1,245 @@
+From a5d86afd43920d2401682ecd3ec6879a574845ea Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Sun, 19 Feb 2023 21:08:36 +0300
+Subject: [PATCH] Fix compilation on GCC-13
+
+GCC-13 changes internal cstdint includes, and now files that uses
+standart integer types should directly include cstdint header.
+
+See: https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes
+See: https://github.com/machinezone/IXWebSocket/pull/443
+Bug: https://bugs.gentoo.org/865117
+Bug: https://bugs.gentoo.org/895440
+--- a/third_party/IXWebSocket/ixwebsocket/IXBench.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXBench.h
+@@ -6,7 +6,7 @@
+ #pragma once
+
+ #include <chrono>
+-#include <stdint.h>
++#include <cstdint>
+ #include <string>
+
+ namespace ix
+--- a/third_party/IXWebSocket/ixwebsocket/IXConnectionState.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXConnectionState.h
+@@ -7,9 +7,9 @@
+ #pragma once
+
+ #include <atomic>
++#include <cstdint>
+ #include <functional>
+ #include <memory>
+-#include <stdint.h>
+ #include <string>
+
+ namespace ix
+--- a/third_party/IXWebSocket/ixwebsocket/IXDNSLookup.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXDNSLookup.h
+@@ -12,6 +12,7 @@
+
+ #include "IXCancellationRequest.h"
+ #include <atomic>
++#include <cstdint>
+ #include <memory>
+ #include <mutex>
+ #include <set>
+--- a/third_party/IXWebSocket/ixwebsocket/IXHttp.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXHttp.h
+@@ -9,6 +9,7 @@
+ #include "IXProgressCallback.h"
+ #include "IXWebSocketHttpHeaders.h"
+ #include <atomic>
++#include <cstdint>
+ #include <tuple>
+ #include <unordered_map>
+
+--- a/third_party/IXWebSocket/ixwebsocket/IXHttpClient.cpp
++++ b/third_party/IXWebSocket/ixwebsocket/IXHttpClient.cpp
+@@ -12,6 +12,7 @@
+ #include "IXUserAgent.h"
+ #include "IXWebSocketHttpHeaders.h"
+ #include <assert.h>
++#include <cstdint>
+ #include <cstring>
+ #include <iomanip>
+ #include <random>
+--- a/third_party/IXWebSocket/ixwebsocket/IXHttpServer.cpp
++++ b/third_party/IXWebSocket/ixwebsocket/IXHttpServer.cpp
+@@ -10,6 +10,7 @@
+ #include "IXNetSystem.h"
+ #include "IXSocketConnect.h"
+ #include "IXUserAgent.h"
++#include <cstdint>
+ #include <cstring>
+ #include <fstream>
+ #include <sstream>
+--- a/third_party/IXWebSocket/ixwebsocket/IXNetSystem.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXNetSystem.h
+@@ -6,6 +6,8 @@
+
+ #pragma once
+
++#include <cstdint>
++
+ #ifdef _WIN32
+
+ #ifndef WIN32_LEAN_AND_MEAN
+--- a/third_party/IXWebSocket/ixwebsocket/IXSelectInterrupt.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXSelectInterrupt.h
+@@ -6,8 +6,8 @@
+
+ #pragma once
+
++#include <cstdint>
+ #include <memory>
+-#include <stdint.h>
+ #include <string>
+
+ namespace ix
+--- a/third_party/IXWebSocket/ixwebsocket/IXSelectInterruptEvent.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXSelectInterruptEvent.h
+@@ -5,8 +5,8 @@
+ #pragma once
+
+ #include "IXSelectInterrupt.h"
++#include <cstdint>
+ #include <mutex>
+-#include <stdint.h>
+ #include <string>
+ #include <deque>
+ #ifdef _WIN32
+--- a/third_party/IXWebSocket/ixwebsocket/IXSelectInterruptPipe.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXSelectInterruptPipe.h
+@@ -7,6 +7,7 @@
+ #pragma once
+
+ #include "IXSelectInterrupt.h"
++#include <cstdint>
+ #include <mutex>
+ #include <stdint.h>
+ #include <string>
+--- a/third_party/IXWebSocket/ixwebsocket/IXSocket.cpp
++++ b/third_party/IXWebSocket/ixwebsocket/IXSocket.cpp
+@@ -14,7 +14,6 @@
+ #include <array>
+ #include <assert.h>
+ #include <fcntl.h>
+-#include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+--- a/third_party/IXWebSocket/ixwebsocket/IXSocket.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXSocket.h
+@@ -7,6 +7,7 @@
+ #pragma once
+
+ #include <atomic>
++#include <cstdint>
+ #include <functional>
+ #include <memory>
+ #include <mutex>
+--- a/third_party/IXWebSocket/ixwebsocket/IXSocketMbedTLS.cpp
++++ b/third_party/IXWebSocket/ixwebsocket/IXSocketMbedTLS.cpp
+@@ -14,6 +14,7 @@
+ #include "IXNetSystem.h"
+ #include "IXSocket.h"
+ #include "IXSocketConnect.h"
++#include <cstdint>
+ #include <string.h>
+
+ #ifdef _WIN32
+--- a/third_party/IXWebSocket/ixwebsocket/IXUuid.cpp
++++ b/third_party/IXWebSocket/ixwebsocket/IXUuid.cpp
+@@ -16,6 +16,7 @@
+
+ #include "IXUuid.h"
+
++#include <cstdint>
+ #include <iomanip>
+ #include <random>
+ #include <sstream>
+--- a/third_party/IXWebSocket/ixwebsocket/IXWebSocket.cpp
++++ b/third_party/IXWebSocket/ixwebsocket/IXWebSocket.cpp
+@@ -13,6 +13,7 @@
+ #include "IXWebSocketHandshake.h"
+ #include <cassert>
+ #include <cmath>
++#include <cstdint>
+
+
+ namespace
+--- a/third_party/IXWebSocket/ixwebsocket/IXWebSocket.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXWebSocket.h
+@@ -21,6 +21,7 @@
+ #include "IXWebSocketTransport.h"
+ #include <atomic>
+ #include <condition_variable>
++#include <cstdint>
+ #include <mutex>
+ #include <string>
+ #include <thread>
+--- a/third_party/IXWebSocket/ixwebsocket/IXWebSocketPerMessageDeflate.cpp
++++ b/third_party/IXWebSocket/ixwebsocket/IXWebSocketPerMessageDeflate.cpp
+@@ -46,6 +46,8 @@
+ *
+ */
+
++#include <cstdint>
++
+ #include "IXWebSocketPerMessageDeflate.h"
+
+ #include "IXUniquePtr.h"
+--- a/third_party/IXWebSocket/ixwebsocket/IXWebSocketPerMessageDeflateCodec.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXWebSocketPerMessageDeflateCodec.h
+@@ -10,6 +10,7 @@
+ #include "zlib.h"
+ #endif
+ #include <array>
++#include <cstdint>
+ #include <string>
+ #include <vector>
+ #include "IXWebSocketSendData.h"
+--- a/third_party/IXWebSocket/ixwebsocket/IXWebSocketPerMessageDeflateOptions.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXWebSocketPerMessageDeflateOptions.h
+@@ -6,6 +6,7 @@
+
+ #pragma once
+
++#include <cstdint>
+ #include <string>
+
+ namespace ix
+--- a/third_party/IXWebSocket/ixwebsocket/IXWebSocketSendData.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXWebSocketSendData.h
+@@ -6,6 +6,7 @@
+
+ #pragma once
+
++#include <cstdint>
+ #include <string>
+ #include <vector>
+ #include <iterator>
+--- a/third_party/IXWebSocket/ixwebsocket/IXWebSocketTransport.cpp
++++ b/third_party/IXWebSocket/ixwebsocket/IXWebSocketTransport.cpp
+@@ -45,7 +45,6 @@
+ #include <cstdarg>
+ #include <cstdlib>
+ #include <sstream>
+-#include <stdlib.h>
+ #include <string.h>
+ #include <string>
+ #include <thread>
+--- a/third_party/IXWebSocket/ixwebsocket/IXWebSocketTransport.h
++++ b/third_party/IXWebSocket/ixwebsocket/IXWebSocketTransport.h
+@@ -21,6 +21,7 @@
+ #include "IXWebSocketSendData.h"
+ #include "IXWebSocketSendInfo.h"
+ #include <atomic>
++#include <cstdint>
+ #include <functional>
+ #include <list>
+ #include <memory>
+--
+2.39.2
+
diff --git a/dev-games/aseprite/files/aseprite-1.2.40_laf-gcc13.patch b/dev-games/aseprite/files/aseprite-1.2.40_laf-gcc13.patch
new file mode 100644
index 000000000000..3d7ff309342b
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.2.40_laf-gcc13.patch
@@ -0,0 +1,47 @@
+From 59c6af303dea4c6dc0c9da687ec73612929eacfc Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Tue, 21 Feb 2023 17:01:04 +0300
+Subject: [PATCH] Fix compilation on GCC13
+
+GCC-13 changes internal cstdint includes, and now files that uses
+standard integer types should directly include cstdint header.
+
+See: https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes
+See: https://github.com/aseprite/laf/pull/55
+Bug: https://bugs.gentoo.org/865117
+Bug: https://bugs.gentoo.org/895616
+--- a/laf/base/file_content.h
++++ b/laf/base/file_content.h
+@@ -9,6 +9,7 @@
+ #pragma once
+
+ #include "base/buffer.h"
++#include "base/ints.h"
+
+ #include <cstdio>
+ #include <string>
+--- a/laf/base/sha1.h
++++ b/laf/base/sha1.h
+@@ -11,6 +11,8 @@
+ #include <vector>
+ #include <string>
+
++#include "base/ints.h"
++
+ extern "C" struct SHA1Context;
+
+ namespace base {
+--- a/laf/base/sha1_rfc3174.h
++++ b/laf/base/sha1_rfc3174.h
+@@ -18,6 +18,8 @@
+ #define BASE_SHA1_RFC3174_H_INCLUDED
+ #pragma once
+
++#include "base/ints.h"
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+--
+2.39.2
+
diff --git a/dev-games/aseprite/files/aseprite-1.2.40_musl_pthreads.patch b/dev-games/aseprite/files/aseprite-1.2.40_musl_pthreads.patch
new file mode 100644
index 000000000000..6a6dfd9f6020
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.2.40_musl_pthreads.patch
@@ -0,0 +1,57 @@
+From 27403363708ca72cbbbdb085de27896485c5c422 Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Sat, 12 Nov 2022 05:13:08 +0300
+Subject: [PATCH] Don't use pthread_detach() after pthread_join()
+
+After pthread_join() all allocated to thread resources are freed, so
+pthread_detach() after pthread_join() will results in undefined behavior
+with SIGSERV on some libc implementations (like MUSL). According to
+pthread_detach(3), "Either pthread_join(3) or pthread_detach() should be
+called for each thread that an application creates".
+---
+ base/thread.cpp | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/laf/base/thread.cpp b/laf/base/thread.cpp
+index 81c1284..4d5e0ce 100644
+--- a/laf/base/thread.cpp
++++ b/laf/base/thread.cpp
+@@ -55,8 +55,12 @@ thread::thread()
+
+ thread::~thread()
+ {
+- if (joinable())
++ if (joinable()) {
++#if LAF_WINDOWS
++ ::CloseHandle(m_native_handle);
++#endif
+ detach();
++ }
+ }
+
+ bool thread::joinable() const
+@@ -69,6 +73,7 @@ void thread::join()
+ if (joinable()) {
+ #if LAF_WINDOWS
+ ::WaitForSingleObject(m_native_handle, INFINITE);
++ ::CloseHandle(m_native_handle);
+ #else
+ ::pthread_join((pthread_t)m_native_handle, NULL);
+ #endif
+@@ -79,12 +84,7 @@ void thread::join()
+ void thread::detach()
+ {
+ if (joinable()) {
+-#if LAF_WINDOWS
+- ::CloseHandle(m_native_handle);
+- m_native_handle = (native_handle_type)0;
+-#else
+- ::pthread_detach((pthread_t)m_native_handle);
+-#endif
++ m_native_handle = (native_handle_type)NULL;
+ }
+ }
+
+--
+2.37.4
+
diff --git a/dev-games/aseprite/files/aseprite-1.2.40_shared_json11.patch b/dev-games/aseprite/files/aseprite-1.2.40_shared_json11.patch
new file mode 100644
index 000000000000..d4c50484c9a8
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.2.40_shared_json11.patch
@@ -0,0 +1,54 @@
+From d92660c3187d0e7d5a0b7b2210f328d0d0bf73f2 Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Sun, 10 Jul 2022 19:53:06 +0300
+Subject: [PATCH 2/3] Use shared json11 library
+
+Added option -DUSE_SHARED_JSON11
+---
+ CMakeLists.txt | 7 +++++++
+ third_party/CMakeLists.txt | 4 +++-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 85d447ac8..69ab97ed8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -50,6 +50,7 @@ option(USE_SHARED_CMARK "Use your installed copy of cmark" off)
+ option(USE_SHARED_CURL "Use your installed copy of curl" off)
+ option(USE_SHARED_GIFLIB "Use your installed copy of giflib" off)
+ option(USE_SHARED_JPEGLIB "Use your installed copy of jpeglib" off)
++option(USE_SHARED_JSON11 "Use your installed copy of json11" off)
+ option(USE_SHARED_ZLIB "Use your installed copy of zlib" off)
+ option(USE_SHARED_LIBARCHIVE "Use your installed copy of libarchive" off)
+ option(USE_SHARED_LIBPNG "Use your installed copy of libpng" off)
+@@ -301,6 +302,12 @@ else()
+ endif()
+ include_directories(${JPEG_INCLUDE_DIRS})
+
++if(USE_SHARED_JSON11)
++ find_package(PkgConfig QUIET)
++ pkg_check_modules(JSON11 json11)
++ include_directories(${JSON11_INCLUDE_DIRS})
++endif()
++
+ if(USE_SHARED_CMARK)
+ find_library(CMARK_LIBRARIES NAMES cmark)
+ find_path(CMARK_INCLUDE_DIRS NAMES cmark.h)
+diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
+index e0a11c9c6..63ad42f23 100644
+--- a/third_party/CMakeLists.txt
++++ b/third_party/CMakeLists.txt
+@@ -123,7 +123,9 @@ if(NOT USE_SHARED_CMARK)
+ endif()
+
+ # JSON
+-add_subdirectory(json11)
++if(NOT USE_SHARED_JSON11)
++ add_subdirectory(json11)
++endif()
+
+ # libarchive
+ if(NOT USE_SHARED_LIBARCHIVE)
+--
+2.37.4
+
diff --git a/dev-games/aseprite/files/aseprite-1.2.40_shared_libarchive.patch b/dev-games/aseprite/files/aseprite-1.2.40_shared_libarchive.patch
new file mode 100644
index 000000000000..ffe5ae8bdeef
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.2.40_shared_libarchive.patch
@@ -0,0 +1,106 @@
+From dcad402ec83ca298cc206a1e8170b13c3f9a40fd Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Fri, 9 Oct 2020 02:18:36 +0300
+Subject: [PATCH 1/3] Make LibArchive as shared library dependency
+
+---
+ CMakeLists.txt | 11 +++++++++++
+ src/app/CMakeLists.txt | 2 +-
+ third_party/CMakeLists.txt | 38 ++++++++++++++++++++------------------
+ 3 files changed, 32 insertions(+), 19 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e9814380d..85d447ac8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -51,6 +51,7 @@ option(USE_SHARED_CURL "Use your installed copy of curl" off)
+ option(USE_SHARED_GIFLIB "Use your installed copy of giflib" off)
+ option(USE_SHARED_JPEGLIB "Use your installed copy of jpeglib" off)
+ option(USE_SHARED_ZLIB "Use your installed copy of zlib" off)
++option(USE_SHARED_LIBARCHIVE "Use your installed copy of libarchive" off)
+ option(USE_SHARED_LIBPNG "Use your installed copy of libpng" off)
+ option(USE_SHARED_TINYXML "Use your installed copy of tinyxml" off)
+ option(USE_SHARED_PIXMAN "Use your installed copy of pixman" off)
+@@ -210,6 +211,16 @@ else()
+ endif()
+ include_directories(${ZLIB_INCLUDE_DIRS})
+
++# libarchive
++if(USE_SHARED_LIBARCHIVE)
++ find_package(LibArchive REQUIRED)
++else()
++ set(LibArchive_FOUND)
++ set(LibArchive_LIBRARIES archive_static)
++ set(LibArchive_INCLUDE_DIRS $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libarchive/libarchive>)
++endif()
++include_directories(${LibArchive_INCLUDE_DIRS})
++
+ # libpng
+ if(USE_SHARED_LIBPNG)
+ find_package(PNG REQUIRED)
+diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
+index c42768ff6..e0495f98f 100644
+--- a/src/app/CMakeLists.txt
++++ b/src/app/CMakeLists.txt
+@@ -670,8 +670,8 @@ target_link_libraries(app-lib
+ ${ZLIB_LIBRARIES}
+ ${FREETYPE_LIBRARIES}
+ ${HARFBUZZ_LIBRARIES}
++ ${LibArchive_LIBRARIES}
+ json11
+- archive_static
+ fmt
+ tinyexpr)
+
+diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
+index 96a82829d..e0a11c9c6 100644
+--- a/third_party/CMakeLists.txt
++++ b/third_party/CMakeLists.txt
+@@ -126,24 +126,26 @@ endif()
+ add_subdirectory(json11)
+
+ # libarchive
+-set(ENABLE_WERROR OFF CACHE BOOL "Treat warnings as errors - default is ON for Debug, OFF otherwise.")
+-set(ENABLE_TEST OFF CACHE BOOL "Enable unit and regression tests")
+-set(ENABLE_COVERAGE OFF CACHE BOOL "Enable code coverage (GCC only, automatically sets ENABLE_TEST to ON)")
+-set(ENABLE_LZ4 OFF CACHE BOOL "Enable the use of the system LZ4 library if found")
+-set(ENABLE_LZO OFF CACHE BOOL "Enable the use of the system LZO library if found")
+-set(ENABLE_LZMA OFF CACHE BOOL "Enable the use of the system LZMA library if found")
+-set(ENABLE_ZSTD OFF CACHE BOOL "Enable the use of the system zstd library if found")
+-set(ENABLE_CNG OFF CACHE BOOL "Enable the use of CNG(Crypto Next Generation)")
+-set(ENABLE_BZip2 OFF CACHE BOOL "Enable the use of the system BZip2 library if found")
+-set(ENABLE_EXPAT OFF CACHE BOOL "Enable the use of the system EXPAT library if found")
+-set(ENABLE_LIBXML2 OFF CACHE BOOL "Enable the use of the system libxml2 library if found")
+-set(ENABLE_CAT OFF CACHE BOOL "Enable cat building")
+-set(ENABLE_TAR OFF CACHE BOOL "Enable tar building")
+-set(ENABLE_CPIO OFF CACHE BOOL "Enable cpio building")
+-set(ENABLE_LIBB2 OFF CACHE BOOL "Enable the use of the system LIBB2 library if found")
+-add_subdirectory(libarchive)
+-target_include_directories(archive_static INTERFACE
+- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libarchive/libarchive>)
++if(NOT USE_SHARED_LIBARCHIVE)
++ set(ENABLE_WERROR OFF CACHE BOOL "Treat warnings as errors - default is ON for Debug, OFF otherwise.")
++ set(ENABLE_TEST OFF CACHE BOOL "Enable unit and regression tests")
++ set(ENABLE_COVERAGE OFF CACHE BOOL "Enable code coverage (GCC only, automatically sets ENABLE_TEST to ON)")
++ set(ENABLE_LZ4 OFF CACHE BOOL "Enable the use of the system LZ4 library if found")
++ set(ENABLE_LZO OFF CACHE BOOL "Enable the use of the system LZO library if found")
++ set(ENABLE_LZMA OFF CACHE BOOL "Enable the use of the system LZMA library if found")
++ set(ENABLE_ZSTD OFF CACHE BOOL "Enable the use of the system zstd library if found")
++ set(ENABLE_CNG OFF CACHE BOOL "Enable the use of CNG(Crypto Next Generation)")
++ set(ENABLE_BZip2 OFF CACHE BOOL "Enable the use of the system BZip2 library if found")
++ set(ENABLE_EXPAT OFF CACHE BOOL "Enable the use of the system EXPAT library if found")
++ set(ENABLE_LIBXML2 OFF CACHE BOOL "Enable the use of the system libxml2 library if found")
++ set(ENABLE_CAT OFF CACHE BOOL "Enable cat building")
++ set(ENABLE_TAR OFF CACHE BOOL "Enable tar building")
++ set(ENABLE_CPIO OFF CACHE BOOL "Enable cpio building")
++ set(ENABLE_LIBB2 OFF CACHE BOOL "Enable the use of the system LIBB2 library if found")
++ add_subdirectory(libarchive)
++ target_include_directories(archive_static INTERFACE
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libarchive/libarchive>)
++endif()
+
+ # benchmark
+ if(ENABLE_BENCHMARKS)
+--
+2.37.4
+
diff --git a/dev-games/aseprite/files/aseprite-1.2.40_shared_webp.patch b/dev-games/aseprite/files/aseprite-1.2.40_shared_webp.patch
new file mode 100644
index 000000000000..44f46efac5d5
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.2.40_shared_webp.patch
@@ -0,0 +1,72 @@
+From adabed7947074268be713e1da3b4cb2d6d8c88a5 Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Sun, 10 Jul 2022 20:14:00 +0300
+Subject: [PATCH 3/3] Use shared webp library
+
+Added option -DUSE_SHARED_WEBP
+---
+ CMakeLists.txt | 25 ++++++++++++++++---------
+ third_party/CMakeLists.txt | 2 +-
+ 2 files changed, 17 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 69ab97ed8..2cb0886cd 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -56,6 +56,7 @@ option(USE_SHARED_LIBARCHIVE "Use your installed copy of libarchive" off)
+ option(USE_SHARED_LIBPNG "Use your installed copy of libpng" off)
+ option(USE_SHARED_TINYXML "Use your installed copy of tinyxml" off)
+ option(USE_SHARED_PIXMAN "Use your installed copy of pixman" off)
++option(USE_SHARED_WEBP "Use your installed copy of webp" off)
+ option(USE_SHARED_FREETYPE "Use shared FreeType library" off)
+ option(USE_SHARED_HARFBUZZ "Use shared HarfBuzz library" off)
+ option(ENABLE_ASEPRITE_EXE "Compile main Aseprite executable" on)
+@@ -345,17 +346,23 @@ add_subdirectory(laf)
+
+ # libwebp
+ if(ENABLE_WEBP)
+- # Use libwebp from Skia
+- if(LAF_BACKEND STREQUAL "skia")
+- find_library(WEBP_LIBRARIES webp
+- NAMES libwebp # required for Windows
+- PATHS "${SKIA_LIBRARY_DIR}" NO_DEFAULT_PATH)
+- set(WEBP_INCLUDE_DIR "${SKIA_DIR}/third_party/externals/libwebp/src")
++ if(USE_SHARED_WEBP)
++ find_package(PkgConfig QUIET)
++ pkg_check_modules(WEBP libwebp libwebpdemux libwebpmux)
++ include_directories(${WEBP_INCLUDE_DIR})
+ else()
+- set(WEBP_LIBRARIES webp webpdemux libwebpmux)
+- set(WEBP_INCLUDE_DIR ${LIBWEBP_DIR}/src)
++ # Use libwebp from Skia
++ if(LAF_BACKEND STREQUAL "skia")
++ find_library(WEBP_LIBRARIES webp
++ NAMES libwebp # required for Windows
++ PATHS "${SKIA_LIBRARY_DIR}" NO_DEFAULT_PATH)
++ set(WEBP_INCLUDE_DIR "${SKIA_DIR}/third_party/externals/libwebp/src")
++ else()
++ set(WEBP_LIBRARIES webp webpdemux libwebpmux)
++ set(WEBP_INCLUDE_DIR ${LIBWEBP_DIR}/src)
++ endif()
++ include_directories(${WEBP_INCLUDE_DIR})
+ endif()
+- include_directories(${WEBP_INCLUDE_DIR})
+ endif()
+ message(STATUS "aseprite libwebp: ${WEBP_LIBRARIES}")
+
+diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
+index 63ad42f23..9e240bc3e 100644
+--- a/third_party/CMakeLists.txt
++++ b/third_party/CMakeLists.txt
+@@ -33,7 +33,7 @@ if(NOT USE_SHARED_GIFLIB)
+ add_subdirectory(giflib)
+ endif()
+
+-if(ENABLE_WEBP AND NOT LAF_BACKEND STREQUAL "skia")
++if(ENABLE_WEBP AND NOT USE_SHARED_WEBP AND NOT LAF_BACKEND STREQUAL "skia")
+ set(WEBP_BUILD_EXTRAS OFF CACHE BOOL "Build extras.")
+ set(WEBP_BUILD_ANIM_UTILS OFF CACHE BOOL "Build animation utilities.")
+ set(WEBP_BUILD_CWEBP OFF CACHE BOOL "Build the cwebp command line tool.")
+--
+2.37.4
+
diff --git a/dev-games/aseprite/files/aseprite-1.3.2_shared_fmt.patch b/dev-games/aseprite/files/aseprite-1.3.2_shared_fmt.patch
new file mode 100644
index 000000000000..ddb32c5b672d
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.3.2_shared_fmt.patch
@@ -0,0 +1,52 @@
+From 7afccfca25ffe17aba5dada1dab663c8b6228ab1 Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Tue, 2 Jan 2024 20:00:12 +0300
+Subject: [PATCH] Use shared fmt library
+
+Added option -DUSE_SHARED_FMT
+---
+ CMakeLists.txt | 5 +++++
+ third_party/CMakeLists.txt | 4 +++-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2fc29252b..e49373323 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -39,6 +39,7 @@ enable_testing()
+
+ option(USE_SHARED_CMARK "Use your installed copy of cmark" off)
+ option(USE_SHARED_CURL "Use your installed copy of curl" off)
++option(USE_SHARED_FMT "Use your installed copy of libfmt" off)
+ option(USE_SHARED_GIFLIB "Use your installed copy of giflib" off)
+ option(USE_SHARED_JPEGLIB "Use your installed copy of jpeglib" off)
+ option(USE_SHARED_JSON11 "Use your installed copy of json11" off)
+@@ -197,6 +198,10 @@ if(NOT USE_SHARED_CURL)
+ set(CURL_STATICLIB ON BOOL)
+ endif()
+
++if(USE_SHARED_FMT)
++ find_package(fmt REQUIRED)
++endif()
++
+ # zlib
+ if(USE_SHARED_ZLIB)
+ find_package(ZLIB REQUIRED)
+diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
+index babbd4742..3c83991a4 100644
+--- a/third_party/CMakeLists.txt
++++ b/third_party/CMakeLists.txt
+@@ -113,7 +113,9 @@ if(NOT USE_SHARED_HARFBUZZ AND NOT LAF_BACKEND STREQUAL "skia")
+ endif()
+
+ add_subdirectory(simpleini)
+-add_subdirectory(fmt)
++if(NOT USE_SHARED_FMT)
++ add_subdirectory(fmt)
++endif()
+
+ # Add cmark without tests
+ if(NOT USE_SHARED_CMARK)
+--
+2.41.0
+
diff --git a/dev-games/aseprite/files/aseprite-1.3.2_shared_json11.patch b/dev-games/aseprite/files/aseprite-1.3.2_shared_json11.patch
new file mode 100644
index 000000000000..98b10f76b58d
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.3.2_shared_json11.patch
@@ -0,0 +1,56 @@
+From 7fa34e4a478ae4e4eab4031e626040a9db210417 Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Sun, 10 Jul 2022 19:53:06 +0300
+Subject: [PATCH 1/3] Use shared json11 library
+
+Added option -DUSE_SHARED_JSON11
+---
+ CMakeLists.txt | 7 +++++++
+ third_party/CMakeLists.txt | 6 +++++-
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f099e1deb..c4f364185 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -41,6 +41,7 @@ option(USE_SHARED_CMARK "Use your installed copy of cmark" off)
+ option(USE_SHARED_CURL "Use your installed copy of curl" off)
+ option(USE_SHARED_GIFLIB "Use your installed copy of giflib" off)
+ option(USE_SHARED_JPEGLIB "Use your installed copy of jpeglib" off)
++option(USE_SHARED_JSON11 "Use your installed copy of json11" off)
+ option(USE_SHARED_ZLIB "Use your installed copy of zlib" off)
+ option(USE_SHARED_LIBARCHIVE "Use your installed copy of libarchive" off)
+ option(USE_SHARED_LIBPNG "Use your installed copy of libpng" off)
+@@ -299,6 +300,12 @@ else()
+ endif()
+ include_directories(${JPEG_INCLUDE_DIRS})
+
++if(USE_SHARED_JSON11)
++ find_package(PkgConfig QUIET)
++ pkg_check_modules(JSON11 json11)
++ include_directories(${JSON11_INCLUDE_DIRS})
++endif()
++
+ if(USE_SHARED_CMARK)
+ find_library(CMARK_LIBRARIES NAMES cmark)
+ find_path(CMARK_INCLUDE_DIRS NAMES cmark.h)
+diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
+index bdd52435c..88eea9b5e 100644
+--- a/third_party/CMakeLists.txt
++++ b/third_party/CMakeLists.txt
+@@ -123,7 +123,11 @@ if(NOT USE_SHARED_CMARK)
+ endif()
+
+ # JSON
+-add_subdirectory(json11)
++if(NOT USE_SHARED_JSON11)
++ add_library(json11 STATIC json11/json11.cpp)
++ target_include_directories(json11 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/json11)
++ #target_compile_options(json11 PRIVATE -fPIC -fno-rtti -fno-exceptions -Wall)
++endif()
+
+ # libarchive
+ if(NOT USE_SHARED_LIBARCHIVE)
+--
+2.41.0
+
diff --git a/dev-games/aseprite/files/aseprite-1.3.2_shared_webp.patch b/dev-games/aseprite/files/aseprite-1.3.2_shared_webp.patch
new file mode 100644
index 000000000000..3026b7641e6d
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.3.2_shared_webp.patch
@@ -0,0 +1,81 @@
+From 06d5d4cd307e9ee0b83bdbff71729dab1305ea9a Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Sun, 10 Jul 2022 20:14:00 +0300
+Subject: [PATCH 2/4] Use shared webp library
+
+Added option -DUSE_SHARED_WEBP
+---
+ CMakeLists.txt | 28 ++++++++++++++++++----------
+ third_party/CMakeLists.txt | 2 +-
+ 2 files changed, 19 insertions(+), 11 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c4f364185..ba05f8d84 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -47,6 +47,7 @@ option(USE_SHARED_LIBARCHIVE "Use your installed copy of libarchive" off)
+ option(USE_SHARED_LIBPNG "Use your installed copy of libpng" off)
+ option(USE_SHARED_TINYXML "Use your installed copy of tinyxml" off)
+ option(USE_SHARED_PIXMAN "Use your installed copy of pixman" off)
++option(USE_SHARED_WEBP "Use your installed copy of webp" off)
+ option(USE_SHARED_FREETYPE "Use shared FreeType library" off)
+ option(USE_SHARED_HARFBUZZ "Use shared HarfBuzz library" off)
+ option(ENABLE_ASEPRITE_EXE "Compile main Aseprite executable" on)
+@@ -342,24 +343,31 @@ set(UNDO_TESTS ${ENABLE_TESTS} CACHE BOOL "Enable undo tests")
+ if(ENABLE_DRM)
+ add_subdirectory(drm)
+ endif()
+-add_subdirectory(laf)
+
+ # libwebp
+ if(ENABLE_WEBP)
+- # Use libwebp from Skia
+- if(LAF_BACKEND STREQUAL "skia")
+- find_library(WEBP_LIBRARIES webp
+- NAMES libwebp # required for Windows
+- PATHS "${SKIA_LIBRARY_DIR}" NO_DEFAULT_PATH)
+- set(WEBP_INCLUDE_DIR "${SKIA_DIR}/third_party/externals/libwebp/src")
++ if(USE_SHARED_WEBP)
++ find_package(PkgConfig QUIET)
++ pkg_check_modules(WEBP libwebp libwebpdemux libwebpmux)
++ include_directories(${WEBP_INCLUDE_DIR})
+ else()
+- set(WEBP_LIBRARIES webp webpdemux libwebpmux)
+- set(WEBP_INCLUDE_DIR ${LIBWEBP_DIR}/src)
++ # Use libwebp from Skia
++ if(LAF_BACKEND STREQUAL "skia")
++ find_library(WEBP_LIBRARIES webp
++ NAMES libwebp # required for Windows
++ PATHS "${SKIA_LIBRARY_DIR}" NO_DEFAULT_PATH)
++ set(WEBP_INCLUDE_DIR "${SKIA_DIR}/third_party/externals/libwebp/src")
++ else()
++ set(WEBP_LIBRARIES webp webpdemux libwebpmux)
++ set(WEBP_INCLUDE_DIR ${LIBWEBP_DIR}/src)
++ endif()
++ include_directories(${WEBP_INCLUDE_DIR})
+ endif()
+- include_directories(${WEBP_INCLUDE_DIR})
+ endif()
+ message(STATUS "aseprite libwebp: ${WEBP_LIBRARIES}")
+
++add_subdirectory(laf)
++
+ # LAF libraries + Aseprite are compiled with config.h
+ target_include_directories(laf-base PUBLIC src)
+ target_compile_definitions(laf-base PUBLIC HAVE_CONFIG_H)
+diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
+index 88eea9b5e..31aa3e52f 100644
+--- a/third_party/CMakeLists.txt
++++ b/third_party/CMakeLists.txt
+@@ -33,7 +33,7 @@ if(NOT USE_SHARED_GIFLIB)
+ add_subdirectory(giflib)
+ endif()
+
+-if(ENABLE_WEBP AND NOT LAF_BACKEND STREQUAL "skia")
++if(ENABLE_WEBP AND NOT USE_SHARED_WEBP AND NOT LAF_BACKEND STREQUAL "skia")
+ set(WEBP_BUILD_EXTRAS OFF CACHE BOOL "Build extras.")
+ set(WEBP_BUILD_ANIM_UTILS OFF CACHE BOOL "Build animation utilities.")
+ set(WEBP_BUILD_CWEBP OFF CACHE BOOL "Build the cwebp command line tool.")
+--
+2.41.0
+
diff --git a/dev-games/aseprite/files/aseprite-1.3.2_strict-aliasing.patch b/dev-games/aseprite/files/aseprite-1.3.2_strict-aliasing.patch
new file mode 100644
index 000000000000..de88b29a82aa
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.3.2_strict-aliasing.patch
@@ -0,0 +1,55 @@
+From 4e2066a7eb108503bfea2092672329e19ffbde49 Mon Sep 17 00:00:00 2001
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Tue, 2 Jan 2024 21:09:04 +0300
+Subject: [PATCH] Fix strict-aliasing warnings
+
+---
+ src/dio/aseprite_decoder.cpp | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/src/dio/aseprite_decoder.cpp b/src/dio/aseprite_decoder.cpp
+index e01fbba32..209a67307 100644
+--- a/src/dio/aseprite_decoder.cpp
++++ b/src/dio/aseprite_decoder.cpp
+@@ -28,10 +28,20 @@
+ #include "zlib.h"
+
+ #include <cstdio>
++#include <cstring>
+ #include <vector>
+
+ namespace dio {
+
++template <typename T>
++T
++copy_reinterpret_cast(const void* ptr)
++{
++ T tmp;
++ std::memcpy(&tmp, ptr, sizeof(T));
++ return tmp;
++}
++
+ bool AsepriteDecoder::decode()
+ {
+ bool ignore_old_color_chunks = false;
+@@ -425,7 +435,7 @@ float AsepriteDecoder::readFloat()
+
+ // Little endian.
+ int v = ((b4 << 24) | (b3 << 16) | (b2 << 8) | b1);
+- return *reinterpret_cast<float*>(&v);
++ return *copy_reinterpret_cast<float*>(&v);
+ }
+
+ double AsepriteDecoder::readDouble()
+@@ -465,7 +475,7 @@ double AsepriteDecoder::readDouble()
+ ((long long)b3 << 16) |
+ ((long long)b2 << 8) |
+ (long long)b1);
+- return *reinterpret_cast<double*>(&v);
++ return *copy_reinterpret_cast<double*>(&v);
+ }
+
+ doc::Palette* AsepriteDecoder::readColorChunk(doc::Palette* prevPal,
+--
+2.41.0
+
diff --git a/dev-games/aseprite/files/aseprite-1.3.5_laf-strict-aliasing.patch b/dev-games/aseprite/files/aseprite-1.3.5_laf-strict-aliasing.patch
new file mode 100644
index 000000000000..de6d5ffe3e7c
--- /dev/null
+++ b/dev-games/aseprite/files/aseprite-1.3.5_laf-strict-aliasing.patch
@@ -0,0 +1,155 @@
+https://github.com/aseprite/laf/pull/84
+From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
+Date: Sun, 14 Apr 2024 21:47:02 +0300
+Subject: [PATCH] Fix strict-alias warnings
+
+reinterpret_cast on pointers break strict-aliasing rule (-Wstrict-aliasing). Implemented internal function copy_reinterpret_cast that memcpy pointer into type, that can be converted to desired type.
+--- a/laf/base/cfile.cpp
++++ b/laf/base/cfile.cpp
+@@ -7,6 +7,7 @@
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
++#include "base/mem_utils.h"
+
+ #include <cstdio>
+
+@@ -114,7 +115,7 @@ float fgetf(FILE* file)
+
+ // Little endian.
+ int v = ((b4 << 24) | (b3 << 16) | (b2 << 8) | b1);
+- return *reinterpret_cast<float*>(&v);
++ return *copy_reinterpret_cast<float*>(&v);
+ }
+
+ // Reads a 64-bit double-precision floating point number using
+@@ -156,7 +157,7 @@ double fgetd(FILE* file)
+ ((long long)b3 << 16) |
+ ((long long)b2 << 8) |
+ (long long)b1);
+- return *reinterpret_cast<double*>(&v);
++ return *copy_reinterpret_cast<double*>(&v);
+ }
+
+ // Writes a word using little-endian byte ordering.
+@@ -231,7 +232,7 @@ int fputq(long long l, FILE* file)
+ // Returns 0 in success or -1 in error
+ int fputf(float l, FILE* file)
+ {
+- int b = *(reinterpret_cast<int*>(&l));
++ int b = *(copy_reinterpret_cast<int*>(&l));
+ int b1, b2, b3, b4;
+
+ // Little endian.
+@@ -254,7 +255,7 @@ int fputf(float l, FILE* file)
+ // Returns 0 in success or -1 in error
+ int fputd(double l, FILE* file)
+ {
+- long long b = *(reinterpret_cast<long long*>(&l));
++ long long b = *(copy_reinterpret_cast<long long*>(&l));
+ int b1, b2, b3, b4, b5, b6, b7, b8;
+
+ // Little endian.
+--- a/laf/base/mem_utils.h
++++ b/laf/base/mem_utils.h
+@@ -8,10 +8,18 @@
+ #define BASE_MEM_UTILS_H_INCLUDED
+ #pragma once
+
++#include <cstring>
+ #include <string>
+
+ namespace base {
+
++ template<typename T>
++ T copy_reinterpret_cast(const void* ptr) {
++ T tmp;
++ std::memcpy(&tmp, ptr, sizeof(T));
++ return tmp;
++ }
++
+ std::string get_pretty_memory_size(std::size_t memsize);
+
+ } // namespace base
+--- a/laf/base/serialization.cpp
++++ b/laf/base/serialization.cpp
+@@ -8,6 +8,7 @@
+ #include "config.h"
+ #endif
+
++#include "base/mem_utils.h"
+ #include "base/serialization.h"
+
+ #include <iostream>
+@@ -57,7 +58,7 @@ std::ostream& little_endian::write64(std::ostream& os, uint64_t qword)
+
+ std::ostream& little_endian::write_float(std::ostream& os, float value)
+ {
+- int b = *(reinterpret_cast<int*>(&value));
++ int b = *(copy_reinterpret_cast<int*>(&value));
+ os.put((int)((b & 0x000000ffl)));
+ os.put((int)((b & 0x0000ff00l) >> 8));
+ os.put((int)((b & 0x00ff0000l) >> 16));
+@@ -67,7 +68,7 @@ std::ostream& little_endian::write_float(std::ostream& os, float value)
+
+ std::ostream& little_endian::write_double(std::ostream& os, double value)
+ {
+- long long b = *(reinterpret_cast<long long*>(&value));
++ long long b = *(copy_reinterpret_cast<long long*>(&value));
+ os.put((int)((b & 0x00000000000000ffl)));
+ os.put((int)((b & 0x000000000000ff00l) >> 8));
+ os.put((int)((b & 0x0000000000ff0000l) >> 16));
+@@ -126,7 +127,7 @@ float little_endian::read_float(std::istream& is)
+ b3 = is.get();
+ b4 = is.get();
+ int v = ((b4 << 24) | (b3 << 16) | (b2 << 8) | b1);
+- return *reinterpret_cast<float*>(&v);
++ return *copy_reinterpret_cast<float*>(&v);
+ }
+
+ double little_endian::read_double(std::istream& is)
+@@ -148,7 +149,7 @@ double little_endian::read_double(std::istream& is)
+ ((long long)b3 << 16) |
+ ((long long)b2 << 8) |
+ (long long)b1);
+- return *reinterpret_cast<double*>(&v);
++ return *copy_reinterpret_cast<double*>(&v);
+ }
+
+ std::ostream& big_endian::write16(std::ostream& os, uint16_t word)
+@@ -182,7 +183,7 @@ std::ostream& big_endian::write64(std::ostream& os, uint64_t qword)
+
+ std::ostream& big_endian::write_float(std::ostream& os, float value)
+ {
+- int b = *(reinterpret_cast<int*>(&value));
++ int b = *(copy_reinterpret_cast<int*>(&value));
+ os.put((int)((b & 0xff000000l) >> 24));
+ os.put((int)((b & 0x00ff0000l) >> 16));
+ os.put((int)((b & 0x0000ff00l) >> 8));
+@@ -192,7 +193,7 @@ std::ostream& big_endian::write_float(std::ostream& os, float value)
+
+ std::ostream& big_endian::write_double(std::ostream& os, double value)
+ {
+- long long b = *(reinterpret_cast<long long*>(&value));
++ long long b = *(copy_reinterpret_cast<long long*>(&value));
+ os.put((int)((b & 0xff00000000000000l) >> 56));
+ os.put((int)((b & 0x00ff000000000000l) >> 48));
+ os.put((int)((b & 0x0000ff0000000000l) >> 40));
+@@ -251,7 +252,7 @@ float big_endian::read_float(std::istream& is)
+ b2 = is.get();
+ b1 = is.get();
+ int v = ((b4 << 24) | (b3 << 16) | (b2 << 8) | b1);
+- return *reinterpret_cast<float*>(&v);
++ return *copy_reinterpret_cast<float*>(&v);
+ }
+
+ double big_endian::read_double(std::istream& is)
+@@ -273,7 +274,7 @@ double big_endian::read_double(std::istream& is)
+ ((long long)b3 << 16) |
+ ((long long)b2 << 8) |
+ (long long)b1);
+- return *reinterpret_cast<double*>(&v);
++ return *copy_reinterpret_cast<double*>(&v);
+ }
+
+
diff --git a/dev-games/aseprite/files/skia-m102_remove_angle2.patch b/dev-games/aseprite/files/skia-m102_remove_angle2.patch
new file mode 100644
index 000000000000..7539a1e9aeb7
--- /dev/null
+++ b/dev-games/aseprite/files/skia-m102_remove_angle2.patch
@@ -0,0 +1,15 @@
+--- a/skia-3338e90707323d2cd3a150276acb9f39933deee2/third_party/zlib/BUILD.gn 2022-07-10 00:39:12.507321714 +0300
++++ b/skia-3338e90707323d2cd3a150276acb9f39933deee2/third_party/zlib/BUILD.gn 2022-07-10 00:40:49.175261689 +0300
+@@ -197,12 +197,3 @@
+ config("zlib_config") {
+ }
+
+-third_party("compression_utils_portable") {
+- visibility = [ "//third_party/externals/angle2:*" ]
+- public_include_dirs = [ "../externals/zlib/google" ]
+- sources = [
+- "../externals/zlib/google/compression_utils_portable.cc",
+- "../externals/zlib/google/compression_utils_portable.h",
+- ]
+- public_deps = [ ":zlib" ] # either system or from source
+-}
diff --git a/dev-games/aseprite/metadata.xml b/dev-games/aseprite/metadata.xml
index 1bf066565824..66ff5b77ea41 100644
--- a/dev-games/aseprite/metadata.xml
+++ b/dev-games/aseprite/metadata.xml
@@ -1,18 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="person">
+ <maintainer type="person" proxied="yes">
<email>azamat.hackimov@gmail.com</email>
<name>Azamat H. Hackimov</name>
</maintainer>
- <maintainer type="project">
+ <maintainer type="project" proxied="proxy">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
- <use>
- <flag name="bundled-libs">Use the upstream provided bundled version of allegro 4.4.2</flag>
- <flag name="gtk3">Enable support for the experimental native GTK File Dialog</flag>
- </use>
<upstream>
<remote-id type="github">aseprite/aseprite</remote-id>
</upstream>