مهدي شينون (Mehdi Chinoune) c9e5b84b9b NFC: Always quote ${srcdir} and ${pkgdir}
Just in case someone has space in his path to MINGW-packages repo.
2025-01-14 09:27:50 +01:00

243 lines
10 KiB
Bash

# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Ray Donnelly <mingw.android@gmail.com>
# Contributor: Raed Rizqie <raed.rizqie@gmail.com>
_realname=angleproject
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=2.1.r21358.2e285bb5
pkgrel=8
pkgdesc='A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android (mingw-w64)'
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url='https://chromium.googlesource.com/angle/angle'
license=('spdx:BSD-3-Clause')
depends=("${MINGW_PACKAGE_PREFIX}-jsoncpp"
"${MINGW_PACKAGE_PREFIX}-libjpeg-turbo"
"${MINGW_PACKAGE_PREFIX}-libpng"
"${MINGW_PACKAGE_PREFIX}-rapidjson"
"${MINGW_PACKAGE_PREFIX}-zlib"
"${MINGW_PACKAGE_PREFIX}-egl-headers"
"${MINGW_PACKAGE_PREFIX}-gles-headers")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-gn"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-pkgconf"
"${MINGW_PACKAGE_PREFIX}-python"
"git")
_commit=("2e285bb591f78af3b5b1f83617e06f9ef9067924")
source=("${_realname}::git+https://chromium.googlesource.com/angle/angle.git#commit=${_commit}"
"bare-clones/build::git+https://chromium.googlesource.com/chromium/src/build.git#commit=ccb49e801879c107ed6e96a84eb227f65ce4823b"
"bare-clones/zlib::git+https://chromium.googlesource.com/chromium/src/third_party/zlib.git#commit=90e67ba3f8998a3532fc8e3db9539aada8060d43"
"bare-clones/clang::git+https://chromium.googlesource.com/chromium/src/tools/clang.git#commit=64e9f9321c450d938fec79ef8e4431fd1a08f5ce"
"swiftshader.zip::https://github.com/google/swiftshader/archive/0ba0b45490cd209448c5f976f41b34a746c9de5d.zip"
"bare-clones/vulkan_memory_allocator::git+https://chromium.googlesource.com/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git#commit=ebe84bec02c041d28f902da0214bf442743fc907"
"bare-clones/vulkan-deps::git+https://chromium.googlesource.com/vulkan-deps.git#commit=23a32754e71562453af68898e6918e06172d4c46"
"bare-clones/spirv-headers::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git#commit=3469b164e25cee24435029a569933cb42578db5d"
"bare-clones/spirv-tools::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git#commit=310a67020a7d67be4fdf1b4bfa9bb85f985c6fd7"
"bare-clones/vulkan-headers::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers.git#commit=b6a29e5ca865f48368f6b2f170adb89975bb0be1"
"bare-clones/vulkan-loader::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git#commit=a1d9d485ce1a66adc9a584ea79bc3829203863b6"
"bare-clones/vulkan-tools::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git#commit=247c806c93c720488daa0bc86acd5b6f3a0e14f9"
"bare-clones/vulkan-validation-layers::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git#commit=9086fcc46a679c334f9ede021a65215981df776a"
001-add-mingw-toolchain.patch
002-buildflags-fixes.patch
003-angle-src-fixes.patch
004-swiftshader-updates.patch
005-vulkan-memory-allocator-updates.patch
006-spirv-updates.patch
007-vulkan-loader-updates.patch
008-arm64-mingw-intrinsic.patch
jpeg.gn
jsoncpp.gn
png.gn
rjson.gn
zlib.gn)
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'ea1e3f0cc030911596b3fc4753a9228ea3a5a4eba6e21bb34b7a9867a3702738'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'573a9e12727926e2ddddf0863bed926ef3764ec64ab75d27e3ec48648849786d'
'c7fc66c1c0b154eb61c666f845720b576187984d139f64ef452467d5efff4509'
'04bcb05dc2f349639bf4e62ee92d758b756e56532ceb9184c2d7dca01e67a38e'
'c3ee4b4194c041db225bcf3f699bf1042ddc0c845b1da142ca07a8bf1f7f80f8'
'ced98a61919f7fdb10dbff26dfbd4ea11b034eaaeb3433f0fa5c4c998519e171'
'276799dbae43ab2577547dcc7912353619ade2ba878b28947ddef545f48afffa'
'7fc7f35aedc101fe325c161c42d2966f974ec789025750705ceb0caf259fc1f6'
'6d5c3d7888a671059d378e955c86d297dede5e6eee0d6aa0aeb12eb84c9e8ca1'
'bf878de3203a62e2a7f81bd4cd79237adc74804b4b692d9277da005ed56d4f2a'
'86013781c2700219d4f64d7ac34ad16c40fcca9a641371385f67f642e23c643b'
'f0fb05348bf2de599eff35e2d35e3336b9720b6bd2799af9d186c05ff45d34f0'
'044afff420a1c8ad896f79fb8ae03878f6063bdb0a25dab0b8e4bff092e3d3ac'
'4dc3baf79ba7c95b52cbbafce81b26e6d165d4ae7e0dcc2eabe0250466edf178')
noextract=("swiftshader.zip")
apply_patch_with_msg() {
for _patch in "$@"
do
msg2 "Applying ${_patch}"
patch -p1 -i "${srcdir}/${_patch}"
done
}
pkgver() {
cd ${_realname}
local _major=$(head -n 14 src/common/angle_version.h | grep 'ANGLE_MAJOR_VERSION' | sed -e 's/.* //' | tr '\n' '.' | sed 's/.$/\n/')
local _minor=$(head -n 15 src/common/angle_version.h | grep 'ANGLE_MINOR_VERSION' | sed -e 's/.* //' | tr '\n' '.' | sed 's/.$/\n/')
printf "%s.%s.r%s.%s" "$_major" "$_minor" "$(git rev-list --count HEAD)" "$(git rev-parse --short=8 "${_commit}")"
}
prepare() {
echo ":: Patching build directory"
cd "${srcdir}"/build
patch -p1 -i "${srcdir}"/001-add-mingw-toolchain.patch
python "${srcdir}"/build/util/lastchange.py -o "${srcdir}"/build/util/LASTCHANGE
rm -rf "${srcdir}"/${_realname}/build
ln -sf "${srcdir}"/build "${srcdir}"/${_realname}
echo "checkout_google_benchmark = false" > "${srcdir}"/${_realname}/build/config/gclient_args.gni
echo ":: Patching zlib directory"
mkdir -p "${srcdir}"/${_realname}/third_party/zlib
ln -sf "${srcdir}"/zlib.gn "${srcdir}"/${_realname}/third_party/zlib/BUILD.gn
ln -sf "${srcdir}"/zlib/google "${srcdir}"/${_realname}/third_party/zlib
echo ":: Extracting SwiftShader"
cd "${srcdir}"
bsdtar -xf swiftshader.zip || bsdtar -xf swiftshader.zip
mv swiftshader-* SwiftShader
echo ":: Patching SwiftShader directory"
cd "${srcdir}"/SwiftShader
patch -p1 -i "${srcdir}"/004-swiftshader-updates.patch
patch -p1 -i "${srcdir}"/008-arm64-mingw-intrinsic.patch
ln -sf "${srcdir}"/SwiftShader "${srcdir}"/${_realname}/third_party
echo ":: Patching vulkan_memory_allocator directory"
cd "${srcdir}"/vulkan_memory_allocator
patch -p1 -i "${srcdir}"/005-vulkan-memory-allocator-updates.patch
ln -sf "${srcdir}"/vulkan_memory_allocator "${srcdir}"/${_realname}/third_party
echo ":: Patching spirv-tools directory"
cd "${srcdir}"/spirv-tools
patch -p1 -i "${srcdir}"/006-spirv-updates.patch
echo ":: Patching vulkan-loader directory"
cd "${srcdir}"/vulkan-loader
patch -p1 -i "${srcdir}"/007-vulkan-loader-updates.patch
echo ":: Copying vulkan-deps files"
ln -sf "${srcdir}"/vulkan-deps "${srcdir}"/${_realname}/third_party
cp -rf "${srcdir}"/spirv-headers "${srcdir}"/${_realname}/third_party/vulkan-deps/spirv-headers/src
cp -rf "${srcdir}"/spirv-tools "${srcdir}"/${_realname}/third_party/vulkan-deps/spirv-tools/src
cp -rf "${srcdir}"/vulkan-headers "${srcdir}"/${_realname}/third_party/vulkan-deps/vulkan-headers/src
cp -rf "${srcdir}"/vulkan-loader "${srcdir}"/${_realname}/third_party/vulkan-deps/vulkan-loader/src
cp -rf "${srcdir}"/vulkan-tools "${srcdir}"/${_realname}/third_party/vulkan-deps/vulkan-tools/src
cp -rf "${srcdir}"/vulkan-validation-layers "${srcdir}"/${_realname}/third_party/vulkan-deps/vulkan-validation-layers/src
echo ":: Soft linking extra repos"
mkdir -p "${srcdir}"/${_realname}/third_party/libjpeg
ln -sf "${srcdir}"/jpeg.gn "${srcdir}"/${_realname}/third_party/libjpeg/BUILD.gn
mkdir -p "${srcdir}"/${_realname}/third_party/jsoncpp
ln -sf "${srcdir}"/jsoncpp.gn "${srcdir}"/${_realname}/third_party/jsoncpp/BUILD.gn
rm -f "${srcdir}"/${_realname}/third_party/libpng/BUILD.gn
ln -sf "${srcdir}"/png.gn "${srcdir}"/${_realname}/third_party/libpng/BUILD.gn
rm -f "${srcdir}"/${_realname}/third_party/rapidjson/BUILD.gn
ln -sf "${srcdir}"/rjson.gn "${srcdir}"/${_realname}/third_party/rapidjson/BUILD.gn
ln -sf "${srcdir}"/clang "${srcdir}"/${_realname}/tools
echo ":: Patching angle source"
cd "${srcdir}"/${_realname}
apply_patch_with_msg \
002-buildflags-fixes.patch \
003-angle-src-fixes.patch
echo ":: Generating angle_commit.h"
python src/commit_id.py gen src/common/angle_commit.h
}
build() {
cd ${_realname}
local _target=Release
local _debug=false
if check_option "debug" "y"; then
_target=Debug
_debug=true
fi
local _arch=x64
if [[ ${CARCH} == aarch64 ]]; then
_arch=arm64
fi
local _clang=false
if [[ ${MSYSTEM} == CLANG* ]]; then
_clang=true
fi
local _swiftshader=false
if [[ ${MSYSTEM} == CLANG* ]] && [[ ${CARCH} != aarch64 ]]; then
_swiftshader=true
fi
if [[ ${MSYSTEM} == CLANG* ]]; then
export CXX=clang++
export CC=clang
export AR=llvm-ar
else
export CXX=g++
export CC=gcc
export AR=ar
fi
gn gen out/${_target}-${MSYSTEM} --args="
target_cpu=\"${_arch}\"
is_debug=${_debug}
is_clang=${_clang}
is_component_build=true
angle_enable_abseil=false
angle_enable_metal=false
angle_enable_d3d11_compositor_native_window=false
angle_enable_cl=false
angle_shared_libvulkan=false
angle_enable_swiftshader=${_swiftshader}
chrome_pgo_phase=0
use_custom_libcxx=false
use_sysroot=false
treat_warnings_as_errors=false"
ninja -C out/${_target}-${MSYSTEM}
}
package() {
cd ${_realname}
local _target=Release
if check_option "debug" "y"; then
_target=Debug
fi
mkdir -p "${pkgdir}"${MINGW_PREFIX}/{bin,lib,include/{EGL,GLES2}}
install -Dm755 out/${_target}-${MSYSTEM}/lib*.dll "${pkgdir}"${MINGW_PREFIX}/bin/
install -Dm755 out/${_target}-${MSYSTEM}/lib*.dll.a "${pkgdir}"${MINGW_PREFIX}/lib/
install -Dm755 out/${_target}-${MSYSTEM}/obj/lib*.a "${pkgdir}"${MINGW_PREFIX}/lib/
# Copy public ANGLE headers
install -Dm644 include/angle_gl.h "${pkgdir}"${MINGW_PREFIX}/include
install -Dm644 include/angle_windowsstore.h "${pkgdir}"${MINGW_PREFIX}/include
install -Dm644 include/EGL/eglext_angle.h "${pkgdir}"${MINGW_PREFIX}/include/EGL
install -Dm644 include/GLES2/gl2ext_angle.h "${pkgdir}"${MINGW_PREFIX}/include/GLES2
# Copy license
install -Dm644 LICENSE "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE
}