new package: angle-android

This commit is contained in:
Chongyun Lee 2023-07-15 15:56:28 +08:00 committed by Uchiha Kakashi
parent 9b330d4be3
commit de389e2be2
2 changed files with 167 additions and 0 deletions

View File

@ -0,0 +1,11 @@
target_os = "android"
target_cpu = "@TARGET_OS@"
is_component_build = false
is_debug = false
angle_assert_always_on = true # Recommended for debugging. Turn off for performance.
angle_enable_gl = @ENABLE_GL@
angle_enable_vulkan = @ENABLE_VULKAN@
android32_ndk_api_level = @TERMUX_PKG_API_LEVEL@
android64_ndk_api_level = @TERMUX_PKG_API_LEVEL@
angle_build_tests = false
angle_use_vulkan_null_display = @USE_VULKAN_NULL@

View File

@ -0,0 +1,156 @@
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=2023.7.11
_COMMIT=75e647193aeb1a78dad27bd5dc8f0199262800d1
_COMMIT_POSISION=21474
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
}