|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +set -e |
| 4 | + |
| 5 | +if [ "$#" -ne 1 ]; then |
| 6 | + echo "Syntax: $0 <output directory>" |
| 7 | + exit 1 |
| 8 | +fi |
| 9 | + |
| 10 | +SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}")) |
| 11 | +NPROCS="$(getconf _NPROCESSORS_ONLN)" |
| 12 | +INSTALLDIR="$1" |
| 13 | +if [ "${INSTALLDIR:0:1}" != "/" ]; then |
| 14 | + INSTALLDIR="$PWD/$INSTALLDIR" |
| 15 | +fi |
| 16 | + |
| 17 | +FREETYPE=2.14.1 |
| 18 | +HARFBUZZ=12.0.0 |
| 19 | +LIBBACKTRACE=ad106d5fdd5d960bd33fae1c48a351af567fd075 |
| 20 | +LIBJPEGTURBO=3.1.2 |
| 21 | +LIBPNG=1.6.50 |
| 22 | +LIBWEBP=1.6.0 |
| 23 | +SDL=SDL3-3.2.22 |
| 24 | +QT=6.9.2 |
| 25 | +QTAPNG=1.3.0 |
| 26 | +LZ4=1.10.0 |
| 27 | +ZSTD=1.5.7 |
| 28 | +KDDOCKWIDGETS=2.3.0 |
| 29 | +PLUTOVG=1.3.1 |
| 30 | +PLUTOSVG=0.0.7 |
| 31 | + |
| 32 | +SHADERC=2025.3 |
| 33 | +SHADERC_GLSLANG=efd24d75bcbc55620e759f6bf42c45a32abac5f8 |
| 34 | +SHADERC_SPIRVHEADERS=2a611a970fdbc41ac2e3e328802aed9985352dca |
| 35 | +SHADERC_SPIRVTOOLS=33e02568181e3312f49a3cf33df470bf96ef293a |
| 36 | + |
| 37 | +mkdir -p deps-build |
| 38 | +cd deps-build |
| 39 | + |
| 40 | +cat > SHASUMS <<EOF |
| 41 | +32427e8c471ac095853212a37aef816c60b42052d4d9e48230bab3bdf2936ccc freetype-$FREETYPE.tar.xz |
| 42 | +c4a398539c3e0fdc9a82dfe7824d0438cae78c1e2124e7c6ada3dfa600cdb6c8 harfbuzz-$HARFBUZZ.tar.gz |
| 43 | +fd6f417fe9e3a071cf1424a5152d926a34c4a3c5070745470be6cf12a404ed79 $LIBBACKTRACE.zip |
| 44 | +4df396518620a7aa3651443e87d1b2862e4e88cad135a8b93423e01706232307 libpng-$LIBPNG.tar.xz |
| 45 | +e4ab7009bf0629fd11982d4c2aa83964cf244cffba7347ecd39019a9e38c4564 libwebp-$LIBWEBP.tar.gz |
| 46 | +f29d00cbcee273c0a54f3f32f86bf5c595e8823a96b1d92a145aac40571ebfcc $SDL.tar.gz |
| 47 | +687ddc0c7cb128a3ea58e159b5129252537c27ede0c32a93f11f03127f0c0165 libpng-$LIBPNG-apng.patch.gz |
| 48 | +537512904744b35e232912055ccf8ec66d768639ff3abe5788d90d792ec5f48b lz4-$LZ4.tar.gz |
| 49 | +eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3 zstd-$ZSTD.tar.gz |
| 50 | +a8e4a25e5c2686fd36981e527ed05e451fcfc226bddf350f4e76181371190937 shaderc-$SHADERC.tar.gz |
| 51 | +9427deccbdf4bde6a269938df38c6bd75247493786a310d8d733a2c82065ef47 shaderc-glslang-$SHADERC_GLSLANG.tar.gz |
| 52 | +c2225a49c3d7efa5c4f4ce4a6b42081e6ea3daca376f3353d9d7c2722d77a28a shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz |
| 53 | +44d1005880c583fc00a0fb41c839214c68214b000ea8dcb54d352732fee600ff shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz |
| 54 | +bea672eb96ee36c2cbeb911b9bac66dfe989b3ad9a9943101e00aeb2df2aefdb plutovg-$PLUTOVG.tar.gz |
| 55 | +78561b571ac224030cdc450ca2986b4de915c2ba7616004a6d71a379bffd15f3 plutosvg-$PLUTOSVG.tar.gz |
| 56 | +EOF |
| 57 | + |
| 58 | +curl -L \ |
| 59 | + -o "freetype-$FREETYPE.tar.xz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.xz/download" \ |
| 60 | + -o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \ |
| 61 | + -O "https://github.com/ianlancetaylor/libbacktrace/archive/$LIBBACKTRACE.zip" \ |
| 62 | + -O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.xz" \ |
| 63 | + -O "https://download.sourceforge.net/libpng-apng/libpng-$LIBPNG-apng.patch.gz" \ |
| 64 | + -O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \ |
| 65 | + -O "https://github.com/lz4/lz4/releases/download/v$LZ4/lz4-$LZ4.tar.gz" \ |
| 66 | + -O "https://libsdl.org/release/$SDL.tar.gz" \ |
| 67 | + -O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \ |
| 68 | + -o "shaderc-$SHADERC.tar.gz" "https://github.com/google/shaderc/archive/refs/tags/v$SHADERC.tar.gz" \ |
| 69 | + -o "shaderc-glslang-$SHADERC_GLSLANG.tar.gz" "https://github.com/KhronosGroup/glslang/archive/$SHADERC_GLSLANG.tar.gz" \ |
| 70 | + -o "shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Headers/archive/$SHADERC_SPIRVHEADERS.tar.gz" \ |
| 71 | + -o "shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Tools/archive/$SHADERC_SPIRVTOOLS.tar.gz" \ |
| 72 | + -o "plutovg-$PLUTOVG.tar.gz" "https://github.com/sammycage/plutovg/archive/v$PLUTOVG.tar.gz" \ |
| 73 | + -o "plutosvg-$PLUTOSVG.tar.gz" "https://github.com/sammycage/plutosvg/archive/v$PLUTOSVG.tar.gz" |
| 74 | + |
| 75 | +shasum -a 256 --check SHASUMS |
| 76 | + |
| 77 | +echo "Building libbacktrace..." |
| 78 | +rm -fr "libbacktrace-$LIBBACKTRACE" |
| 79 | +unzip "$LIBBACKTRACE.zip" |
| 80 | +cd "libbacktrace-$LIBBACKTRACE" |
| 81 | +./configure --prefix="$INSTALLDIR" |
| 82 | +make |
| 83 | +make install |
| 84 | +cd .. |
| 85 | + |
| 86 | +echo "Building libpng..." |
| 87 | +rm -fr "libpng-$LIBPNG" |
| 88 | +tar xf "libpng-$LIBPNG.tar.xz" |
| 89 | +gunzip -d -f "libpng-$LIBPNG-apng.patch.gz" |
| 90 | +cd "libpng-$LIBPNG" |
| 91 | +patch -p1 < "../libpng-$LIBPNG-apng.patch" |
| 92 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_STATIC=OFF -DPNG_SHARED=ON -DPNG_TOOLS=OFF -B build -G Ninja |
| 93 | +cmake --build build --parallel |
| 94 | +ninja -C build install |
| 95 | +cd .. |
| 96 | + |
| 97 | +echo "Building LZ4..." |
| 98 | +rm -fr "lz4-$LZ4" |
| 99 | +tar xf "lz4-$LZ4.tar.gz" |
| 100 | +cd "lz4-$LZ4" |
| 101 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DLZ4_BUILD_CLI=OFF -DLZ4_BUILD_LEGACY_LZ4C=OFF -B build-dir -G Ninja build/cmake |
| 102 | +cmake --build build-dir --parallel |
| 103 | +ninja -C build-dir install |
| 104 | +cd .. |
| 105 | + |
| 106 | +echo "Building Zstandard..." |
| 107 | +rm -fr "zstd-$ZSTD" |
| 108 | +tar xf "zstd-$ZSTD.tar.gz" |
| 109 | +cd "zstd-$ZSTD" |
| 110 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_SHARED=ON -DZSTD_BUILD_STATIC=OFF -DZSTD_BUILD_PROGRAMS=OFF -B build -G Ninja build/cmake |
| 111 | +cmake --build build --parallel |
| 112 | +ninja -C build install |
| 113 | +cd .. |
| 114 | + |
| 115 | +echo "Building FreeType without HarfBuzz..." |
| 116 | +rm -fr "freetype-$FREETYPE" |
| 117 | +tar xf "freetype-$FREETYPE.tar.xz" |
| 118 | +cd "freetype-$FREETYPE" |
| 119 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=ON -DFT_REQUIRE_PNG=ON -DFT_DISABLE_BZIP2=TRUE -DFT_DISABLE_BROTLI=TRUE -DFT_DISABLE_HARFBUZZ=TRUE -B build -G Ninja |
| 120 | +cmake --build build --parallel |
| 121 | +ninja -C build install |
| 122 | +cd .. |
| 123 | + |
| 124 | +echo "Building HarfBuzz..." |
| 125 | +rm -fr "harfbuzz-$HARFBUZZ" |
| 126 | +tar xf "harfbuzz-$HARFBUZZ.tar.gz" |
| 127 | +cd "harfbuzz-$HARFBUZZ" |
| 128 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -DHB_HAVE_FREETYPE=ON -B build -G Ninja |
| 129 | +cmake --build build --parallel |
| 130 | +ninja -C build install |
| 131 | +cd .. |
| 132 | + |
| 133 | +echo "Building WebP..." |
| 134 | +rm -fr "libwebp-$LIBWEBP" |
| 135 | +tar xf "libwebp-$LIBWEBP.tar.gz" |
| 136 | +cd "libwebp-$LIBWEBP" |
| 137 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -B build -G Ninja \ |
| 138 | + -DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \ |
| 139 | + -DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON |
| 140 | +cmake --build build --parallel |
| 141 | +ninja -C build install |
| 142 | +cd .. |
| 143 | + |
| 144 | +echo "Building FreeType with HarfBuzz..." |
| 145 | +rm -fr "freetype-$FREETYPE" |
| 146 | +tar xf "freetype-$FREETYPE.tar.xz" |
| 147 | +cd "freetype-$FREETYPE" |
| 148 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=ON -DFT_REQUIRE_PNG=ON -DFT_DISABLE_BZIP2=TRUE -DFT_DISABLE_BROTLI=TRUE -DFT_REQUIRE_HARFBUZZ=TRUE -B build -G Ninja |
| 149 | +cmake --build build --parallel |
| 150 | +ninja -C build install |
| 151 | +cd .. |
| 152 | + |
| 153 | +echo "Building SDL..." |
| 154 | +rm -fr "$SDL" |
| 155 | +tar xf "$SDL.tar.gz" |
| 156 | +cd "$SDL" |
| 157 | +cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -G Ninja |
| 158 | +cmake --build build --parallel |
| 159 | +ninja -C build install |
| 160 | +cd .. |
| 161 | + |
| 162 | +echo "Building PlutoVG..." |
| 163 | +rm -fr "plutovg-$PLUTOVG" |
| 164 | +tar xf "plutovg-$PLUTOVG.tar.gz" |
| 165 | +cd "plutovg-$PLUTOVG" |
| 166 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DPLUTOVG_BUILD_EXAMPLES=OFF -B build -G Ninja |
| 167 | +cmake --build build --parallel |
| 168 | +ninja -C build install |
| 169 | +cd .. |
| 170 | + |
| 171 | +echo "Building PlutoSVG..." |
| 172 | +rm -fr "plutosvg-$PLUTOSVG" |
| 173 | +tar xf "plutosvg-$PLUTOSVG.tar.gz" |
| 174 | +cd "plutosvg-$PLUTOSVG" |
| 175 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build -G Ninja |
| 176 | +cmake --build build --parallel |
| 177 | +ninja -C build install |
| 178 | +cd .. |
| 179 | + |
| 180 | +echo "Building shaderc..." |
| 181 | +rm -fr "shaderc-$SHADERC" |
| 182 | +tar xf "shaderc-$SHADERC.tar.gz" |
| 183 | +cd "shaderc-$SHADERC" |
| 184 | +cd third_party |
| 185 | +tar xf "../../shaderc-glslang-$SHADERC_GLSLANG.tar.gz" |
| 186 | +mv "glslang-$SHADERC_GLSLANG" "glslang" |
| 187 | +tar xf "../../shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" |
| 188 | +mv "SPIRV-Headers-$SHADERC_SPIRVHEADERS" "spirv-headers" |
| 189 | +tar xf "../../shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" |
| 190 | +mv "SPIRV-Tools-$SHADERC_SPIRVTOOLS" "spirv-tools" |
| 191 | +cd .. |
| 192 | +patch -p1 < "$SCRIPTDIR/../common/shaderc-changes.patch" |
| 193 | +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build -G Ninja |
| 194 | +cmake --build build --parallel |
| 195 | +ninja -C build install |
| 196 | +cd .. |
| 197 | + |
| 198 | +echo "Cleaning up..." |
| 199 | +cd .. |
| 200 | +rm -r deps-build |
0 commit comments