summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO151
-rw-r--r--.gitignore5
-rw-r--r--.nvchecker.toml4
-rw-r--r--PKGBUILD351
-rw-r--r--aseprite.desktop14
-rw-r--r--desktop.patch25
-rw-r--r--optional-pixman.patch23
-rw-r--r--shared-fmt.patch71
-rw-r--r--shared-libarchive.patch74
-rw-r--r--shared-libwebp.patch59
-rw-r--r--shared-skia-deps.patch21
11 files changed, 465 insertions, 333 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 07b7362be0d9..e1659a0acf90 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,129 +1,54 @@
pkgbase = aseprite
pkgdesc = Create animated sprites and pixel art
- pkgver = 1.2.25
+ pkgver = 1.3.6
pkgrel = 1
- url = http://www.aseprite.org/
+ url = https://www.aseprite.org/
arch = x86_64
- license = custom
+ license = LicenseRef-Aseprite-EULA
makedepends = cmake
makedepends = ninja
makedepends = git
- makedepends = python2
- makedepends = freeglut
- makedepends = xorgproto
+ makedepends = python
makedepends = libxi
+ makedepends = gn
makedepends = harfbuzz-icu
- makedepends = nettle
+ makedepends = clang
depends = cmark
- depends = curl
- depends = giflib
+ depends = libcurl.so
+ depends = libgif.so
+ depends = libjpeg.so
depends = zlib
depends = libpng
depends = tinyxml
- depends = freetype2
- depends = fontconfig
- depends = libxcursor
+ depends = libfreetype.so
+ depends = libarchive.so
+ depends = libfmt.so
+ depends = libwebp.so
+ depends = libwebpmux.so
+ depends = libwebpdemux.so
depends = hicolor-icon-theme
- conflicts = aseprite-git
- conflicts = aseprite-gpl
- conflicts = skia-git
- noextract = aseprite-buildtools.tar.gz
- noextract = aseprite-common.tar.gz
- noextract = aseprite-angle2.tar.gz
- noextract = aseprite-dawn.tar.gz
- noextract = aseprite-dng_sdk.tar.gz
- noextract = aseprite-egl-registry.tar.gz
- noextract = aseprite-expat.tar.gz
- noextract = aseprite-freetype.tar.gz
- noextract = aseprite-harfbuzz.tar.gz
- noextract = aseprite-icu.tar.gz
- noextract = aseprite-imgui.tar.gz
- noextract = aseprite-libgifcodec.tar.gz
- noextract = aseprite-libjpeg-turbo.tar.gz
- noextract = aseprite-libpng.tar.gz
- noextract = aseprite-libwebp.tar.gz
- noextract = aseprite-lua.tar.gz
- noextract = aseprite-microhttpd.tar.gz
- noextract = aseprite-opencl-lib.tar.gz
- noextract = aseprite-opencl-registry.tar.gz
- noextract = aseprite-opengl-registry.tar.gz
- noextract = aseprite-piex.tar.gz
- noextract = aseprite-sdl.tar.gz
- noextract = aseprite-sfntly.tar.gz
- noextract = aseprite-spirv-cross.tar.gz
- noextract = aseprite-spirv-headers.tar.gz
- noextract = aseprite-spirv-tools.tar.gz
- noextract = aseprite-swiftshader.tar.gz
- noextract = aseprite-wuffs.tar.gz
- noextract = aseprite-zlib.tar.gz
- source = https://github.com/aseprite/aseprite/releases/download/v1.2.25/Aseprite-v1.2.25-Source.zip
- source = aseprite.desktop
- source = git+https://chromium.googlesource.com/chromium/tools/depot_tools.git
- source = git+https://github.com/aseprite/skia.git#branch=aseprite-m81
- source = aseprite-buildtools.tar.gz::https://chromium.googlesource.com/chromium/buildtools.git/+archive/505de88083136eefd056e5ee4ca0f01fe9b33de8.tar.gz
- source = aseprite-common.tar.gz::https://skia.googlesource.com/common.git/+archive/9737551d7a52c3db3262db5856e6bcd62c462b92.tar.gz
- source = aseprite-angle2.tar.gz::https://chromium.googlesource.com/angle/angle.git/+archive/ee07cb317579dfda40dabb5d6d9c209e0e9e0643.tar.gz
- source = aseprite-dawn.tar.gz::https://dawn.googlesource.com/dawn.git/+archive/604072bc2ed01018eb03bcbbf9d94042f679af63.tar.gz
- source = aseprite-dng_sdk.tar.gz::https://android.googlesource.com/platform/external/dng_sdk.git/+archive/c8d0c9b1d16bfda56f15165d39e0ffa360a11123.tar.gz
- source = aseprite-egl-registry.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/EGL-Registry/+archive/a0bca08de07c7d7651047bedc0b653cfaaa4f2ae.tar.gz
- source = aseprite-expat.tar.gz::https://android.googlesource.com/platform/external/expat.git/+archive/e5aa0a2cb0a5f759ef31c0819dc67d9b14246a4a.tar.gz
- source = aseprite-freetype.tar.gz::https://skia.googlesource.com/third_party/freetype2.git/+archive/0a3d2bb99b45b72e1d45185ab054efa993d97210.tar.gz
- source = aseprite-harfbuzz.tar.gz::https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git/+archive/3a74ee528255cc027d84b204a87b5c25e47bff79.tar.gz
- source = aseprite-icu.tar.gz::https://chromium.googlesource.com/chromium/deps/icu.git/+archive/dbd3825b31041d782c5b504c59dcfb5ac7dda08c.tar.gz
- source = aseprite-imgui.tar.gz::https://skia.googlesource.com/external/github.com/ocornut/imgui.git/+archive/d38d7c6628bebd02692cfdd6fa76b4d992a35b75.tar.gz
- source = aseprite-libgifcodec.tar.gz::https://skia.googlesource.com/libgifcodec/+archive/38d9c73f49b861bb4a9829371ac311544b120023.tar.gz
- source = aseprite-libjpeg-turbo.tar.gz::https://skia.googlesource.com/external/github.com/libjpeg-turbo/libjpeg-turbo.git/+archive/574f3a772c96dc9db2c98ef24706feb3f6dbda9a.tar.gz
- source = aseprite-libpng.tar.gz::https://skia.googlesource.com/third_party/libpng.git/+archive/386707c6d19b974ca2e3db7f5c61873813c6fe44.tar.gz
- source = aseprite-libwebp.tar.gz::https://chromium.googlesource.com/webm/libwebp.git/+archive/0fe1a89dbf1930fc2554dbe76adad5d962054ead.tar.gz
- source = aseprite-lua.tar.gz::https://skia.googlesource.com/external/github.com/lua/lua.git/+archive/e354c6355e7f48e087678ec49e340ca0696725b1.tar.gz
- source = aseprite-microhttpd.tar.gz::https://android.googlesource.com/platform/external/libmicrohttpd/+archive/748945ec6f1c67b7efc934ab0808e1d32f2fb98d.tar.gz
- source = aseprite-opencl-lib.tar.gz::https://skia.googlesource.com/external/github.com/GPUOpen-Tools/common-lib-amd-APPSDK-3.0/+archive/4e6d30e406d2e5a65e1d65e404fe6df5f772a32b.tar.gz
- source = aseprite-opencl-registry.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/OpenCL-Registry/+archive/932ed55c85f887041291cef8019e54280c033c35.tar.gz
- source = aseprite-opengl-registry.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/OpenGL-Registry/+archive/14b80ebeab022b2c78f84a573f01028c96075553.tar.gz
- source = aseprite-piex.tar.gz::https://android.googlesource.com/platform/external/piex.git/+archive/bb217acdca1cc0c16b704669dd6f91a1b509c406.tar.gz
- source = aseprite-sdl.tar.gz::https://skia.googlesource.com/third_party/sdl/+archive/5d7cfcca344034aff9327f77fc181ae3754e7a90.tar.gz
- source = aseprite-sfntly.tar.gz::https://chromium.googlesource.com/external/github.com/googlei18n/sfntly.git/+archive/b55ff303ea2f9e26702b514cf6a3196a2e3e2974.tar.gz
- source = aseprite-spirv-cross.tar.gz::https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross/+archive/53ab2144b90abede33be5161aec5dfc94ddc3caf.tar.gz
- source = aseprite-spirv-headers.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git/+archive/29c11140baaf9f7fdaa39a583672c556bf1795a1.tar.gz
- source = aseprite-spirv-tools.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+archive/0c4feb643b89d1792b02f7cbef315e9d95633bd7.tar.gz
- source = aseprite-swiftshader.tar.gz::https://swiftshader.googlesource.com/SwiftShader/+archive/430def835f9f85d52f4a96db9b715cd9a7403c9c.tar.gz
- source = aseprite-wuffs.tar.gz::https://skia.googlesource.com/external/github.com/google/wuffs.git/+archive/4080840928c0b05a80cda0d14ac2e2615f679f1a.tar.gz
- source = aseprite-zlib.tar.gz::https://chromium.googlesource.com/chromium/src/third_party/zlib/+archive/ea3ba903faac98b64b2bf8de5e98cd97b335a474.tar.gz
- source = gn::https://chromium-gn.storage-download.googleapis.com/3523d50538357829725d4ed74b777a572ce0ac74
- sha256sums = c5496ad159454b44e9b6c0f872553a192a7d20feeb6337a799c3f7009cdda558
- sha256sums = deaf646a615c79a4672b087562a09c44beef37e7acfc6f5f66a437d4f3b97a25
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = SKIP
- sha256sums = c8c2d617f1a33d6eb27f25ebcc30bd8ba1e6a0aa980cada21dda2ad1401fa4a2
+ depends = libexpat.so=1-64
+ depends = libharfbuzz.so=0-64
+ depends = libgl
+ depends = libfontconfig.so
+ depends = libxcursor
+ noextract = Aseprite-v1.3.6-Source.zip
+ noextract = skia-m102.tar.gz
+ source = https://github.com/aseprite/aseprite/releases/download/v1.3.6/Aseprite-v1.3.6-Source.zip
+ source = skia-m102.tar.gz::https://github.com/aseprite/skia/archive/refs/tags/m102-861e4743af.tar.gz
+ source = desktop.patch
+ source = shared-fmt.patch
+ source = shared-libarchive.patch
+ source = shared-libwebp.patch
+ source = shared-skia-deps.patch
+ source = optional-pixman.patch
+ sha256sums = 5e974aa2786297981cd5ebe81f040a49b722bddfe33d70def207ad06cb0d34fc
+ sha256sums = 8d76c1ad3693e1fc019eb14d806082148eb4ed7d601474aeeaae601b05a9b3ad
+ sha256sums = 8b14e36939e930de581e95abf0591645aa0fcfd47161cf88b062917dbaaef7f9
+ sha256sums = c3591d376180d99ff8001c3d549c0bd18ef5e4d95f1755ccaa8e2fd65dd5d2b3
+ sha256sums = d7f2f8c43d24382453273ed17b1c0e05928980a36ad0b7c988da3aa0fe32de53
+ sha256sums = 320ed456512fb26f30aa682d7d34529d6fc3372d76daba3812cecb8fc21d5f1d
+ sha256sums = eb9f544e68b41b5cb1a9ab7a6648db51587e67e94f1a452cb5a84f3d224bf5d0
+ sha256sums = c2d14f9738a96a9db3695c00ac3d14b1312b6a595b151bd56e19422c86517654
pkgname = aseprite
-
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 91bec3194be6..000000000000
--- a/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-*
-!.gitignore
-!.SRCINFO
-!aseprite.desktop
-!PKGBUILD \ No newline at end of file
diff --git a/.nvchecker.toml b/.nvchecker.toml
new file mode 100644
index 000000000000..5097652e73fc
--- /dev/null
+++ b/.nvchecker.toml
@@ -0,0 +1,4 @@
+[aseprite]
+source = "regex"
+regex = 'v(\d+\.\d+\.\d+)'
+url = "https://github.com/aseprite/aseprite/tags"
diff --git a/PKGBUILD b/PKGBUILD
index 7580c2796097..cedab28950fd 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,220 +1,169 @@
-# Maintainer: Fredrick Brennan <copypaste@kittens.ph>
-# Maintainer: Andrew Bueide <abueide@protonmail.com>
-# Maintainer: rouhannb <rouhannb@gmail.com>
+# Maintainer: Imperator Storm <ImperatorStorm11@protonmail.com>
+# Maintainer: Eldred Habert <me@eldred.fr>
+# Contributor: Fredrick Brennan <copypaste@kittens.ph>
+# Contributor: Andrew Bueide <abueide@protonmail.com>
+# Contributor: rouhannb <rouhannb@protonmail.com>
# Contributor: Wilson E. Alvarez <wilson.e.alvarez1@gmail.com>
# Contributor: Benoit Favre <benoit.favre@gmail.com>
# Contributor: Alexander Rødseth <rodseth@gmail.com>
# Contributor: Kamil Biduś <kamil.bidus@gmail.com>
pkgname=aseprite
-pkgver=1.2.25
+pkgver=1.3.6
+_skiaver=m102
+_skiahash=861e4743af
pkgrel=1
pkgdesc='Create animated sprites and pixel art'
arch=('x86_64')
-url="http://www.aseprite.org/"
-license=('custom')
-depends=('cmark' 'curl' 'giflib' 'zlib' 'libpng' 'tinyxml' 'freetype2' 'fontconfig' 'libxcursor'
- 'hicolor-icon-theme')
-makedepends=('cmake' 'ninja' 'git' 'python2' 'freeglut' 'xorgproto' 'libxi' 'harfbuzz-icu'
- 'nettle')
-conflicts=("aseprite-git" "aseprite-gpl" "skia-git")
-source=("https://github.com/${pkgname}/${pkgname}/releases/download/v${pkgver}/${pkgname^}-\
-v${pkgver}-Source.zip"
-"${pkgname}.desktop"
-"git+https://chromium.googlesource.com/chromium/tools/depot_tools.git"
-"git+https://github.com/${pkgname}/skia.git#branch=${pkgname}-m81"
-"${pkgname}-buildtools.tar.gz::https://chromium.googlesource.com/chromium/buildtools.git/+archive/\
-505de88083136eefd056e5ee4ca0f01fe9b33de8.tar.gz"
-"${pkgname}-common.tar.gz::https://skia.googlesource.com/common.git/+archive/\
-9737551d7a52c3db3262db5856e6bcd62c462b92.tar.gz"
-"${pkgname}-angle2.tar.gz::https://chromium.googlesource.com/angle/angle.git/+archive/\
-ee07cb317579dfda40dabb5d6d9c209e0e9e0643.tar.gz"
-"${pkgname}-dawn.tar.gz::https://dawn.googlesource.com/dawn.git/+archive/\
-604072bc2ed01018eb03bcbbf9d94042f679af63.tar.gz"
-"${pkgname}-dng_sdk.tar.gz::https://android.googlesource.com/platform/external/dng_sdk.git/\
-+archive/c8d0c9b1d16bfda56f15165d39e0ffa360a11123.tar.gz"
-"${pkgname}-egl-registry.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup\
-/EGL-Registry/+archive/a0bca08de07c7d7651047bedc0b653cfaaa4f2ae.tar.gz"
-"${pkgname}-expat.tar.gz::https://android.googlesource.com/platform/external/expat.git/+archive/\
-e5aa0a2cb0a5f759ef31c0819dc67d9b14246a4a.tar.gz"
-"${pkgname}-freetype.tar.gz::https://skia.googlesource.com/third_party/freetype2.git/+archive/\
-0a3d2bb99b45b72e1d45185ab054efa993d97210.tar.gz"
-"${pkgname}-harfbuzz.tar.gz::https://chromium.googlesource.com/external/github.com/harfbuzz/\
-harfbuzz.git/+archive/3a74ee528255cc027d84b204a87b5c25e47bff79.tar.gz"
-"${pkgname}-icu.tar.gz::https://chromium.googlesource.com/chromium/deps/icu.git/+archive/\
-dbd3825b31041d782c5b504c59dcfb5ac7dda08c.tar.gz"
-"${pkgname}-imgui.tar.gz::https://skia.googlesource.com/external/github.com/ocornut/imgui.git\
-/+archive/d38d7c6628bebd02692cfdd6fa76b4d992a35b75.tar.gz"
-"${pkgname}-libgifcodec.tar.gz::https://skia.googlesource.com/libgifcodec/+archive/\
-38d9c73f49b861bb4a9829371ac311544b120023.tar.gz"
-"${pkgname}-libjpeg-turbo.tar.gz::https://skia.googlesource.com/external/github.com/libjpeg-turbo\
-/libjpeg-turbo.git/+archive/574f3a772c96dc9db2c98ef24706feb3f6dbda9a.tar.gz"
-"${pkgname}-libpng.tar.gz::https://skia.googlesource.com/third_party/libpng.git/+archive/\
-386707c6d19b974ca2e3db7f5c61873813c6fe44.tar.gz"
-"${pkgname}-libwebp.tar.gz::https://chromium.googlesource.com/webm/libwebp.git/+archive/\
-0fe1a89dbf1930fc2554dbe76adad5d962054ead.tar.gz"
-"${pkgname}-lua.tar.gz::https://skia.googlesource.com/external/github.com/lua/lua.git/+archive/\
-e354c6355e7f48e087678ec49e340ca0696725b1.tar.gz"
-"${pkgname}-microhttpd.tar.gz::https://android.googlesource.com/platform/external/libmicrohttpd\
-/+archive/748945ec6f1c67b7efc934ab0808e1d32f2fb98d.tar.gz"
-"${pkgname}-opencl-lib.tar.gz::https://skia.googlesource.com/external/github.com/GPUOpen-Tools/\
-common-lib-amd-APPSDK-3.0/+archive/4e6d30e406d2e5a65e1d65e404fe6df5f772a32b.tar.gz"
-"${pkgname}-opencl-registry.tar.gz::https://skia.googlesource.com/external/github.com/\
-KhronosGroup/OpenCL-Registry/+archive/932ed55c85f887041291cef8019e54280c033c35.tar.gz"
-"${pkgname}-opengl-registry.tar.gz::https://skia.googlesource.com/external/github.com/\
-KhronosGroup/OpenGL-Registry/+archive/14b80ebeab022b2c78f84a573f01028c96075553.tar.gz"
-"${pkgname}-piex.tar.gz::https://android.googlesource.com/platform/external/piex.git/+archive/\
-bb217acdca1cc0c16b704669dd6f91a1b509c406.tar.gz"
-"${pkgname}-sdl.tar.gz::https://skia.googlesource.com/third_party/sdl/+archive/\
-5d7cfcca344034aff9327f77fc181ae3754e7a90.tar.gz"
-"${pkgname}-sfntly.tar.gz::https://chromium.googlesource.com/external/github.com/googlei18n/\
-sfntly.git/+archive/b55ff303ea2f9e26702b514cf6a3196a2e3e2974.tar.gz"
-"${pkgname}-spirv-cross.tar.gz::https://chromium.googlesource.com/external/github.com/\
-KhronosGroup/SPIRV-Cross/+archive/53ab2144b90abede33be5161aec5dfc94ddc3caf.tar.gz"
-"${pkgname}-spirv-headers.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/\
-SPIRV-Headers.git/+archive/29c11140baaf9f7fdaa39a583672c556bf1795a1.tar.gz"
-"${pkgname}-spirv-tools.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup\
-/SPIRV-Tools.git/+archive/0c4feb643b89d1792b02f7cbef315e9d95633bd7.tar.gz"
-"${pkgname}-swiftshader.tar.gz::https://swiftshader.googlesource.com/SwiftShader/+archive/\
-430def835f9f85d52f4a96db9b715cd9a7403c9c.tar.gz"
-"${pkgname}-wuffs.tar.gz::https://skia.googlesource.com/external/github.com/google/wuffs.git\
-/+archive/4080840928c0b05a80cda0d14ac2e2615f679f1a.tar.gz"
-"${pkgname}-zlib.tar.gz::https://chromium.googlesource.com/chromium/src/third_party/zlib/+archive/\
-ea3ba903faac98b64b2bf8de5e98cd97b335a474.tar.gz"
-"gn::https://chromium-gn.storage-download.googleapis.com/3523d50538357829725d4ed74b777a572ce0ac74"
-)
-_gitsrc=("${source[@]:4:29}")
-noextract=("${_gitsrc[@]%%::*}")
-sha256sums=('c5496ad159454b44e9b6c0f872553a192a7d20feeb6337a799c3f7009cdda558'
- 'deaf646a615c79a4672b087562a09c44beef37e7acfc6f5f66a437d4f3b97a25'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'c8c2d617f1a33d6eb27f25ebcc30bd8ba1e6a0aa980cada21dda2ad1401fa4a2')
+url="https://www.aseprite.org/"
+license=('LicenseRef-Aseprite-EULA')
+depends=(# ~ Aseprite's direct dependencies ~
+ # pixman is not linked to because we use Skia instead
+ # harfbuzz is linked statically because Aseprite expects an older version
+ cmark libcurl.so libgif.so libjpeg.so zlib libpng tinyxml libfreetype.so libarchive.so libfmt.so
+ libwebp.so libwebpmux.so libwebpdemux.so
+ hicolor-icon-theme # For installing Aseprite's icons
+ # ~ Skia deps ~
+ # (Skia links dynamically to HarfBuzz, only Aseprite itself doesn't. >_<)
+ libexpat.so=1-64 libharfbuzz.so=0-64 libgl
+ # Already required by Aseprite: libjpeg-turbo libpng zlib freetype2
+ # These two are only reported by Namcap, but don't seem to be direct dependencies?
+ libfontconfig.so libxcursor)
+makedepends=(# "Meta" dependencies
+ cmake ninja git python
+ # Aseprite (including e.g. LAF)
+ libxi
+ # Skia
+ gn harfbuzz-icu
+ # TODO: Benchmark clang v gcc
+ # Fuck it, compiling with GCC>=13 is broken and I'm not gonna write a patch to fix it
+ clang
+ )
+source=("https://github.com/aseprite/aseprite/releases/download/v$pkgver/Aseprite-v$pkgver-Source.zip"
+ # Which branch a given build of Aseprite requires is noted in its `INSTALL.md`
+ "skia-$_skiaver.tar.gz::https://github.com/aseprite/skia/archive/refs/tags/$_skiaver-$_skiahash.tar.gz"
+ desktop.patch
+ shared-fmt.patch
+ # Based on https://patch-diff.githubusercontent.com/raw/aseprite/aseprite/pull/2535.patch
+ shared-libarchive.patch
+ # Based on https://patch-diff.githubusercontent.com/raw/aseprite/aseprite/pull/2523.patch
+ shared-libwebp.patch
+ shared-skia-deps.patch
+ optional-pixman.patch)
+noextract=("Aseprite-v$pkgver-Source.zip"
+ "skia-$_skiaver.tar.gz") # Don't extract Aseprite or skia sources at the root
+sha256sums=('5e974aa2786297981cd5ebe81f040a49b722bddfe33d70def207ad06cb0d34fc'
+ '8d76c1ad3693e1fc019eb14d806082148eb4ed7d601474aeeaae601b05a9b3ad'
+ '8b14e36939e930de581e95abf0591645aa0fcfd47161cf88b062917dbaaef7f9'
+ 'c3591d376180d99ff8001c3d549c0bd18ef5e4d95f1755ccaa8e2fd65dd5d2b3'
+ 'd7f2f8c43d24382453273ed17b1c0e05928980a36ad0b7c988da3aa0fe32de53'
+ '320ed456512fb26f30aa682d7d34529d6fc3372d76daba3812cecb8fc21d5f1d'
+ 'eb9f544e68b41b5cb1a9ab7a6648db51587e67e94f1a452cb5a84f3d224bf5d0'
+ 'c2d14f9738a96a9db3695c00ac3d14b1312b6a595b151bd56e19422c86517654')
prepare() {
- cd "${srcdir}"
-
- # Install skia deps (essentially runs git-sync-deps with the files already downloaded)
- mkdir --parents --verbose skia/third_party/externals
-
- for _dep in buildtools common
- do
- mkdir --parents --verbose "skia/${_dep}"
- tar --verbose --extract --file "${pkgname}-${_dep}.tar.gz" --directory "skia/${_dep}"
- done
-
- for _dep in angle2 dawn dng_sdk egl-registry expat freetype harfbuzz icu imgui opencl-registry \
- libjpeg-turbo libpng libwebp lua microhttpd opencl-lib opengl-registry piex \
- sdl sfntly spirv-cross spirv-headers spirv-tools swiftshader zlib wuffs
- do
- mkdir --parents --verbose "skia/third_party/externals/${_dep}"
- tar --verbose --extract --file "${pkgname}-${_dep}.tar.gz" --directory \
- "skia/third_party/externals/${_dep}"
- done
-
- chmod u=rwx,g=rx,o=rx --verbose gn
- mv --verbose gn skia/bin/gn
- cp --verbose skia/bin/gn skia/buildtools/linux64/gn
-
- mkdir --parents --verbose binsub
- ln --force --symbolic $(which python2) binsub/python
+ # Extract Aseprite's sources
+ mkdir -p aseprite
+ bsdtar -xf "${noextract[0]}" -C aseprite
+ # Extract Skia's sources
+ mkdir -p skia
+ bsdtar xf skia-$_skiaver.tar.gz --strip-components=1 -C skia
+ # Fix up Aseprite's desktop integration
+ env -C aseprite patch -tp1 <desktop.patch
+ # Allow using more shared libs
+ env -C aseprite patch -tp1 <shared-fmt.patch
+ env -C aseprite patch -tp1 <shared-libarchive.patch
+ env -C aseprite patch -tp1 <shared-libwebp.patch
+ env -C aseprite patch -tp1 <optional-pixman.patch
+ # Their "FindSkia" module forcefully tries to use Skia's FreeType and HarfBuzz,
+ # but we don't clone those because we use the shared ones. Avoid overwriting the settings instead.
+ env -C aseprite patch -tp1 <shared-skia-deps.patch
}
build() {
- cd "${srcdir}"
-
- # Build skia
- _skiapath="${srcdir}/binsub:${srcdir}/depot_tools:${PATH}"
- cd skia
- PATH="${_skiapath}" gn gen out/Release-x64 \
- --args="is_debug=false is_official_build=true skia_use_system_expat=false \
- skia_use_system_icu=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false \
- skia_use_system_libwebp=false skia_use_system_zlib=false"
- PATH="${_skiapath}" ninja -C out/Release-x64 skia modules
-
- # Build aseprite
- cd "${srcdir}"
- mkdir --parents --verbose build && cd build
-
- cmake \
- -DWITH_WEBP_SUPPORT=ON \
- -DUSE_SHARED_CURL=ON \
- -DUSE_SHARED_GIFLIB=ON \
- -DUSE_SHARED_HARFBUZZ=ON \
- -DUSE_SHARED_ZLIB=ON \
- -DUSE_SHARED_LIBPNG=ON \
- -DUSE_SHARED_TINYXML=ON \
- -DUSE_SHARED_CMARK=ON \
- -DENABLE_UPDATER=OFF \
- -DUSE_SHARED_FREETYPE=ON \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_BUILD_TYPE=Release \
- -DLAF_BACKEND=skia \
- -DSKIA_DIR="${srcdir}/skia" \
- -DSKIA_LIBRARY_DIR="${srcdir}/skia/out/Release-x64" \
- -DSKIA_LIBRARY="${srcdir}/skia/out/Release-x64/libskia.a" \
- -G Ninja \
- ..
+ echo Building Skia...
+ local _skiadir="$PWD/skia/obj"
+ export CXX=clang++
+ export CC=clang
+ export AR=ar
+ export NM=nm
+ # Flags can be found by running `gn args --list "$_skiadir"` from skia's directory.
+ # (Pipe the output somewhere, there's a LOT of args.)
+ #
+ # The flags are chosen to provide the API required by Aseprite and nothing else (if possible),
+ # so as to reduce the compilation time and final binary size.
+ #
+ # Individual rationales:
+ # is_official_build: Suggested by the build instructions.
+ # skia_build_fuzzers: We don't care about them.
+ # skia_enable_pdf: Not used by Aseprite.
+ # skia_enable_skottie: Not used by Aseprite.
+ # skia_enable_sksl: laf seems to want to use it... but no references are made anywhere.
+ # skia_enable_svg: Not used by Aseprite. It seems it has its own SVG exporter.
+ # skia_use_lib*_{encode,decode}: Aseprite only loads PNG assets, so only libpng is required.
+ # skia_use_expat: Only required for the Android font manager and SVGCanvas/SVGDevice.
+ # skia_use_piex: Not used by Aseprite. Only used for reading RAW files.
+ # skia_use_xps: Not used outside of Windows.
+ # skia_use_zlib: Only used for PDF and RAW files.
+ # skia_use_libgifcodec: Only used for GIFs, which Aseprite doesn't use.
+ # skia_enable_{particles,skparagraph,sktext}: Aseprite does not link against this library.
+ env -C skia gn gen "$_skiadir" --args="$(printf '%s ' \
+is_official_build=true skia_build_fuzzers=false \
+skia_enable_{pdf,skottie,sksl,svg}=false \
+skia_use_{libjpeg_turbo,libwebp}_{encode,decode}=false \
+skia_use_{expat,piex,xps,zlib,libgifcodec}=false \
+skia_enable_{particles,skparagraph,sktext}=false)"
+ ninja -C "$_skiadir" skia modules
+
+ echo Building Aseprite...
+ # Suppress install messages since we install to a temporary area; `install -v` will do the job
+ cmake -S aseprite -B build -G Ninja -Wno-dev -DCMAKE_INSTALL_MESSAGE=NEVER -DCMAKE_BUILD_TYPE=None \
+-DENABLE_UPDATER=OFF -DENABLE_{SCRIPTING,WEBSOCKET}=ON \
+-DLAF_WITH_{EXAMPLES,TESTS}=OFF -DLAF_BACKEND=skia \
+-DSKIA_DIR="$PWD/skia" -DSKIA_LIBRARY_DIR="$_skiadir" \
+-DUSE_SHARED_{CMARK,CURL,FMT,GIFLIB,JPEGLIB,ZLIB,LIBPNG,TINYXML,PIXMAN,FREETYPE,HARFBUZZ,LIBARCHIVE,WEBP}=YES
+ cmake --build build
+}
- ninja aseprite
+check() {
+ export CXX=clang++
+ export CC=clang
+ export AR=ar
+ export NM=nm
+ env -C build ctest --output-on-failure
}
package() {
- cd "${srcdir}"/build
-
- install -D --verbose "bin/${pkgname}" "${pkgdir}/usr/bin/${pkgname}"
-
- # Aseprite, by default, doesn't install a few files on its own. So, they are installed manually.
-
- install --directory --verbose "${pkgdir}/usr/share/${pkgname}/data"
- cp --recursive --verbose 'bin/data' "${pkgdir}/usr/share/${pkgname}"
-
- install --directory --verbose "${pkgdir}/usr/share/doc/${pkgname}"
- cp --recursive --verbose '../docs' "${pkgdir}/usr/share/doc/${pkgname}"
- install --mode=644 --verbose 'bin/data/EULA.txt' "${pkgdir}/usr/share/doc/${pkgname}"
- install --mode=644 --verbose '../README.md' "${pkgdir}/usr/share/doc/${pkgname}"
-
- install -D --mode=644 --verbose "../${pkgname}.desktop" \
- "${pkgdir}/usr/share/applications/${pkgname}.desktop"
-
- for _size in 32 48 64
- do
- install -D --mode=644 --verbose "../data/icons/ase${_size}.png" \
- "${pkgdir}/usr/share/icons/hicolor/${_size}x${_size}/apps/${pkgname}.png"
- done
-
- install -D --mode=644 --verbose --target-directory "${pkgdir}/usr/share/licenses/${pkgname}" \
- 'bin/data/EULA.txt'
- install --mode=644 --verbose '../docs/LICENSES.md' "${pkgdir}/usr/share/licenses/${pkgname}"
+ export CXX=clang++
+ export CC=clang
+ export AR=ar
+ export NM=nm
+ # Now the fun part: components of e.g. `libwebp` get installed as well,
+ # since we've had to compile it. But we don't want them.
+ # So, install normally, and then cherry-pick Aseprite's files out of that.
+ # Use a whitelist to prefer installing not enough (breakage goes noticed),
+ # instead of too much (cruft rarely goes noticed). Also hope that it doesn't break :)
+ cmake --install build --prefix=staging --strip
+
+ # Install the binary and its `.desktop` file
+ install -vDm 755 staging/bin/aseprite "$pkgdir/usr/bin/aseprite"
+ install -vDm 644 aseprite/src/desktop/linux/aseprite.desktop "$pkgdir/usr/share/applications/$pkgname.desktop"
+ install -vDm 644 aseprite/src/desktop/linux/mime/aseprite.xml "$pkgdir/usr/share/mime/packages/$pkgname.xml"
+ # Thumbnailer
+ install -vDm 755 aseprite/src/desktop/linux/aseprite-thumbnailer "$pkgdir/usr/bin/aseprite-thumbnailer"
+ install -vDm 644 aseprite/src/desktop/linux/gnome/aseprite.thumbnailer "$pkgdir/usr/share/thumbnailers/aseprite.thumbnailer"
+ # Install the icons in the correct directory (which is not the default)
+ local _size
+ for _size in 16 32 48 64 128 256; do
+ # The installed icon's name is taken from the `.desktop` file
+ install -vDm 644 staging/share/aseprite/data/icons/ase$_size.png "$pkgdir/usr/share/icons/hicolor/${_size}x$_size/apps/aseprite.png"
+ done
+ # Delete the icons to avoid copying them in two places (they aren't used by Aseprite itself)
+ rm -rf staging/share/aseprite/data/icons
+ # Install all of the program's data
+ cp -vrt "$pkgdir/usr/share" staging/share/aseprite
+ # Also install the licenses
+ install -vDm 644 -t "$pkgdir/usr/share/licenses/$pkgname" aseprite/{EULA.txt,docs/LICENSES.md}
+ # Copy the font's license, but leave it in the font directory as well (probably doesn't hurt)
+ install -vm 644 aseprite/data/fonts/LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/font.txt"
}
-
-# vim:set ts=2 sw=2 et:
diff --git a/aseprite.desktop b/aseprite.desktop
deleted file mode 100644
index 306b8df12c70..000000000000
--- a/aseprite.desktop
+++ /dev/null
@@ -1,14 +0,0 @@
-[Desktop Entry]
-Type=Application
-Encoding=UTF-8
-Name=Aseprite
-GenericName=Sprite Editor
-Comment=Animated sprite editor & pixel art tool
-Icon=aseprite
-Categories=Graphics;2DGraphics;RasterGraphics
-Exec=aseprite %U
-TryExec=aseprite
-Terminal=false
-StartupNotify=false
-StartupWMClass=Aseprite
-MimeType=image/bmp;image/gif;image/jpeg;image/png;image/x-pcx;image/x-tga;image/vnd.microsoft.icon;video/x-flic;image/webp;image/x-aseprite;
diff --git a/desktop.patch b/desktop.patch
new file mode 100644
index 000000000000..fcb047550f7b
--- /dev/null
+++ b/desktop.patch
@@ -0,0 +1,25 @@
+diff --git a/src/desktop/linux/aseprite.desktop b/src/desktop/linux/aseprite.desktop
+index e23999db8..803a1fc75 100644
+--- a/src/desktop/linux/aseprite.desktop
++++ b/src/desktop/linux/aseprite.desktop
+@@ -5,7 +5,7 @@ GenericName=Sprite Editor
+ Comment=Animated sprite editor & pixel art tool
+ Icon=aseprite
+ Categories=Graphics;2DGraphics;RasterGraphics
+-Exec=aseprite %U
++Exec=aseprite %F
+ TryExec=aseprite
+ Terminal=false
+ StartupNotify=false
+diff --git a/src/desktop/linux/mime/aseprite.xml b/src/desktop/linux/mime/aseprite.xml
+index 52b2adb92..a656cb3b1 100644
+--- a/src/desktop/linux/mime/aseprite.xml
++++ b/src/desktop/linux/mime/aseprite.xml
+@@ -7,6 +7,6 @@
+ </magic>
+ <glob pattern="*.ase"/>
+ <glob pattern="*.aseprite"/>
+- <icon name="aseprite"/>
++ <icon name="image-x-aseprite"/>
+ </mime-type>
+ </mime-info>
diff --git a/optional-pixman.patch b/optional-pixman.patch
new file mode 100644
index 000000000000..bf65e2cf047d
--- /dev/null
+++ b/optional-pixman.patch
@@ -0,0 +1,23 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f16f09660d..40065905d3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -271,16 +271,18 @@
+ include_directories(${TINYXML_INCLUDE_DIR})
+
+ # pixman
++if(NOT LAF_BACKEND STREQUAL "skia")
+ if(USE_SHARED_PIXMAN)
+ find_library(PIXMAN_LIBRARY NAMES pixman pixman-1)
+ find_path(PIXMAN_INCLUDE_DIR NAMES pixman.h PATH_SUFFIXES pixman-1)
+ else()
+ set(PIXMAN_LIBRARY pixman)
+ set(PIXMAN_INCLUDE_DIR
+ ${PIXMAN_DIR}/pixman
+ ${CMAKE_BINARY_DIR}) # For pixman-version.h
+ endif()
+ include_directories(${PIXMAN_INCLUDE_DIR})
++endif()
+
+ # freetype
+ if(USE_SHARED_FREETYPE)
diff --git a/shared-fmt.patch b/shared-fmt.patch
new file mode 100644
index 000000000000..794d8a4adcc1
--- /dev/null
+++ b/shared-fmt.patch
@@ -0,0 +1,71 @@
+--- a/CMakeLists.txt 2022-01-08 00:37:08.165330523 +0100
++++ b/CMakeLists.txt 2022-01-08 00:52:41.163585173 +0100
+@@ -54,6 +54,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_FMT "Use your installed copy of fmt" 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)
+@@ -165,6 +165,7 @@
+ set(SOURCE_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data)
+ set(CMARK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/cmark)
+ set(CURL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/curl)
++set(FMT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/fmt)
+ set(GIFLIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/giflib)
+ set(LIBJPEG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/jpeg)
+ set(LIBPNG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libpng)
+@@ -204,6 +205,15 @@
+ set(CURL_STATICLIB ON BOOL)
+ endif()
+
++if(USE_SHARED_FMT)
++ find_package(FMT REQUIRED)
++ set(FMT_LIBRARIES fmt::fmt)
++else()
++ set(FMT_FOUND)
++ set(FMT_LIBRARIES fmt)
++ # No need to include extra directories, actually
++endif()
++
+ # zlib
+ if(USE_SHARED_ZLIB)
+ find_package(ZLIB REQUIRED)
+--- a/src/app/CMakeLists.txt 2022-01-08 00:37:07.378671200 +0100
++++ b/src/app/CMakeLists.txt 2022-01-08 00:53:13.669969512 +0100
+@@ -741,7 +741,7 @@ target_link_libraries(app-lib
+ ${HARFBUZZ_LIBRARIES}
+ json11
+ archive_static
+- fmt
++ ${FMT_LIBRARIES}
+ tinyexpr
+ qoi)
+
+ if(ENABLE_PSD)
+--- a/src/dio/CMakeLists.txt 2022-01-08 00:41:50.712726972 +0100
++++ b/src/dio/CMakeLists.txt 2022-01-08 00:53:39.936408022 +0100
+@@ -10,7 +10,7 @@
+
+ target_link_libraries(dio-lib
+ ${ZLIB_LIBRARIES}
+- fmt
++ ${FMT_LIBRARIES}
+ flic-lib
+ laf-base
+ fixmath-lib
+--- a/third_party/CMakeLists.txt 2022-01-08 00:37:08.165330523 +0100
++++ b/third_party/CMakeLists.txt 2022-01-08 00:54:30.455969136 +0100
+@@ -106,7 +106,10 @@
+ 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)
diff --git a/shared-libarchive.patch b/shared-libarchive.patch
new file mode 100644
index 000000000000..cc86185a7efe
--- /dev/null
+++ b/shared-libarchive.patch
@@ -0,0 +1,74 @@
+From cf84155eb143d821963e8fdf18781dfa164eac9b 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] Make LibArchive as shared library dependency
+
+---
+ CMakeLists.txt | 11 +++++++++++
+ src/app/CMakeLists.txt | 2 +-
+ third_party/CMakeLists.txt | 22 ++++++++++++----------
+ 3 files changed, 24 insertions(+), 11 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9cb5a2cdfb..9d95936f36 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -60,6 +60,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)
+@@ -200,6 +201,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 e1e3bc1ae3..4a37838e95 100644
+--- a/src/app/CMakeLists.txt
++++ b/src/app/CMakeLists.txt
+@@ -651,8 +651,8 @@ target_link_libraries(app-lib
+ ${ZLIB_LIBRARIES}
+ ${FREETYPE_LIBRARIES}
+ ${HARFBUZZ_LIBRARIES}
++ ${LibArchive_LIBRARIES}
+ json11
+- archive_static
+ ${FMT_LIBRARIES}
+ tinyexpr)
+
+diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
+index ffd1c0cfcd..4839d4097c 100644
+--- a/third_party/CMakeLists.txt.orig
++++ b/third_party/CMakeLists.txt
+@@ -110,6 +110,7 @@ endif()
+ add_subdirectory(json11)
+
+ # 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)")
+@@ -123,6 +124,7 @@ set(ENABLE_CPIO OFF CACHE BOOL "Enable cpio building")
+ add_subdirectory(libarchive)
+ target_include_directories(archive_static INTERFACE
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libarchive/libarchive>)
++endif()
+
+ # benchmark
+ if(ENABLE_BENCHMARKS)
diff --git a/shared-libwebp.patch b/shared-libwebp.patch
new file mode 100644
index 000000000000..bdeb0d032c5b
--- /dev/null
+++ b/shared-libwebp.patch
@@ -0,0 +1,59 @@
+From ca9e20a87be6dcc8d9b97841535b2320d2eb2f91 Mon Sep 17 00:00:00 2001
+From: Drauthius <albert@diserholt.com>
+Date: Sat, 26 Sep 2020 10:40:13 +0200
+Subject: [PATCH] Shared webp library
+
+Making optional linking with shared system webp library with
+-DUSE_SHARED_WEBP option.
+---
+ CMakeLists.txt | 12 +++++++++---
+ third_party/CMakeLists.txt | 2 +-
+ 2 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index af077f6..fed17ff 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -58,6 +58,7 @@ 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_FREETYPE "Use shared FreeType library" off)
+ option(USE_SHARED_HARFBUZZ "Use shared HarfBuzz library" off)
++option(USE_SHARED_WEBP "Use your installed copy of webp" off)
+ option(ENABLE_ASEPRITE_EXE "Compile main Aseprite executable" on)
+ option(ENABLE_MEMLEAK "Enable memory-leaks detector (only for developers)" off)
+ option(ENABLE_NEWS "Enable the news in Home tab" on)
+@@ -328,14 +351,17 @@ add_subdirectory(laf)
+ # libwebp
+ if(ENABLE_WEBP)
+ # Use libwebp from Skia
+- if(LAF_BACKEND STREQUAL "skia")
++ if(USE_SHARED_WEBP)
++ find_library(WEBP_LIBRARY NAMES webp)
++ find_library(WEBPDEMUX_LIBRARY NAMES webpdemux)
++ find_library(WEBPMUX_LIBRARY NAMES webpmux)
++ set(WEBP_LIBRARIES ${WEBP_LIBRARY} ${WEBPDEMUX_LIBRARY} ${WEBPMUX_LIBRARY})
++ find_path(WEBP_INCLUDE_DIRS NAMES decode.h PATH_SUFFIXES webp)
++ else()
+ 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()
+diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
+index 4839d4097c..e8c3e83cbc 100644
+--- a/third_party/CMakeLists.txt
++++ b/third_party/CMakeLists.txt
+@@ -32,7 +32,7 @@ if(NOT USE_SHARED_GIFLIB)
+ add_subdirectory(giflib)
+ endif()
+
+-if(ENABLE_WEBP AND NOT LAF_BACKEND STREQUAL "skia")
++if(ENABLE_WEBP AND NOT LAF_BACKEND STREQUAL "skia" AND NOT USE_SHARED_WEBP)
+ set(WEBP_BUILD_EXTRAS OFF CACHE BOOL "Build extras.")
+ add_subdirectory(libwebp)
+ endif()
diff --git a/shared-skia-deps.patch b/shared-skia-deps.patch
new file mode 100644
index 000000000000..77bdebc8b06d
--- /dev/null
+++ b/shared-skia-deps.patch
@@ -0,0 +1,21 @@
+--- src/laf/cmake/FindSkia.cmake.orig 2022-01-08 02:15:13.417619266 +0100
++++ src/laf/cmake/FindSkia.cmake 2022-01-08 02:15:43.603960491 +0100
+@@ -32,14 +32,18 @@
+ # SkShaper module + freetype + harfbuzz
+ find_library(SKSHAPER_LIBRARY skshaper PATH "${SKIA_LIBRARY_DIR}")
+
++if(NOT USE_SHARED_FREETYPE)
+ 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")
++endif()
+
++if(NOT USE_SHARED_HARFBUZZ)
+ 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")
++endif()
+
+ set(SKIA_LIBRARIES
+ ${SKIA_LIBRARY}