Merge pull request #2124 from MilhouseVH/le90_target_has_feature

buildsystem: add TARGET_FEATURES
This commit is contained in:
Radostan Riedel 2017-10-18 21:46:34 +02:00 committed by GitHub
commit 3d6896f916
16 changed files with 32 additions and 13 deletions

View File

@ -191,7 +191,15 @@ get_pkg_variable() {
# return 0 if $2 in space-separated list $1, otherwise return 1 # return 0 if $2 in space-separated list $1, otherwise return 1
listcontains() { listcontains() {
[[ ${1} =~ (^|[[:space:]])${2}($|[[:space:]]) ]] && return 0 || return 1 if [ -n "$1" -a -n "$2" ]; then
[[ ${1} =~ (^|[[:space:]])${2}($|[[:space:]]) ]] && return 0 || return 1
else
return 1
fi
}
target_has_feature() {
listcontains "$TARGET_FEATURES" "$1"
} }
install_binary_addon() { install_binary_addon() {

View File

@ -32,14 +32,12 @@ PKG_AUTORECONF="yes"
PKG_CONFIGURE_OPTS_TARGET="--disable-shared --enable-static --with-sysroot=$SYSROOT_PREFIX" PKG_CONFIGURE_OPTS_TARGET="--disable-shared --enable-static --with-sysroot=$SYSROOT_PREFIX"
if echo "$TARGET_FPU" | grep -q '^neon'; then if target_has_feature neon; then
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-neon"
elif [ "$TARGET_ARCH" = aarch64 ]; then
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-neon" PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-neon"
elif [ "$TARGET_ARCH" = x86_64 ]; then elif [ "$TARGET_ARCH" = x86_64 ]; then
if echo "$PROJECT_CFLAGS" | grep -q '\-mssse3'; then if target_has_feature ssse3; then
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-ssse3" PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-ssse3"
elif echo "$PROJECT_CFLAGS" | grep -q '\-msse2'; then elif target_has_feature sse2; then
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-sse2" PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-sse2"
else else
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-uint64" PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-uint64"

View File

@ -42,7 +42,7 @@ PKG_CONFIGURE_OPTS_TARGET="--enable-static \
--with-ogg=$SYSROOT_PREFIX/usr \ --with-ogg=$SYSROOT_PREFIX/usr \
--with-gnu-ld" --with-gnu-ld"
if [ $TARGET_ARCH = "x86_64" ]; then if target_has_feature sse; then
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-sse" PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-sse"
else else
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --disable-sse" PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --disable-sse"

View File

@ -44,7 +44,7 @@ else
fi fi
# PulseAudio fails to build on aarch64 when NEON is enabled, so don't enable NEON for aarch64 until upstream supports it # PulseAudio fails to build on aarch64 when NEON is enabled, so don't enable NEON for aarch64 until upstream supports it
if echo "$TARGET_FPU" | grep -q '^neon'; then if [ "$TARGET_ARCH" = "arm" ] && target_has_feature neon; then
PULSEAUDIO_NEON="--enable-neon-opt" PULSEAUDIO_NEON="--enable-neon-opt"
else else
PULSEAUDIO_NEON="--disable-neon-opt" PULSEAUDIO_NEON="--disable-neon-opt"

View File

@ -36,7 +36,7 @@ PKG_LIBPATH="$PKG_LIBNAME"
PKG_LIBVAR="DINOTHAWR_LIB" PKG_LIBVAR="DINOTHAWR_LIB"
pre_make_target() { pre_make_target() {
if echo "$TARGET_FPU" | grep -q '^neon'; then if target_has_feature neon; then
export HAVE_NEON=1 export HAVE_NEON=1
fi fi
} }

View File

@ -34,7 +34,7 @@ PKG_AUTORECONF="no"
PKG_IS_ADDON="yes" PKG_IS_ADDON="yes"
PKG_ADDON_TYPE="kodi.gameclient" PKG_ADDON_TYPE="kodi.gameclient"
if [ "$DEVICE" == "RPi" ]; then if ! target_has_feature neon; then
echo "RPi doesn't support neon" echo "${DEVICE:-${PROJECT}} doesn't support neon"
exit 0 exit 0
fi fi

View File

@ -154,7 +154,7 @@ else
KODI_SSH="-DENABLE_SSH=OFF" KODI_SSH="-DENABLE_SSH=OFF"
fi fi
if echo "$TARGET_FPU" | grep -q '^neon' || [[ "$TARGET_ARCH" = "aarch64" ]]; then if target_has_feature neon; then
KODI_NEON="-DENABLE_NEON=ON" KODI_NEON="-DENABLE_NEON=ON"
else else
KODI_NEON="-DENABLE_NEON=OFF" KODI_NEON="-DENABLE_NEON=OFF"

View File

@ -67,7 +67,7 @@ case "$TARGET_ARCH" in
;; ;;
esac esac
if echo "$TARGET_FPU" | grep -q '^neon' || [[ "$TARGET_ARCH" = "aarch64" ]]; then if target_has_feature neon; then
FFMPEG_FPU="--enable-neon" FFMPEG_FPU="--enable-neon"
else else
FFMPEG_FPU="--disable-neon" FFMPEG_FPU="--disable-neon"

View File

@ -11,6 +11,7 @@
# (Intel CPUs) atom core2 nocona # (Intel CPUs) atom core2 nocona
# #
TARGET_CPU="x86-64" TARGET_CPU="x86-64"
TARGET_FEATURES="64bit"
;; ;;
esac esac
@ -46,6 +47,7 @@
# Project CFLAGS # Project CFLAGS
PROJECT_CFLAGS="-mmmx -msse -msse2 -mfpmath=sse" PROJECT_CFLAGS="-mmmx -msse -msse2 -mfpmath=sse"
TARGET_FEATURES+=" mmx sse sse2"
# SquashFS compression method (gzip / lzo / xz) # SquashFS compression method (gzip / lzo / xz)
SQUASHFS_COMPRESSION="gzip" SQUASHFS_COMPRESSION="gzip"

View File

@ -20,6 +20,7 @@
# #
TARGET_CPU="cortex-a53" TARGET_CPU="cortex-a53"
TARGET_CPU_FLAGS="+crc+fp+simd" TARGET_CPU_FLAGS="+crc+fp+simd"
TARGET_FEATURES="64bit neon"
;; ;;
arm) arm)
TARGET_KERNEL_ARCH="arm64" TARGET_KERNEL_ARCH="arm64"
@ -28,6 +29,7 @@
TARGET_CPU="cortex-a53" TARGET_CPU="cortex-a53"
TARGET_CPU_FLAGS="+crc" TARGET_CPU_FLAGS="+crc"
TARGET_FPU="neon-fp-armv8" TARGET_FPU="neon-fp-armv8"
TARGET_FEATURES="32bit neon"
;; ;;
esac esac

View File

@ -38,8 +38,10 @@
if [ "$DEVICE" = "RPi" -o "$DEVICE" = "Slice" ]; then if [ "$DEVICE" = "RPi" -o "$DEVICE" = "Slice" ]; then
TARGET_FPU="vfp" TARGET_FPU="vfp"
TARGET_FEATURES="32bit"
elif [ "$DEVICE" = "RPi2" -o "$DEVICE" = "Slice3" ]; then elif [ "$DEVICE" = "RPi2" -o "$DEVICE" = "Slice3" ]; then
TARGET_FPU="neon-vfpv4" TARGET_FPU="neon-vfpv4"
TARGET_FEATURES="32bit neon"
fi fi
;; ;;

View File

@ -32,6 +32,7 @@
# vfpv3xd vfpv3xd-fp16 neon neon-fp16 vfpv4 vfpv4-d16 fpv4-sp-d16 # vfpv3xd vfpv3xd-fp16 neon neon-fp16 vfpv4 vfpv4-d16 fpv4-sp-d16
# neon-vfpv4. # neon-vfpv4.
TARGET_FPU="neon-fp16" TARGET_FPU="neon-fp16"
TARGET_FEATURES="32bit neon"
;; ;;
esac esac

View File

@ -20,6 +20,7 @@
# #
TARGET_CPU="cortex-a53" TARGET_CPU="cortex-a53"
TARGET_CPU_FLAGS="+crc+fp+simd" TARGET_CPU_FLAGS="+crc+fp+simd"
TARGET_FEATURES="64bit neon"
;; ;;
arm) arm)
TARGET_KERNEL_ARCH="arm64" TARGET_KERNEL_ARCH="arm64"
@ -28,6 +29,7 @@
TARGET_CPU="cortex-a53" TARGET_CPU="cortex-a53"
TARGET_CPU_FLAGS="+crc" TARGET_CPU_FLAGS="+crc"
TARGET_FPU="neon-fp-armv8" TARGET_FPU="neon-fp-armv8"
TARGET_FEATURES="32bit neon"
;; ;;
esac esac

