mirror of
https://github.com/stenzek/duckstation.git
synced 2026-07-11 01:24:11 +02:00
CI: Use prebuilt dependencies
Decouple from the repository. Less CI time, and faster building of older commits.
This commit is contained in:
@@ -19,15 +19,14 @@ function retry_command {
|
||||
done
|
||||
}
|
||||
|
||||
if [ "$#" -ne 4 ]; then
|
||||
echo "Syntax: $0 <path to duckstation directory> <path to build directory> <deps prefix> <output name>"
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "Syntax: $0 <path to duckstation directory> <path to build directory> <output name>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ROOTDIR=$1
|
||||
BUILDDIR=$2
|
||||
DEPSDIR=$3
|
||||
ASSETNAME=$4
|
||||
ASSETNAME=$3
|
||||
|
||||
BINARY=duckstation-qt
|
||||
APPDIRNAME=DuckStation.AppDir
|
||||
@@ -43,7 +42,7 @@ declare -a MANUAL_LIBS=(
|
||||
"libdiscord-rpc.so"
|
||||
"libharfbuzz.so"
|
||||
"libfreetype.so.6"
|
||||
"libshaderc_ds.so"
|
||||
"libshaderc_shared.so"
|
||||
"libspirv-cross-c-shared.so.0"
|
||||
)
|
||||
|
||||
@@ -61,6 +60,7 @@ declare -a REMOVE_LIBS=(
|
||||
|
||||
set -e
|
||||
|
||||
DEPSDIR=$(realpath "$SCRIPTDIR/../../dep/prebuilt/linux-x64")
|
||||
LINUXDEPLOY=./linuxdeploy-x86_64
|
||||
LINUXDEPLOY_PLUGIN_QT=./linuxdeploy-plugin-qt-x86_64
|
||||
APPIMAGETOOL=./appimagetool-x86_64
|
||||
|
||||
@@ -25,16 +25,15 @@ if [ "$1" == "-inject-libc" ]; then
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ "$#" -ne 5 ]; then
|
||||
echo "Syntax: $0 [-inject-libc] <duckstation-qt|duckstation-mini> <target arch> <path to build directory> <deps prefix> <chroot dir>"
|
||||
if [ "$#" -ne 4 ]; then
|
||||
echo "Syntax: $0 [-inject-libc] <duckstation-qt|duckstation-mini> <target arch> <path to build directory> <chroot dir>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BINARY=$1
|
||||
ARCH=$2
|
||||
BUILDDIR=$3
|
||||
DEPSDIR=$4
|
||||
CHROOTDIR=$5
|
||||
CHROOTDIR=$4
|
||||
|
||||
STRIP=llvm-strip
|
||||
|
||||
@@ -114,7 +113,7 @@ declare -a DEPLIBS=(
|
||||
"libcpuinfo.so"
|
||||
"libdiscord-rpc.so"
|
||||
"libplutosvg.so.0"
|
||||
"libshaderc_ds.so"
|
||||
"libshaderc_shared.so"
|
||||
"libsoundtouch.so.2"
|
||||
"libspirv-cross-c-shared.so.0"
|
||||
|
||||
@@ -221,6 +220,7 @@ set -e
|
||||
IFS="
|
||||
"
|
||||
|
||||
DEPSDIR=$(realpath "$SCRIPTDIR/../../dep/prebuilt/linux-cross-$ARCH")
|
||||
APPIMAGETOOL=./appimagetool-x86_64
|
||||
APPIMAGERUNTIME=./runtime-${RUNTIMEARCH}
|
||||
PATCHELF=patchelf
|
||||
|
||||
@@ -1,439 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <stenzek@gmail.com>
|
||||
# SPDX-License-Identifier: CC-BY-NC-ND-4.0
|
||||
#
|
||||
# NOTE: In addition to the terms of CC-BY-NC-ND-4.0, you may not use this file to create
|
||||
# packages or build recipes without explicit permission from the copyright holder.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$#" -lt 4 ]; then
|
||||
echo "Syntax: $0 [-skip-download] [-skip-cleanup] [-only-download] <host directory> <cross architecture> <cross chroot> <output directory>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for arg in "$@"; do
|
||||
if [ "$arg" == "-skip-download" ]; then
|
||||
echo "Not downloading sources."
|
||||
SKIP_DOWNLOAD=true
|
||||
shift
|
||||
elif [ "$arg" == "-skip-cleanup" ]; then
|
||||
echo "Not removing build directory."
|
||||
SKIP_CLEANUP=true
|
||||
shift
|
||||
elif [ "$arg" == "-only-download" ]; then
|
||||
echo "Only downloading sources."
|
||||
ONLY_DOWNLOAD=true
|
||||
shift
|
||||
fi
|
||||
done
|
||||
|
||||
SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
|
||||
NPROCS="$(getconf _NPROCESSORS_ONLN)"
|
||||
HOSTDIR="$1"
|
||||
if [ "${HOSTDIR:0:1}" != "/" ]; then
|
||||
HOSTDIR="$PWD/$HOSTDIR"
|
||||
fi
|
||||
CROSSARCH="$2"
|
||||
SYSROOTDIR="$3"
|
||||
if [ "${SYSROOTDIR:0:1}" != "/" ]; then
|
||||
SYSROOTDIR="$PWD/$SYSROOTDIR"
|
||||
fi
|
||||
INSTALLDIR="$4"
|
||||
if [ "${INSTALLDIR:0:1}" != "/" ]; then
|
||||
INSTALLDIR="$PWD/$INSTALLDIR"
|
||||
fi
|
||||
TOOLCHAINFILE="$INSTALLDIR/toolchain.cmake"
|
||||
CMAKE_COMMON=(
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_TOOLCHAIN_FILE="$TOOLCHAINFILE"
|
||||
-DCMAKE_PREFIX_PATH="$INSTALLDIR"
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALLDIR"
|
||||
)
|
||||
|
||||
# Determine architecture.
|
||||
if [ "$CROSSARCH" == "arm64" ]; then
|
||||
CROSSSYSARCH="aarch64"
|
||||
CROSSTRIPLET="aarch64-linux-gnu"
|
||||
CMAKEPROCESSOR="aarch64"
|
||||
elif [ "$CROSSARCH" == "armhf" ]; then
|
||||
CROSSSYSARCH="armhf"
|
||||
CROSSTRIPLET="arm-linux-gnueabihf"
|
||||
CMAKEPROCESSOR="armv7-a"
|
||||
else
|
||||
echo "Unknown cross arch $CROSSARCH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source "$SCRIPTDIR/versions"
|
||||
|
||||
mkdir -p "${INSTALLDIR}"
|
||||
mkdir -p deps-build
|
||||
cd deps-build
|
||||
|
||||
if [[ "$SKIP_DOWNLOAD" != true && ! -f "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz" ]]; then
|
||||
curl -C - -L \
|
||||
-o "brotli-$BROTLI.tar.gz" "https://github.com/google/brotli/archive/refs/tags/v$BROTLI.tar.gz" \
|
||||
-o "freetype-$FREETYPE.tar.gz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.gz/download" \
|
||||
-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
|
||||
-O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz" \
|
||||
-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.gz" \
|
||||
-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \
|
||||
-O "https://github.com/nih-at/libzip/releases/download/v$LIBZIP/libzip-$LIBZIP.tar.gz" \
|
||||
-o "zlib-ng-$ZLIBNG.tar.gz" "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/$ZLIBNG.tar.gz" \
|
||||
-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtwayland-everywhere-src-$QT.tar.xz" \
|
||||
-o "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz" "https://github.com/ianlancetaylor/libbacktrace/archive/$LIBBACKTRACE_COMMIT.tar.gz" \
|
||||
-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL3/SDL3-$SDL3.tar.gz" \
|
||||
-o "cpuinfo-$CPUINFO_COMMIT.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO_COMMIT.tar.gz" \
|
||||
-o "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC_COMMIT.tar.gz" \
|
||||
-o "plutosvg-$PLUTOSVG_COMMIT.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG_COMMIT.tar.gz" \
|
||||
-o "shaderc-$SHADERC_COMMIT.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC_COMMIT.tar.gz" \
|
||||
-o "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH_COMMIT.tar.gz"
|
||||
fi
|
||||
|
||||
cat > SHASUMS <<EOF
|
||||
$BROTLI_GZ_HASH brotli-$BROTLI.tar.gz
|
||||
$FREETYPE_GZ_HASH freetype-$FREETYPE.tar.gz
|
||||
$HARFBUZZ_GZ_HASH harfbuzz-$HARFBUZZ.tar.gz
|
||||
$LIBJPEGTURBO_GZ_HASH libjpeg-turbo-$LIBJPEGTURBO.tar.gz
|
||||
$LIBPNG_GZ_HASH libpng-$LIBPNG.tar.gz
|
||||
$LIBWEBP_GZ_HASH libwebp-$LIBWEBP.tar.gz
|
||||
$LIBZIP_GZ_HASH libzip-$LIBZIP.tar.gz
|
||||
$ZLIBNG_GZ_HASH zlib-ng-$ZLIBNG.tar.gz
|
||||
$ZSTD_GZ_HASH zstd-$ZSTD.tar.gz
|
||||
$QTBASE_XZ_HASH qtbase-everywhere-src-$QT.tar.xz
|
||||
$QTIMAGEFORMATS_XZ_HASH qtimageformats-everywhere-src-$QT.tar.xz
|
||||
$QTSVG_XZ_HASH qtsvg-everywhere-src-$QT.tar.xz
|
||||
$QTTOOLS_XZ_HASH qttools-everywhere-src-$QT.tar.xz
|
||||
$QTTRANSLATIONS_XZ_HASH qttranslations-everywhere-src-$QT.tar.xz
|
||||
$QTWAYLAND_XZ_HASH qtwayland-everywhere-src-$QT.tar.xz
|
||||
$LIBBACKTRACE_GZ_HASH libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz
|
||||
$SDL3_GZ_HASH SDL3-$SDL3.tar.gz
|
||||
$CPUINFO_GZ_HASH cpuinfo-$CPUINFO_COMMIT.tar.gz
|
||||
$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC_COMMIT.tar.gz
|
||||
$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG_COMMIT.tar.gz
|
||||
$SHADERC_GZ_HASH shaderc-$SHADERC_COMMIT.tar.gz
|
||||
$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH_COMMIT.tar.gz
|
||||
EOF
|
||||
|
||||
shasum -a 256 --check SHASUMS
|
||||
|
||||
# Have to clone with git, because it does version detection.
|
||||
if [[ "$SKIP_DOWNLOAD" != true && ! -d "SPIRV-Cross" ]]; then
|
||||
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS_TAG --depth 1
|
||||
if [ "$(git --git-dir=SPIRV-Cross/.git rev-parse HEAD)" != "$SPIRV_CROSS_SHA" ]; then
|
||||
echo "SPIRV-Cross version mismatch, expected $SPIRV_CROSS_SHA, got $(git rev-parse HEAD)"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Only downloading sources?
|
||||
if [ "$ONLY_DOWNLOAD" == true ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Stop pkg-config picking up host files.
|
||||
export PKG_CONFIG_PATH=${SYSROOTDIR}/usr/lib/${CROSSTRIPLET}/pkgconfig:${SYSROOTDIR}/usr/lib/pkgconfig:${SYSROOTDIR}/usr/share/pkgconfig
|
||||
export PKG_CONFIG_SYSROOT_DIR=${SYSROOTDIR}
|
||||
|
||||
# Generate cmake toolchain file.
|
||||
cat > "$TOOLCHAINFILE" << EOF
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ${CMAKEPROCESSOR})
|
||||
|
||||
set(CMAKE_C_COMPILER "/usr/bin/${CROSSTRIPLET}-gcc")
|
||||
set(CMAKE_C_COMPILER_TARGET "${CROSSTRIPLET}")
|
||||
set(CMAKE_C_COMPILER_AR "/usr/bin/${CROSSTRIPLET}-ar")
|
||||
set(CMAKE_C_COMPILER_RANLIB "/usr/bin/${CROSSTRIPLET}-ranlib")
|
||||
|
||||
set(CMAKE_CXX_COMPILER "/usr/bin/${CROSSTRIPLET}-g++")
|
||||
set(CMAKE_CXX_COMPILER_TARGET "${CROSSTRIPLET}")
|
||||
set(CMAKE_CXX_COMPILER_AR "/usr/bin/${CROSSTRIPLET}-ar")
|
||||
set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/${CROSSTRIPLET}-ranlib")
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH "${INSTALLDIR};${SYSROOTDIR}")
|
||||
set(CMAKE_SYSROOT "${SYSROOTDIR}")
|
||||
|
||||
set(CMAKE_PKG_CONFIG_PC_PATH "${PKG_CONFIG_PATH}")
|
||||
set(CMAKE_PKG_CONFIG_SYSROOT_DIR "${PKG_CONFIG_SYSROOT_DIR}")
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
EOF
|
||||
|
||||
# Build zlib first because of the things that depend on it.
|
||||
# Disabled because it currently causes crashes on armhf.
|
||||
#echo "Building zlib-ng..."
|
||||
#rm -fr "zlib-ng-$ZLIBNG"
|
||||
#tar xf "zlib-ng-$ZLIBNG.tar.gz"
|
||||
#cd "zlib-ng-$ZLIBNG"
|
||||
#cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DZLIB_COMPAT=ON -DBUILD_TESTING=OFF -DWITH_BENCHMARK_APPS=OFF -DWITH_GTEST=OFF -B build -G Ninja
|
||||
#cmake --build build --parallel
|
||||
#ninja -C build install
|
||||
#cd ..
|
||||
|
||||
# NOTE: Must be a shared library because otherwise aarch64 libgcc symbols are missing when building with clang.
|
||||
echo "Building libbacktrace..."
|
||||
rm -fr "libbacktrace-$LIBBACKTRACE_COMMIT"
|
||||
tar xf "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz"
|
||||
cd "libbacktrace-$LIBBACKTRACE_COMMIT"
|
||||
CFLAGS="-fmacro-prefix-map=\"${PWD}\"=. -ffile-prefix-map=\"${PWD}\"=." ./configure --prefix="$INSTALLDIR" --build=x86_64-linux-gnu --host="${CROSSTRIPLET}" --with-pic --enable-shared --disable-static
|
||||
make
|
||||
make install
|
||||
cd ..
|
||||
rm -fr "libbacktrace-$LIBBACKTRACE_COMMIT"
|
||||
|
||||
echo "Building libpng..."
|
||||
rm -fr "libpng-$LIBPNG"
|
||||
tar xf "libpng-$LIBPNG.tar.gz"
|
||||
cd "libpng-$LIBPNG"
|
||||
patch -p1 < "$SCRIPTDIR/libpng-1.6.54-apng.patch"
|
||||
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_STATIC=OFF -DPNG_SHARED=ON -DPNG_TOOLS=OFF -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "libpng-$LIBPNG"
|
||||
|
||||
echo "Building libjpeg..."
|
||||
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
|
||||
tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
|
||||
cd "libjpeg-turbo-$LIBJPEGTURBO"
|
||||
cmake "${CMAKE_COMMON[@]}" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
|
||||
|
||||
echo "Building Zstandard..."
|
||||
rm -fr "zstd-$ZSTD"
|
||||
tar xf "zstd-$ZSTD.tar.gz"
|
||||
cd "zstd-$ZSTD"
|
||||
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_SHARED=ON -DZSTD_BUILD_STATIC=OFF -DZSTD_BUILD_PROGRAMS=OFF -B build -G Ninja build/cmake
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "zstd-$ZSTD"
|
||||
|
||||
echo "Building Brotli..."
|
||||
rm -fr "brotli-$BROTLI"
|
||||
tar xf "brotli-$BROTLI.tar.gz"
|
||||
cd "brotli-$BROTLI"
|
||||
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=OFF -DBROTLI_BUILD_TOOLS=OFF -DBROTLI_DISABLE_TESTS=ON -B build -G Ninja
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "brotli-$BROTLI"
|
||||
|
||||
echo "Building WebP..."
|
||||
rm -fr "libwebp-$LIBWEBP"
|
||||
tar xf "libwebp-$LIBWEBP.tar.gz"
|
||||
cd "libwebp-$LIBWEBP"
|
||||
cmake "${CMAKE_COMMON[@]}" -B build -G Ninja \
|
||||
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
|
||||
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "libwebp-$LIBWEBP"
|
||||
|
||||
echo "Building libzip..."
|
||||
rm -fr "libzip-$LIBZIP"
|
||||
tar xf "libzip-$LIBZIP.tar.gz"
|
||||
cd "libzip-$LIBZIP"
|
||||
cmake "${CMAKE_COMMON[@]}" -B build -G Ninja \
|
||||
-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \
|
||||
-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \
|
||||
-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "libzip-$LIBZIP"
|
||||
|
||||
echo "Building FreeType..."
|
||||
rm -fr "freetype-$FREETYPE"
|
||||
tar xf "freetype-$FREETYPE.tar.gz"
|
||||
cd "freetype-$FREETYPE"
|
||||
patch -p1 < "$SCRIPTDIR/freetype-harfbuzz-soname.patch"
|
||||
patch -p1 < "$SCRIPTDIR/freetype-static-brotli.patch"
|
||||
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=ON -DFT_REQUIRE_PNG=ON -DFT_DISABLE_BZIP2=TRUE -DFT_REQUIRE_BROTLI=TRUE -DFT_DYNAMIC_HARFBUZZ=TRUE -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "freetype-$FREETYPE"
|
||||
|
||||
echo "Building HarfBuzz..."
|
||||
rm -fr "harfbuzz-$HARFBUZZ"
|
||||
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
|
||||
cd "harfbuzz-$HARFBUZZ"
|
||||
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "harfbuzz-$HARFBUZZ"
|
||||
|
||||
echo "Building SDL..."
|
||||
rm -fr "SDL3-$SDL3"
|
||||
tar xf "SDL3-$SDL3.tar.gz"
|
||||
cd "SDL3-$SDL3"
|
||||
cmake -B build "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "SDL3-$SDL3"
|
||||
|
||||
# Couple notes:
|
||||
# -fontconfig is needed otherwise Qt Widgets render only boxes.
|
||||
# -qt-doubleconversion avoids a dependency on libdouble-conversion.
|
||||
# ICU avoids pulling in a bunch of large libraries, and hopefully we can get away without it.
|
||||
# OpenGL is needed to render window decorations in Wayland, apparently.
|
||||
# dbus-runtime and linked off to avoid a relocation error (different to host.. probably should change that).
|
||||
# Brotli is disabled as we static link it, and QtNetwork doesn't link with bbrotlicommon.
|
||||
echo "Building Qt Base..."
|
||||
rm -fr "qtbase-everywhere-src-$QT"
|
||||
tar xf "qtbase-everywhere-src-$QT.tar.xz"
|
||||
cd "qtbase-everywhere-src-$QT"
|
||||
patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"
|
||||
mkdir build
|
||||
cd build
|
||||
../configure -prefix "$INSTALLDIR" -extprefix "$INSTALLDIR" -qt-host-path "$HOSTDIR" -release -dbus runtime -fontconfig -qt-doubleconversion -ssl -openssl-runtime -opengl desktop -qpa xcb,wayland -xkbcommon -xcb -- -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAINFILE" -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_cups=OFF -DFEATURE_dbus=ON -DFEATURE_dbus_linked=OFF -DFEATURE_icu=OFF -DFEATURE_sql=OFF -DFEATURE_system_png=ON -DFEATURE_system_jpeg=ON -DFEATURE_system_zlib=ON -DFEATURE_system_freetype=ON -DFEATURE_system_harfbuzz=ON -DFEATURE_gtk3=OFF -DFEATURE_brotli=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qtbase-everywhere-src-$QT"
|
||||
|
||||
echo "Building Qt SVG..."
|
||||
rm -fr "qtsvg-everywhere-src-$QT"
|
||||
tar xf "qtsvg-everywhere-src-$QT.tar.xz"
|
||||
cd "qtsvg-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qtsvg-everywhere-src-$QT"
|
||||
|
||||
echo "Building Qt Image Formats..."
|
||||
rm -fr "qtimageformats-everywhere-src-$QT"
|
||||
tar xf "qtimageformats-everywhere-src-$QT.tar.xz"
|
||||
cd "qtimageformats-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_system_webp=ON
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qtimageformats-everywhere-src-$QT"
|
||||
|
||||
echo "Building Qt Wayland..."
|
||||
rm -fr "qtwayland-everywhere-src-$QT"
|
||||
tar xf "qtwayland-everywhere-src-$QT.tar.xz"
|
||||
cd "qtwayland-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qtwayland-everywhere-src-$QT"
|
||||
|
||||
echo "Installing Qt Tools..."
|
||||
rm -fr "qttools-everywhere-src-$QT"
|
||||
tar xf "qttools-everywhere-src-$QT.tar.xz"
|
||||
cd "qttools-everywhere-src-$QT"
|
||||
patch -p1 < "$SCRIPTDIR/qttools-linguist-without-quick.patch"
|
||||
patch -p1 < "$SCRIPTDIR/qttools-disable-clang.patch"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=ON -DFEATURE_kmap2qmap=OFF -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qttools-everywhere-src-$QT"
|
||||
|
||||
echo "Installing Qt Translations..."
|
||||
rm -fr "qttranslations-everywhere-src-$QT"
|
||||
tar xf "qttranslations-everywhere-src-$QT.tar.xz"
|
||||
cd "qttranslations-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qttranslations-everywhere-src-$QT"
|
||||
|
||||
echo "Building shaderc..."
|
||||
rm -fr "shaderc-$SHADERC_COMMIT"
|
||||
tar xf "shaderc-$SHADERC_COMMIT.tar.gz"
|
||||
cd "shaderc-$SHADERC_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_EXECUTABLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "shaderc-$SHADERC_COMMIT"
|
||||
|
||||
echo "Building SPIRV-Cross..."
|
||||
cd SPIRV-Cross
|
||||
rm -fr build
|
||||
cmake "${CMAKE_COMMON[@]}" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=OFF -DSPIRV_CROSS_ENABLE_MSL=OFF -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
rm -fr build
|
||||
cd ..
|
||||
|
||||
echo "Building cpuinfo..."
|
||||
rm -fr "cpuinfo-$CPUINFO_COMMIT"
|
||||
tar xf "cpuinfo-$CPUINFO_COMMIT.tar.gz"
|
||||
cd "cpuinfo-$CPUINFO_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "cpuinfo-$CPUINFO_COMMIT"
|
||||
|
||||
echo "Building discord-rpc..."
|
||||
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
|
||||
tar xf "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz"
|
||||
cd "discord-rpc-$DISCORD_RPC_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
|
||||
|
||||
echo "Building plutosvg..."
|
||||
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
|
||||
tar xf "plutosvg-$PLUTOSVG_COMMIT.tar.gz"
|
||||
cd "plutosvg-$PLUTOSVG_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
|
||||
|
||||
echo "Building soundtouch..."
|
||||
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
|
||||
tar xf "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz"
|
||||
cd "soundtouch-$SOUNDTOUCH_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
|
||||
|
||||
if [ "$SKIP_CLEANUP" != true ]; then
|
||||
echo "Cleaning up..."
|
||||
cd ..
|
||||
rm -fr deps-build
|
||||
fi
|
||||
@@ -1,382 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <stenzek@gmail.com>
|
||||
# SPDX-License-Identifier: CC-BY-NC-ND-4.0
|
||||
#
|
||||
# NOTE: In addition to the terms of CC-BY-NC-ND-4.0, you may not use this file to create
|
||||
# packages or build recipes without explicit permission from the copyright holder.
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$#" -lt 1 ]; then
|
||||
echo "Syntax: $0 [-skip-download] [-skip-cleanup] [-only-download] <output directory>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for arg in "$@"; do
|
||||
if [ "$arg" == "-skip-download" ]; then
|
||||
echo "Not downloading sources."
|
||||
SKIP_DOWNLOAD=true
|
||||
shift
|
||||
elif [ "$arg" == "-skip-cleanup" ]; then
|
||||
echo "Not removing build directory."
|
||||
SKIP_CLEANUP=true
|
||||
shift
|
||||
elif [ "$arg" == "-only-download" ]; then
|
||||
echo "Only downloading sources."
|
||||
ONLY_DOWNLOAD=true
|
||||
shift
|
||||
fi
|
||||
done
|
||||
|
||||
SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
|
||||
NPROCS="$(getconf _NPROCESSORS_ONLN)"
|
||||
INSTALLDIR="$1"
|
||||
if [ "${INSTALLDIR:0:1}" != "/" ]; then
|
||||
INSTALLDIR="$PWD/$INSTALLDIR"
|
||||
fi
|
||||
|
||||
source "$SCRIPTDIR/versions"
|
||||
|
||||
mkdir -p deps-build
|
||||
cd deps-build
|
||||
|
||||
if [[ "$SKIP_DOWNLOAD" != true && ! -f "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz" ]]; then
|
||||
curl -C - -L \
|
||||
-o "brotli-$BROTLI.tar.gz" "https://github.com/google/brotli/archive/refs/tags/v$BROTLI.tar.gz" \
|
||||
-o "freetype-$FREETYPE.tar.gz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.gz/download" \
|
||||
-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
|
||||
-O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz" \
|
||||
-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.gz" \
|
||||
-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \
|
||||
-O "https://github.com/nih-at/libzip/releases/download/v$LIBZIP/libzip-$LIBZIP.tar.gz" \
|
||||
-o "zlib-ng-$ZLIBNG.tar.gz" "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/$ZLIBNG.tar.gz" \
|
||||
-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtwayland-everywhere-src-$QT.tar.xz" \
|
||||
-o "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz" "https://github.com/ianlancetaylor/libbacktrace/archive/$LIBBACKTRACE_COMMIT.tar.gz" \
|
||||
-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL3/SDL3-$SDL3.tar.gz" \
|
||||
-o "cpuinfo-$CPUINFO_COMMIT.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO_COMMIT.tar.gz" \
|
||||
-o "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC_COMMIT.tar.gz" \
|
||||
-o "plutosvg-$PLUTOSVG_COMMIT.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG_COMMIT.tar.gz" \
|
||||
-o "shaderc-$SHADERC_COMMIT.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC_COMMIT.tar.gz" \
|
||||
-o "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH_COMMIT.tar.gz"
|
||||
fi
|
||||
|
||||
cat > SHASUMS <<EOF
|
||||
$BROTLI_GZ_HASH brotli-$BROTLI.tar.gz
|
||||
$FREETYPE_GZ_HASH freetype-$FREETYPE.tar.gz
|
||||
$HARFBUZZ_GZ_HASH harfbuzz-$HARFBUZZ.tar.gz
|
||||
$LIBJPEGTURBO_GZ_HASH libjpeg-turbo-$LIBJPEGTURBO.tar.gz
|
||||
$LIBPNG_GZ_HASH libpng-$LIBPNG.tar.gz
|
||||
$LIBWEBP_GZ_HASH libwebp-$LIBWEBP.tar.gz
|
||||
$LIBZIP_GZ_HASH libzip-$LIBZIP.tar.gz
|
||||
$ZLIBNG_GZ_HASH zlib-ng-$ZLIBNG.tar.gz
|
||||
$ZSTD_GZ_HASH zstd-$ZSTD.tar.gz
|
||||
$QTBASE_XZ_HASH qtbase-everywhere-src-$QT.tar.xz
|
||||
$QTIMAGEFORMATS_XZ_HASH qtimageformats-everywhere-src-$QT.tar.xz
|
||||
$QTSVG_XZ_HASH qtsvg-everywhere-src-$QT.tar.xz
|
||||
$QTTOOLS_XZ_HASH qttools-everywhere-src-$QT.tar.xz
|
||||
$QTTRANSLATIONS_XZ_HASH qttranslations-everywhere-src-$QT.tar.xz
|
||||
$QTWAYLAND_XZ_HASH qtwayland-everywhere-src-$QT.tar.xz
|
||||
$LIBBACKTRACE_GZ_HASH libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz
|
||||
$SDL3_GZ_HASH SDL3-$SDL3.tar.gz
|
||||
$CPUINFO_GZ_HASH cpuinfo-$CPUINFO_COMMIT.tar.gz
|
||||
$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC_COMMIT.tar.gz
|
||||
$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG_COMMIT.tar.gz
|
||||
$SHADERC_GZ_HASH shaderc-$SHADERC_COMMIT.tar.gz
|
||||
$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH_COMMIT.tar.gz
|
||||
EOF
|
||||
|
||||
shasum -a 256 --check SHASUMS
|
||||
|
||||
# Have to clone with git, because it does version detection.
|
||||
if [[ "$SKIP_DOWNLOAD" != true && ! -d "SPIRV-Cross" ]]; then
|
||||
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS_TAG --depth 1
|
||||
if [ "$(git --git-dir=SPIRV-Cross/.git rev-parse HEAD)" != "$SPIRV_CROSS_SHA" ]; then
|
||||
echo "SPIRV-Cross version mismatch, expected $SPIRV_CROSS_SHA, got $(git rev-parse HEAD)"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Only downloading sources?
|
||||
if [ "$ONLY_DOWNLOAD" == true ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Prefer local deps for pkg-config search path.
|
||||
if [[ -z "$PKG_CONFIG_PATH" ]]; then
|
||||
export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$INSTALLDIR/lib64/pkgconfig"
|
||||
else
|
||||
export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$INSTALLDIR/lib64/pkgconfig:${PKG_CONFIG_PATH}"
|
||||
fi
|
||||
|
||||
# Build zlib first because of the things that depend on it.
|
||||
echo "Building zlib-ng..."
|
||||
rm -fr "zlib-ng-$ZLIBNG"
|
||||
tar xf "zlib-ng-$ZLIBNG.tar.gz"
|
||||
cd "zlib-ng-$ZLIBNG"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DZLIB_COMPAT=ON -DBUILD_TESTING=OFF -DWITH_BENCHMARK_APPS=OFF -DWITH_GTEST=OFF -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "zlib-ng-$ZLIBNG"
|
||||
|
||||
echo "Building libbacktrace..."
|
||||
rm -fr "libbacktrace-$LIBBACKTRACE_COMMIT"
|
||||
tar xf "libbacktrace-$LIBBACKTRACE_COMMIT.tar.gz"
|
||||
cd "libbacktrace-$LIBBACKTRACE_COMMIT"
|
||||
CFLAGS="-fmacro-prefix-map=\"${PWD}\"=. -ffile-prefix-map=\"${PWD}\"=." ./configure --prefix="$INSTALLDIR" --with-pic
|
||||
make
|
||||
make install
|
||||
cd ..
|
||||
rm -fr "libbacktrace-$LIBBACKTRACE_COMMIT"
|
||||
|
||||
echo "Building libpng..."
|
||||
rm -fr "libpng-$LIBPNG"
|
||||
tar xf "libpng-$LIBPNG.tar.gz"
|
||||
cd "libpng-$LIBPNG"
|
||||
patch -p1 < "$SCRIPTDIR/libpng-1.6.54-apng.patch"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_STATIC=OFF -DPNG_SHARED=ON -DPNG_TOOLS=OFF -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "libpng-$LIBPNG"
|
||||
|
||||
echo "Building libjpeg..."
|
||||
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
|
||||
tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
|
||||
cd "libjpeg-turbo-$LIBJPEGTURBO"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
|
||||
|
||||
echo "Building Zstandard..."
|
||||
rm -fr "zstd-$ZSTD"
|
||||
tar xf "zstd-$ZSTD.tar.gz"
|
||||
cd "zstd-$ZSTD"
|
||||
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
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "zstd-$ZSTD"
|
||||
|
||||
echo "Building Brotli..."
|
||||
rm -fr "brotli-$BROTLI"
|
||||
tar xf "brotli-$BROTLI.tar.gz"
|
||||
cd "brotli-$BROTLI"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=OFF -DBROTLI_BUILD_TOOLS=OFF -DBROTLI_DISABLE_TESTS=ON -B build -G Ninja
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "brotli-$BROTLI"
|
||||
|
||||
echo "Building WebP..."
|
||||
rm -fr "libwebp-$LIBWEBP"
|
||||
tar xf "libwebp-$LIBWEBP.tar.gz"
|
||||
cd "libwebp-$LIBWEBP"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -B build -G Ninja \
|
||||
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
|
||||
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "libwebp-$LIBWEBP"
|
||||
|
||||
echo "Building libzip..."
|
||||
rm -fr "libzip-$LIBZIP"
|
||||
tar xf "libzip-$LIBZIP.tar.gz"
|
||||
cd "libzip-$LIBZIP"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -B build -G Ninja \
|
||||
-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \
|
||||
-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \
|
||||
-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "libzip-$LIBZIP"
|
||||
|
||||
echo "Building FreeType..."
|
||||
rm -fr "freetype-$FREETYPE"
|
||||
tar xf "freetype-$FREETYPE.tar.gz"
|
||||
cd "freetype-$FREETYPE"
|
||||
patch -p1 < "$SCRIPTDIR/freetype-harfbuzz-soname.patch"
|
||||
patch -p1 < "$SCRIPTDIR/freetype-static-brotli.patch"
|
||||
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_REQUIRE_BROTLI=TRUE -DFT_DYNAMIC_HARFBUZZ=TRUE -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "freetype-$FREETYPE"
|
||||
|
||||
echo "Building HarfBuzz..."
|
||||
rm -fr "harfbuzz-$HARFBUZZ"
|
||||
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
|
||||
cd "harfbuzz-$HARFBUZZ"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "harfbuzz-$HARFBUZZ"
|
||||
|
||||
echo "Building SDL..."
|
||||
rm -fr "SDL3-$SDL3"
|
||||
tar xf "SDL3-$SDL3.tar.gz"
|
||||
cd "SDL3-$SDL3"
|
||||
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 -DSDL_TESTS=OFF -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "SDL3-$SDL3"
|
||||
|
||||
# Couple notes:
|
||||
# -fontconfig is needed otherwise Qt Widgets render only boxes.
|
||||
# -qt-doubleconversion avoids a dependency on libdouble-conversion.
|
||||
# ICU avoids pulling in a bunch of large libraries, and hopefully we can get away without it.
|
||||
# OpenGL is needed to render window decorations in Wayland, apparently.
|
||||
# Brotli is disabled as we static link it, and QtNetwork doesn't link with bbrotlicommon.
|
||||
echo "Building Qt Base..."
|
||||
rm -fr "qtbase-everywhere-src-$QT"
|
||||
tar xf "qtbase-everywhere-src-$QT.tar.xz"
|
||||
cd "qtbase-everywhere-src-$QT"
|
||||
patch -p1 < "$SCRIPTDIR/qtbase-disable-pcre2-jit.patch"
|
||||
patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"
|
||||
mkdir build
|
||||
cd build
|
||||
../configure -prefix "$INSTALLDIR" -release -dbus-linked -fontconfig -qt-doubleconversion -ssl -openssl-runtime -opengl desktop -qpa xcb,wayland -xkbcommon -xcb -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_cups=OFF -DFEATURE_dbus=ON -DFEATURE_icu=OFF -DFEATURE_sql=OFF -DFEATURE_system_png=ON -DFEATURE_system_jpeg=ON -DFEATURE_system_zlib=ON -DFEATURE_system_freetype=ON -DFEATURE_system_harfbuzz=ON -DFEATURE_gtk3=OFF -DFEATURE_brotli=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qtbase-everywhere-src-$QT"
|
||||
|
||||
echo "Building Qt SVG..."
|
||||
rm -fr "qtsvg-everywhere-src-$QT"
|
||||
tar xf "qtsvg-everywhere-src-$QT.tar.xz"
|
||||
cd "qtsvg-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qtsvg-everywhere-src-$QT"
|
||||
|
||||
echo "Building Qt Image Formats..."
|
||||
rm -fr "qtimageformats-everywhere-src-$QT"
|
||||
tar xf "qtimageformats-everywhere-src-$QT.tar.xz"
|
||||
cd "qtimageformats-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_system_webp=ON
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qtimageformats-everywhere-src-$QT"
|
||||
|
||||
echo "Building Qt Wayland..."
|
||||
rm -fr "qtwayland-everywhere-src-$QT"
|
||||
tar xf "qtwayland-everywhere-src-$QT.tar.xz"
|
||||
cd "qtwayland-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qtwayland-everywhere-src-$QT"
|
||||
|
||||
echo "Installing Qt Tools..."
|
||||
rm -fr "qttools-everywhere-src-$QT"
|
||||
tar xf "qttools-everywhere-src-$QT.tar.xz"
|
||||
cd "qttools-everywhere-src-$QT"
|
||||
patch -p1 < "$SCRIPTDIR/qttools-linguist-without-quick.patch"
|
||||
patch -p1 < "$SCRIPTDIR/qttools-disable-clang.patch"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=ON -DFEATURE_kmap2qmap=OFF -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qttools-everywhere-src-$QT"
|
||||
|
||||
echo "Installing Qt Translations..."
|
||||
rm -fr "qttranslations-everywhere-src-$QT"
|
||||
tar xf "qttranslations-everywhere-src-$QT.tar.xz"
|
||||
cd "qttranslations-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DQT_GENERATE_SBOM=OFF
|
||||
cmake --build . --parallel
|
||||
ninja install
|
||||
cd ../../
|
||||
rm -fr "qttranslations-everywhere-src-$QT"
|
||||
|
||||
echo "Building shaderc..."
|
||||
rm -fr "shaderc-$SHADERC_COMMIT"
|
||||
tar xf "shaderc-$SHADERC_COMMIT.tar.gz"
|
||||
cd "shaderc-$SHADERC_COMMIT"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_EXECUTABLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "shaderc-$SHADERC_COMMIT"
|
||||
|
||||
echo "Building SPIRV-Cross..."
|
||||
cd SPIRV-Cross
|
||||
rm -fr build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=OFF -DSPIRV_CROSS_ENABLE_MSL=OFF -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
rm -fr build
|
||||
cd ..
|
||||
|
||||
echo "Building cpuinfo..."
|
||||
rm -fr "cpuinfo-$CPUINFO_COMMIT"
|
||||
tar xf "cpuinfo-$CPUINFO_COMMIT.tar.gz"
|
||||
cd "cpuinfo-$CPUINFO_COMMIT"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "cpuinfo-$CPUINFO_COMMIT"
|
||||
|
||||
echo "Building discord-rpc..."
|
||||
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
|
||||
tar xf "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz"
|
||||
cd "discord-rpc-$DISCORD_RPC_COMMIT"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DBUILD_SHARED_LIBS=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
|
||||
|
||||
echo "Building plutosvg..."
|
||||
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
|
||||
tar xf "plutosvg-$PLUTOSVG_COMMIT.tar.gz"
|
||||
cd "plutosvg-$PLUTOSVG_COMMIT"
|
||||
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
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
|
||||
|
||||
echo "Building soundtouch..."
|
||||
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
|
||||
tar xf "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz"
|
||||
cd "soundtouch-$SOUNDTOUCH_COMMIT"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build -G Ninja
|
||||
cmake --build build --parallel
|
||||
ninja -C build install
|
||||
cd ..
|
||||
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
|
||||
|
||||
if [ "$SKIP_CLEANUP" != true ]; then
|
||||
echo "Cleaning up..."
|
||||
cd ..
|
||||
rm -fr deps-build
|
||||
fi
|
||||
@@ -1,418 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# SPDX-License-Identifier: CC-BY-NC-ND-4.0
|
||||
|
||||
set -e
|
||||
|
||||
merge_binaries() {
|
||||
X86DIR=$1
|
||||
ARMDIR=$2
|
||||
echo "Merging ARM64 binaries from $ARMDIR into fat binaries at $X86DIR..."
|
||||
|
||||
IFS="
|
||||
"
|
||||
pushd "$X86DIR"
|
||||
for X86BIN in $(find . -type f \( -name '*.dylib' -o -name '*.a' -o -perm +111 \)); do
|
||||
if file "$X86DIR/$X86BIN" | grep "Mach-O " | grep " x86_64" >/dev/null; then
|
||||
ARMBIN="${ARMDIR}/${X86BIN}"
|
||||
echo "Merge $ARMBIN to $X86BIN..."
|
||||
lipo -create "$X86BIN" "$ARMBIN" -o "$X86BIN"
|
||||
fi
|
||||
done
|
||||
popd
|
||||
}
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Syntax: $0 <output directory>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export MACOSX_DEPLOYMENT_TARGET=13.3
|
||||
|
||||
NPROCS="$(getconf _NPROCESSORS_ONLN)"
|
||||
SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
|
||||
INSTALLDIR="$1"
|
||||
if [ "${INSTALLDIR:0:1}" != "/" ]; then
|
||||
INSTALLDIR="$PWD/$INSTALLDIR"
|
||||
fi
|
||||
|
||||
source "$SCRIPTDIR/versions"
|
||||
MOLTENVK=1.4.0
|
||||
|
||||
mkdir -p deps-build
|
||||
cd deps-build
|
||||
|
||||
export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
export LDFLAGS="-L$INSTALLDIR/lib $LDFLAGS"
|
||||
export CFLAGS="-I$INSTALLDIR/include $CFLAGS"
|
||||
export CXXFLAGS="-I$INSTALLDIR/include $CXXFLAGS"
|
||||
CMAKE_COMMON=(
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="-dead_strip -dead_strip_dylibs"
|
||||
-DCMAKE_PREFIX_PATH="$INSTALLDIR"
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALLDIR"
|
||||
-DCMAKE_INSTALL_NAME_DIR='$<INSTALL_PREFIX>/lib'
|
||||
)
|
||||
CMAKE_ARCH_X64=-DCMAKE_OSX_ARCHITECTURES="x86_64"
|
||||
CMAKE_ARCH_ARM64=-DCMAKE_OSX_ARCHITECTURES="arm64"
|
||||
CMAKE_ARCH_UNIVERSAL=-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
|
||||
|
||||
# SBOM generation appears to be broken on MacOS, and I can't be arsed to debug it.
|
||||
CMAKE_COMMON_QT=(
|
||||
-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
|
||||
-DQT_GENERATE_SBOM=OFF
|
||||
)
|
||||
|
||||
cat > SHASUMS <<EOF
|
||||
$BROTLI_GZ_HASH brotli-$BROTLI.tar.gz
|
||||
$FREETYPE_GZ_HASH freetype-$FREETYPE.tar.gz
|
||||
$HARFBUZZ_GZ_HASH harfbuzz-$HARFBUZZ.tar.gz
|
||||
$LIBPNG_GZ_HASH libpng-$LIBPNG.tar.gz
|
||||
$LIBJPEGTURBO_GZ_HASH libjpeg-turbo-$LIBJPEGTURBO.tar.gz
|
||||
$LIBWEBP_GZ_HASH libwebp-$LIBWEBP.tar.gz
|
||||
$LIBZIP_GZ_HASH libzip-$LIBZIP.tar.gz
|
||||
$SDL3_GZ_HASH SDL3-$SDL3.tar.gz
|
||||
$ZSTD_GZ_HASH zstd-$ZSTD.tar.gz
|
||||
$FFMPEG_XZ_HASH ffmpeg-$FFMPEG_VERSION.tar.xz
|
||||
fc74aef926ee3cd473fe260a93819c09fdc939bff669271a587e9ebaa43d4306 v$MOLTENVK.tar.gz
|
||||
$QTBASE_XZ_HASH qtbase-everywhere-src-$QT.tar.xz
|
||||
$QTIMAGEFORMATS_XZ_HASH qtimageformats-everywhere-src-$QT.tar.xz
|
||||
$QTSVG_XZ_HASH qtsvg-everywhere-src-$QT.tar.xz
|
||||
$QTTOOLS_XZ_HASH qttools-everywhere-src-$QT.tar.xz
|
||||
$QTTRANSLATIONS_XZ_HASH qttranslations-everywhere-src-$QT.tar.xz
|
||||
$CPUINFO_GZ_HASH cpuinfo-$CPUINFO_COMMIT.tar.gz
|
||||
$DISCORD_RPC_GZ_HASH discord-rpc-$DISCORD_RPC_COMMIT.tar.gz
|
||||
$PLUTOSVG_GZ_HASH plutosvg-$PLUTOSVG_COMMIT.tar.gz
|
||||
$SHADERC_GZ_HASH shaderc-$SHADERC_COMMIT.tar.gz
|
||||
$SOUNDTOUCH_GZ_HASH soundtouch-$SOUNDTOUCH_COMMIT.tar.gz
|
||||
EOF
|
||||
|
||||
curl -L \
|
||||
-o "brotli-$BROTLI.tar.gz" "https://github.com/google/brotli/archive/refs/tags/v$BROTLI.tar.gz" \
|
||||
-o "freetype-$FREETYPE.tar.gz" "https://sourceforge.net/projects/freetype/files/freetype2/$FREETYPE/freetype-$FREETYPE.tar.gz/download" \
|
||||
-o "harfbuzz-$HARFBUZZ.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/$HARFBUZZ.tar.gz" \
|
||||
-O "https://downloads.sourceforge.net/project/libpng/libpng16/$LIBPNG/libpng-$LIBPNG.tar.gz" \
|
||||
-O "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$LIBJPEGTURBO/libjpeg-turbo-$LIBJPEGTURBO.tar.gz" \
|
||||
-O "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP.tar.gz" \
|
||||
-O "https://github.com/nih-at/libzip/releases/download/v$LIBZIP/libzip-$LIBZIP.tar.gz" \
|
||||
-O "https://github.com/libsdl-org/SDL/releases/download/release-$SDL3/SDL3-$SDL3.tar.gz" \
|
||||
-O "https://github.com/facebook/zstd/releases/download/v$ZSTD/zstd-$ZSTD.tar.gz" \
|
||||
-O "https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.xz" \
|
||||
-O "https://github.com/KhronosGroup/MoltenVK/archive/refs/tags/v$MOLTENVK.tar.gz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtbase-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtimageformats-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \
|
||||
-O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \
|
||||
-o "cpuinfo-$CPUINFO_COMMIT.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO_COMMIT.tar.gz" \
|
||||
-o "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC_COMMIT.tar.gz" \
|
||||
-o "plutosvg-$PLUTOSVG_COMMIT.tar.gz" "https://github.com/stenzek/plutosvg/archive/$PLUTOSVG_COMMIT.tar.gz" \
|
||||
-o "shaderc-$SHADERC_COMMIT.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC_COMMIT.tar.gz" \
|
||||
-o "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz" "https://github.com/stenzek/soundtouch/archive/$SOUNDTOUCH_COMMIT.tar.gz"
|
||||
|
||||
shasum -a 256 --check SHASUMS
|
||||
|
||||
# Have to clone with git, because it does version detection.
|
||||
if [ ! -d "SPIRV-Cross" ]; then
|
||||
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS_TAG --depth 1
|
||||
if [ "$(git --git-dir=SPIRV-Cross/.git rev-parse HEAD)" != "$SPIRV_CROSS_SHA" ]; then
|
||||
echo "SPIRV-Cross version mismatch, expected $SPIRV_CROSS_SHA, got $(git rev-parse HEAD)"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Installing libpng..."
|
||||
rm -fr "libpng-$LIBPNG"
|
||||
tar xf "libpng-$LIBPNG.tar.gz"
|
||||
cd "libpng-$LIBPNG"
|
||||
patch -p1 < "$SCRIPTDIR/libpng-1.6.54-apng.patch"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_FRAMEWORK=OFF -B build
|
||||
make -C build "-j$NPROCS"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DBUILD_SHARED_LIBS=ON -DPNG_TESTS=OFF -DPNG_ARM_NEON=on -DPNG_FRAMEWORK=OFF -B build-arm64
|
||||
make -C build-arm64 "-j$NPROCS"
|
||||
merge_binaries $(realpath build) $(realpath build-arm64)
|
||||
make -C build install
|
||||
cd ..
|
||||
rm -fr "libpng-$LIBPNG"
|
||||
|
||||
echo "Building libjpeg..."
|
||||
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
|
||||
tar xf "libjpeg-turbo-$LIBJPEGTURBO.tar.gz"
|
||||
cd "libjpeg-turbo-$LIBJPEGTURBO"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -B build
|
||||
make -C build "-j$NPROCS"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -B build-arm64
|
||||
make -C build-arm64 "-j$NPROCS"
|
||||
merge_binaries $(realpath build) $(realpath build-arm64)
|
||||
make -C build install
|
||||
cd ..
|
||||
rm -fr "libjpeg-turbo-$LIBJPEGTURBO"
|
||||
|
||||
echo "Installing Zstandard..."
|
||||
rm -fr "zstd-$ZSTD"
|
||||
tar xf "zstd-$ZSTD.tar.gz"
|
||||
cd "zstd-$ZSTD"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_PROGRAMS=OFF -B build-dir build/cmake
|
||||
make -C build-dir "-j$NPROCS"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DBUILD_SHARED_LIBS=ON -DZSTD_BUILD_PROGRAMS=OFF -B build-dir-arm64 build/cmake
|
||||
make -C build-dir-arm64 "-j$NPROCS"
|
||||
merge_binaries $(realpath build-dir) $(realpath build-dir-arm64)
|
||||
make -C build-dir install
|
||||
cd ..
|
||||
rm -fr "zstd-$ZSTD"
|
||||
|
||||
echo "Installing Brotli..."
|
||||
rm -fr "brotli-$BROTLI"
|
||||
tar xf "brotli-$BROTLI.tar.gz"
|
||||
cd "brotli-$BROTLI"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=OFF -DBROTLI_BUILD_TOOLS=OFF -DBROTLI_DISABLE_TESTS=ON -B build
|
||||
cmake --build build --parallel
|
||||
cmake --install build
|
||||
cd ..
|
||||
rm -fr "brotli-$BROTLI"
|
||||
|
||||
echo "Installing WebP..."
|
||||
rm -fr "libwebp-$LIBWEBP"
|
||||
tar xf "libwebp-$LIBWEBP.tar.gz"
|
||||
cd "libwebp-$LIBWEBP"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -B build \
|
||||
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
|
||||
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
|
||||
make -C build "-j$NPROCS"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -B build-arm64 \
|
||||
-DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF \
|
||||
-DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON
|
||||
make -C build-arm64 "-j$NPROCS"
|
||||
merge_binaries $(realpath build) $(realpath build-arm64)
|
||||
make -C build install
|
||||
cd ..
|
||||
rm -fr "libwebp-$LIBWEBP"
|
||||
|
||||
echo "Installing libzip..."
|
||||
rm -fr "libzip-$LIBZIP"
|
||||
tar xf "libzip-$LIBZIP.tar.gz"
|
||||
cd "libzip-$LIBZIP"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -B build \
|
||||
-DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF \
|
||||
-DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON \
|
||||
-DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF
|
||||
cmake --build build --parallel
|
||||
cmake --install build
|
||||
cd ..
|
||||
rm -fr "libzip-$LIBZIP"
|
||||
|
||||
echo "Building FreeType..."
|
||||
rm -fr "freetype-$FREETYPE"
|
||||
tar xf "freetype-$FREETYPE.tar.gz"
|
||||
cd "freetype-$FREETYPE"
|
||||
patch -p1 < "$SCRIPTDIR/freetype-harfbuzz-soname.patch"
|
||||
patch -p1 < "$SCRIPTDIR/freetype-static-brotli.patch"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=ON -DFT_REQUIRE_PNG=ON -DFT_DISABLE_BZIP2=TRUE -DFT_REQUIRE_BROTLI=TRUE -DFT_DYNAMIC_HARFBUZZ=TRUE -B build
|
||||
cmake --build build --parallel
|
||||
cmake --install build
|
||||
cd ..
|
||||
rm -fr "freetype-$FREETYPE"
|
||||
|
||||
echo "Building HarfBuzz..."
|
||||
rm -fr "harfbuzz-$HARFBUZZ"
|
||||
tar xf "harfbuzz-$HARFBUZZ.tar.gz"
|
||||
cd "harfbuzz-$HARFBUZZ"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build
|
||||
cmake --build build --parallel
|
||||
cmake --install build
|
||||
cd ..
|
||||
rm -fr "harfbuzz-$HARFBUZZ"
|
||||
|
||||
echo "Installing SDL..."
|
||||
rm -fr "SDL3-$SDL3"
|
||||
tar xf "SDL3-$SDL3.tar.gz"
|
||||
cd "SDL3-$SDL3"
|
||||
cmake -B build "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -DSDL_X11=OFF -DBUILD_SHARED_LIBS=ON
|
||||
make -C build "-j$NPROCS"
|
||||
make -C build install
|
||||
cd ..
|
||||
rm -fr "SDL3-$SDL3"
|
||||
|
||||
echo "Installing FFmpeg..."
|
||||
rm -fr "ffmpeg-$FFMPEG_VERSION"
|
||||
tar xf "ffmpeg-$FFMPEG_VERSION.tar.xz"
|
||||
cd "ffmpeg-$FFMPEG_VERSION"
|
||||
mkdir build
|
||||
cd build
|
||||
LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
|
||||
../configure --prefix="$INSTALLDIR" \
|
||||
--enable-cross-compile --arch=x86_64 --cc='clang -arch x86_64' --cxx='clang++ -arch x86_64' --disable-x86asm \
|
||||
--disable-all --disable-autodetect --disable-static --enable-shared \
|
||||
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
|
||||
--enable-audiotoolbox --enable-videotoolbox \
|
||||
--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
|
||||
--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
|
||||
--enable-protocol=file
|
||||
make "-j$NPROCS"
|
||||
cd ..
|
||||
mkdir build-arm64
|
||||
cd build-arm64
|
||||
LDFLAGS="-dead_strip $LDFLAGS" CFLAGS="-Os $CFLAGS" CXXFLAGS="-Os $CXXFLAGS" \
|
||||
../configure --prefix="$INSTALLDIR" \
|
||||
--enable-cross-compile --arch=arm64 --cc='clang -arch arm64' --cxx='clang++ -arch arm64' --disable-x86asm \
|
||||
--disable-all --disable-autodetect --disable-static --enable-shared \
|
||||
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
|
||||
--enable-audiotoolbox --enable-videotoolbox \
|
||||
--enable-encoder=ffv1,qtrle,pcm_s16be,pcm_s16le,*_at,*_videotoolbox \
|
||||
--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
|
||||
--enable-protocol=file
|
||||
make "-j$NPROCS"
|
||||
cd ..
|
||||
merge_binaries $(realpath build) $(realpath build-arm64)
|
||||
cd build
|
||||
make install
|
||||
cd ../..
|
||||
rm -fr "ffmpeg-$FFMPEG_VERSION"
|
||||
|
||||
# MoltenVK already builds universal binaries, nothing special to do here.
|
||||
echo "Installing MoltenVK..."
|
||||
rm -fr "MoltenVK-${MOLTENVK}"
|
||||
tar xf "v$MOLTENVK.tar.gz"
|
||||
cd "MoltenVK-${MOLTENVK}"
|
||||
./fetchDependencies --macos
|
||||
make macos
|
||||
cp Package/Latest/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib "$INSTALLDIR/lib/"
|
||||
cd ..
|
||||
rm -fr "MoltenVK-${MOLTENVK}"
|
||||
|
||||
echo "Installing Qt Base..."
|
||||
rm -fr "qtbase-everywhere-src-$QT"
|
||||
tar xf "qtbase-everywhere-src-$QT.tar.xz"
|
||||
cd "qtbase-everywhere-src-$QT"
|
||||
|
||||
# Stop checkboxes in Fusion theme having such bright outlines.
|
||||
patch -p1 < "$SCRIPTDIR/qtbase-fusion-style.patch"
|
||||
|
||||
# Allow window-modal dialog boxes in Tahoe, it's not a problem for us.
|
||||
patch -p1 < "$SCRIPTDIR/qtbase-window-modal-tahoe.patch"
|
||||
|
||||
# since we don't have a direct reference to QtSvg, it doesn't deployed directly from the main binary
|
||||
# (only indirectly from iconengines), and the libqsvg.dylib imageformat plugin does not get deployed.
|
||||
# We could run macdeployqt twice, but that's even more janky than patching it.
|
||||
patch -p1 < "$SCRIPTDIR/qtbase-macdeploy-imageformats.patch"
|
||||
|
||||
cmake -B build "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}" -DFEATURE_dbus=OFF -DFEATURE_framework=OFF -DFEATURE_icu=OFF -DFEATURE_opengl=OFF -DFEATURE_sql=OFF -DFEATURE_gssapi=OFF -DFEATURE_system_png=ON -DFEATURE_system_jpeg=ON -DFEATURE_system_zlib=ON -DFEATURE_system_freetype=ON -DFEATURE_system_harfbuzz=ON -DFEATURE_brotli=OFF
|
||||
make -C build "-j$NPROCS"
|
||||
make -C build install
|
||||
cd ..
|
||||
rm -fr "qtbase-everywhere-src-$QT"
|
||||
|
||||
echo "Installing Qt SVG..."
|
||||
rm -fr "qtsvg-everywhere-src-$QT"
|
||||
tar xf "qtsvg-everywhere-src-$QT.tar.xz"
|
||||
cd "qtsvg-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}"
|
||||
make "-j$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
rm -fr "qtsvg-everywhere-src-$QT"
|
||||
|
||||
echo "Installing Qt Image Formats..."
|
||||
rm -fr "qtimageformats-everywhere-src-$QT"
|
||||
tar xf "qtimageformats-everywhere-src-$QT.tar.xz"
|
||||
cd "qtimageformats-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}" -DFEATURE_system_webp=ON
|
||||
make "-j$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
rm -fr "qtimageformats-everywhere-src-$QT"
|
||||
|
||||
echo "Installing Qt Tools..."
|
||||
rm -fr "qttools-everywhere-src-$QT"
|
||||
tar xf "qttools-everywhere-src-$QT.tar.xz"
|
||||
cd "qttools-everywhere-src-$QT"
|
||||
patch -p1 < "$SCRIPTDIR/qttools-linguist-without-quick.patch"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}" -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=ON -DFEATURE_kmap2qmap=OFF -DFEATURE_linguist=ON -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF
|
||||
make "-j$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
rm -fr "qttools-everywhere-src-$QT"
|
||||
|
||||
echo "Installing Qt Translations..."
|
||||
rm -fr "qttranslations-everywhere-src-$QT"
|
||||
tar xf "qttranslations-everywhere-src-$QT.tar.xz"
|
||||
cd "qttranslations-everywhere-src-$QT"
|
||||
mkdir build
|
||||
cd build
|
||||
"$INSTALLDIR/bin/qt-configure-module" .. -- "${CMAKE_COMMON[@]}" "${CMAKE_COMMON_QT[@]}"
|
||||
make "-j$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
rm -fr "qttranslations-everywhere-src-$QT"
|
||||
|
||||
echo "Building shaderc..."
|
||||
rm -fr "shaderc-$SHADERC_COMMIT"
|
||||
tar xf "shaderc-$SHADERC_COMMIT.tar.gz"
|
||||
cd "shaderc-$SHADERC_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -DSHADERC_SKIP_EXECUTABLES=ON -B build
|
||||
make -C build "-j$NPROCS"
|
||||
make -C build install
|
||||
cd ..
|
||||
rm -fr "shaderc-$SHADERC_COMMIT"
|
||||
|
||||
echo "Building SPIRV-Cross..."
|
||||
cd SPIRV-Cross
|
||||
rm -fr build
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=OFF -DSPIRV_CROSS_ENABLE_MSL=ON -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build
|
||||
cmake --build build --parallel
|
||||
cmake --install build
|
||||
rm -fr build
|
||||
cd ..
|
||||
|
||||
echo "Building cpuinfo..."
|
||||
rm -fr "cpuinfo-$CPUINFO_COMMIT"
|
||||
tar xf "cpuinfo-$CPUINFO_COMMIT.tar.gz"
|
||||
cd "cpuinfo-$CPUINFO_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build
|
||||
make -C build "-j$NPROCS"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build-arm64
|
||||
make -C build-arm64 "-j$NPROCS"
|
||||
merge_binaries $(realpath build) $(realpath build-arm64)
|
||||
make -C build install
|
||||
cd ..
|
||||
rm -fr "cpuinfo-$CPUINFO_COMMIT"
|
||||
|
||||
echo "Building discord-rpc..."
|
||||
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
|
||||
tar xf "discord-rpc-$DISCORD_RPC_COMMIT.tar.gz"
|
||||
cd "discord-rpc-$DISCORD_RPC_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -B build
|
||||
cmake --build build --parallel
|
||||
cmake --install build
|
||||
cd ..
|
||||
rm -fr "discord-rpc-$DISCORD_RPC_COMMIT"
|
||||
|
||||
echo "Building plutosvg..."
|
||||
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
|
||||
tar xf "plutosvg-$PLUTOSVG_COMMIT.tar.gz"
|
||||
cd "plutosvg-$PLUTOSVG_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DBUILD_SHARED_LIBS=ON -DPLUTOSVG_ENABLE_FREETYPE=ON -DPLUTOSVG_BUILD_EXAMPLES=OFF -B build
|
||||
cmake --build build --parallel
|
||||
cmake --install build
|
||||
cd ..
|
||||
rm -fr "plutosvg-$PLUTOSVG_COMMIT"
|
||||
|
||||
echo "Building soundtouch..."
|
||||
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
|
||||
tar xf "soundtouch-$SOUNDTOUCH_COMMIT.tar.gz"
|
||||
cd "soundtouch-$SOUNDTOUCH_COMMIT"
|
||||
cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build
|
||||
cmake --build build --parallel
|
||||
cmake --install build
|
||||
cd ..
|
||||
rm -fr "soundtouch-$SOUNDTOUCH_COMMIT"
|
||||
|
||||
echo "Cleaning up..."
|
||||
cd ..
|
||||
rm -rf deps-build
|
||||
@@ -1,378 +0,0 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
rem SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <stenzek@gmail.com>
|
||||
rem SPDX-License-Identifier: CC-BY-NC-ND-4.0
|
||||
|
||||
echo Setting environment...
|
||||
if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" (
|
||||
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"
|
||||
) else if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" (
|
||||
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"
|
||||
) else (
|
||||
echo Visual Studio 2022 not found.
|
||||
goto error
|
||||
)
|
||||
|
||||
set SEVENZIP="C:\Program Files\7-Zip\7z.exe"
|
||||
set PATCH="C:\Program Files\Git\usr\bin\patch.exe"
|
||||
|
||||
if defined DEBUG (
|
||||
echo DEBUG=%DEBUG%
|
||||
) else (
|
||||
set DEBUG=1
|
||||
)
|
||||
|
||||
pushd %~dp0
|
||||
set "SCRIPTDIR=%CD%"
|
||||
cd ..\..\dep\msvc
|
||||
mkdir deps-build
|
||||
cd deps-build || goto error
|
||||
set "BUILDDIR=%CD%"
|
||||
cd ..
|
||||
mkdir deps-arm64
|
||||
cd deps-arm64 || goto error
|
||||
set "INSTALLDIR=%CD%"
|
||||
cd ..
|
||||
cd deps-x64 || goto error
|
||||
set "X64INSTALLDIR=%CD%"
|
||||
cd ..
|
||||
popd
|
||||
|
||||
echo SCRIPTDIR=%SCRIPTDIR%
|
||||
echo BUILDDIR=%BUILDDIR%
|
||||
echo INSTALLDIR=%INSTALLDIR%
|
||||
|
||||
cd "%BUILDDIR%"
|
||||
|
||||
REM Read each line from the file and set as environment variable
|
||||
for /f "usebackq tokens=1,2 delims==" %%a in ("%SCRIPTDIR%\versions") do (
|
||||
if not "%%a"=="" if not "%%b"=="" (
|
||||
set "%%a=%%b"
|
||||
rem echo Set %%a=%%b
|
||||
)
|
||||
)
|
||||
|
||||
call :downloadfile "brotli-%BROTLI%.tar.gz" "https://github.com/google/brotli/archive/refs/tags/v%BROTLI%.tar.gz" "%BROTLI_GZ_HASH%" || goto error
|
||||
call :downloadfile "freetype-%FREETYPE%.tar.gz" "https://download.savannah.gnu.org/releases/freetype/freetype-%FREETYPE%.tar.gz" "%FREETYPE_GZ_HASH%" || goto error
|
||||
call :downloadfile "harfbuzz-%HARFBUZZ%.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/%HARFBUZZ%.tar.gz" "%HARFBUZZ_GZ_HASH%" || goto error
|
||||
call :downloadfile "libpng-%LIBPNG%.tar.gz" "https://download.sourceforge.net/libpng/libpng-%LIBPNG%.tar.gz" "%LIBPNG_GZ_HASH%" || goto error
|
||||
call :downloadfile "libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/%LIBJPEGTURBO%/libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" "%LIBJPEGTURBO_GZ_HASH%" || goto error
|
||||
call :downloadfile "SDL3-%SDL3%.zip" "https://github.com/libsdl-org/SDL/releases/download/release-%SDL3%/SDL3-%SDL3%.zip" "%SDL3_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qtbase-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtbase-everywhere-src-%QT%.zip" "%QTBASE_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qtimageformats-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtimageformats-everywhere-src-%QT%.zip" "%QTIMAGEFORMATS_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qtsvg-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtsvg-everywhere-src-%QT%.zip" "%QTSVG_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qttools-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttools-everywhere-src-%QT%.zip" "%QTTOOLS_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttranslations-everywhere-src-%QT%.zip" "%QTTRANSLATIONS_ZIP_HASH%" || goto error
|
||||
call :downloadfile "libwebp-%LIBWEBP%.tar.gz" "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-%LIBWEBP%.tar.gz" "%LIBWEBP_GZ_HASH%" || goto error
|
||||
call :downloadfile "libzip-%LIBZIP%.tar.gz" "https://github.com/nih-at/libzip/releases/download/v%LIBZIP%/libzip-%LIBZIP%.tar.gz" "%LIBZIP_GZ_HASH%" || goto error
|
||||
call :downloadfile "zlib-ng-%ZLIBNG%.tar.gz" "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/%ZLIBNG%.tar.gz" "%ZLIBNG_GZ_HASH%" || goto error
|
||||
call :downloadfile "zstd-%ZSTD%.tar.gz" "https://github.com/facebook/zstd/releases/download/v%ZSTD%/zstd-%ZSTD%.tar.gz" "%ZSTD_GZ_HASH%" || goto error
|
||||
|
||||
call :downloadfile "cpuinfo-%CPUINFO_COMMIT%.tar.gz" "https://github.com/stenzek/cpuinfo/archive/%CPUINFO_COMMIT%.tar.gz" "%CPUINFO_GZ_HASH%" || goto error
|
||||
call :downloadfile "discord-rpc-%DISCORD_RPC_COMMIT%.tar.gz" "https://github.com/stenzek/discord-rpc/archive/%DISCORD_RPC_COMMIT%.tar.gz" "%DISCORD_RPC_GZ_HASH%" || goto error
|
||||
call :downloadfile "plutosvg-%PLUTOSVG_COMMIT%.tar.gz" "https://github.com/stenzek/plutosvg/archive/%PLUTOSVG_COMMIT%.tar.gz" "%PLUTOSVG_GZ_HASH%" || goto error
|
||||
call :downloadfile "shaderc-%SHADERC_COMMIT%.tar.gz" "https://github.com/stenzek/shaderc/archive/%SHADERC_COMMIT%.tar.gz" "%SHADERC_GZ_HASH%" || goto error
|
||||
call :downloadfile "soundtouch-%SOUNDTOUCH_COMMIT%.tar.gz" "https://github.com/stenzek/soundtouch/archive/%SOUNDTOUCH_COMMIT%.tar.gz" "%SOUNDTOUCH_GZ_HASH%" || goto error
|
||||
call :downloadfile "dxcompiler-%DXCOMPILER_VERSION%.zip" "https://www.nuget.org/api/v2/package/Microsoft.Direct3D.DXC/%DXCOMPILER_VERSION%" "%DXCOMPILER_ZIP_HASH%" || goto error
|
||||
|
||||
if not exist SPIRV-Cross\ (
|
||||
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b %SPIRV_CROSS_TAG% --depth 1 || goto error
|
||||
pushd SPIRV-Cross
|
||||
git reset --hard %SPIRV_CROSS_SHA% || goto error
|
||||
popd
|
||||
)
|
||||
|
||||
if %DEBUG%==1 (
|
||||
echo Building debug and release libraries...
|
||||
) else (
|
||||
echo Building release libraries...
|
||||
)
|
||||
|
||||
set FORCEPDB=-DCMAKE_EXE_LINKER_FLAGS_RELEASE="/DEBUG" -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="/DEBUG" -DCMAKE_MODULE_LINKER_FLAGS_RELEASE="/DEBUG"
|
||||
set ARM64TOOLCHAIN=-DCMAKE_TOOLCHAIN_FILE="%SCRIPTDIR%\cmake-toolchain-windows-arm64.cmake"
|
||||
|
||||
echo Building zlib-ng...
|
||||
rmdir /S /Q "zlib-ng-%ZLIBNG%"
|
||||
tar -xf "zlib-ng-%ZLIBNG%.tar.gz" || goto error
|
||||
cd "zlib-ng-%ZLIBNG%" || goto error
|
||||
rem BUILD_SHARED_LIBS deliberately ommitted so that both shared and static libraries are built, we need static for the updater.
|
||||
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DZLIB_COMPAT=ON -DBUILD_TESTING=OFF -DWITH_BENCHMARK_APPS=OFF -DWITH_GTEST=OFF -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "zlib-ng-%ZLIBNG%"
|
||||
|
||||
echo Building libpng...
|
||||
rmdir /S /Q "libpng-%LIBPNG%"
|
||||
tar -xf "libpng-%LIBPNG%.tar.gz" || goto error
|
||||
cd "libpng-%LIBPNG%" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\libpng-1.6.54-apng.patch" || goto error
|
||||
cmake %ARM64TOOLCHAIN% -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 || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "libpng-%LIBPNG%"
|
||||
|
||||
echo Building libjpeg...
|
||||
rmdir /S /Q "libjpeg-turbo-%LIBJPEGTURBO%"
|
||||
tar -xf "libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" || goto error
|
||||
cd "libjpeg-turbo-%LIBJPEGTURBO%" || goto error
|
||||
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "libjpeg-turbo-%LIBJPEGTURBO%"
|
||||
|
||||
echo Building Zstandard...
|
||||
rmdir /S /Q "zstd-%ZSTD%"
|
||||
tar -xf "zstd-%ZSTD%.tar.gz" --exclude "zstd-%ZSTD%/tests/cli-tests/*" || goto error
|
||||
cd "zstd-%ZSTD%"
|
||||
cmake %ARM64TOOLCHAIN% -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
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "zstd-%ZSTD%"
|
||||
|
||||
echo Building Brotli...
|
||||
rmdir /S /Q "brotli-%BROTLI%"
|
||||
tar -xf "brotli-%BROTLI%.tar.gz" || goto error
|
||||
cd "brotli-%BROTLI%" || goto error
|
||||
cmake -B build %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=OFF -DBROTLI_BUILD_TOOLS=OFF -DBROTLI_DISABLE_TESTS=ON -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "brotli-%BROTLI%"
|
||||
|
||||
echo Building WebP...
|
||||
rmdir /S /Q "libwebp-%LIBWEBP%"
|
||||
tar -xf "libwebp-%LIBWEBP%.tar.gz" || goto error
|
||||
cd "libwebp-%LIBWEBP%" || goto error
|
||||
cmake -B build %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF -DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "libwebp-%LIBWEBP%"
|
||||
|
||||
echo Building libzip...
|
||||
rmdir /S /Q "libzip-%LIBZIP%"
|
||||
tar -xf "libzip-%LIBZIP%.tar.gz" || goto error
|
||||
cd "libzip-%LIBZIP%" || goto error
|
||||
cmake -B build %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF -DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON -DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "libzip-%LIBZIP%"
|
||||
|
||||
echo Building FreeType...
|
||||
rmdir /S /Q "freetype-%FREETYPE%"
|
||||
tar -xf "freetype-%FREETYPE%.tar.gz" || goto error
|
||||
cd "freetype-%FREETYPE%" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\freetype-harfbuzz-soname.patch" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\freetype-static-brotli.patch" || goto error
|
||||
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=TRUE -DFT_REQUIRE_PNG=TRUE -DFT_DISABLE_BZIP2=TRUE -DFT_REQUIRE_BROTLI=TRUE -DFT_DYNAMIC_HARFBUZZ=TRUE -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "freetype-%FREETYPE%"
|
||||
|
||||
echo Building HarfBuzz...
|
||||
rmdir /S /Q "harfbuzz-%HARFBUZZ%"
|
||||
tar -xf "harfbuzz-%HARFBUZZ%.tar.gz" || goto error
|
||||
cd "harfbuzz-%HARFBUZZ%" || goto error
|
||||
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "harfbuzz-%HARFBUZZ%"
|
||||
|
||||
echo Building SDL...
|
||||
rmdir /S /Q "SDL3-%SDL3%"
|
||||
%SEVENZIP% x "SDL3-%SDL3%.zip" || goto error
|
||||
cd "SDL3-%SDL3%" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\sdl3-ezfrd64-dll.patch" || goto error
|
||||
cmake -B build %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release %FORCEPDB% -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
copy build\SDL3.pdb "%INSTALLDIR%\bin" || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "SDL3-%SDL3%"
|
||||
|
||||
if %DEBUG%==1 (
|
||||
set QTBUILDSPEC=-DCMAKE_CONFIGURATION_TYPES="Release;Debug" -G "Ninja Multi-Config"
|
||||
) else (
|
||||
set QTBUILDSPEC=-DCMAKE_BUILD_TYPE=Release -G Ninja
|
||||
)
|
||||
|
||||
echo Building Qt base...
|
||||
rmdir /S /Q "qtbase-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qtbase-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qtbase-everywhere-src-%QT%" || goto error
|
||||
|
||||
rem Stop checkboxes in Fusion theme having such bright outlines.
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\qtbase-fusion-style.patch" || goto error
|
||||
|
||||
cmake -B build %ARM64TOOLCHAIN% -DFEATURE_sql=OFF -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DQT_HOST_PATH="%X64INSTALLDIR%" %FORCEPDB% -DQT_GENERATE_SBOM=OFF -DINPUT_ssl=yes -DINPUT_openssl=no -DFEATURE_system_png=ON -DFEATURE_system_jpeg=ON -DFEATURE_system_zlib=ON -DFEATURE_system_freetype=ON -DFEATURE_system_harfbuzz=ON -DFEATURE_brotli=OFF %QTBUILDSPEC% || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "qtbase-everywhere-src-%QT%"
|
||||
|
||||
echo Building Qt SVG...
|
||||
rmdir /S /Q "qtsvg-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qtsvg-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qtsvg-everywhere-src-%QT%" || goto error
|
||||
mkdir build || goto error
|
||||
cd build || goto error
|
||||
call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DQT_GENERATE_SBOM=OFF || goto error
|
||||
cmake --build . --parallel || goto error
|
||||
ninja install || goto error
|
||||
cd ..\.. || goto error
|
||||
rmdir /S /Q "qtsvg-everywhere-src-%QT%"
|
||||
|
||||
echo Building Qt Image Formats...
|
||||
rmdir /S /Q "qtimageformats-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qtimageformats-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qtimageformats-everywhere-src-%QT%" || goto error
|
||||
mkdir build || goto error
|
||||
cd build || goto error
|
||||
call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DQT_GENERATE_SBOM=OFF -DFEATURE_system_webp=ON || goto error
|
||||
cmake --build . --parallel || goto error
|
||||
ninja install || goto error
|
||||
cd ..\.. || goto error
|
||||
rmdir /S /Q "qtimageformats-everywhere-src-%QT%"
|
||||
|
||||
echo Building Qt Tools...
|
||||
rmdir /S /Q "qttools-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qttools-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qttools-everywhere-src-%QT%" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\qttools-linguist-without-quick.patch" || goto error
|
||||
mkdir build || goto error
|
||||
cd build || goto error
|
||||
call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DQT_GENERATE_SBOM=OFF -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=OFF -DFEATURE_kmap2qmap=OFF -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF || goto error
|
||||
cmake --build . --parallel || goto error
|
||||
ninja install || goto error
|
||||
cd ..\.. || goto error
|
||||
rmdir /S /Q "qttools-everywhere-src-%QT%"
|
||||
|
||||
echo Building Qt Translations...
|
||||
rmdir /S /Q "qttranslations-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qttranslations-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qttranslations-everywhere-src-%QT%" || goto error
|
||||
mkdir build || goto error
|
||||
cd build || goto error
|
||||
call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DQT_GENERATE_SBOM=OFF || goto error
|
||||
cmake --build . --parallel || goto error
|
||||
ninja install || goto error
|
||||
cd ..\.. || goto error
|
||||
rmdir /S /Q "qttranslations-everywhere-src-%QT%"
|
||||
|
||||
echo Building shaderc...
|
||||
rmdir /S /Q "shaderc-%SHADERC_COMMIT%"
|
||||
tar -xf "shaderc-%SHADERC_COMMIT%.tar.gz" || goto error
|
||||
cd "shaderc-%SHADERC_COMMIT%" || goto error
|
||||
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_EXECUTABLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -DSHADERC_ENABLE_SHARED_CRT=ON -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "shaderc-%SHADERC_COMMIT%"
|
||||
|
||||
echo Building SPIRV-Cross...
|
||||
cd SPIRV-Cross || goto error
|
||||
rmdir /S /Q "build"
|
||||
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=ON -DSPIRV_CROSS_ENABLE_MSL=OFF -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build -G Ninja
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
rmdir /S /Q "build"
|
||||
cd .. || goto error
|
||||
|
||||
echo Building cpuinfo...
|
||||
rmdir /S /Q "cpuinfo-%CPUINFO_COMMIT%"
|
||||
tar -xf "cpuinfo-%CPUINFO_COMMIT%.tar.gz" || goto error
|
||||
cd "cpuinfo-%CPUINFO_COMMIT%" || goto error
|
||||
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build -G Ninja
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "cpuinfo-%CPUINFO_COMMIT%"
|
||||
|
||||
echo Building discord-rpc...
|
||||
rmdir /S /Q "discord-rpc-%DISCORD_RPC_COMMIT%"
|
||||
tar -xf "discord-rpc-%DISCORD_RPC_COMMIT%.tar.gz" || goto error
|
||||
cd "discord-rpc-%DISCORD_RPC_COMMIT%" || goto error
|
||||
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -B build -G Ninja
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "discord-rpc-%DISCORD_RPC_COMMIT%"
|
||||
|
||||
echo Building plutosvg...
|
||||
rmdir /S /Q "plutosvg-%PLUTOSVG_COMMIT%"
|
||||
tar -xf "plutosvg-%PLUTOSVG_COMMIT%.tar.gz" || goto error
|
||||
cd "plutosvg-%PLUTOSVG_COMMIT%" || goto error
|
||||
cmake %ARM64TOOLCHAIN% -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
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "plutosvg-%PLUTOSVG_COMMIT%"
|
||||
|
||||
rem This currently isn't using clang-cl. It probably should, might be losing a little speed.
|
||||
echo Building soundtouch...
|
||||
rmdir /S /Q "soundtouch-%SOUNDTOUCH_COMMIT%"
|
||||
tar -xf "soundtouch-%SOUNDTOUCH_COMMIT%.tar.gz" || goto error
|
||||
cd "soundtouch-%SOUNDTOUCH_COMMIT%" || goto error
|
||||
cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "soundtouch-%SOUNDTOUCH_COMMIT%"
|
||||
|
||||
rem These should already exist, but just in case.
|
||||
mkdir "%INSTALLDIR%\bin"
|
||||
mkdir "%INSTALLDIR%\include"
|
||||
mkdir "%INSTALLDIR%\lib"
|
||||
|
||||
echo Extracting DXCompiler...
|
||||
rmdir /S /Q "dxcompiler-%DXCOMPILER_VERSION%"
|
||||
mkdir "dxcompiler-%DXCOMPILER_VERSION%"
|
||||
cd "dxcompiler-%DXCOMPILER_VERSION%" || goto error
|
||||
%SEVENZIP% x "..\dxcompiler-%DXCOMPILER_VERSION%.zip" || goto error
|
||||
copy build\native\include\* "%INSTALLDIR%\include" || goto error
|
||||
copy build\native\bin\arm64\*.dll "%INSTALLDIR%\bin" || goto error
|
||||
copy build\native\lib\arm64\*.lib "%INSTALLDIR%\lib" || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "dxcompiler-%DXCOMPILER_VERSION%"
|
||||
|
||||
echo Cleaning up...
|
||||
cd ..
|
||||
rd /S /Q deps-build
|
||||
|
||||
echo Exiting with success.
|
||||
exit 0
|
||||
|
||||
:error
|
||||
echo Failed with error #%errorlevel%.
|
||||
pause
|
||||
exit %errorlevel%
|
||||
|
||||
:downloadfile
|
||||
if not exist "%~1" (
|
||||
echo Downloading %~1 from %~2...
|
||||
curl -L -o "%~1" "%~2" || goto error
|
||||
)
|
||||
|
||||
rem based on https://gist.github.com/gsscoder/e22daefaff9b5d8ac16afb070f1a7971
|
||||
set idx=0
|
||||
for /f %%F in ('certutil -hashfile "%~1" SHA256') do (
|
||||
set "out!idx!=%%F"
|
||||
set /a idx += 1
|
||||
)
|
||||
set filechecksum=%out1%
|
||||
|
||||
if /i %~3==%filechecksum% (
|
||||
echo Validated %~1.
|
||||
exit /B 0
|
||||
) else (
|
||||
echo Expected %~3 got %filechecksum%.
|
||||
exit /B 1
|
||||
)
|
||||
@@ -1,377 +0,0 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
rem SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <stenzek@gmail.com>
|
||||
rem SPDX-License-Identifier: CC-BY-NC-ND-4.0
|
||||
|
||||
echo Setting environment...
|
||||
if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" (
|
||||
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
||||
) else if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" (
|
||||
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
|
||||
) else (
|
||||
echo Visual Studio 2022 not found.
|
||||
goto error
|
||||
)
|
||||
|
||||
set SEVENZIP="C:\Program Files\7-Zip\7z.exe"
|
||||
set PATCH="C:\Program Files\Git\usr\bin\patch.exe"
|
||||
|
||||
if defined DEBUG (
|
||||
echo DEBUG=%DEBUG%
|
||||
) else (
|
||||
set DEBUG=1
|
||||
)
|
||||
|
||||
pushd %~dp0
|
||||
set "SCRIPTDIR=%CD%"
|
||||
cd ..\..\dep\msvc
|
||||
mkdir deps-build
|
||||
cd deps-build || goto error
|
||||
set "BUILDDIR=%CD%"
|
||||
cd ..
|
||||
mkdir deps-x64
|
||||
cd deps-x64 || goto error
|
||||
set "INSTALLDIR=%CD%"
|
||||
popd
|
||||
|
||||
echo SCRIPTDIR=%SCRIPTDIR%
|
||||
echo BUILDDIR=%BUILDDIR%
|
||||
echo INSTALLDIR=%INSTALLDIR%
|
||||
|
||||
set "PATH=%PATH%;%INSTALLDIR%\bin"
|
||||
|
||||
cd "%BUILDDIR%"
|
||||
|
||||
REM Read each line from the file and set as environment variable
|
||||
for /f "usebackq tokens=1,2 delims==" %%a in ("%SCRIPTDIR%\versions") do (
|
||||
if not "%%a"=="" if not "%%b"=="" (
|
||||
set "%%a=%%b"
|
||||
rem echo Set %%a=%%b
|
||||
)
|
||||
)
|
||||
|
||||
call :downloadfile "brotli-%BROTLI%.tar.gz" "https://github.com/google/brotli/archive/refs/tags/v%BROTLI%.tar.gz" "%BROTLI_GZ_HASH%" || goto error
|
||||
call :downloadfile "freetype-%FREETYPE%.tar.gz" "https://download.savannah.gnu.org/releases/freetype/freetype-%FREETYPE%.tar.gz" "%FREETYPE_GZ_HASH%" || goto error
|
||||
call :downloadfile "harfbuzz-%HARFBUZZ%.tar.gz" "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/%HARFBUZZ%.tar.gz" "%HARFBUZZ_GZ_HASH%" || goto error
|
||||
call :downloadfile "libpng-%LIBPNG%.tar.gz" "https://download.sourceforge.net/libpng/libpng-%LIBPNG%.tar.gz" "%LIBPNG_GZ_HASH%" || goto error
|
||||
call :downloadfile "libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/%LIBJPEGTURBO%/libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" "%LIBJPEGTURBO_GZ_HASH%" || goto error
|
||||
call :downloadfile "SDL3-%SDL3%.zip" "https://github.com/libsdl-org/SDL/releases/download/release-%SDL3%/SDL3-%SDL3%.zip" "%SDL3_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qtbase-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtbase-everywhere-src-%QT%.zip" "%QTBASE_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qtimageformats-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtimageformats-everywhere-src-%QT%.zip" "%QTIMAGEFORMATS_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qtsvg-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qtsvg-everywhere-src-%QT%.zip" "%QTSVG_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qttools-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttools-everywhere-src-%QT%.zip" "%QTTOOLS_ZIP_HASH%" || goto error
|
||||
call :downloadfile "qttranslations-everywhere-src-%QT%.zip" "https://download.qt.io/official_releases/qt/%QTMINOR%/%QT%/submodules/qttranslations-everywhere-src-%QT%.zip" "%QTTRANSLATIONS_ZIP_HASH%" || goto error
|
||||
call :downloadfile "libwebp-%LIBWEBP%.tar.gz" "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-%LIBWEBP%.tar.gz" "%LIBWEBP_GZ_HASH%" || goto error
|
||||
call :downloadfile "libzip-%LIBZIP%.tar.gz" "https://github.com/nih-at/libzip/releases/download/v%LIBZIP%/libzip-%LIBZIP%.tar.gz" "%LIBZIP_GZ_HASH%" || goto error
|
||||
call :downloadfile "zlib-ng-%ZLIBNG%.tar.gz" "https://github.com/zlib-ng/zlib-ng/archive/refs/tags/%ZLIBNG%.tar.gz" "%ZLIBNG_GZ_HASH%" || goto error
|
||||
call :downloadfile "zstd-%ZSTD%.tar.gz" "https://github.com/facebook/zstd/releases/download/v%ZSTD%/zstd-%ZSTD%.tar.gz" "%ZSTD_GZ_HASH%" || goto error
|
||||
|
||||
call :downloadfile "cpuinfo-%CPUINFO_COMMIT%.tar.gz" "https://github.com/stenzek/cpuinfo/archive/%CPUINFO_COMMIT%.tar.gz" "%CPUINFO_GZ_HASH%" || goto error
|
||||
call :downloadfile "discord-rpc-%DISCORD_RPC_COMMIT%.tar.gz" "https://github.com/stenzek/discord-rpc/archive/%DISCORD_RPC_COMMIT%.tar.gz" "%DISCORD_RPC_GZ_HASH%" || goto error
|
||||
call :downloadfile "plutosvg-%PLUTOSVG_COMMIT%.tar.gz" "https://github.com/stenzek/plutosvg/archive/%PLUTOSVG_COMMIT%.tar.gz" "%PLUTOSVG_GZ_HASH%" || goto error
|
||||
call :downloadfile "shaderc-%SHADERC_COMMIT%.tar.gz" "https://github.com/stenzek/shaderc/archive/%SHADERC_COMMIT%.tar.gz" "%SHADERC_GZ_HASH%" || goto error
|
||||
call :downloadfile "soundtouch-%SOUNDTOUCH_COMMIT%.tar.gz" "https://github.com/stenzek/soundtouch/archive/%SOUNDTOUCH_COMMIT%.tar.gz" "%SOUNDTOUCH_GZ_HASH%" || goto error
|
||||
call :downloadfile "dxcompiler-%DXCOMPILER_VERSION%.zip" "https://www.nuget.org/api/v2/package/Microsoft.Direct3D.DXC/%DXCOMPILER_VERSION%" "%DXCOMPILER_ZIP_HASH%" || goto error
|
||||
|
||||
if not exist SPIRV-Cross\ (
|
||||
git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b %SPIRV_CROSS_TAG% --depth 1 || goto error
|
||||
pushd SPIRV-Cross
|
||||
git reset --hard %SPIRV_CROSS_SHA% || goto error
|
||||
popd
|
||||
)
|
||||
|
||||
if %DEBUG%==1 (
|
||||
echo Building debug and release libraries...
|
||||
) else (
|
||||
echo Building release libraries...
|
||||
)
|
||||
|
||||
set FORCEPDB=-DCMAKE_EXE_LINKER_FLAGS_RELEASE="/DEBUG" -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="/DEBUG" -DCMAKE_MODULE_LINKER_FLAGS_RELEASE="/DEBUG"
|
||||
|
||||
echo Building zlib-ng...
|
||||
rmdir /S /Q "zlib-ng-%ZLIBNG%"
|
||||
tar -xf "zlib-ng-%ZLIBNG%.tar.gz" || goto error
|
||||
cd "zlib-ng-%ZLIBNG%" || goto error
|
||||
rem BUILD_SHARED_LIBS deliberately ommitted so that both shared and static libraries are built, we need static for the updater.
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DZLIB_COMPAT=ON -DBUILD_TESTING=OFF -DWITH_BENCHMARK_APPS=OFF -DWITH_GTEST=OFF -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "zlib-ng-%ZLIBNG%"
|
||||
|
||||
echo Building libpng...
|
||||
rmdir /S /Q "libpng-%LIBPNG%"
|
||||
tar -xf "libpng-%LIBPNG%.tar.gz" || goto error
|
||||
cd "libpng-%LIBPNG%" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\libpng-1.6.54-apng.patch" || goto error
|
||||
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 || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "libpng-%LIBPNG%"
|
||||
|
||||
echo Building libjpeg...
|
||||
rmdir /S /Q "libjpeg-turbo-%LIBJPEGTURBO%"
|
||||
tar -xf "libjpeg-turbo-%LIBJPEGTURBO%.tar.gz" || goto error
|
||||
cd "libjpeg-turbo-%LIBJPEGTURBO%" || goto error
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DENABLE_STATIC=OFF -DENABLE_SHARED=ON -DWITH_TESTS=OFF -DWITH_TOOLS=OFF -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "libjpeg-turbo-%LIBJPEGTURBO%"
|
||||
|
||||
echo Building Zstandard...
|
||||
rmdir /S /Q "zstd-%ZSTD%"
|
||||
tar -xf "zstd-%ZSTD%.tar.gz" --exclude "zstd-%ZSTD%/tests/cli-tests/*" || goto error
|
||||
cd "zstd-%ZSTD%"
|
||||
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
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "zstd-%ZSTD%"
|
||||
|
||||
echo Building Brotli...
|
||||
rmdir /S /Q "brotli-%BROTLI%"
|
||||
tar -xf "brotli-%BROTLI%.tar.gz" || goto error
|
||||
cd "brotli-%BROTLI%" || goto error
|
||||
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=OFF -DBROTLI_BUILD_TOOLS=OFF -DBROTLI_DISABLE_TESTS=ON -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "brotli-%BROTLI%"
|
||||
|
||||
echo Building WebP...
|
||||
rmdir /S /Q "libwebp-%LIBWEBP%"
|
||||
tar -xf "libwebp-%LIBWEBP%.tar.gz" || goto error
|
||||
cd "libwebp-%LIBWEBP%" || goto error
|
||||
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF -DWEBP_BUILD_GIF2WEBP=OFF -DWEBP_BUILD_IMG2WEBP=OFF -DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF -DWEBP_BUILD_WEBPMUX=OFF -DWEBP_BUILD_EXTRAS=OFF -DBUILD_SHARED_LIBS=ON -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "libwebp-%LIBWEBP%"
|
||||
|
||||
echo Building libzip...
|
||||
rmdir /S /Q "libzip-%LIBZIP%"
|
||||
tar -xf "libzip-%LIBZIP%.tar.gz" || goto error
|
||||
cd "libzip-%LIBZIP%" || goto error
|
||||
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF -DENABLE_WINDOWS_CRYPTO=OFF -DENABLE_BZIP2=OFF -DENABLE_LZMA=OFF -DENABLE_ZSTD=ON -DBUILD_SHARED_LIBS=ON -DLIBZIP_DO_INSTALL=ON -DBUILD_TOOLS=OFF -DBUILD_REGRESS=OFF -DBUILD_OSSFUZZ=OFF -DBUILD_EXAMPLES=OFF -DBUILD_DOC=OFF -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "libzip-%LIBZIP%"
|
||||
|
||||
echo Building FreeType...
|
||||
rmdir /S /Q "freetype-%FREETYPE%"
|
||||
tar -xf "freetype-%FREETYPE%.tar.gz" || goto error
|
||||
cd "freetype-%FREETYPE%" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\freetype-harfbuzz-soname.patch" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\freetype-static-brotli.patch" || goto error
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DFT_REQUIRE_ZLIB=TRUE -DFT_REQUIRE_PNG=TRUE -DFT_DISABLE_BZIP2=TRUE -DFT_REQUIRE_BROTLI=TRUE -DFT_DYNAMIC_HARFBUZZ=TRUE -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "freetype-%FREETYPE%"
|
||||
|
||||
echo Building HarfBuzz...
|
||||
rmdir /S /Q "harfbuzz-%HARFBUZZ%"
|
||||
tar -xf "harfbuzz-%HARFBUZZ%.tar.gz" || goto error
|
||||
cd "harfbuzz-%HARFBUZZ%" || goto error
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DHB_BUILD_UTILS=OFF -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "harfbuzz-%HARFBUZZ%"
|
||||
|
||||
echo Building SDL...
|
||||
rmdir /S /Q "SDL3-%SDL3%"
|
||||
%SEVENZIP% x "SDL3-%SDL3%.zip" || goto error
|
||||
cd "SDL3-%SDL3%" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\sdl3-ezfrd64-dll.patch" || goto error
|
||||
cmake -B build -DCMAKE_BUILD_TYPE=Release %FORCEPDB% -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
copy build\SDL3.pdb "%INSTALLDIR%\bin" || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "SDL3-%SDL3%"
|
||||
|
||||
if %DEBUG%==1 (
|
||||
set QTBUILDSPEC=-DCMAKE_CONFIGURATION_TYPES="Release;Debug" -G "Ninja Multi-Config"
|
||||
) else (
|
||||
set QTBUILDSPEC=-DCMAKE_BUILD_TYPE=Release -G Ninja
|
||||
)
|
||||
|
||||
echo Building Qt base...
|
||||
rmdir /S /Q "qtbase-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qtbase-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qtbase-everywhere-src-%QT%" || goto error
|
||||
|
||||
rem Disable the PCRE2 JIT, it doesn't properly verify AVX2 support.
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\qtbase-disable-pcre2-jit.patch" || goto error
|
||||
|
||||
rem Stop checkboxes in Fusion theme having such bright outlines.
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\qtbase-fusion-style.patch" || goto error
|
||||
|
||||
cmake -B build -DFEATURE_sql=OFF -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" %FORCEPDB% -DQT_GENERATE_SBOM=OFF -DINPUT_ssl=yes -DINPUT_openssl=no -DFEATURE_system_png=ON -DFEATURE_system_jpeg=ON -DFEATURE_system_zlib=ON -DFEATURE_system_freetype=ON -DFEATURE_system_harfbuzz=ON -DFEATURE_brotli=OFF %QTBUILDSPEC% || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "qtbase-everywhere-src-%QT%"
|
||||
|
||||
echo Building Qt SVG...
|
||||
rmdir /S /Q "qtsvg-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qtsvg-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qtsvg-everywhere-src-%QT%" || goto error
|
||||
mkdir build || goto error
|
||||
cd build || goto error
|
||||
call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DQT_GENERATE_SBOM=OFF || goto error
|
||||
cmake --build . --parallel || goto error
|
||||
ninja install || goto error
|
||||
cd ..\.. || goto error
|
||||
rmdir /S /Q "qtsvg-everywhere-src-%QT%"
|
||||
|
||||
echo Building Qt Image Formats...
|
||||
rmdir /S /Q "qtimageformats-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qtimageformats-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qtimageformats-everywhere-src-%QT%" || goto error
|
||||
mkdir build || goto error
|
||||
cd build || goto error
|
||||
call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DQT_GENERATE_SBOM=OFF -DFEATURE_system_webp=ON || goto error
|
||||
cmake --build . --parallel || goto error
|
||||
ninja install || goto error
|
||||
cd ..\.. || goto error
|
||||
rmdir /S /Q "qtimageformats-everywhere-src-%QT%"
|
||||
|
||||
echo Building Qt Tools...
|
||||
rmdir /S /Q "qttools-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qttools-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qttools-everywhere-src-%QT%" || goto error
|
||||
%PATCH% -p1 < "%SCRIPTDIR%\qttools-linguist-without-quick.patch" || goto error
|
||||
mkdir build || goto error
|
||||
cd build || goto error
|
||||
call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DQT_GENERATE_SBOM=OFF -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=ON -DFEATURE_kmap2qmap=OFF -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF || goto error
|
||||
cmake --build . --parallel || goto error
|
||||
ninja install || goto error
|
||||
cd ..\.. || goto error
|
||||
rmdir /S /Q "qttools-everywhere-src-%QT%"
|
||||
|
||||
echo Building Qt Translations...
|
||||
rmdir /S /Q "qttranslations-everywhere-src-%QT%"
|
||||
%SEVENZIP% x "qttranslations-everywhere-src-%QT%.zip" || goto error
|
||||
cd "qttranslations-everywhere-src-%QT%" || goto error
|
||||
mkdir build || goto error
|
||||
cd build || goto error
|
||||
call "%INSTALLDIR%\bin\qt-configure-module.bat" .. -- %FORCEPDB% -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DQT_GENERATE_SBOM=OFF|| goto error
|
||||
cmake --build . --parallel || goto error
|
||||
ninja install || goto error
|
||||
cd ..\.. || goto error
|
||||
rmdir /S /Q "qttranslations-everywhere-src-%QT%"
|
||||
|
||||
echo Building shaderc...
|
||||
rmdir /S /Q "shaderc-%SHADERC_COMMIT%"
|
||||
tar -xf "shaderc-%SHADERC_COMMIT%.tar.gz" || goto error
|
||||
cd "shaderc-%SHADERC_COMMIT%" || goto error
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_EXECUTABLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -DSHADERC_ENABLE_SHARED_CRT=ON -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "shaderc-%SHADERC_COMMIT%"
|
||||
|
||||
echo Building SPIRV-Cross...
|
||||
cd SPIRV-Cross || goto error
|
||||
rmdir /S /Q "build"
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=ON -DSPIRV_CROSS_ENABLE_MSL=OFF -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build -G Ninja
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
rmdir /S /Q "build"
|
||||
cd .. || goto error
|
||||
|
||||
echo Building cpuinfo...
|
||||
rmdir /S /Q "cpuinfo-%CPUINFO_COMMIT%"
|
||||
tar -xf "cpuinfo-%CPUINFO_COMMIT%.tar.gz" || goto error
|
||||
cd "cpuinfo-%CPUINFO_COMMIT%" || goto error
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build -G Ninja
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "cpuinfo-%CPUINFO_COMMIT%"
|
||||
|
||||
echo Building discord-rpc...
|
||||
rmdir /S /Q "discord-rpc-%DISCORD_RPC_COMMIT%"
|
||||
tar -xf "discord-rpc-%DISCORD_RPC_COMMIT%.tar.gz" || goto error
|
||||
cd "discord-rpc-%DISCORD_RPC_COMMIT%" || goto error
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DBUILD_SHARED_LIBS=ON -B build -G Ninja
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "discord-rpc-%DISCORD_RPC_COMMIT%"
|
||||
|
||||
echo Building plutosvg...
|
||||
rmdir /S /Q "plutosvg-%PLUTOSVG_COMMIT%"
|
||||
tar -xf "plutosvg-%PLUTOSVG_COMMIT%.tar.gz" || goto error
|
||||
cd "plutosvg-%PLUTOSVG_COMMIT%" || goto error
|
||||
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
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "plutosvg-%PLUTOSVG_COMMIT%"
|
||||
|
||||
echo Building soundtouch...
|
||||
rmdir /S /Q "soundtouch-%SOUNDTOUCH_COMMIT%"
|
||||
tar -xf "soundtouch-%SOUNDTOUCH_COMMIT%.tar.gz" || goto error
|
||||
cd "soundtouch-%SOUNDTOUCH_COMMIT%" || goto error
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -B build -G Ninja || goto error
|
||||
cmake --build build --parallel || goto error
|
||||
ninja -C build install || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "soundtouch-%SOUNDTOUCH_COMMIT%"
|
||||
|
||||
rem These should already exist, but just in case.
|
||||
mkdir "%INSTALLDIR%\bin"
|
||||
mkdir "%INSTALLDIR%\include"
|
||||
mkdir "%INSTALLDIR%\lib"
|
||||
|
||||
echo Extracting DXCompiler...
|
||||
rmdir /S /Q "dxcompiler-%DXCOMPILER_VERSION%"
|
||||
mkdir "dxcompiler-%DXCOMPILER_VERSION%"
|
||||
cd "dxcompiler-%DXCOMPILER_VERSION%" || goto error
|
||||
%SEVENZIP% x "..\dxcompiler-%DXCOMPILER_VERSION%.zip" || goto error
|
||||
copy build\native\include\* "%INSTALLDIR%\include" || goto error
|
||||
copy build\native\bin\x64\*.dll "%INSTALLDIR%\bin" || goto error
|
||||
copy build\native\lib\x64\*.lib "%INSTALLDIR%\lib" || goto error
|
||||
cd .. || goto error
|
||||
rmdir /S /Q "dxcompiler-%DXCOMPILER_VERSION%"
|
||||
|
||||
echo Cleaning up...
|
||||
cd ..
|
||||
rd /S /Q deps-build
|
||||
|
||||
echo Exiting with success.
|
||||
exit 0
|
||||
|
||||
:error
|
||||
echo Failed with error #%errorlevel%.
|
||||
pause
|
||||
exit %errorlevel%
|
||||
|
||||
:downloadfile
|
||||
if not exist "%~1" (
|
||||
echo Downloading %~1 from %~2...
|
||||
curl -L -o "%~1" "%~2" || goto error
|
||||
)
|
||||
|
||||
rem based on https://gist.github.com/gsscoder/e22daefaff9b5d8ac16afb070f1a7971
|
||||
set idx=0
|
||||
for /f %%F in ('certutil -hashfile "%~1" SHA256') do (
|
||||
set "out!idx!=%%F"
|
||||
set /a idx += 1
|
||||
)
|
||||
set filechecksum=%out1%
|
||||
|
||||
if /i %~3==%filechecksum% (
|
||||
echo Validated %~1.
|
||||
exit /B 0
|
||||
) else (
|
||||
echo Expected %~3 got %filechecksum%.
|
||||
exit /B 1
|
||||
)
|
||||
@@ -1,356 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$#" -lt 1 ]; then
|
||||
echo "Syntax: $0 <output director>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for arg in "$@"; do
|
||||
if [ "$arg" == "-skip-download" ]; then
|
||||
echo "Not downloading sources."
|
||||
SKIP_DOWNLOAD=true
|
||||
shift
|
||||
elif [ "$arg" == "-skip-cleanup" ]; then
|
||||
echo "Not removing build directory."
|
||||
SKIP_CLEANUP=true
|
||||
shift
|
||||
elif [ "$arg" == "" ]; then
|
||||
# Eat empty args.
|
||||
shift
|
||||
fi
|
||||
done
|
||||
|
||||
SCRIPTDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
|
||||
NPROCS="$(getconf _NPROCESSORS_ONLN)"
|
||||
INSTALLDIR="$1"
|
||||
if [ "${INSTALLDIR:0:1}" != "/" ]; then
|
||||
INSTALLDIR="$PWD/$INSTALLDIR"
|
||||
fi
|
||||
|
||||
mkdir -p deps-build
|
||||
cd deps-build
|
||||
|
||||
DEPSINSTALLDIR="$PWD/ffmpeg-deps"
|
||||
echo "Installation directory is $INSTALLDIR"
|
||||
echo "FFmpeg dependencies directory is $DEPSINSTALLDIR"
|
||||
|
||||
source "$SCRIPTDIR/versions"
|
||||
|
||||
LAME=3.100
|
||||
LIBVPX=1.15.2
|
||||
FDK_AAC=0fc0e0e0b89de3becd5f099eae725f13eeecc0d1
|
||||
LIBAOM=d772e334cc724105040382a977ebb10dfd393293
|
||||
LIBOGG=1.3.5
|
||||
LIBVORBIS=1.3.7
|
||||
LIBTHEORA=1.1.1
|
||||
FLAC=1.5.0
|
||||
SPEEX=1.2.0
|
||||
AMF=1.4.36
|
||||
OPUS=1.5.2
|
||||
SVT_AV1=3.1.2
|
||||
GLSLANG=15.4.0
|
||||
VULKAN_HEADERS=1.4.329
|
||||
|
||||
# Encoder list from freedesktop SDK, which apparently came from Fedora.
|
||||
# Disabled list: av1_qsv h264_qsv hevc_qsv mjpeg_qsv mpeg2_qsv vc1_qsv vp8_qsv vp9_qsv
|
||||
# av1_nvenc h264_nvenc hevc_nvenc libxvid libtwolame libopenh264 libgsm libgsm_ms
|
||||
# ilbc libilbc libopencore_amrnb libopenjpeg libvo_amrwbenc libjxl libcodec2 hap librav1e
|
||||
FFMPEG_ENCODER_LIST=""\
|
||||
"a64multi a64multi5 aac libfdk_aac ac3 adpcm_adx "\
|
||||
"adpcm_argo adpcm_g722 adpcm_g726 adpcm_g726le adpcm_ima_alp adpcm_ima_amv "\
|
||||
"adpcm_ima_apm adpcm_ima_qt adpcm_ima_ssi adpcm_ima_wav adpcm_ima_ws adpcm_ms "\
|
||||
"adpcm_swf adpcm_yamaha alac alias_pix amv anull "\
|
||||
"apng ass asv1 asv2 av1_amf "\
|
||||
"av1_vaapi av1_vulkan ayuv bitpacked bmp cinepak "\
|
||||
"cljr dca dfpwm dnxhd dpx dvbsub "\
|
||||
"dvdsub dvvideo exr ffv1 ffv1_vulkan ffvhuff flac "\
|
||||
"flashsv flashsv2 flv g723_1 gif h261 "\
|
||||
"h263 h263_v4l2m2m h263p h264_amf "\
|
||||
"h264_v4l2m2m h264_vaapi h264_vulkan hdr hevc_amf "\
|
||||
"hevc_v4l2m2m hevc_vaapi hevc_vulkan huffyuv jpegls "\
|
||||
"jpeg2000 libaom libaom_av1 libmp3lame "\
|
||||
"libopus libschroedinger libspeex libsvtav1 libtheora "\
|
||||
"libvorbis libvpx_vp8 libvpx_vp9 libwebp "\
|
||||
"libwebp_anim mjpeg mjpeg_vaapi mlp "\
|
||||
"mp2 mp2fixed mpeg1video mpeg2video mpeg2_vaapi "\
|
||||
"mpeg4 mpeg4_v4l2m2m msmpeg4v2 msmpeg4v3 msvideo1 nellymoser "\
|
||||
"opus pam pbm pcm_alaw pcm_f32be pcm_f32le "\
|
||||
"pcm_f64be pcm_f64le pcm_mulaw pcm_s16be pcm_s16be_planar pcm_s16le "\
|
||||
"pcm_s16le_planar pcm_s24be pcm_s24le pcm_s24le_planar pcm_s32be pcm_s32le "\
|
||||
"pcm_s32le_planar pcm_s8 pcm_s8_planar pcm_u16be pcm_u16le pcm_u24be "\
|
||||
"pcm_u24le pcm_u32be pcm_u32le pcm_u8 pcx pgm "\
|
||||
"pgmyuv phm png ppm qoi qtrle "\
|
||||
"r10k r210 ra_144 rawvideo roq roq_dpcm "\
|
||||
"rpza rv10 rv20 s302m sbc sgi "\
|
||||
"smc snow sonic sonic_ls speedhq srt "\
|
||||
"ssa subrip sunrast svq1 targa text "\
|
||||
"tiff truehd tta ttml utvideo v210 "\
|
||||
"v308 v408 v410 vc1_v4l2m2m vc2 "\
|
||||
"vnull vorbis vp8_v4l2m2m vp8_vaapi "\
|
||||
"vp9_vaapi wavpack wbmp webvtt wmav1 wmav2 "\
|
||||
"wmv1 wmv2 wrapped_avframe xbm xface xsub "\
|
||||
"xwd y41p yuv4 zlib zmbv"
|
||||
FFMPEG_ENCODERS=""
|
||||
for encoder in $FFMPEG_ENCODER_LIST; do
|
||||
if [ -z "$FFMPEG_ENCODERS" ]; then
|
||||
FFMPEG_ENCODERS="--enable-encoder=$encoder"
|
||||
else
|
||||
FFMPEG_ENCODERS="$FFMPEG_ENCODERS,$encoder"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$SKIP_DOWNLOAD" != true ]; then
|
||||
if [ ! -f "ffmpeg-$FFMPEG_VERSION.tar.xz" ]; then
|
||||
curl -C - -L -O "https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.xz"
|
||||
fi
|
||||
if [ ! -f "lame-$LAME.tar.gz" ]; then
|
||||
curl -C - -L -o "lame-$LAME.tar.gz" "https://sourceforge.net/projects/lame/files/lame/$LAME/lame-$LAME.tar.gz/download"
|
||||
fi
|
||||
if [ ! -f "libvpx-$LIBVPX.tar.gz" ]; then
|
||||
curl -C - -L -o "libvpx-$LIBVPX.tar.gz" "https://github.com/webmproject/libvpx/archive/refs/tags/v$LIBVPX.tar.gz"
|
||||
fi
|
||||
if [ ! -f "fdk-aac-stripped-$FDK_AAC.tar.gz" ]; then
|
||||
curl -C - -L -o "fdk-aac-stripped-$FDK_AAC.tar.gz" "https://gitlab.freedesktop.org/wtaymans/fdk-aac-stripped/-/archive/$FDK_AAC/fdk-aac-stripped-$FDK_AAC.tar.gz"
|
||||
fi
|
||||
if [ ! -d "aom" ]; then
|
||||
git clone https://aomedia.googlesource.com/aom
|
||||
cd aom
|
||||
git checkout "$LIBAOM"
|
||||
cd ..
|
||||
fi
|
||||
if [ ! -f "libogg-$LIBOGG.tar.gz" ]; then
|
||||
curl -C - -L -O "https://downloads.xiph.org/releases/ogg/libogg-$LIBOGG.tar.gz"
|
||||
fi
|
||||
if [ ! -f "libvorbis-$LIBVORBIS.tar.gz" ]; then
|
||||
curl -C - -L -O "https://github.com/xiph/vorbis/releases/download/v$LIBVORBIS/libvorbis-$LIBVORBIS.tar.gz"
|
||||
fi
|
||||
if [ ! -f "libtheora-$LIBTHEORA.tar.bz2" ]; then
|
||||
curl -C - -L -O "https://downloads.xiph.org/releases/theora/libtheora-$LIBTHEORA.tar.bz2"
|
||||
fi
|
||||
if [ ! -f "flac-$FLAC.tar.xz" ]; then
|
||||
curl -C - -L -O "https://downloads.xiph.org/releases/flac/flac-$FLAC.tar.xz"
|
||||
fi
|
||||
if [ ! -f "speex-$SPEEX.tar.gz" ]; then
|
||||
curl -C - -L -O "https://downloads.xiph.org/releases/speex/speex-$SPEEX.tar.gz"
|
||||
fi
|
||||
if [ ! -f "AMF-headers-v$AMF.tar.gz" ]; then
|
||||
curl -C - -L -O "https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/download/v$AMF/AMF-headers-v$AMF.tar.gz"
|
||||
fi
|
||||
if [ ! -f "opus-$OPUS.tar.gz" ]; then
|
||||
curl -C - -L -O "https://downloads.xiph.org/releases/opus/opus-$OPUS.tar.gz"
|
||||
fi
|
||||
if [ ! -f "SVT-AV1-$SVT_AV1.tar.gz" ]; then
|
||||
curl -C - -L -O "https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v$SVT_AV1/SVT-AV1-$SVT_AV1.tar.gz"
|
||||
fi
|
||||
if [ ! -f "glslang-$GLSLANG.tar.gz" ]; then
|
||||
curl -C - -L -o "glslang-$GLSLANG.tar.gz" "https://github.com/KhronosGroup/glslang/archive/refs/tags/$GLSLANG.tar.gz"
|
||||
fi
|
||||
if [ ! -f "Vulkan-Headers-$VULKAN_HEADERS.tar.gz" ]; then
|
||||
curl -C - -L -o "Vulkan-Headers-$VULKAN_HEADERS.tar.gz" "https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/v$VULKAN_HEADERS.tar.gz"
|
||||
fi
|
||||
fi
|
||||
|
||||
cat > SHASUMS <<EOF
|
||||
$FFMPEG_XZ_HASH ffmpeg-$FFMPEG_VERSION.tar.xz
|
||||
ec07ee21b820a73f5bae224e92fd3c492f52732d4885f0637f48189afdd87564 AMF-headers-v$AMF.tar.gz
|
||||
7322744f239a0d8460fde84e92cca77f2fe9d7e25a213789659df9e86b696b42 fdk-aac-stripped-$FDK_AAC.tar.gz
|
||||
f2c1c76592a82ffff8413ba3c4a1299b6c7ab06c734dee03fd88630485c2b920 flac-$FLAC.tar.xz
|
||||
ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e lame-$LAME.tar.gz
|
||||
0eb4b4b9420a0f51db142ba3f9c64b333f826532dc0f48c6410ae51f4799b664 libogg-$LIBOGG.tar.gz
|
||||
b6ae1ee2fa3d42ac489287d3ec34c5885730b1296f0801ae577a35193d3affbc libtheora-$LIBTHEORA.tar.bz2
|
||||
0e982409a9c3fc82ee06e08205b1355e5c6aa4c36bca58146ef399621b0ce5ab libvorbis-$LIBVORBIS.tar.gz
|
||||
b6ae1ee2fa3d42ac489287d3ec34c5885730b1296f0801ae577a35193d3affbc libtheora-$LIBTHEORA.tar.bz2
|
||||
26fcd3db88045dee380e581862a6ef106f49b74b6396ee95c2993a260b4636aa libvpx-$LIBVPX.tar.gz
|
||||
65c1d2f78b9f2fb20082c38cbe47c951ad5839345876e46941612ee87f9a7ce1 opus-$OPUS.tar.gz
|
||||
eaae8af0ac742dc7d542c9439ac72f1f385ce838392dc849cae4536af9210094 speex-$SPEEX.tar.gz
|
||||
084720e7818cec7cb38d31ab478478b910d643fe5b13fc2cfcbd9da9c9d5c84b SVT-AV1-$SVT_AV1.tar.gz
|
||||
b16c78e7604b9be9f546ee35ad8b6db6f39bbbbfb19e8d038b6fe2ea5bba4ff4 glslang-$GLSLANG.tar.gz
|
||||
7ea67aabccdecc6ef616b4c243f563ac9bca945a63d4f4cca21f1bbcd828b18e Vulkan-Headers-$VULKAN_HEADERS.tar.gz
|
||||
EOF
|
||||
|
||||
shasum -a 256 --check SHASUMS
|
||||
|
||||
export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$INSTALLDIR/lib64/pkgconfig:$DEPSINSTALLDIR/lib/pkgconfig:$DEPSINSTALLDIR/lib64/pkgconfig:$PKG_CONFIG_PATH"
|
||||
|
||||
echo "Building LAME"
|
||||
rm -fr "lame-$LAME"
|
||||
tar xf "lame-$LAME.tar.gz"
|
||||
cd "lame-$LAME"
|
||||
mkdir build
|
||||
cd build
|
||||
../configure --prefix="$DEPSINSTALLDIR" --disable-shared --enable-static --with-pic --disable-frontend
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
|
||||
echo "Building libvpx..."
|
||||
rm -fr "libvpx-$LIBVPX"
|
||||
tar xf "libvpx-$LIBVPX.tar.gz"
|
||||
cd "libvpx-$LIBVPX"
|
||||
mkdir build-ds
|
||||
cd build-ds
|
||||
../configure --prefix="$DEPSINSTALLDIR" --disable-shared --enable-static --enable-pic --disable-examples --disable-tools --disable-docs --enable-vp8 --enable-vp9
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
|
||||
echo "Building fdk-aac..."
|
||||
rm -fr "fdk-aac-stripped-$FDK_AAC"
|
||||
tar xf "fdk-aac-stripped-$FDK_AAC.tar.gz"
|
||||
cd "fdk-aac-stripped-$FDK_AAC"
|
||||
./autogen.sh
|
||||
mkdir build
|
||||
cd build
|
||||
../configure --prefix="$DEPSINSTALLDIR" --enable-static --disable-shared --with-pic
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
|
||||
echo "Building libaom..."
|
||||
cd aom
|
||||
rm -fr build-ds
|
||||
cmake -B build-ds -G Ninja -DCMAKE_INSTALL_PREFIX="$DEPSINSTALLDIR" -DCMAKE_PREFIX_PATH="$DEPSINSTALLDIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DENABLE_DOCS=OFF -DENABLE_EXAMPLES=OFF -DENABLE_TESTDATA=OFF -DENABLE_TESTS=OFF -DENABLE_TOOLS=OFF
|
||||
cmake --build build-ds --parallel
|
||||
cmake --install build-ds
|
||||
cd ..
|
||||
|
||||
echo "Building libogg..."
|
||||
rm -fr "libogg-$LIBOGG"
|
||||
tar xf "libogg-$LIBOGG.tar.gz"
|
||||
cd "libogg-$LIBOGG"
|
||||
mkdir build-ds
|
||||
cd build-ds
|
||||
../configure --prefix="$DEPSINSTALLDIR" --enable-static --disable-shared --with-pic
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
|
||||
echo "Building libvorbis..."
|
||||
rm -fr "libvorbis-$LIBVORBIS"
|
||||
tar xf "libvorbis-$LIBVORBIS.tar.gz"
|
||||
cd "libvorbis-$LIBVORBIS"
|
||||
mkdir build-ds
|
||||
cd build-ds
|
||||
../configure --prefix="$DEPSINSTALLDIR" --enable-static --disable-shared --with-pic
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
|
||||
echo "Building libtheora..."
|
||||
rm -fr "libtheora-$LIBTHEORA"
|
||||
tar xf "libtheora-$LIBTHEORA.tar.bz2"
|
||||
cd "libtheora-$LIBTHEORA"
|
||||
mkdir build-ds
|
||||
cd build-ds
|
||||
../configure --prefix="$DEPSINSTALLDIR" --enable-static --disable-shared --with-pic --disable-examples --disable-sdltest --disable-vorbistest --disable-oggtest
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
|
||||
echo "Building speex..."
|
||||
rm -fr "speex-$SPEEX"
|
||||
tar xf "speex-$SPEEX.tar.gz"
|
||||
cd "speex-$SPEEX"
|
||||
mkdir build-ds
|
||||
cd build-ds
|
||||
../configure --prefix="$DEPSINSTALLDIR" --enable-static --disable-shared --with-pic
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
|
||||
echo "Building flac..."
|
||||
rm -fr "flac-$FLAC"
|
||||
tar xf "flac-$FLAC.tar.xz"
|
||||
cd "flac-$FLAC"
|
||||
mkdir build-ds
|
||||
cd build-ds
|
||||
../configure --prefix="$DEPSINSTALLDIR" --enable-static --disable-shared --with-pic --disable-examples --disable-programs
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
|
||||
echo "Installing AMF..."
|
||||
rm -fr "AMF"
|
||||
tar xf "AMF-headers-v$AMF.tar.gz"
|
||||
cd "amf-headers-v$AMF/AMF"
|
||||
mkdir -p "$DEPSINSTALLDIR/include/AMF"
|
||||
cp -a core components "$DEPSINSTALLDIR/include/AMF"
|
||||
cd ../..
|
||||
|
||||
echo "Building libopus..."
|
||||
rm -fr "opus-$OPUS"
|
||||
tar xf "opus-$OPUS.tar.gz"
|
||||
cd "opus-$OPUS"
|
||||
mkdir build
|
||||
cd build
|
||||
../configure --prefix="$DEPSINSTALLDIR" --enable-static --disable-shared --with-pic --disable-doc
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
cd ../..
|
||||
|
||||
echo "Building SVT-AV1..."
|
||||
rm -fr SVT-AV1-v$SVT_AV1-*
|
||||
tar xf "SVT-AV1-$SVT_AV1.tar.gz"
|
||||
cd SVT-AV1-v$SVT_AV1-*
|
||||
cmake -B build-ds -G Ninja -DCMAKE_INSTALL_PREFIX="$DEPSINSTALLDIR" -DCMAKE_PREFIX_PATH="$DEPSINSTALLDIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF
|
||||
cmake --build build-ds --parallel
|
||||
cmake --install build-ds
|
||||
cd ..
|
||||
|
||||
echo "Building Vulkan-Headers..."
|
||||
rm -fr "Vulkan-Headers-$VULKAN_HEADERS"
|
||||
tar xf "Vulkan-Headers-$VULKAN_HEADERS.tar.gz"
|
||||
cd "Vulkan-Headers-$VULKAN_HEADERS"
|
||||
cmake -B build-ds -G Ninja -DCMAKE_INSTALL_PREFIX="$DEPSINSTALLDIR" -DCMAKE_PREFIX_PATH="$DEPSINSTALLDIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF
|
||||
cmake --build build-ds --parallel
|
||||
cmake --install build-ds
|
||||
cd ..
|
||||
|
||||
echo "Building glslang..."
|
||||
rm -fr "glslang-$GLSLANG"
|
||||
tar xf "glslang-$GLSLANG.tar.gz"
|
||||
cd "glslang-$GLSLANG"
|
||||
./update_glslang_sources.py
|
||||
cmake -B build-ds -G Ninja -DCMAKE_INSTALL_PREFIX="$DEPSINSTALLDIR" -DCMAKE_PREFIX_PATH="$DEPSINSTALLDIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DGLSLANG_TESTS=OFF
|
||||
cmake --build build-ds --parallel
|
||||
cmake --install build-ds
|
||||
cd ..
|
||||
|
||||
echo "Building ffmpeg..."
|
||||
rm -fr "ffmpeg-$FFMPEG_VERSION"
|
||||
tar xf "ffmpeg-$FFMPEG_VERSION.tar.xz"
|
||||
cd "ffmpeg-$FFMPEG_VERSION"
|
||||
mkdir build
|
||||
cd build
|
||||
../configure --prefix="$INSTALLDIR" --disable-static --enable-shared \
|
||||
--pkg-config-flags="--static" \
|
||||
--extra-cflags="-I$DEPSINSTALLDIR/include" \
|
||||
--extra-ldflags="-L$DEPSINSTALLDIR/lib" --extra-ldflags="-L$DEPSINSTALLDIR/lib64" \
|
||||
--extra-ldsoflags="-Wl,-rpath,XORIGIN" \
|
||||
--disable-all --disable-autodetect --enable-libmp3lame --enable-libvpx --enable-zlib --enable-libwebp \
|
||||
--enable-libfdk-aac --enable-libaom --enable-libvorbis --enable-libtheora --enable-libspeex \
|
||||
--enable-v4l2-m2m --enable-vaapi --enable-amf --enable-libopus --enable-libsvtav1 --enable-vulkan --enable-libglslang \
|
||||
--enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale \
|
||||
--enable-muxer=avi,matroska,mov,mp3,mp4,wav \
|
||||
--enable-protocol=file \
|
||||
$FFMPEG_ENCODERS
|
||||
|
||||
make -j "$NPROCS"
|
||||
make install
|
||||
|
||||
# Fix up rpath to point to current directory.
|
||||
find "$INSTALLDIR" -name 'libavcodec.so' -exec patchelf --set-rpath '$ORIGIN' {} \;
|
||||
find "$INSTALLDIR" -name 'libavformat.so' -exec patchelf --set-rpath '$ORIGIN' {} \;
|
||||
find "$INSTALLDIR" -name 'libavutil.so' -exec patchelf --set-rpath '$ORIGIN' {} \;
|
||||
find "$INSTALLDIR" -name 'libswresample.so' -exec patchelf --set-rpath '$ORIGIN' {} \;
|
||||
find "$INSTALLDIR" -name 'libswscale.so' -exec patchelf --set-rpath '$ORIGIN' {} \;
|
||||
|
||||
cd ../..
|
||||
|
||||
if [ "$SKIP_CLEANUP" != true ]; then
|
||||
echo "Cleaning up..."
|
||||
cd ..
|
||||
rm -fr deps-build
|
||||
fi
|
||||
@@ -1,4 +0,0 @@
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_SYSTEM_VERSION 10)
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm64)
|
||||
@@ -1,18 +0,0 @@
|
||||
--- freetype-2.14.1/src/autofit/ft-hb.c 2025-09-24 17:27:12.271362737 +1000
|
||||
+++ freetype-2.14.1/src/autofit/ft-hb.c 2025-09-24 17:27:22.590123789 +1000
|
||||
@@ -33,12 +33,12 @@
|
||||
|
||||
#ifndef FT_LIBHARFBUZZ
|
||||
# ifdef _WIN32
|
||||
-# define FT_LIBHARFBUZZ "libharfbuzz-0.dll"
|
||||
+# define FT_LIBHARFBUZZ "libharfbuzz.dll"
|
||||
# else
|
||||
# ifdef __APPLE__
|
||||
-# define FT_LIBHARFBUZZ "libharfbuzz.0.dylib"
|
||||
+# define FT_LIBHARFBUZZ "libharfbuzz.dylib"
|
||||
# else
|
||||
-# define FT_LIBHARFBUZZ "libharfbuzz.so.0"
|
||||
+# define FT_LIBHARFBUZZ "libharfbuzz.so"
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
@@ -1,46 +0,0 @@
|
||||
--- freetype-2.14.1/CMakeLists.txt 2025-09-11 04:12:24.000000000 -0700
|
||||
+++ freetype-2.14.1/CMakeLists.txt 2025-12-25 21:49:45.733862900 -0800
|
||||
@@ -577,7 +577,7 @@
|
||||
list(APPEND PKGCONFIG_REQUIRES_PRIVATE "harfbuzz >= ${HARFBUZZ_MIN_VERSION}")
|
||||
endif ()
|
||||
if (BROTLIDEC_FOUND)
|
||||
- target_link_libraries(freetype PRIVATE ${BROTLIDEC_LIBRARIES})
|
||||
+ target_link_libraries(freetype PRIVATE ${BROTLIDEC_LIBRARIES} ${BROTLICOMMON_LIBRARIES})
|
||||
target_compile_definitions(freetype PRIVATE ${BROTLIDEC_DEFINITIONS})
|
||||
target_include_directories(freetype PRIVATE ${BROTLIDEC_INCLUDE_DIRS})
|
||||
list(APPEND PKGCONFIG_REQUIRES_PRIVATE "libbrotlidec")
|
||||
--- freetype-2.14.1/builds/cmake/FindBrotliDec.cmake 2025-09-07 19:48:18.000000000 -0700
|
||||
+++ freetype-2.14.1/builds/cmake/FindBrotliDec.cmake 2025-12-25 21:48:38.433700400 -0800
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
find_package(PkgConfig QUIET)
|
||||
|
||||
-pkg_check_modules(PC_BROTLIDEC QUIET libbrotlidec)
|
||||
+pkg_check_modules(PC_BROTLIDEC QUIET libbrotlidec libbrotlicommon)
|
||||
|
||||
if (PC_BROTLIDEC_VERSION)
|
||||
set(BROTLIDEC_VERSION "${PC_BROTLIDEC_VERSION}")
|
||||
@@ -40,10 +40,22 @@
|
||||
${PC_BROTLIDEC_LIBRARY_DIRS})
|
||||
|
||||
|
||||
+find_path(BROTLICOMMON_INCLUDE_DIRS
|
||||
+ NAMES brotli/decode.h
|
||||
+ HINTS ${PC_BROTLICOMMON_INCLUDEDIR}
|
||||
+ ${PC_BROTLICOMMON_INCLUDE_DIRS}
|
||||
+ PATH_SUFFIXES brotli)
|
||||
+
|
||||
+find_library(BROTLICOMMON_LIBRARIES
|
||||
+ NAMES brotlicommon
|
||||
+ HINTS ${PC_BROTLICOMMON_LIBDIR}
|
||||
+ ${PC_BROTLICOMMON_LIBRARY_DIRS})
|
||||
+
|
||||
+
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
BrotliDec
|
||||
- REQUIRED_VARS BROTLIDEC_INCLUDE_DIRS BROTLIDEC_LIBRARIES
|
||||
+ REQUIRED_VARS BROTLIDEC_INCLUDE_DIRS BROTLICOMMON_INCLUDE_DIRS BROTLIDEC_LIBRARIES BROTLICOMMON_LIBRARIES
|
||||
FOUND_VAR BROTLIDEC_FOUND
|
||||
VERSION_VAR BROTLIDEC_VERSION)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,35 +0,0 @@
|
||||
--- qtbase/src/3rdparty/pcre2/CMakeLists.txt 2024-03-19 08:46:43.000000000 -0700
|
||||
+++ qtbase/src/3rdparty/pcre2/CMakeLists.txt 2024-06-06 21:52:20.539619500 -0700
|
||||
@@ -41,6 +41,7 @@
|
||||
src/pcre2_xclass.c
|
||||
DEFINES
|
||||
HAVE_CONFIG_H
|
||||
+ PCRE2_DISABLE_JIT
|
||||
PUBLIC_DEFINES
|
||||
PCRE2_CODE_UNIT_WIDTH=16
|
||||
PUBLIC_INCLUDE_DIRECTORIES
|
||||
@@ -52,23 +53,8 @@
|
||||
## Scopes:
|
||||
#####################################################################
|
||||
|
||||
-qt_internal_extend_target(BundledPcre2 CONDITION QNX OR UIKIT
|
||||
- DEFINES
|
||||
- PCRE2_DISABLE_JIT
|
||||
-)
|
||||
-
|
||||
-qt_internal_extend_target(BundledPcre2 CONDITION (TEST_architecture_arch STREQUAL "arm") AND WIN32
|
||||
- DEFINES
|
||||
- PCRE2_DISABLE_JIT
|
||||
-)
|
||||
-
|
||||
-qt_internal_extend_target(BundledPcre2 CONDITION (TEST_architecture_arch STREQUAL "arm64") AND WIN32
|
||||
- DEFINES
|
||||
- PCRE2_DISABLE_JIT
|
||||
-)
|
||||
-
|
||||
if (APPLE)
|
||||
- target_compile_options(BundledPcre2 PRIVATE "SHELL:-Xarch_arm64 -DPCRE2_DISABLE_JIT")
|
||||
+ target_compile_options(BundledPcre2 PRIVATE "SHELL:-Xarch_arm64")
|
||||
endif()
|
||||
|
||||
qt_internal_extend_target(BundledPcre2 CONDITION WIN32
|
||||
@@ -1,19 +0,0 @@
|
||||
--- qtbase/src/widgets/styles/qfusionstyle.cpp 2025-09-03 17:32:08
|
||||
+++ qtbase/src/widgets/styles/qfusionstyle.cpp 2025-09-03 17:56:20
|
||||
@@ -588,11 +588,12 @@
|
||||
|
||||
painter->setBrush((state & State_Sunken) ? QBrush(pressedColor) : gradient);
|
||||
|
||||
- if (option->state & State_HasFocus && option->state & State_KeyboardFocusChange)
|
||||
+ if (option->state & State_HasFocus && option->state & State_KeyboardFocusChange) {
|
||||
painter->setPen(highlightedOutline);
|
||||
- else
|
||||
- painter->setPen(colorScheme() == Qt::ColorScheme::Dark ? outline.lighter(240)
|
||||
- : outline.lighter(110));
|
||||
+ } else {
|
||||
+ const bool isDark = (option->palette.windowText().color().value() > option->palette.window().color().value());
|
||||
+ painter->setPen(isDark ? outline.lighter(155) : outline.lighter(110));
|
||||
+ }
|
||||
painter->drawRect(rect);
|
||||
|
||||
QColor checkMarkColor = option->palette.text().color().darker(120);
|
||||
@@ -1,19 +0,0 @@
|
||||
--- a/src/tools/macdeployqt/shared/shared.cpp
|
||||
+++ b/src/tools/macdeployqt/shared/shared.cpp
|
||||
@@ -1122,14 +1122,8 @@
|
||||
addPlugins(QStringLiteral("networkinformation"));
|
||||
}
|
||||
|
||||
- // All image formats (svg if QtSvg is used)
|
||||
- const bool usesSvg = deploymentInfo.containsModule("Svg", libInfix);
|
||||
- addPlugins(QStringLiteral("imageformats"), [usesSvg](const QString &lib) {
|
||||
- if (lib.contains(QStringLiteral("qsvg")) && !usesSvg)
|
||||
- return false;
|
||||
- return true;
|
||||
- });
|
||||
-
|
||||
+ // All image formats
|
||||
+ addPlugins(QStringLiteral("imageformats"));
|
||||
addPlugins(QStringLiteral("iconengines"));
|
||||
|
||||
// Platforminputcontext plugins if QtGui is in use
|
||||
@@ -1,14 +0,0 @@
|
||||
--- a/src/plugins/platforms/cocoa/qcocoamessagedialog.mm
|
||||
+++ b/src/plugins/platforms/cocoa/qcocoamessagedialog.mm
|
||||
@@ -87,11 +87,6 @@ bool QCocoaMessageDialog::show(Qt::WindowFlags windowFlags, Qt::WindowModality w
|
||||
return false;
|
||||
}
|
||||
|
||||
- // Tahoe has issues with window-modal alert buttons not responding to mouse
|
||||
- if (windowModality == Qt::WindowModal
|
||||
- && QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSTahoe)
|
||||
- return false;
|
||||
-
|
||||
// And without options we don't know what to show
|
||||
if (!options())
|
||||
return false;
|
||||
@@ -1,20 +0,0 @@
|
||||
--- a/configure.cmake
|
||||
+++ b/configure.cmake
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
#### Tests
|
||||
|
||||
-qt_find_package(WrapLibClang 8 PROVIDED_TARGETS WrapLibClang::WrapLibClang)
|
||||
+#qt_find_package(WrapLibClang 8 PROVIDED_TARGETS WrapLibClang::WrapLibClang)
|
||||
|
||||
-if(TARGET WrapLibClang::WrapLibClang)
|
||||
- set(TEST_libclang "ON" CACHE BOOL "Required libclang version found." FORCE)
|
||||
-endif()
|
||||
+#if(TARGET WrapLibClang::WrapLibClang)
|
||||
+# set(TEST_libclang "ON" CACHE BOOL "Required libclang version found." FORCE)
|
||||
+#endif()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,238 +0,0 @@
|
||||
--- a/src/linguist/CMakeLists.txt
|
||||
+++ b/src/linguist/CMakeLists.txt
|
||||
@@ -16,7 +16,7 @@ add_subdirectory(lupdate)
|
||||
add_subdirectory(lupdate-pro)
|
||||
if(QT_FEATURE_process AND QT_FEATURE_pushbutton AND QT_FEATURE_toolbutton
|
||||
AND QT_FEATURE_png AND QT_FEATURE_mdiarea AND QT_FEATURE_syntaxhighlighter
|
||||
- AND TARGET Qt::Widgets AND TARGET Qt::Quick)
|
||||
+ AND TARGET Qt::Widgets)
|
||||
add_subdirectory(linguist)
|
||||
endif()
|
||||
|
||||
--- a/src/linguist/linguist/CMakeLists.txt
|
||||
+++ b/src/linguist/linguist/CMakeLists.txt
|
||||
@@ -22,7 +22,6 @@ qt_internal_add_app(linguist
|
||||
errorsview.cpp errorsview.h
|
||||
finddialog.cpp finddialog.h finddialog.ui
|
||||
uiformpreviewview.cpp uiformpreviewview.h
|
||||
- qmlformpreviewview.h qmlformpreviewview.cpp
|
||||
globals.cpp globals.h
|
||||
main.cpp
|
||||
mainwindow.cpp mainwindow.h mainwindow.ui
|
||||
@@ -53,8 +52,6 @@ qt_internal_add_app(linguist
|
||||
Qt::GuiPrivate
|
||||
Qt::UiToolsPrivate
|
||||
Qt::Widgets
|
||||
- Qt::QuickWidgets
|
||||
- Qt::QuickLayouts
|
||||
)
|
||||
|
||||
qt_internal_extend_target(linguist CONDITION QT_FEATURE_printsupport
|
||||
@@ -66,46 +63,6 @@ qt_internal_extend_target(linguist CONDITION QT_FEATURE_printsupport
|
||||
|
||||
set(available_plugins "")
|
||||
|
||||
-set(plugin_targets
|
||||
- Qt::qtquickcontrols2plugin
|
||||
- Qt::qtquick2plugin
|
||||
- Qt::qtquickdialogsplugin
|
||||
- Qt::qtquickcontrols2universalstyleplugin
|
||||
- Qt::qtquickcontrols2basicstyleplugin
|
||||
- Qt::qtquickcontrols2fluentwinui3styleplugin
|
||||
- Qt::qtquickcontrols2fusionstyleplugin
|
||||
- Qt::qtquickcontrols2imaginestyleplugin
|
||||
- Qt::qtquickcontrols2iosstyleplugin
|
||||
- Qt::qtquickcontrols2macosstyleplugin
|
||||
- Qt::qtquickcontrols2materialstyleplugin
|
||||
- Qt::qtquicktemplates2plugin
|
||||
- Qt::qtquickcontrols2implplugin
|
||||
- Qt::qtquickdialogs2quickimplplugin
|
||||
- Qt::qtquickcontrols2universalstyleimplplugin
|
||||
- Qt::qtquickcontrols2basicstyleimplplugin
|
||||
- Qt::qtquickcontrols2fluentwinui3styleimplplugin
|
||||
- Qt::qtquickcontrols2fusionstyleimplplugin
|
||||
- Qt::qtquickcontrols2imaginestyleimplplugin
|
||||
- Qt::qtquickcontrols2iosstyleimplplugin
|
||||
- Qt::qtquickcontrols2macosstyleimplplugin
|
||||
- Qt::qtquickcontrols2materialstyleimplplugin
|
||||
- Qt::quickwindow
|
||||
-)
|
||||
-
|
||||
-foreach(plugin ${plugin_targets})
|
||||
- if(TARGET ${plugin})
|
||||
- list(APPEND available_plugins ${plugin})
|
||||
- endif()
|
||||
-endforeach()
|
||||
-
|
||||
-if (available_plugins)
|
||||
- if(BUILD_SHARED_LIBS)
|
||||
- add_dependencies(linguist ${available_plugins})
|
||||
- else()
|
||||
- qt_internal_extend_target(linguist LIBRARIES ${available_plugins})
|
||||
- endif()
|
||||
-endif()
|
||||
-
|
||||
qt_add_ui(linguist
|
||||
SOURCES
|
||||
batchtranslation.ui
|
||||
--- a/src/linguist/linguist/mainwindow.cpp
|
||||
+++ b/src/linguist/linguist/mainwindow.cpp
|
||||
@@ -12,7 +12,6 @@
|
||||
#include "errorsview.h"
|
||||
#include "finddialog.h"
|
||||
#include "uiformpreviewview.h"
|
||||
-#include "qmlformpreviewview.h"
|
||||
#include "globals.h"
|
||||
#include "messageeditor.h"
|
||||
#include "messagemodel.h"
|
||||
@@ -79,11 +78,6 @@ static bool hasUiFormPreview(const QString &fileName)
|
||||
return fileName.endsWith(".ui"_L1) || fileName.endsWith(".jui"_L1);
|
||||
}
|
||||
|
||||
-static bool hasQmlFormPreview(const QString &fileName, bool qmlPreviewChecked)
|
||||
-{
|
||||
- return fileName.endsWith(QLatin1String(".qml")) && qmlPreviewChecked;
|
||||
-}
|
||||
-
|
||||
static QString leadingWhitespace(const QString &str)
|
||||
{
|
||||
int i = 0;
|
||||
@@ -491,11 +485,9 @@ MainWindow::MainWindow()
|
||||
m_sourceAndFormView = new QStackedWidget(this);
|
||||
m_sourceAndFormDock->setWidget(m_sourceAndFormView);
|
||||
m_uiFormPreviewView = new UiFormPreviewView(0, m_dataModel);
|
||||
- m_qmlFormPreviewView = new QmlFormPreviewView(m_dataModel);
|
||||
m_sourceCodeView = new SourceCodeView(0);
|
||||
m_sourceAndFormView->addWidget(m_sourceCodeView);
|
||||
m_sourceAndFormView->addWidget(m_uiFormPreviewView);
|
||||
- m_sourceAndFormView->addWidget(m_qmlFormPreviewView);
|
||||
|
||||
// Set up errors dock widget
|
||||
m_errorsDock = new QDockWidget(this);
|
||||
@@ -693,7 +685,6 @@ void MainWindow::modelCountChanged()
|
||||
m_ui.actionFindPrev->setEnabled(false);
|
||||
|
||||
m_uiFormPreviewView->setSourceContext(-1, 0);
|
||||
- m_qmlFormPreviewView->setSourceContext(-1, 0);
|
||||
}
|
||||
|
||||
struct OpenedFile {
|
||||
@@ -1673,9 +1664,6 @@ void MainWindow::translationChanged(const MultiDataIndex &index)
|
||||
MessageItem *m = m_dataModel->messageItem(index);
|
||||
if (hasUiFormPreview(m->fileName()))
|
||||
m_uiFormPreviewView->setSourceContext(index.model(), m);
|
||||
- else if (hasQmlFormPreview(m->fileName(), m_ui.actionQmlPreview->isChecked()))
|
||||
- if (!m_qmlFormPreviewView->setSourceContext(index.model(), m))
|
||||
- m_ui.actionQmlPreview->setChecked(false);
|
||||
}
|
||||
|
||||
// This and the following function operate directly on the messageitem,
|
||||
@@ -1691,10 +1679,6 @@ void MainWindow::updateTranslation(const QStringList &translations)
|
||||
m->setTranslations(translations);
|
||||
if (!m->fileName().isEmpty() && hasUiFormPreview(m->fileName()))
|
||||
m_uiFormPreviewView->setSourceContext(m_currentIndex.model(), m);
|
||||
- else if (!m->fileName().isEmpty()
|
||||
- && hasQmlFormPreview(m->fileName(), m_ui.actionQmlPreview->isChecked()))
|
||||
- if (!m_qmlFormPreviewView->setSourceContext(m_currentIndex.model(), m))
|
||||
- m_ui.actionQmlPreview->setChecked(false);
|
||||
updateDanger(m_currentIndex, true);
|
||||
|
||||
if (m->isFinished())
|
||||
@@ -2099,7 +2083,6 @@ void MainWindow::setupMenuBar()
|
||||
connect(m_ui.actionDisplayGuesses, &QAction::triggered,
|
||||
m_phraseView, &PhraseView::toggleGuessing);
|
||||
connect(m_ui.actionStatistics, &QAction::triggered, this, &MainWindow::showStatistics);
|
||||
- connect(m_ui.actionQmlPreview, &QAction::triggered, this, &MainWindow::toggleQmlPreview);
|
||||
connect(m_ui.actionVisualizeWhitespace, &QAction::triggered,
|
||||
this, &MainWindow::toggleVisualizeWhitespace);
|
||||
connect(m_ui.actionIncreaseZoom, &QAction::triggered,
|
||||
@@ -2209,11 +2192,7 @@ void MainWindow::updateSourceView(int model, MessageItem *item)
|
||||
if (hasUiFormPreview(item->fileName())) {
|
||||
m_sourceAndFormView->setCurrentWidget(m_uiFormPreviewView);
|
||||
m_uiFormPreviewView->setSourceContext(model, item);
|
||||
- } else if (hasQmlFormPreview(item->fileName(), m_ui.actionQmlPreview->isChecked())
|
||||
- && m_qmlFormPreviewView->setSourceContext(model, item)) {
|
||||
- m_sourceAndFormView->setCurrentWidget(m_qmlFormPreviewView);
|
||||
} else {
|
||||
- m_ui.actionQmlPreview->setChecked(false);
|
||||
m_sourceAndFormView->setCurrentWidget(m_sourceCodeView);
|
||||
QDir dir = QFileInfo(m_dataModel->srcFileName(model)).dir();
|
||||
QString fileName = QDir::cleanPath(dir.absoluteFilePath(item->fileName()));
|
||||
@@ -2754,14 +2733,6 @@ void MainWindow::showStatistics()
|
||||
updateStatistics();
|
||||
}
|
||||
|
||||
-void MainWindow::toggleQmlPreview()
|
||||
-{
|
||||
- if (m_ui.actionQmlPreview->isChecked())
|
||||
- m_sourceAndFormView->setCurrentWidget(m_qmlFormPreviewView);
|
||||
- else
|
||||
- m_sourceAndFormView->setCurrentWidget(m_sourceCodeView);
|
||||
-}
|
||||
-
|
||||
void MainWindow::toggleVisualizeWhitespace()
|
||||
{
|
||||
m_messageEditor->setVisualizeWhitespace(m_ui.actionVisualizeWhitespace->isChecked());
|
||||
--- a/src/linguist/linguist/mainwindow.h
|
||||
+++ b/src/linguist/linguist/mainwindow.h
|
||||
@@ -37,7 +37,6 @@ class BatchTranslationDialog;
|
||||
class ErrorsView;
|
||||
class FocusWatcher;
|
||||
class UiFormPreviewView;
|
||||
-class QmlFormPreviewView;
|
||||
class MessageEditor;
|
||||
class PhraseView;
|
||||
class SourceCodeView;
|
||||
@@ -130,7 +129,6 @@ private slots:
|
||||
FindDialog::FindOptions options, int statusFilter);
|
||||
void revalidate();
|
||||
void showStatistics();
|
||||
- void toggleQmlPreview();
|
||||
void toggleVisualizeWhitespace();
|
||||
void onWhatsThis();
|
||||
void updatePhraseDicts();
|
||||
@@ -196,7 +194,6 @@ private:
|
||||
QStackedWidget *m_sourceAndFormView;
|
||||
SourceCodeView *m_sourceCodeView;
|
||||
UiFormPreviewView *m_uiFormPreviewView;
|
||||
- QmlFormPreviewView *m_qmlFormPreviewView;
|
||||
ErrorsView *m_errorsView;
|
||||
QLabel *m_progressLabel;
|
||||
QLabel *m_modifiedLabel;
|
||||
--- a/src/linguist/linguist/mainwindow.ui
|
||||
+++ b/src/linguist/linguist/mainwindow.ui
|
||||
@@ -97,7 +97,6 @@
|
||||
</widget>
|
||||
<addaction name="actionResetSorting"/>
|
||||
<addaction name="actionDisplayGuesses"/>
|
||||
- <addaction name="actionQmlPreview"/>
|
||||
<addaction name="actionLengthVariants"/>
|
||||
<addaction name="actionVisualizeWhitespace"/>
|
||||
<addaction name="separator"/>
|
||||
@@ -646,26 +645,6 @@
|
||||
<enum>QAction::NoRole</enum>
|
||||
</property>
|
||||
</action>
|
||||
- <action name="actionQmlPreview">
|
||||
- <property name="checkable">
|
||||
- <bool>true</bool>
|
||||
- </property>
|
||||
- <property name="checked">
|
||||
- <bool>true</bool>
|
||||
- </property>
|
||||
- <property name="text">
|
||||
- <string>&QML preview</string>
|
||||
- </property>
|
||||
- <property name="toolTip">
|
||||
- <string>Displays a preview of QML documents.</string>
|
||||
- </property>
|
||||
- <property name="whatsThis">
|
||||
- <string/>
|
||||
- </property>
|
||||
- <property name="menuRole">
|
||||
- <enum>QAction::NoRole</enum>
|
||||
- </property>
|
||||
- </action>
|
||||
<action name="actionManual">
|
||||
<property name="text">
|
||||
<string>&Manual</string>
|
||||
@@ -1,73 +0,0 @@
|
||||
From f369e804e27731e128caf3b370e0569e0695c57e Mon Sep 17 00:00:00 2001
|
||||
From: Sam Lantinga <slouken@libsdl.org>
|
||||
Date: Wed, 7 Jan 2026 17:11:57 -0800
|
||||
Subject: [PATCH] Fixed crash when the broken EZFRD64.DLL is present
|
||||
|
||||
Fixes https://github.com/ppy/osu/issues/13634
|
||||
---
|
||||
src/joystick/windows/SDL_dinputjoystick.c | 38 +++++++++++++++++++----
|
||||
1 file changed, 32 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/joystick/windows/SDL_dinputjoystick.c b/src/joystick/windows/SDL_dinputjoystick.c
|
||||
index d265d9fcd5fa4..62ffbb46ec9fa 100644
|
||||
--- a/src/joystick/windows/SDL_dinputjoystick.c
|
||||
+++ b/src/joystick/windows/SDL_dinputjoystick.c
|
||||
@@ -45,6 +45,7 @@ extern HWND SDL_HelperWindow;
|
||||
// local variables
|
||||
static bool coinitialized = false;
|
||||
static LPDIRECTINPUT8 dinput = NULL;
|
||||
+static bool has_broken_EZFRD64DLL = false;
|
||||
|
||||
// Taken from Wine - Thanks!
|
||||
static DIOBJECTDATAFORMAT dfDIJoystick2[] = {
|
||||
@@ -437,6 +438,29 @@ bool SDL_DINPUT_JoystickInit(void)
|
||||
dinput = NULL;
|
||||
return SetDIerror("IDirectInput::Initialize", result);
|
||||
}
|
||||
+
|
||||
+#ifdef _WIN64
|
||||
+ if (SDL_GetHintBoolean("SDL_JOYSTICK_CHECK_EZFRD64", true)) {
|
||||
+ // The 64-bit version of EZFRD64.DLL crashes after being loaded,
|
||||
+ // which happens implicitly when querying the device capabilities,
|
||||
+ // so make sure we don't do that if there's a possibility of crashing
|
||||
+ static const char *directories[] = {
|
||||
+ "C:/Windows/USB_Vibration",
|
||||
+ "C:/Windows/USB Vibration"
|
||||
+ };
|
||||
+ for (int i = 0; i < SDL_arraysize(directories) && !has_broken_EZFRD64DLL; ++i) {
|
||||
+ int count = 0;
|
||||
+ char **files = SDL_GlobDirectory(directories[i], "*/EZFRD64.DLL", SDL_GLOB_CASEINSENSITIVE, &count);
|
||||
+ if (count > 0) {
|
||||
+ has_broken_EZFRD64DLL = true;
|
||||
+ }
|
||||
+ SDL_free(files);
|
||||
+ }
|
||||
+ if (has_broken_EZFRD64DLL) {
|
||||
+ SDL_LogWarn(SDL_LOG_CATEGORY_INPUT, "Broken EZFRD64.DLL detected, disabling DirectInput force feedback");
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -778,12 +802,14 @@ bool SDL_DINPUT_JoystickOpen(SDL_Joystick *joystick, JoyStick_DeviceData *joysti
|
||||
return SetDIerror("IDirectInputDevice8::SetDataFormat", result);
|
||||
}
|
||||
|
||||
- // Get device capabilities
|
||||
- result =
|
||||
- IDirectInputDevice8_GetCapabilities(joystick->hwdata->InputDevice,
|
||||
- &joystick->hwdata->Capabilities);
|
||||
- if (FAILED(result)) {
|
||||
- return SetDIerror("IDirectInputDevice8::GetCapabilities", result);
|
||||
+ if (!has_broken_EZFRD64DLL) {
|
||||
+ // Get device capabilities to see if we are force feedback capable
|
||||
+ result =
|
||||
+ IDirectInputDevice8_GetCapabilities(joystick->hwdata->InputDevice,
|
||||
+ &joystick->hwdata->Capabilities);
|
||||
+ if (FAILED(result)) {
|
||||
+ return SetDIerror("IDirectInputDevice8::GetCapabilities", result);
|
||||
+ }
|
||||
}
|
||||
|
||||
// Force capable?
|
||||
@@ -1,78 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <stenzek@gmail.com>
|
||||
# SPDX-License-Identifier: CC-BY-NC-ND-4.0
|
||||
#
|
||||
# NOTE: In addition to the terms of CC-BY-NC-ND-4.0, you may not use this file to create
|
||||
# packages or build recipes without explicit permission from the copyright holder.
|
||||
#
|
||||
|
||||
BROTLI=1.2.0
|
||||
BROTLI_GZ_HASH=816c96e8e8f193b40151dad7e8ff37b1221d019dbcb9c35cd3fadbfe6477dfec
|
||||
|
||||
FREETYPE=2.14.1
|
||||
FREETYPE_GZ_HASH=174d9e53402e1bf9ec7277e22ec199ba3e55a6be2c0740cb18c0ee9850fc8c34
|
||||
|
||||
HARFBUZZ=12.3.2
|
||||
HARFBUZZ_GZ_HASH=3ca6621821e19266710ec1a0cb6146fdc832a75828f7c55fea5502c2a810c3c8
|
||||
|
||||
LIBBACKTRACE_COMMIT=793921876c981ce49759114d7bb89bb89b2d3a2d
|
||||
LIBBACKTRACE_GZ_HASH=858b1225351052234f7e71f0f36622fc9ad33aac947db7816d0b443ae0dd33ce
|
||||
|
||||
LIBJPEGTURBO=3.1.3
|
||||
LIBJPEGTURBO_GZ_HASH=075920b826834ac4ddf97661cc73491047855859affd671d52079c6867c1c6c0
|
||||
|
||||
LIBPNG=1.6.54
|
||||
LIBPNG_GZ_HASH=472db714567391842e410090df5a37e0f5b2ec67148a3007678b0482d2ba5219
|
||||
|
||||
LIBWEBP=1.6.0
|
||||
LIBWEBP_GZ_HASH=e4ab7009bf0629fd11982d4c2aa83964cf244cffba7347ecd39019a9e38c4564
|
||||
|
||||
LIBZIP=1.11.4
|
||||
LIBZIP_GZ_HASH=82e9f2f2421f9d7c2466bbc3173cd09595a88ea37db0d559a9d0a2dc60dc722e
|
||||
|
||||
ZLIBNG=2.3.2
|
||||
ZLIBNG_GZ_HASH=6a0561b50b8f5f6434a6a9e667a67026f2b2064a1ffa959c6b2dae320161c2a8
|
||||
|
||||
ZSTD=1.5.7
|
||||
ZSTD_GZ_HASH=eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3
|
||||
|
||||
SDL3=3.4.0
|
||||
SDL3_GZ_HASH=082cbf5f429e0d80820f68dc2b507a94d4cc1b4e70817b119bbb8ec6a69584b8
|
||||
SDL3_ZIP_HASH=9ac2debb493e0d3e13dbd2729fb91f4bfeb00a0f4dff5e04b73cc9bac276b38d
|
||||
|
||||
QT=6.10.2
|
||||
QTMINOR=6.10
|
||||
QTBASE_XZ_HASH=aeb78d29291a2b5fd53cb55950f8f5065b4978c25fb1d77f627d695ab9adf21e
|
||||
QTBASE_ZIP_HASH=690e08ce807041150d388b5351de2e591febf0a0bc973b56e1197e2df9a2d96f
|
||||
QTIMAGEFORMATS_XZ_HASH=8b8f9c718638081e7b3c000e7f31910140b1202a98e98df5d1b496fe6f639d67
|
||||
QTIMAGEFORMATS_ZIP_HASH=a407e489ca8d68639530e881aea797f58754e355ca06024a73358bd9cc5fca17
|
||||
QTSVG_XZ_HASH=f07ff80f38caf235187200345392ca7479445ddf49a36c3694cd52a735dad6e1
|
||||
QTSVG_ZIP_HASH=fd9f4f6e983a55f6b0ba4c49ce13f8b014cd30d12e75a49a478a640462f9bf64
|
||||
QTTOOLS_XZ_HASH=1e3d2c07c1fd76d2425c6eaeeaa62ffaff5f79210c4e1a5bc2a6a9db668d5b24
|
||||
QTTOOLS_ZIP_HASH=a498357aed659c66aa87ceb556eacab55e3e7d7c9b9599049066de70eb7efa59
|
||||
QTTRANSLATIONS_XZ_HASH=b3b3813bc9d76b545716dc8b6e659fa71b6e2bc14569e9fab6dab8b30650a644
|
||||
QTTRANSLATIONS_ZIP_HASH=cf5e04a2048c02369f579c1251f61af965f241cde2d69de3db90e6c9f0ee2bf3
|
||||
QTWAYLAND_XZ_HASH=391998eb432719df26a6a67d8efdc67f8bf2afdd76c1ee3381ebff4fe7527ee2
|
||||
|
||||
CPUINFO_COMMIT=ad0339d52555e0252688c4cba69695e13bf3e383
|
||||
CPUINFO_GZ_HASH=6621f2e66d6bab2d6833698a3966c0d80cb71544a350fbfa98c5db67a474c1eb
|
||||
|
||||
DISCORD_RPC_COMMIT=cc59d26d1d628fbd6527aac0ac1d6301f4978b92
|
||||
DISCORD_RPC_GZ_HASH=297cd48a287a9113eec44902574084c6ab3b6a8b28d02606765a7fded431d7d8
|
||||
|
||||
PLUTOSVG_COMMIT=bc845bb6b6511e392f9e1097b26f70cf0b3c33be
|
||||
PLUTOSVG_GZ_HASH=cc8eed38daf68aaaaa96e904f68f5524c02f10b5d42062b91cdc93f93445f68a
|
||||
|
||||
SHADERC_COMMIT=85cd26cc38e3e8b5e3c649f4551900ee330d6552
|
||||
SHADERC_GZ_HASH=06c7bf901ee887e1ce17bbca7c17dd7190f9987ff394138e2c8702c651803584
|
||||
|
||||
SOUNDTOUCH_COMMIT=463ade388f3a51da078dc9ed062bf28e4ba29da7
|
||||
SOUNDTOUCH_GZ_HASH=fe45c2af99f6102d2704277d392c1c83b55180a70bfd17fb888cc84a54b70573
|
||||
|
||||
SPIRV_CROSS_TAG=vulkan-sdk-1.4.328.1
|
||||
SPIRV_CROSS_SHA=7affe74d77f93a622bb5002789d5332d32e512ee
|
||||
|
||||
DXCOMPILER_VERSION=1.8.2505.32
|
||||
DXCOMPILER_ZIP_HASH=c6e82b70c14552f1dd58e4a79c93eeab1567eeb0a9ee63a51564c410429bce3e
|
||||
|
||||
FFMPEG_VERSION=8.0.1
|
||||
FFMPEG_XZ_HASH=05ee0b03119b45c0bdb4df654b96802e909e0a752f72e4fe3794f487229e5a41
|
||||
Reference in New Issue
Block a user