mirror of
https://github.com/termux/termux-packages.git
synced 2025-08-07 06:51:51 +00:00
106 lines
3.6 KiB
Bash
106 lines
3.6 KiB
Bash
TERMUX_PKG_HOMEPAGE=https://source.android.com/devices/graphics/arch-vulkan
|
|
TERMUX_PKG_DESCRIPTION="Vulkan Loader for Android"
|
|
TERMUX_PKG_LICENSE="NCSA"
|
|
TERMUX_PKG_MAINTAINER="@termux"
|
|
# Version should be equal to TERMUX_NDK_{VERSION_NUM,REVISION} in
|
|
# scripts/properties.sh
|
|
TERMUX_PKG_VERSION=28c
|
|
TERMUX_PKG_SRCURL=https://dl.google.com/android/repository/android-ndk-r${TERMUX_PKG_VERSION}-linux.zip
|
|
TERMUX_PKG_SHA256=59c2f6dc96743b5daf5d1626684640b20a6bd2b1d85b13156b90333741bad5cc
|
|
TERMUX_PKG_AUTO_UPDATE=false
|
|
TERMUX_PKG_HOSTBUILD=true
|
|
TERMUX_PKG_BUILD_IN_SRC=true
|
|
|
|
# Desktop Vulkan Loader
|
|
# https://github.com/KhronosGroup/Vulkan-Loader
|
|
# https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md
|
|
|
|
# Android Vulkan Loader
|
|
# https://android.googlesource.com/platform/frameworks/native/+/master/vulkan
|
|
# https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/libvulkan/libvulkan.map.txt
|
|
|
|
termux_step_get_source() {
|
|
mkdir -p "$TERMUX_PKG_SRCDIR"
|
|
if [ "$TERMUX_ON_DEVICE_BUILD" = "true" ]; then
|
|
termux_download_src_archive
|
|
cd $TERMUX_PKG_TMPDIR
|
|
termux_extract_src_archive
|
|
else
|
|
local lib_path="toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr"
|
|
mkdir -p "$TERMUX_PKG_SRCDIR"/"$lib_path"
|
|
cp -fr "$NDK"/"$lib_path"/* "$TERMUX_PKG_SRCDIR"/"$lib_path"/
|
|
fi
|
|
}
|
|
|
|
termux_step_host_build() {
|
|
# Use NDK provided vulkan header version
|
|
# instead of vulkan-loader-generic vulkan.pc
|
|
# https://github.com/android/ndk/issues/1721
|
|
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 ./vk_video
|
|
cp -fr "${TERMUX_PKG_SRCDIR}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/vulkan" ./vulkan
|
|
cp -fr "${TERMUX_PKG_SRCDIR}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/vk_video" ./vk_video
|
|
cc -I. vulkan_header_version.c -o vulkan_header_version
|
|
}
|
|
|
|
termux_step_post_make_install() {
|
|
install -v -Dm644 \
|
|
"toolchains/llvm/prebuilt/linux-x86_64/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
|
|
|
|
# https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/vulkan.pc.in
|
|
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: ========== vulkan.pc =========="
|
|
cat "${TERMUX_PREFIX}/lib/pkgconfig/vulkan.pc"
|
|
echo "INFO: ========== vulkan.pc =========="
|
|
|
|
ln -fsv libvulkan.so "${TERMUX_PREFIX}/lib/libvulkan.so.1"
|
|
}
|
|
|
|
termux_step_create_debscripts() {
|
|
local system_lib="/system/lib"
|
|
[[ "${TERMUX_ARCH_BITS}" == "64" ]] && system_lib+="64"
|
|
system_lib+="/libvulkan.so"
|
|
local prefix_lib="${TERMUX_PREFIX}/lib/libvulkan.so"
|
|
|
|
cat <<- EOF > postinst
|
|
#!${TERMUX_PREFIX}/bin/sh
|
|
if [ -e "${system_lib}" ]; then
|
|
echo "Symlink ${system_lib} to ${prefix_lib} ..."
|
|
ln -fsT "${system_lib}" "${prefix_lib}"
|
|
fi
|
|
EOF
|
|
|
|
cat <<- EOF > postrm
|
|
#!${TERMUX_PREFIX}/bin/sh
|
|
rm -f "${prefix_lib}"
|
|
EOF
|
|
}
|