View File

@ -32,6 +32,7 @@
# vfpv3xd vfpv3xd-fp16 neon neon-fp16 vfpv4 vfpv4-d16 fpv4-sp-d16 # vfpv3xd vfpv3xd-fp16 neon neon-fp16 vfpv4 vfpv4-d16 fpv4-sp-d16
# neon-vfpv4. # neon-vfpv4.
TARGET_FPU="neon-fp16" TARGET_FPU="neon-fp16"
TARGET_FEATURES="32bit neon"
;; ;;
esac esac

View File

@ -20,6 +20,7 @@
# #
TARGET_CPU="cortex-a53" TARGET_CPU="cortex-a53"
TARGET_CPU_FLAGS="+crc+fp+simd" TARGET_CPU_FLAGS="+crc+fp+simd"
TARGET_FEATURES="64bit neon"
;; ;;
arm) arm)
TARGET_KERNEL_ARCH="arm64" TARGET_KERNEL_ARCH="arm64"
@ -28,6 +29,7 @@
TARGET_CPU="cortex-a53" TARGET_CPU="cortex-a53"
TARGET_CPU_FLAGS="+crc" TARGET_CPU_FLAGS="+crc"
TARGET_FPU="neon-fp-armv8" TARGET_FPU="neon-fp-armv8"
TARGET_FEATURES="32bit neon"
;; ;;
esac esac

View File

@ -9,6 +9,7 @@
TARGET_CPU="cortex-a9" TARGET_CPU="cortex-a9"
TARGET_FLOAT="hard" TARGET_FLOAT="hard"
TARGET_FPU="neon" TARGET_FPU="neon"
TARGET_FEATURES="32bit neon"
;; ;;
esac esac