0
0
mirror of https://github.com/termux/termux-packages.git synced 2024-09-22 08:31:32 +00:00
termux-packages/x11-packages/angle-android/build.sh
rhjdvsgsgks a6af61d86f
bump(x11/angle-android): 2024.07.15 (#20819)
Also add angle-android to big-pkgs.list
2024-08-08 19:24:14 +08:00

157 lines
4.8 KiB
Bash

TERMUX_PKG_HOMEPAGE=https://chromium.googlesource.com/angle/angle
TERMUX_PKG_DESCRIPTION="A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android"
TERMUX_PKG_LICENSE="BSD 3-Clause, Apache-2.0"
TERMUX_PKG_MAINTAINER="@termux"
_COMMIT_DATE=2024.7.15
_COMMIT=faae3c32c038030acca0cebd4abc3f52f8168f03
_COMMIT_POSISION=23487
TERMUX_PKG_SRCURL=git+https://chromium.googlesource.com/angle/angle
TERMUX_PKG_VERSION="2.1.$_COMMIT_POSISION-${_COMMIT:0:8}"
TERMUX_PKG_HOSTBUILD=true
termux_step_get_source() {
# Check whether we need to get source
if [ -f "$TERMUX_PKG_CACHEDIR/.angle-source-fetched" ]; then
local _fetched_source_version=$(cat $TERMUX_PKG_CACHEDIR/.angle-source-fetched)
if [ "$_fetched_source_version" = "$TERMUX_PKG_VERSION" ]; then
echo "[INFO]: Use pre-fetched source (version $_fetched_source_version)."
ln -sfr $TERMUX_PKG_CACHEDIR/tmp-checkout/angle $TERMUX_PKG_SRCDIR
return
fi
fi
# Fetch depot_tools
if [ ! -f "$TERMUX_PKG_CACHEDIR/.depot_tools-fetched" ];then
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $TERMUX_PKG_CACHEDIR/depot_tools
touch "$TERMUX_PKG_CACHEDIR/.depot_tools-fetched"
fi
export PATH="$TERMUX_PKG_CACHEDIR/depot_tools:$PATH"
export DEPOT_TOOLS_UPDATE=0
# Get source
rm -rf "$TERMUX_PKG_CACHEDIR/tmp-checkout"
mkdir -p "$TERMUX_PKG_CACHEDIR/tmp-checkout"
pushd "$TERMUX_PKG_CACHEDIR/tmp-checkout"
gclient config --verbose --unmanaged ${TERMUX_PKG_SRCURL#git+}
echo "" >> .gclient
echo 'target_os = ["android"]' >> .gclient
gclient sync --verbose --revision $_COMMIT
# Check commit posision
cd angle
local _real_commit_posision="$(git rev-list HEAD --count)"
if [ "$_real_commit_posision" != "$_COMMIT_POSISION" ]; then
termux_error_exit "Please update commit posision. Expected: $_COMMIT_POSISION, current: $_real_commit_posision."
fi
popd
echo "$TERMUX_PKG_VERSION" > "$TERMUX_PKG_CACHEDIR/.angle-source-fetched"
ln -sfr $TERMUX_PKG_CACHEDIR/tmp-checkout/angle $TERMUX_PKG_SRCDIR
}
termux_step_host_build() {
cd $TERMUX_PKG_HOSTBUILD_DIR
termux_setup_ninja
export PATH="$TERMUX_PKG_CACHEDIR/depot_tools:$PATH"
export DEPOT_TOOLS_UPDATE=0
local _target_os=
if [ "$TERMUX_ARCH" = "aarch64" ] || [ "$TERMUX_ARCH" = "arm" ]; then
_target_os="arm64"
elif [ "$TERMUX_ARCH" = "x86_64" ] || [ "$TERMUX_ARCH" = "i686" ]; then
_target_os="x64"
else
termux_error_exit "Unsupported arch: $TERMUX_ARCH"
fi
# Build with Android's GL
mkdir -p out/android
sed -e"s|@TARGET_OS@|$_target_os|g" \
-e "s|@ENABLE_GL@|true|g" \
-e "s|@ENABLE_VULKAN@|false|g" \
-e "s|@USE_VULKAN_NULL@|false|g" \
-e "s|@TERMUX_PKG_API_LEVEL@|$TERMUX_PKG_API_LEVEL|g" \
$TERMUX_PKG_BUILDER_DIR/args.gn.in > out/android/args.gn
pushd $TERMUX_PKG_SRCDIR
gn gen $TERMUX_PKG_HOSTBUILD_DIR/out/android --export-compile-commands
popd
ninja -C out/android
mkdir -p build/gl
cp out/android/apks/AngleLibraries.apk build/gl/
pushd build/gl
unzip AngleLibraries.apk
popd
# Build with Android's Vulkan
mkdir -p out/android
sed -e"s|@TARGET_OS@|$_target_os|g" \
-e "s|@ENABLE_GL@|false|g" \
-e "s|@ENABLE_VULKAN@|true|g" \
-e "s|@USE_VULKAN_NULL@|false|g" \
-e "s|@TERMUX_PKG_API_LEVEL@|$TERMUX_PKG_API_LEVEL|g" \
$TERMUX_PKG_BUILDER_DIR/args.gn.in > out/android/args.gn
pushd $TERMUX_PKG_SRCDIR
gn gen $TERMUX_PKG_HOSTBUILD_DIR/out/android --export-compile-commands
popd
ninja -C out/android
mkdir -p build/vulkan
cp out/android/apks/AngleLibraries.apk build/vulkan/
pushd build/vulkan
unzip AngleLibraries.apk
popd
# Build with Android's Vulkan null display
mkdir -p out/android
sed -e "s|@TARGET_OS@|$_target_os|g" \
-e "s|@ENABLE_GL@|false|g" \
-e "s|@ENABLE_VULKAN@|true|g" \
-e "s|@USE_VULKAN_NULL@|true|g" \
-e "s|@TERMUX_PKG_API_LEVEL@|$TERMUX_PKG_API_LEVEL|g" \
$TERMUX_PKG_BUILDER_DIR/args.gn.in > out/android/args.gn
pushd $TERMUX_PKG_SRCDIR
gn gen $TERMUX_PKG_HOSTBUILD_DIR/out/android --export-compile-commands
popd
ninja -C out/android
mkdir -p build/vulkan-null
cp out/android/apks/AngleLibraries.apk build/vulkan-null/
pushd build/vulkan-null
unzip AngleLibraries.apk
popd
}
termux_step_configure() {
# Remove this marker all the time, as this package is architecture-specific
rm -rf $TERMUX_HOSTBUILD_MARKER
}
termux_step_configure() {
:
}
termux_step_make() {
:
}
termux_step_make_install() {
local _lib_dir=
if [ "$TERMUX_ARCH" = "arm" ]; then
_lib_dir="armeabi-v7a"
elif [ "$TERMUX_ARCH" = "i686" ]; then
_lib_dir="x86"
elif [ "$TERMUX_ARCH" = "x86_64" ]; then
_lib_dir="x86_64"
elif [ "$TERMUX_ARCH" = "aarch64" ]; then
_lib_dir="arm64-v8a"
else
termux_error_exit "Unsupported arch: $TERMUX_ARCH"
fi
local _type
for _type in gl vulkan vulkan-null; do
mkdir -p $TERMUX_PREFIX/opt/angle-android/$_type
cp -v $TERMUX_PKG_HOSTBUILD_DIR/build/$_type/lib/$_lib_dir/*.so $TERMUX_PREFIX/opt/angle-android/$_type/
done
}