upgpkg(main, x11): clvk, emscripten, gl4es, ocl-icd, vulkan-loader-android (#11869)
* upgpkg(main/clvk): to 0.0.20220905.094010gdf8b39f9 * enhance(main/vulkan-loader-android): add pkg-config vulkan.pc * chore(main/emscripten): clean up build.sh * chore(main/ocl-icd): drop ICD creation * upgpkg(x11/gl4es): to 1.1.4.20220830.165620g1cfe8bc7
This commit is contained in:
parent
1d688ed882
commit
7e44167e6c
|
@ -2,14 +2,13 @@ TERMUX_PKG_HOMEPAGE=https://github.com/kpet/clvk
|
|||
TERMUX_PKG_DESCRIPTION="Experimental implementation of OpenCL on Vulkan"
|
||||
TERMUX_PKG_LICENSE="Apache-2.0"
|
||||
TERMUX_PKG_MAINTAINER="@termux"
|
||||
_COMMIT=f001d519415f97ca54fd1b37c9a13566e09a5e8e
|
||||
_COMMIT_DATE=20220904
|
||||
_COMMIT_TIME=103310
|
||||
# termux_pkg_upgrade_version edits TERMUX_PKG_VERSION wholly
|
||||
TERMUX_PKG_VERSION="0.0.20220904gf001d519"
|
||||
_COMMIT=df8b39f9819dff689b2d8a42dd84d1ecdbebee2f
|
||||
_COMMIT_DATE=20220905
|
||||
_COMMIT_TIME=094010
|
||||
TERMUX_PKG_VERSION="0.0.20220905.094010gdf8b39f9"
|
||||
TERMUX_PKG_SRCURL=https://github.com/kpet/clvk.git
|
||||
TERMUX_PKG_GIT_BRANCH=main
|
||||
TERMUX_PKG_BUILD_DEPENDS="vulkan-loader-android, vulkan-headers"
|
||||
TERMUX_PKG_BUILD_DEPENDS="vulkan-headers, vulkan-loader-android"
|
||||
TERMUX_PKG_DEPENDS="libc++"
|
||||
TERMUX_PKG_SUGGESTS="ocl-icd"
|
||||
TERMUX_PKG_HOSTBUILD=true
|
||||
|
@ -21,11 +20,33 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
|
|||
|
||||
# https://github.com/kpet/clvk/blob/main/CMakeLists.txt
|
||||
|
||||
# clvk prefers Khronos Vulkan Loader instead of NDK stub
|
||||
# Sticking with NDK should expose more Vulkan limitations in Android
|
||||
# As noted in build test, failure comes when linking with API 24 libvulkan.so
|
||||
# clvk will not work on Android versions older than Android 9 (API 28)
|
||||
#
|
||||
# [1877/1888] Linking CXX executable api_tests
|
||||
# FAILED: api_tests
|
||||
# ...
|
||||
# libOpenCL.so: error: undefined reference to 'vkGetPhysicalDeviceFeatures2'
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+="
|
||||
-DCLVK_BUILD_TESTS=OFF
|
||||
-DCLVK_VULKAN_IMPLEMENTATION=custom
|
||||
-DVulkan_INCLUDE_DIRS=$TERMUX_PREFIX/include
|
||||
-DVulkan_LIBRARIES=vulkan
|
||||
"
|
||||
|
||||
# clvk libOpenCL.so has hardcoded clspv bin path at build time
|
||||
# clvk cant automatically find clspv from PATH env var
|
||||
# and rely on CLVK_CLSPV_BIN env var
|
||||
# Use CLVK_CLSPV_ONLINE_COMPILER=ON to combine clspv with clvk
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DCLVK_CLSPV_ONLINE_COMPILER=ON"
|
||||
|
||||
# clvk currently does not have proper versioning nor releases
|
||||
# Use dates and commits as versioning for now
|
||||
termux_pkg_auto_update() {
|
||||
local latest_commit
|
||||
latest_commit="$(curl -s https://api.github.com/repos/kpet/clvk/commits | jq .[].sha | head -1 | sed -e 's|\"||g')"
|
||||
local latest_commit latest_commit_date_tz latest_commit_date latest_commit_time latest_version
|
||||
latest_commit=$(curl -s https://api.github.com/repos/kpet/clvk/commits | jq .[].sha | head -1 | sed -e 's|\"||g')
|
||||
|
||||
if [ -z "$latest_commit" ]; then
|
||||
termux_error_exit "ERROR: Unable to get latest commit from upstream"
|
||||
|
@ -36,22 +57,22 @@ termux_pkg_auto_update() {
|
|||
return 0
|
||||
fi
|
||||
|
||||
local latest_commit_date_tz
|
||||
latest_commit_date_tz="$(curl -s https://api.github.com/repos/kpet/clvk/commits/$latest_commit | jq .commit.committer.date | sed -e 's|\"||g')"
|
||||
latest_commit_date_tz=$(curl -s "https://api.github.com/repos/kpet/clvk/commits/$latest_commit" | jq .commit.committer.date | sed -e 's|\"||g')
|
||||
|
||||
if [ -z "$latest_commit_date_tz" ]; then
|
||||
termux_error_exit "ERROR: Unable to get latest commit date info"
|
||||
fi
|
||||
|
||||
local latest_commit_date="$(echo $latest_commit_date_tz | sed -e 's|\(.*\)T\(.*\)Z|\1|' -e 's|\-||g')"
|
||||
local latest_commit_time="$(echo $latest_commit_date_tz | sed -e 's|\(.*\)T\(.*\)Z|\2|' -e 's|\:||g')"
|
||||
local latest_version="0.0.${latest_commit_date}g${latest_commit:0:8}"
|
||||
latest_commit_date=$(echo "$latest_commit_date_tz" | sed -e 's|\(.*\)T\(.*\)Z|\1|' -e 's|\-||g')
|
||||
latest_commit_time=$(echo "$latest_commit_date_tz" | sed -e 's|\(.*\)T\(.*\)Z|\2|' -e 's|\:||g')
|
||||
|
||||
# less likely to happen, not going to include time into an already long versioning
|
||||
if [ "$latest_commit_date" -eq "$_COMMIT_DATE" ] && [ "$latest_commit_time" -gt "$_COMMIT_TIME" ]; then
|
||||
if ! dpkg --compare-versions "$latest_version" gt "$TERMUX_PKG_VERSION"; then
|
||||
termux_error_exit "ERROR: Resulting latest version is not counted as update to the current version ($latest_version < $TERMUX_PKG_VERSION)"
|
||||
fi
|
||||
# https://github.com/termux/termux-packages/issues/11827
|
||||
# really fix it by including longer date time info into versioning
|
||||
# always check this in case upstream change the version format
|
||||
latest_version="0.0.${latest_commit_date}.${latest_commit_time}g${latest_commit:0:8}"
|
||||
|
||||
if ! dpkg --compare-versions "$latest_version" gt "$TERMUX_PKG_VERSION"; then
|
||||
termux_error_exit "ERROR: Resulting latest version is not counted as update to the current version ($latest_version < $TERMUX_PKG_VERSION)"
|
||||
fi
|
||||
|
||||
# unlikely to happen
|
||||
|
@ -69,32 +90,9 @@ termux_pkg_auto_update() {
|
|||
termux_pkg_upgrade_version "$latest_version" --skip-version-check
|
||||
}
|
||||
|
||||
# clvk prefers Khronos Vulkan Loader than the one come from NDK
|
||||
# Sticking with NDK should expose more Vulkan limitations in Android (like below)
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+="
|
||||
-DCLVK_VULKAN_IMPLEMENTATION=custom
|
||||
-DVulkan_INCLUDE_DIRS=$TERMUX_PREFIX/include
|
||||
-DVulkan_LIBRARIES=vulkan
|
||||
"
|
||||
|
||||
# clvk build test fail when linking with API 24 libvulkan.so
|
||||
# clvk likely wont work on Android versions older than Android 9 (API 28)
|
||||
#
|
||||
# [1877/1888] Linking CXX executable api_tests
|
||||
# FAILED: api_tests
|
||||
# ...
|
||||
# libOpenCL.so: error: undefined reference to 'vkGetPhysicalDeviceFeatures2'
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DCLVK_BUILD_TESTS=OFF"
|
||||
|
||||
# clvk libOpenCL.so has a hardcoded path clspv bin at build time
|
||||
# clvk cant automatically find clspv from PATH env var
|
||||
# and rely on CLVK_CLSPV_BIN env var
|
||||
# Use CLVK_CLSPV_ONLINE_COMPILER=1 to combine clspv with clvk
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DCLVK_CLSPV_ONLINE_COMPILER=1"
|
||||
|
||||
termux_step_post_get_source() {
|
||||
git fetch --unshallow
|
||||
git reset --hard ${_COMMIT}
|
||||
git reset --hard $_COMMIT
|
||||
git submodule deinit --force --all
|
||||
git submodule update --init --recursive
|
||||
./external/clspv/utils/fetch_sources.py --deps llvm
|
||||
|
@ -117,21 +115,21 @@ termux_step_host_build() {
|
|||
|
||||
termux_step_pre_configure() {
|
||||
# from packages/libllvm/build.sh
|
||||
export LLVM_DEFAULT_TARGET_TRIPLE=${CCTERMUX_HOST_PLATFORM/-/-unknown-}
|
||||
export LLVM_TARGET_ARCH
|
||||
export _LLVM_DEFAULT_TARGET_TRIPLE=${CCTERMUX_HOST_PLATFORM/-/-unknown-}
|
||||
export _LLVM_TARGET_ARCH
|
||||
if [ "$TERMUX_ARCH" = arm ]; then
|
||||
LLVM_TARGET_ARCH=ARM
|
||||
_LLVM_TARGET_ARCH=ARM
|
||||
elif [ "$TERMUX_ARCH" = aarch64 ]; then
|
||||
LLVM_TARGET_ARCH=AArch64
|
||||
_LLVM_TARGET_ARCH=AArch64
|
||||
elif [ "$TERMUX_ARCH" = i686 ] || [ "$TERMUX_ARCH" = x86_64 ]; then
|
||||
LLVM_TARGET_ARCH=X86
|
||||
_LLVM_TARGET_ARCH=X86
|
||||
else
|
||||
termux_error_exit "Invalid arch: $TERMUX_ARCH"
|
||||
fi
|
||||
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_TARGET_ARCH=$LLVM_TARGET_ARCH"
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_TARGETS_TO_BUILD=$LLVM_TARGET_ARCH"
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_HOST_TRIPLE=$LLVM_DEFAULT_TARGET_TRIPLE"
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_TARGET_ARCH=$_LLVM_TARGET_ARCH"
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_TARGETS_TO_BUILD=$_LLVM_TARGET_ARCH"
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_HOST_TRIPLE=$_LLVM_DEFAULT_TARGET_TRIPLE"
|
||||
|
||||
# TERMUX_DEBUG_BUILD doesnt really have somewhere in between
|
||||
#TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
||||
|
@ -139,7 +137,7 @@ termux_step_pre_configure() {
|
|||
}
|
||||
|
||||
termux_step_make_install() {
|
||||
# clvk has a very basic install rule
|
||||
# clvk does not have proper install rule yet
|
||||
install -Dm644 "$TERMUX_PKG_BUILDDIR/libOpenCL.so" "$TERMUX_PREFIX/lib/clvk/libOpenCL.so"
|
||||
|
||||
echo "$TERMUX_PREFIX/lib/clvk/libOpenCL.so" > "$TERMUX_PKG_TMPDIR/clvk.icd"
|
||||
|
|
|
@ -3,6 +3,7 @@ TERMUX_PKG_DESCRIPTION="Emscripten: An LLVM-to-WebAssembly Compiler"
|
|||
TERMUX_PKG_LICENSE="MIT"
|
||||
TERMUX_PKG_MAINTAINER="@truboxl"
|
||||
TERMUX_PKG_VERSION="3.1.21"
|
||||
TERMUX_PKG_REVISION=1
|
||||
TERMUX_PKG_SRCURL=https://github.com/emscripten-core/emscripten.git
|
||||
TERMUX_PKG_GIT_BRANCH=$TERMUX_PKG_VERSION
|
||||
TERMUX_PKG_PLATFORM_INDEPENDENT=true
|
||||
|
@ -50,63 +51,20 @@ opt/emscripten-llvm/share
|
|||
opt/emscripten/LICENSE
|
||||
"
|
||||
|
||||
# based on scripts/updates/internal/termux_github_auto_update.sh
|
||||
termux_pkg_auto_update() {
|
||||
local latest_tag
|
||||
latest_tag="$(termux_github_api_get_tag "${TERMUX_PKG_SRCURL}" "${TERMUX_PKG_UPDATE_TAG_TYPE}")"
|
||||
|
||||
if [ -z "$latest_tag" ]; then
|
||||
termux_error_exit "ERROR: Unable to get tag from ${TERMUX_PKG_SRCURL}"
|
||||
fi
|
||||
|
||||
if [ "$latest_tag" = "$TERMUX_PKG_VERSION" ]; then
|
||||
echo "INFO: No update needed. Already at version '$TERMUX_PKG_VERSION'."
|
||||
return 0
|
||||
fi
|
||||
|
||||
# https://github.com/emscripten-core/emscripten/blob/main/docs/packaging.md
|
||||
# https://github.com/archlinux/svntogit-community/tree/packages/emscripten/trunk
|
||||
# below generates commit hash for the deps according to emscripten releases
|
||||
local releases_tags release_tag deps_revision deps_json llvm_commit binaryen_commit llvm_tgz_sha256 binaryen_tgz_sha256
|
||||
releases_tags=$(curl -s https://raw.githubusercontent.com/emscripten-core/emsdk/main/emscripten-releases-tags.json)
|
||||
release_tag=$(echo $releases_tags | python3 -c "import json,sys;print(json.load(sys.stdin)[\"releases\"][\"$latest_tag\"])")
|
||||
deps_revision=$(curl -s https://chromium.googlesource.com/emscripten-releases/+/$release_tag/DEPS?format=text | base64 -d | grep "_revision':" | sed -e "s|'|\"|g")
|
||||
deps_json=$(echo -e "{\n${deps_revision}EOL" | sed -e "s|,EOL|\n}|")
|
||||
llvm_commit=$(echo $deps_json | python3 -c "import json,sys;print(json.load(sys.stdin)[\"llvm_project_revision\"])")
|
||||
binaryen_commit=$(echo $deps_json | python3 -c "import json,sys;print(json.load(sys.stdin)[\"binaryen_revision\"])")
|
||||
curl -LC - "https://github.com/llvm/llvm-project/archive/$llvm_commit.tar.gz" -o "${TMPDIR:-/tmp}/$llvm_commit.tar.gz"
|
||||
curl -LC - "https://github.com/WebAssembly/binaryen/archive/$binaryen_commit.tar.gz" -o "${TMPDIR:-/tmp}/$binaryen_commit.tar.gz"
|
||||
llvm_tgz_sha256=$(sha256sum ${TMPDIR:-/tmp}/$llvm_commit.tar.gz | sed -e "s| .*$||")
|
||||
binaryen_tgz_sha256=$(sha256sum ${TMPDIR:-/tmp}/$binaryen_commit.tar.gz | sed -e "s| .*$||")
|
||||
|
||||
echo "INFO: Generated *.tar.gz checksum for:"
|
||||
echo "LLVM_COMMIT $llvm_commit = $llvm_tgz_sha256"
|
||||
echo "BINARYEN_COMMIT $binaryen_commit = $binaryen_tgz_sha256"
|
||||
|
||||
sed -i "$TERMUX_PKG_BUILDER_DIR/build.sh" -e "s|^LLVM_COMMIT=.*|LLVM_COMMIT=${llvm_commit}|"
|
||||
sed -i "$TERMUX_PKG_BUILDER_DIR/build.sh" -e "s|^LLVM_TGZ_SHA256=.*|LLVM_TGZ_SHA256=${llvm_tgz_sha256}|"
|
||||
sed -i "$TERMUX_PKG_BUILDER_DIR/build.sh" -e "s|^BINARYEN_COMMIT=.*|BINARYEN_COMMIT=${binaryen_commit}|"
|
||||
sed -i "$TERMUX_PKG_BUILDER_DIR/build.sh" -e "s|^BINARYEN_TGZ_SHA256=.*|BINARYEN_TGZ_SHA256=${binaryen_tgz_sha256}|"
|
||||
|
||||
rm -f "${TMPDIR:-/tmp}/$llvm_commit.tar.gz" "${TMPDIR:-/tmp}/$binaryen_commit.tar.gz"
|
||||
|
||||
termux_pkg_upgrade_version "$latest_tag"
|
||||
}
|
||||
|
||||
# https://github.com/emscripten-core/emscripten/issues/11362
|
||||
# can switch to stable LLVM to save space once above is fixed
|
||||
LLVM_COMMIT=a4a29438f451370ed241dde30bfcaab0fdf2ab71
|
||||
LLVM_TGZ_SHA256=2027181a504c69bfeba0aaf8c127b4b11a78e5963a1800ea57861e4605abf4a6
|
||||
_LLVM_COMMIT=a4a29438f451370ed241dde30bfcaab0fdf2ab71
|
||||
_LLVM_TGZ_SHA256=2027181a504c69bfeba0aaf8c127b4b11a78e5963a1800ea57861e4605abf4a6
|
||||
|
||||
# https://github.com/emscripten-core/emscripten/issues/12252
|
||||
# upstream says better bundle the right binaryen revision for now
|
||||
BINARYEN_COMMIT=d4d33b1e175c962548347c59339783c11d5d1a23
|
||||
BINARYEN_TGZ_SHA256=922d76c0129cc75a005d4c09f6c3d0c229331d57e69846ff63414e11c58ad504
|
||||
_BINARYEN_COMMIT=d4d33b1e175c962548347c59339783c11d5d1a23
|
||||
_BINARYEN_TGZ_SHA256=922d76c0129cc75a005d4c09f6c3d0c229331d57e69846ff63414e11c58ad504
|
||||
|
||||
# https://github.com/emscripten-core/emsdk/blob/main/emsdk.py
|
||||
# https://chromium.googlesource.com/emscripten-releases/+/refs/heads/main/src/build.py
|
||||
# https://github.com/llvm/llvm-project
|
||||
LLVM_BUILD_ARGS="
|
||||
_LLVM_BUILD_ARGS="
|
||||
-DCMAKE_BUILD_TYPE=MinSizeRel
|
||||
-DCMAKE_CROSSCOMPILING=ON
|
||||
-DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX/opt/emscripten-llvm
|
||||
|
@ -141,30 +99,73 @@ LLVM_BUILD_ARGS="
|
|||
"
|
||||
|
||||
# https://github.com/WebAssembly/binaryen/blob/main/CMakeLists.txt
|
||||
BINARYEN_BUILD_ARGS="
|
||||
_BINARYEN_BUILD_ARGS="
|
||||
-DCMAKE_INSTALL_PREFIX=$TERMUX_PREFIX/opt/emscripten-binaryen
|
||||
-DBUILD_TESTS=OFF
|
||||
"
|
||||
|
||||
# based on scripts/updates/internal/termux_github_auto_update.sh
|
||||
termux_pkg_auto_update() {
|
||||
local latest_tag
|
||||
latest_tag=$(termux_github_api_get_tag "${TERMUX_PKG_SRCURL}" "${TERMUX_PKG_UPDATE_TAG_TYPE}")
|
||||
|
||||
if [ -z "$latest_tag" ]; then
|
||||
termux_error_exit "ERROR: Unable to get tag from ${TERMUX_PKG_SRCURL}"
|
||||
fi
|
||||
|
||||
if [ "$latest_tag" = "$TERMUX_PKG_VERSION" ]; then
|
||||
echo "INFO: No update needed. Already at version '$TERMUX_PKG_VERSION'."
|
||||
return 0
|
||||
fi
|
||||
|
||||
# https://github.com/emscripten-core/emscripten/blob/main/docs/packaging.md
|
||||
# https://github.com/archlinux/svntogit-community/tree/packages/emscripten/trunk
|
||||
# below generates commit hash for the deps according to emscripten releases
|
||||
local releases_tags release_tag deps_revision deps_json llvm_commit binaryen_commit llvm_tgz_sha256 binaryen_tgz_sha256
|
||||
releases_tags=$(curl -s https://raw.githubusercontent.com/emscripten-core/emsdk/main/emscripten-releases-tags.json)
|
||||
release_tag=$(echo "$releases_tags" | python3 -c "import json,sys;print(json.load(sys.stdin)[\"releases\"][\"$latest_tag\"])")
|
||||
deps_revision=$(curl -s "https://chromium.googlesource.com/emscripten-releases/+/$release_tag/DEPS?format=text" | base64 -d | grep "_revision':" | sed -e "s|'|\"|g")
|
||||
deps_json=$(echo -e "{\n${deps_revision}EOL" | sed -e "s|,EOL|\n}|")
|
||||
llvm_commit=$(echo "$deps_json" | python3 -c "import json,sys;print(json.load(sys.stdin)[\"llvm_project_revision\"])")
|
||||
binaryen_commit=$(echo "$deps_json" | python3 -c "import json,sys;print(json.load(sys.stdin)[\"binaryen_revision\"])")
|
||||
curl -LC - "https://github.com/llvm/llvm-project/archive/$llvm_commit.tar.gz" -o "${TMPDIR:-/tmp}/$llvm_commit.tar.gz"
|
||||
curl -LC - "https://github.com/WebAssembly/binaryen/archive/$binaryen_commit.tar.gz" -o "${TMPDIR:-/tmp}/$binaryen_commit.tar.gz"
|
||||
llvm_tgz_sha256=$(sha256sum "${TMPDIR:-/tmp}/$llvm_commit.tar.gz" | sed -e "s| .*$||")
|
||||
binaryen_tgz_sha256=$(sha256sum "${TMPDIR:-/tmp}/$binaryen_commit.tar.gz" | sed -e "s| .*$||")
|
||||
|
||||
echo "INFO: Generated *.tar.gz checksum for:"
|
||||
echo "_LLVM_COMMIT $llvm_commit = $llvm_tgz_sha256"
|
||||
echo "_BINARYEN_COMMIT $binaryen_commit = $binaryen_tgz_sha256"
|
||||
|
||||
sed -i "$TERMUX_PKG_BUILDER_DIR/build.sh" -e "s|^_LLVM_COMMIT=.*|_LLVM_COMMIT=${llvm_commit}|"
|
||||
sed -i "$TERMUX_PKG_BUILDER_DIR/build.sh" -e "s|^_LLVM_TGZ_SHA256=.*|_LLVM_TGZ_SHA256=${llvm_tgz_sha256}|"
|
||||
sed -i "$TERMUX_PKG_BUILDER_DIR/build.sh" -e "s|^_BINARYEN_COMMIT=.*|_BINARYEN_COMMIT=${binaryen_commit}|"
|
||||
sed -i "$TERMUX_PKG_BUILDER_DIR/build.sh" -e "s|^_BINARYEN_TGZ_SHA256=.*|_BINARYEN_TGZ_SHA256=${binaryen_tgz_sha256}|"
|
||||
|
||||
rm -f "${TMPDIR:-/tmp}/$llvm_commit.tar.gz" "${TMPDIR:-/tmp}/$binaryen_commit.tar.gz"
|
||||
|
||||
termux_pkg_upgrade_version "$latest_tag"
|
||||
}
|
||||
|
||||
termux_step_post_get_source() {
|
||||
termux_download \
|
||||
"https://github.com/llvm/llvm-project/archive/$LLVM_COMMIT.tar.gz" \
|
||||
"https://github.com/llvm/llvm-project/archive/$_LLVM_COMMIT.tar.gz" \
|
||||
"$TERMUX_PKG_CACHEDIR/llvm.tar.gz" \
|
||||
"$LLVM_TGZ_SHA256"
|
||||
"$_LLVM_TGZ_SHA256"
|
||||
termux_download \
|
||||
"https://github.com/WebAssembly/binaryen/archive/$BINARYEN_COMMIT.tar.gz" \
|
||||
"https://github.com/WebAssembly/binaryen/archive/$_BINARYEN_COMMIT.tar.gz" \
|
||||
"$TERMUX_PKG_CACHEDIR/binaryen.tar.gz" \
|
||||
"$BINARYEN_TGZ_SHA256"
|
||||
"$_BINARYEN_TGZ_SHA256"
|
||||
tar -xf "$TERMUX_PKG_CACHEDIR/llvm.tar.gz" -C "$TERMUX_PKG_CACHEDIR"
|
||||
tar -xf "$TERMUX_PKG_CACHEDIR/binaryen.tar.gz" -C "$TERMUX_PKG_CACHEDIR"
|
||||
|
||||
local llvm_patches="$(find $TERMUX_PKG_BUILDER_DIR -mindepth 1 -maxdepth 1 -type f -name 'llvm-project-*.patch.diff')"
|
||||
local llvm_patches=$(find "$TERMUX_PKG_BUILDER_DIR" -mindepth 1 -maxdepth 1 -type f -name 'llvm-project-*.patch.diff')
|
||||
if [ -n "$llvm_patches" ]; then
|
||||
cd "$TERMUX_PKG_CACHEDIR/llvm-project-$LLVM_COMMIT"
|
||||
cd "$TERMUX_PKG_CACHEDIR/llvm-project-$_LLVM_COMMIT"
|
||||
for patch in $llvm_patches; do
|
||||
patch -p1 -i "$patch" || true
|
||||
patch -p1 -i "$patch" || :
|
||||
done
|
||||
local llvm_patches_rej="$(find . -type f -name '*.rej')"
|
||||
local llvm_patches_rej=$(find . -type f -name '*.rej')
|
||||
if [ -n "$llvm_patches_rej" ]; then
|
||||
echo "INFO: Patch failed! Printing *.rej files ..."
|
||||
for rej in $llvm_patches_rej; do
|
||||
|
@ -175,13 +176,13 @@ termux_step_post_get_source() {
|
|||
fi
|
||||
fi
|
||||
|
||||
local binaryen_patches="$(find $TERMUX_PKG_BUILDER_DIR -mindepth 1 -maxdepth 1 -type f -name 'binaryen-*.patch.diff')"
|
||||
local binaryen_patches=$(find "$TERMUX_PKG_BUILDER_DIR" -mindepth 1 -maxdepth 1 -type f -name 'binaryen-*.patch.diff')
|
||||
if [ -n "$binaryen_patches" ]; then
|
||||
cd "$TERMUX_PKG_CACHEDIR/binaryen-$BINARYEN_COMMIT"
|
||||
cd "$TERMUX_PKG_CACHEDIR/binaryen-$_BINARYEN_COMMIT"
|
||||
for patch in $binaryen_patches; do
|
||||
patch -p1 -i "$patch" || true
|
||||
patch -p1 -i "$patch" || :
|
||||
done
|
||||
local binaryen_patches_rej="$(find . -type f -name '*.rej')"
|
||||
local binaryen_patches_rej=$(find . -type f -name '*.rej')
|
||||
if [ -n "$binaryen_patches_rej" ]; then
|
||||
echo "INFO: Patch failed! Printing *.rej files ..."
|
||||
for rej in $binaryen_patches_rej; do
|
||||
|
@ -199,7 +200,7 @@ termux_step_host_build() {
|
|||
|
||||
cmake \
|
||||
-G Ninja \
|
||||
-S "$TERMUX_PKG_CACHEDIR/llvm-project-$LLVM_COMMIT/llvm" \
|
||||
-S "$TERMUX_PKG_CACHEDIR/llvm-project-$_LLVM_COMMIT/llvm" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLVM_ENABLE_PROJECTS=clang
|
||||
cmake \
|
||||
|
@ -213,27 +214,27 @@ termux_step_make() {
|
|||
termux_setup_ninja
|
||||
|
||||
# from packages/libllvm/build.sh
|
||||
export LLVM_DEFAULT_TARGET_TRIPLE=${CCTERMUX_HOST_PLATFORM/-/-unknown-}
|
||||
export LLVM_TARGET_ARCH
|
||||
export _LLVM_DEFAULT_TARGET_TRIPLE=${CCTERMUX_HOST_PLATFORM/-/-unknown-}
|
||||
export _LLVM_TARGET_ARCH
|
||||
if [ "$TERMUX_ARCH" = arm ]; then
|
||||
LLVM_TARGET_ARCH=ARM
|
||||
_LLVM_TARGET_ARCH=ARM
|
||||
elif [ "$TERMUX_ARCH" = aarch64 ]; then
|
||||
LLVM_TARGET_ARCH=AArch64
|
||||
_LLVM_TARGET_ARCH=AArch64
|
||||
elif [ "$TERMUX_ARCH" = i686 ] || [ "$TERMUX_ARCH" = x86_64 ]; then
|
||||
LLVM_TARGET_ARCH=X86
|
||||
_LLVM_TARGET_ARCH=X86
|
||||
else
|
||||
termux_error_exit "Invalid arch: $TERMUX_ARCH"
|
||||
fi
|
||||
|
||||
LLVM_BUILD_ARGS+=" -DLLVM_TARGET_ARCH=$LLVM_TARGET_ARCH"
|
||||
LLVM_BUILD_ARGS+=" -DLLVM_TARGETS_TO_BUILD=WebAssembly;$LLVM_TARGET_ARCH"
|
||||
LLVM_BUILD_ARGS+=" -DLLVM_HOST_TRIPLE=$LLVM_DEFAULT_TARGET_TRIPLE"
|
||||
_LLVM_BUILD_ARGS+=" -DLLVM_TARGET_ARCH=$_LLVM_TARGET_ARCH"
|
||||
_LLVM_BUILD_ARGS+=" -DLLVM_TARGETS_TO_BUILD=WebAssembly;$_LLVM_TARGET_ARCH"
|
||||
_LLVM_BUILD_ARGS+=" -DLLVM_HOST_TRIPLE=$_LLVM_DEFAULT_TARGET_TRIPLE"
|
||||
|
||||
cmake \
|
||||
-G Ninja \
|
||||
-S "$TERMUX_PKG_CACHEDIR/llvm-project-$LLVM_COMMIT/llvm" \
|
||||
-S "$TERMUX_PKG_CACHEDIR/llvm-project-$_LLVM_COMMIT/llvm" \
|
||||
-B "$TERMUX_PKG_BUILDDIR/build-llvm" \
|
||||
$LLVM_BUILD_ARGS
|
||||
$_LLVM_BUILD_ARGS
|
||||
cmake \
|
||||
--build "$TERMUX_PKG_BUILDDIR/build-llvm" \
|
||||
-j "$TERMUX_MAKE_PROCESSES" \
|
||||
|
@ -241,9 +242,9 @@ termux_step_make() {
|
|||
|
||||
cmake \
|
||||
-G Ninja \
|
||||
-S "$TERMUX_PKG_CACHEDIR/binaryen-$BINARYEN_COMMIT" \
|
||||
-S "$TERMUX_PKG_CACHEDIR/binaryen-$_BINARYEN_COMMIT" \
|
||||
-B "$TERMUX_PKG_BUILDDIR/build-binaryen" \
|
||||
$BINARYEN_BUILD_ARGS
|
||||
$_BINARYEN_BUILD_ARGS
|
||||
cmake \
|
||||
--build "$TERMUX_PKG_BUILDDIR/build-binaryen" \
|
||||
-j "$TERMUX_MAKE_PROCESSES" \
|
||||
|
@ -348,6 +349,7 @@ termux_step_create_debscripts() {
|
|||
# Steps:
|
||||
# - pkg install cmake emscripten-tests-third-party ndk-sysroot openjdk-17
|
||||
# - cd $PREFIX/opt/emscripten
|
||||
# - MATHLIB="m" pip install -r requirements-dev.txt
|
||||
# - npm install --omit=optional
|
||||
# - export EMTEST_SKIP_V8=1
|
||||
# - test/runner {test_name}
|
||||
|
|
|
@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="OpenCL ICD Loader"
|
|||
TERMUX_PKG_LICENSE="BSD 2-Clause"
|
||||
TERMUX_PKG_MAINTAINER="@termux"
|
||||
TERMUX_PKG_VERSION=2.3.1
|
||||
TERMUX_PKG_REVISION=1
|
||||
TERMUX_PKG_REVISION=2
|
||||
TERMUX_PKG_SRCURL=https://github.com/OCL-dev/ocl-icd/archive/v${TERMUX_PKG_VERSION}.tar.gz
|
||||
TERMUX_PKG_SHA256=a32b67c2d52ffbaf490be9fc18b46428ab807ab11eff7664d7ff75e06cfafd6d
|
||||
TERMUX_PKG_NO_STATICSPLIT=true
|
||||
|
@ -19,13 +19,7 @@ termux_step_pre_configure() {
|
|||
./bootstrap
|
||||
}
|
||||
|
||||
termux_step_post_make_install() {
|
||||
# User is still expected to export LD_LIBRARY_PATH environment variable to use
|
||||
# vendor provided libOpenCL.so on Android
|
||||
if [ "$TERMUX_ARCH_BITS" = 64 ]; then
|
||||
echo "/vendor/lib64/libOpenCL.so" > "$TERMUX_PKG_TMPDIR/android.icd"
|
||||
else
|
||||
echo "/vendor/lib/libOpenCL.so" > "$TERMUX_PKG_TMPDIR/android.icd"
|
||||
fi
|
||||
install -Dm644 "$TERMUX_PKG_TMPDIR/android.icd" "$TERMUX_PREFIX/etc/OpenCL/vendors/android.icd"
|
||||
}
|
||||
# https://github.com/termux/termux-packages/issues/7510
|
||||
# Removed handling of PREFIX/etc/OpenCL/vendors to match Desktop Linux ocl-icd behaviour
|
||||
# Removed creation of android.icd as it never worked without modifying LD_LIBRARY_PATH on Android
|
||||
# Driver packages (eg: clvk) should be the one handling the items above
|
||||
|
|
|
@ -3,7 +3,8 @@ TERMUX_PKG_DESCRIPTION="Vulkan Loader for Android"
|
|||
TERMUX_PKG_LICENSE="NCSA"
|
||||
TERMUX_PKG_MAINTAINER="@termux"
|
||||
TERMUX_PKG_VERSION=$TERMUX_NDK_VERSION
|
||||
TERMUX_PKG_REVISION=2
|
||||
TERMUX_PKG_REVISION=3
|
||||
TERMUX_PKG_HOSTBUILD=true
|
||||
TERMUX_PKG_SKIP_SRC_EXTRACT=true
|
||||
|
||||
# Desktop Vulkan Loader
|
||||
|
@ -17,13 +18,58 @@ TERMUX_PKG_SKIP_SRC_EXTRACT=true
|
|||
# Vulkan functions exported by Android Vulkan Loader depending on API version
|
||||
# https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/libvulkan/libvulkan.map.txt
|
||||
|
||||
# For now this package provides the NDK stub libvulkan.so
|
||||
# The package will symbolic link system provided libvulkan.so to Termux Prefix
|
||||
# if available
|
||||
# For now this package provides the NDK stub libvulkan.so (Termux current minimum API verison)
|
||||
# If system libvulkan.so is available, the stub will be replaced with symlink to system libvulkan.so
|
||||
|
||||
termux_step_host_build() {
|
||||
# it doesnt make sense to set vulkan.pc version to:
|
||||
# 1. vulkan-loader package version and bump this package every time the former updates
|
||||
# 2. NDK version since the stubs are the same between NDK releases AFAIK and isnt related to vulkan
|
||||
# so we use NDK provided vulkan header version but https://github.com/android/ndk/issues/1721
|
||||
# NDK shows that there is 2 different versions of vulkan headers
|
||||
cat <<- EOF > vulkan_header_version.c
|
||||
#include <stdio.h>
|
||||
#include "vulkan/vulkan_core.h"
|
||||
int main(void) {
|
||||
printf("%d.%d.%d\n",
|
||||
VK_HEADER_VERSION_COMPLETE >> 22,
|
||||
VK_HEADER_VERSION_COMPLETE >> 12 & 0x03ff,
|
||||
VK_HEADER_VERSION_COMPLETE & 0x0fff);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
rm -fr ./vulkan
|
||||
cp -fr "$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/vulkan" ./vulkan
|
||||
cc vulkan_header_version.c -o vulkan_header_version
|
||||
}
|
||||
|
||||
termux_step_post_make_install() {
|
||||
cp -fv "$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/libvulkan.so" \
|
||||
install -v -Dm644 \
|
||||
"$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/libvulkan.so" \
|
||||
"$TERMUX_PREFIX/lib/libvulkan.so"
|
||||
|
||||
local vulkan_loader_version
|
||||
vulkan_loader_version="$($TERMUX_PKG_HOSTBUILD_DIR/vulkan_header_version)"
|
||||
if [ -z "$vulkan_loader_version" ]; then
|
||||
termux_error_exit "ERROR: Host built vulkan_header_version is not printing version!"
|
||||
fi
|
||||
|
||||
# based on https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/vulkan.pc.in
|
||||
# not using "Libs.private"
|
||||
cat <<- EOF > "$TERMUX_PKG_TMPDIR/vulkan.pc"
|
||||
prefix=$TERMUX_PREFIX
|
||||
exec_prefix=\${prefix}
|
||||
libdir=\${exec_prefix}/lib
|
||||
includedir=\${prefix}/include
|
||||
Name: Vulkan-Loader
|
||||
Description: Vulkan Loader
|
||||
Version: $vulkan_loader_version
|
||||
Libs: -L\${libdir} -lvulkan
|
||||
Cflags: -I\${includedir}
|
||||
EOF
|
||||
install -Dm644 "$TERMUX_PKG_TMPDIR/vulkan.pc" "$TERMUX_PREFIX/lib/pkgconfig/vulkan.pc"
|
||||
echo "INFO: Printing vulkan.pc..."
|
||||
cat "$TERMUX_PREFIX/lib/pkgconfig/vulkan.pc"
|
||||
}
|
||||
|
||||
termux_step_create_debscripts() {
|
||||
|
@ -31,8 +77,8 @@ termux_step_create_debscripts() {
|
|||
cat <<- EOF > postinst
|
||||
#!$TERMUX_PREFIX/bin/sh
|
||||
if [ -e /system/lib${_BITS}/libvulkan.so ]; then
|
||||
echo "Symlink /system/lib${_BITS}/libvulkan.so to $TERMUX_PREFIX/lib/libvulkan.so ..."
|
||||
ln -fsT "/system/lib${_BITS}/libvulkan.so" "$TERMUX_PREFIX/lib/libvulkan.so"
|
||||
echo "Symlink /system/lib${_BITS}/libvulkan.so to $TERMUX_PREFIX/lib/libvulkan.so ..."
|
||||
ln -fsT "/system/lib${_BITS}/libvulkan.so" "$TERMUX_PREFIX/lib/libvulkan.so"
|
||||
fi
|
||||
EOF
|
||||
|
||||
|
|
|
@ -1,29 +1,75 @@
|
|||
TERMUX_PKG_HOMEPAGE=https://ptitseb.github.io/gl4es/
|
||||
TERMUX_PKG_DESCRIPTION="OpenGL driver for GLES devices"
|
||||
TERMUX_PKG_LICENSE="MIT"
|
||||
TERMUX_PKG_MAINTAINER="@suhan-paradkar"
|
||||
TERMUX_PKG_VERSION=1.1.4
|
||||
TERMUX_PKG_REVISION=2
|
||||
_COMMIT=dab338dc5d16807a071454e6116faf09c37f8a31
|
||||
TERMUX_PKG_MAINTAINER="@termux"
|
||||
_COMMIT=1cfe8bc776b447f03ad102b9f578bfbca31b4727
|
||||
_COMMIT_DATE=20220830
|
||||
_COMMIT_TIME=165620
|
||||
TERMUX_PKG_VERSION="1.1.4.20220830.165620g1cfe8bc7"
|
||||
TERMUX_PKG_SRCURL=https://github.com/ptitSeb/gl4es.git
|
||||
TERMUX_PKG_GIT_BRANCH=master
|
||||
TERMUX_PKG_DEPENDS="libx11"
|
||||
TERMUX_PKG_AUTO_UPDATE=true
|
||||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
|
||||
-DTERMUX=ON
|
||||
-DCMAKE_SYSTEM_NAME=Linux
|
||||
"
|
||||
|
||||
# this should only be used until release new version
|
||||
termux_pkg_auto_update() {
|
||||
local latest_commit latest_commit_date_tz latest_commit_date latest_commit_time latest_version
|
||||
latest_commit=$(curl -s https://api.github.com/repos/ptitSeb/gl4es/commits | jq .[].sha | head -1 | sed -e 's|\"||g')
|
||||
|
||||
if [ -z "$latest_commit" ]; then
|
||||
termux_error_exit "ERROR: Unable to get latest commit from upstream"
|
||||
fi
|
||||
|
||||
if [ "$latest_commit" = "$_COMMIT" ]; then
|
||||
echo "INFO: No update needed. Already at version '$TERMUX_PKG_VERSION'."
|
||||
return 0
|
||||
fi
|
||||
|
||||
latest_commit_date_tz=$(curl -s "https://api.github.com/repos/ptitSeb/gl4es/commits/$latest_commit" | jq .commit.committer.date | sed -e 's|\"||g')
|
||||
|
||||
if [ -z "$latest_commit_date_tz" ]; then
|
||||
termux_error_exit "ERROR: Unable to get latest commit date info"
|
||||
fi
|
||||
|
||||
latest_commit_date=$(echo "$latest_commit_date_tz" | sed -e 's|\(.*\)T\(.*\)Z|\1|' -e 's|\-||g')
|
||||
latest_commit_time=$(echo "$latest_commit_date_tz" | sed -e 's|\(.*\)T\(.*\)Z|\2|' -e 's|\:||g')
|
||||
|
||||
# always check this in case upstream change the version format
|
||||
latest_version="1.1.4.${latest_commit_date}.${latest_commit_time}g${latest_commit:0:8}"
|
||||
|
||||
if ! dpkg --compare-versions "$latest_version" gt "$TERMUX_PKG_VERSION"; then
|
||||
termux_error_exit "ERROR: Resulting latest version is not counted as update to the current version ($latest_version < $TERMUX_PKG_VERSION)"
|
||||
fi
|
||||
|
||||
# unlikely to happen
|
||||
if [ "$latest_commit_date" -lt "$_COMMIT_DATE" ]; then
|
||||
termux_error_exit "ERROR: Upstream is older than current package version. Please report to upstream."
|
||||
elif [ "$latest_commit_date" -eq "$_COMMIT_DATE" ] && [ "$latest_commit_time" -lt "$_COMMIT_TIME" ]; then
|
||||
termux_error_exit "ERROR: Upstream is older than current package version. Please report to upstream."
|
||||
fi
|
||||
|
||||
sed -i "${TERMUX_PKG_BUILDER_DIR}/build.sh" -e "s|^_COMMIT=.*|_COMMIT=${latest_commit}|"
|
||||
sed -i "${TERMUX_PKG_BUILDER_DIR}/build.sh" -e "s|^_COMMIT_DATE=.*|_COMMIT_DATE=${latest_commit_date}|"
|
||||
sed -i "${TERMUX_PKG_BUILDER_DIR}/build.sh" -e "s|^_COMMIT_TIME=.*|_COMMIT_TIME=${latest_commit_time}|"
|
||||
|
||||
# maybe save a few ms as we already done version check
|
||||
termux_pkg_upgrade_version "$latest_version" --skip-version-check
|
||||
}
|
||||
|
||||
termux_step_post_get_source() {
|
||||
git pull
|
||||
git reset --hard ${_COMMIT}
|
||||
git fetch --unshallow
|
||||
git reset --hard $_COMMIT
|
||||
}
|
||||
|
||||
termux_step_pre_configure() {
|
||||
# lets go crazy with optimization as we only build one shared library
|
||||
# current highest fps output (on my A30s):
|
||||
# dont use flto to avoid linking issue
|
||||
# benchmark result as follows:
|
||||
# -O2 -flto > -O3 -flto > -O2 > -Os > -Os -flto > -O3 > -Oz > -Oz -flto
|
||||
export CFLAGS="${CFLAGS/-Oz/-O2} -flto"
|
||||
export AR="llvm-ar" # remove this after NDK 23 landed
|
||||
export CFLAGS="${CFLAGS/-Oz/-O2}"
|
||||
}
|
||||
|
||||
termux_step_post_make_install() {
|
||||
|
|
Loading…
Reference in New Issue