Skip to content

Commit

Permalink
AArch64 projects: add 32-bit userspace support
Browse files Browse the repository at this point in the history
  • Loading branch information
Radostan Riedel committed Oct 12, 2017
1 parent 195c4b1 commit de9d1af
Show file tree
Hide file tree
Showing 35 changed files with 152 additions and 63 deletions.
14 changes: 11 additions & 3 deletions config/arch.arm
Expand Up @@ -45,13 +45,21 @@
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
SIMD_SUPPORT="yes"
;;
cortex-a53)
TARGET_SUBARCH=armv8-a
TARGET_ABI=eabi
TARGET_EXTRA_FLAGS="-mcpu=${TARGET_CPU}"
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
SIMD_SUPPORT="yes"
;;
esac

TARGET_VARIANT="${TARGET_SUBARCH}${TARGET_CPU_FLAGS}"
TARGET_GCC_ARCH=${TARGET_SUBARCH/-}
TARGET_KERNEL_ARCH=arm
TARGET_KERNEL_ARCH=${TARGET_KERNEL_ARCH:-arm}

# setup ARCH specific *FLAGS
TARGET_CFLAGS="-march=$TARGET_SUBARCH -mabi=aapcs-linux -Wno-psabi -Wa,-mno-warn-deprecated $TARGET_EXTRA_FLAGS"
TARGET_CFLAGS="-march=$TARGET_VARIANT -mabi=aapcs-linux -Wno-psabi -Wa,-mno-warn-deprecated $TARGET_EXTRA_FLAGS"
[ -n "$TARGET_FPU" ] && TARGET_CFLAGS="$TARGET_CFLAGS $TARGET_FPU_FLAGS"
TARGET_LDFLAGS="-march=$TARGET_SUBARCH -mtune=$TARGET_CPU"
TARGET_LDFLAGS="-march=$TARGET_VARIANT -mtune=$TARGET_CPU"
GCC_OPTS="--with-abi=aapcs-linux --with-arch=$TARGET_SUBARCH --with-float=$TARGET_FLOAT --with-fpu=$TARGET_FPU"
4 changes: 2 additions & 2 deletions config/functions
Expand Up @@ -342,8 +342,8 @@ dashes="==========================="
linux_config_dir="$PROJECT_DIR/$PROJECT/linux"
fi

if [ ! -e $linux_config_dir/linux.$TARGET_ARCH.conf ] &&
! ls $linux_config_dir/*/linux.$TARGET_ARCH.conf &>/dev/null; then
if [ ! -e $linux_config_dir/linux.${TARGET_PATCH_ARCH:-$TARGET_ARCH}.conf ] &&
! ls $linux_config_dir/*/linux.${TARGET_PATCH_ARCH:-$TARGET_ARCH}.conf &>/dev/null; then
check_arch="$check_arch\n $dashes$dashes$dashes"
check_arch="$check_arch\n ERROR: Architecture not found, use a valid Architecture"
check_arch="$check_arch\n for your project or create a new config"
Expand Down
1 change: 1 addition & 0 deletions packages/addons/driver/sapphire/package.mk
Expand Up @@ -33,6 +33,7 @@ PKG_AUTORECONF="no"
PKG_IS_ADDON="yes"
PKG_ADDON_NAME="Sapphire Remote Driver"
PKG_ADDON_TYPE="xbmc.service"
PKG_IS_KERNEL_PKG="yes"

if [ -f $SYSROOT_PREFIX/usr/include/linux/input-event-codes.h ]; then
INPUT_H="$SYSROOT_PREFIX/usr/include/linux/input-event-codes.h"
Expand Down
2 changes: 1 addition & 1 deletion packages/devel/libcec/package.mk
Expand Up @@ -47,7 +47,7 @@ else
fi

if [ "$KODIPLAYER_DRIVER" = "libamcodec" ]; then
if [ "$TARGET_ARCH" = "aarch64" ]; then
if [ "$TARGET_KERNEL_ARCH" = "arm64" ]; then
PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_TARGET -DHAVE_AOCEC_API=1"
else
PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_TARGET -DHAVE_AMLOGIC_API=1"
Expand Down
11 changes: 6 additions & 5 deletions packages/emulation/libretro-beetle-pcfx/package.mk
Expand Up @@ -51,11 +51,12 @@ make_target() {
imx6)
make platform=armv7-cortexa9-neon-hardfloat
;;
WeTek_Play|WeTek_Core)
make platform=armv7-cortexa9-neon-hardfloat
;;
Odroid_C2|WeTek_Hub|WeTek_Play_2)
make platform=aarch64
WeTek_Play|WeTek_Core|Odroid_C2|WeTek_Hub|WeTek_Play_2)
if [ "$TARGET_ARCH" = "aarch64" ]; then
make platform=aarch64
else
make platform=armv7-cortexa9-neon-hardfloat
fi
;;
Generic)
make
Expand Down
11 changes: 6 additions & 5 deletions packages/emulation/libretro-craft/package.mk
Expand Up @@ -58,11 +58,12 @@ make_target() {
imx6)
make -f Makefile.libretro platform=imx6
;;
WeTek_Play|WeTek_Core)
make -f Makefile.libretro platform=armv7-neon-gles-cortex-a9
;;
Odroid_C2|WeTek_Hub|WeTek_Play_2)
make -f Makefile.libretro platform=aarch64
WeTek_Play|WeTek_Core|Odroid_C2|WeTek_Hub|WeTek_Play_2)
if [ "$TARGET_ARCH" = "aarch64" ]; then
make -f Makefile.libretro platform=aarch64
else
make -f Makefile.libretro platform=armv7-neon-gles-cortex-a9
fi
;;
Generic)
make -f Makefile.libretro
Expand Down
13 changes: 5 additions & 8 deletions packages/emulation/libretro-mame2000/package.mk
Expand Up @@ -41,14 +41,11 @@ configure_target() {
}

make_target() {
case $PROJECT in
RPi|imx6|WeTek_Play|WeTek_Core)
make ARM=1
;;
Generic|Odroid_C2|WeTek_Hub|WeTek_Play_2)
make
;;
esac
if [ "$TARGET_ARCH" = "arm" ]; then
make ARM=1
else
make
fi
}

makeinstall_target() {
Expand Down
11 changes: 6 additions & 5 deletions packages/emulation/libretro-mame2010/package.mk
Expand Up @@ -58,11 +58,12 @@ make_target() {
imx6)
make platform=armv7-neon-hardfloat-cortex-a9
;;
WeTek_Play|WeTek_Core)
make platform=armv7-neon-hardfloat-cortex-a9
;;
Odroid_C2|WeTek_Hub|WeTek_Play_2)
make platform=aarch64
WeTek_Play|WeTek_Core|Odroid_C2|WeTek_Hub|WeTek_Play_2)
if [ "$TARGET_ARCH" = "aarch64" ]; then
make platform=aarch64
else
make platform=armv7-neon-hardfloat-cortex-a9
fi
;;
Generic)
make
Expand Down
11 changes: 6 additions & 5 deletions packages/emulation/libretro-mame2014/package.mk
Expand Up @@ -58,11 +58,12 @@ make_target() {
imx6)
make platform=armv7-neon-hardfloat-cortex-a9
;;
WeTek_Play|WeTek_Core)
make platform=armv7-neon-hardfloat-cortex-a9
;;
Odroid_C2|WeTek_Hub|WeTek_Play_2)
make platform=aarch64
WeTek_Play|WeTek_Core|Odroid_C2|WeTek_Hub|WeTek_Play_2)
if [ "$TARGET_ARCH" = "aarch64" ]; then
make platform=aarch64
else
make platform=armv7-neon-hardfloat-cortex-a9
fi
;;
Generic)
make
Expand Down
11 changes: 6 additions & 5 deletions packages/emulation/libretro-mupen64plus/package.mk
Expand Up @@ -51,11 +51,12 @@ make_target() {
imx6)
make platform=imx6
;;
WeTek_Play|WeTek_Core)
make platform=armv7-neon-gles-cortex-a9
;;
Odroid_C2|WeTek_Hub|WeTek_Play_2)
make platform=aarch64
WeTek_Play|WeTek_Core|Odroid_C2|WeTek_Hub|WeTek_Play_2)
if [ "$TARGET_ARCH" = "aarch64" ]; then
make platform=aarch64
else
make platform=armv7-neon-gles-cortex-a9
fi
;;
Generic)
make WITH_DYNAREC=x86_64
Expand Down
11 changes: 6 additions & 5 deletions packages/emulation/libretro-pcsx-rearmed/package.mk
Expand Up @@ -60,11 +60,12 @@ make_target() {
imx6)
make -f Makefile.libretro platform=armv7-neon-hardfloat-cortex-a9
;;
WeTek_Play|WeTek_Core)
make -f Makefile.libretro platform=armv7-neon-hardfloat-cortex-a9
;;
Odroid_C2|WeTek_Hub|WeTek_Play_2)
make -f Makefile.libretro platform=aarch64
WeTek_Play|WeTek_Core|Odroid_C2|WeTek_Hub|WeTek_Play_2)
if [ "$TARGET_ARCH" = "aarch64" ]; then
make -f Makefile.libretro platform=aarch64
else
make -f Makefile.libretro platform=armv7-neon-hardfloat-cortex-a9
fi
;;
Generic)
make -f Makefile.libretro
Expand Down
8 changes: 6 additions & 2 deletions packages/graphics/opengl-meson/package.mk
Expand Up @@ -29,8 +29,12 @@ case $MESON_FAMILY in
PKG_SHA256="21a8376668c84bf1b9e64a917fcfa1cf74689035fed8e4630833c9cde28d40c1"
;;
gxbb)
PKG_VERSION="gxbb-r5p1-01rel0"
;;
if [ "$TARGET_ARCH" = "arm" ]; then
PKG_VERSION="8-r5p1-01rel0-armhf"
else
PKG_VERSION="gxbb-r5p1-01rel0"
fi
;;
esac
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_DEPENDS_TARGET="toolchain"
Expand Down
@@ -0,0 +1,13 @@
diff -Naur Python-2.7.13.orig/Lib/platform.py Python-2.7.13/Lib/platform.py
--- Python-2.7.13.orig/Lib/platform.py 2017-01-08 11:57:36.615886244 +0100
+++ Python-2.7.13/Lib/platform.py 2017-01-08 12:12:44.567848271 +0100
@@ -1250,6 +1250,9 @@
system = 'Windows'
release = 'Vista'

+ if machine == 'aarch64' and architecture()[0] == '32bit':
+ machine = 'armv7l'
+
_uname_cache = system,node,release,version,machine,processor
return _uname_cache

1 change: 0 additions & 1 deletion packages/lang/gcc-linaro-aarch64-elf/package.mk
Expand Up @@ -24,7 +24,6 @@ PKG_LICENSE="GPL"
PKG_SITE=""
PKG_URL="https://releases.linaro.org/components/toolchain/binaries/${PKG_VERSION}/aarch64-elf/gcc-linaro-${PKG_VERSION}-x86_64_aarch64-elf.tar.xz"
PKG_SOURCE_DIR="gcc-linaro-${PKG_VERSION}-x86_64_aarch64-elf"
PKG_DEPENDS_HOST="toolchain"
PKG_SECTION="lang"
PKG_SHORTDESC=""
PKG_LONGDESC=""
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/RTL8188EU/package.mk
Expand Up @@ -33,6 +33,7 @@ PKG_LONGDESC="Realtek RTL81xxEU Linux 3.x driver"

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

pre_make_target() {
unset LDFLAGS
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/RTL8192CU/package.mk
Expand Up @@ -32,6 +32,7 @@ PKG_LONGDESC="Realtek RTL81xxCU Linux 3.x driver"

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

pre_make_target() {
unset LDFLAGS
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/RTL8192DU/package.mk
Expand Up @@ -32,6 +32,7 @@ PKG_LONGDESC="Realtek RTL8192DU Linux 3.x driver"

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

pre_make_target() {
unset LDFLAGS
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/RTL8192EU/package.mk
Expand Up @@ -32,6 +32,7 @@ PKG_LONGDESC="Realtek RTL8192EU Linux 3.x driver"

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

pre_make_target() {
unset LDFLAGS
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/RTL8812AU/package.mk
Expand Up @@ -31,6 +31,7 @@ PKG_SHORTDESC="Realtek RTL8812AU Linux 3.x driver"
PKG_LONGDESC="Realtek RTL8812AU Linux 3.x driver"
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

pre_make_target() {
unset LDFLAGS
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/bcm_sta/package.mk
Expand Up @@ -34,6 +34,7 @@ PKG_LONGDESC="These packages contain Broadcom's IEEE 802.11a/b/g/n hybrid Linux

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

make_target() {
cd x86-64
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/brcmap6xxx-aml/package.mk
Expand Up @@ -31,6 +31,7 @@ PKG_LONGDESC="brcmap6xxx-aml: Linux drivers for AP6xxx WLAN chips used in some d

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

make_target() {
cd bcmdhd_1_201_59_x
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/dvbhdhomerun/package.mk
Expand Up @@ -33,6 +33,7 @@ PKG_LONGDESC="A linux DVB driver for the HDHomeRun TV tuner (http://www.silicond

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

PKG_CMAKE_SCRIPT="userhdhomerun/CMakeLists.txt"

Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/gpu-aml/package.mk
Expand Up @@ -33,6 +33,7 @@ PKG_LONGDESC="gpu-aml: Linux drivers for Mali GPUs found in Amlogic Meson SoCs"

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

make_target() {
LDFLAGS="" make -C $(kernel_path) M=$PKG_BUILD/mali \
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/intel_nuc_led/package.mk
Expand Up @@ -31,6 +31,7 @@ PKG_LONGDESC="Intel NUC7i[x]BN and NUC6CAY LED Control for Linux"

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

pre_make_target() {
unset LDFLAGS
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/media_build/package.mk
Expand Up @@ -31,6 +31,7 @@ PKG_SHORTDESC="DVB drivers that replace the version shipped with the kernel"
PKG_LONGDESC="DVB drivers that replace the version shipped with the kernel"
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

pre_make_target() {
export KERNEL_VER=$(get_module_dir)
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/slice-drivers/package.mk
Expand Up @@ -31,6 +31,7 @@ PKG_LONGDESC="linux kernel modules for the Slice box"

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

pre_make_target() {
unset LDFLAGS
Expand Down
1 change: 1 addition & 0 deletions packages/linux-drivers/wetekdvb/package.mk
Expand Up @@ -31,6 +31,7 @@ PKG_LONGDESC="These package contains Wetek's DVB driver "

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

make_target() {
: # nothing todo
Expand Down
41 changes: 28 additions & 13 deletions packages/linux/package.mk
Expand Up @@ -72,8 +72,16 @@ esac

PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
PKG_IS_KERNEL_PKG="yes"

PKG_MAKE_OPTS_HOST="ARCH=$TARGET_KERNEL_ARCH headers_check"
if [ "$TARGET_KERNEL_ARCH" = "arm64" -a "$TARGET_ARCH" = "arm" ]; then
PKG_DEPENDS_HOST="$PKG_DEPENDS_HOST gcc-linaro-aarch64-elf:host"
PKG_DEPENDS_TARGET="$PKG_DEPENDS_HOST gcc-linaro-aarch64-elf:host"
TARGET_PREFIX=$TOOLCHAIN/lib/gcc-linaro-aarch64-elf/bin/aarch64-elf-
HEADERS_ARCH=$TARGET_ARCH
fi

PKG_MAKE_OPTS_HOST="ARCH=${HEADERS_ARCH:-$TARGET_KERNEL_ARCH} headers_check"

if [ "$TARGET_ARCH" = "x86_64" ]; then
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET intel-ucode:host kernel-firmware"
Expand All @@ -84,18 +92,25 @@ if [ "$BUILD_ANDROID_BOOTIMG" = "yes" ]; then
fi

post_patch() {
if [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$PKG_VERSION/$PKG_NAME.$TARGET_ARCH.conf ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$PKG_VERSION/$PKG_NAME.$TARGET_ARCH.conf
elif [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$PKG_NAME.$TARGET_ARCH.conf ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$PKG_NAME.$TARGET_ARCH.conf
elif [ -f $PROJECT_DIR/$PROJECT/$PKG_NAME/$PKG_VERSION/$PKG_NAME.$TARGET_ARCH.conf ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/$PKG_NAME/$PKG_VERSION/$PKG_NAME.$TARGET_ARCH.conf
elif [ -f $PROJECT_DIR/$PROJECT/$PKG_NAME/$PKG_NAME.$TARGET_ARCH.conf ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/$PKG_NAME/$PKG_NAME.$TARGET_ARCH.conf
elif [ -f $PKG_DIR/config/$PKG_VERSION/$PKG_NAME.$TARGET_ARCH.conf ]; then
KERNEL_CFG_FILE=$PKG_DIR/config/$PKG_VERSION/$PKG_NAME.$TARGET_ARCH.conf
CFG_FILE="$PKG_NAME.${TARGET_PATCH_ARCH:-$TARGET_ARCH}.conf"
if [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$PKG_VERSION/$CFG_FILE ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$PKG_VERSION/$CFG_FILE
elif [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$LINUX/$CFG_FILE ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$LINUX/$CFG_FILE
elif [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$CFG_FILE ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/devices/$DEVICE/$PKG_NAME/$CFG_FILE
elif [ -f $PROJECT_DIR/$PROJECT/$PKG_NAME/$PKG_VERSION/$CFG_FILE ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/$PKG_NAME/$PKG_VERSION/$CFG_FILE
elif [ -f $PROJECT_DIR/$PROJECT/$PKG_NAME/$LINUX/$CFG_FILE ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/$PKG_NAME/$LINUX/$CFG_FILE
elif [ -f $PROJECT_DIR/$PROJECT/$PKG_NAME/$CFG_FILE ]; then
KERNEL_CFG_FILE=$PROJECT_DIR/$PROJECT/$PKG_NAME/$CFG_FILE
elif [ -f $PKG_DIR/config/$PKG_VERSION/$CFG_FILE ]; then
KERNEL_CFG_FILE=$PKG_DIR/config/$PKG_VERSION/$CFG_FILE
elif [ -f $PKG_DIR/config/$LINUX/$CFG_FILE ]; then
KERNEL_CFG_FILE=$PKG_DIR/config/$LINUX/$CFG_FILE
else
KERNEL_CFG_FILE=$PKG_DIR/config/$PKG_NAME.$TARGET_ARCH.conf
KERNEL_CFG_FILE=$PKG_DIR/config/$CFG_FILE
fi

sed -i -e "s|^HOSTCC[[:space:]]*=.*$|HOSTCC = $TOOLCHAIN/bin/host-gcc|" \
Expand Down Expand Up @@ -148,7 +163,7 @@ post_patch() {
}

makeinstall_host() {
make ARCH=$TARGET_KERNEL_ARCH INSTALL_HDR_PATH=dest headers_install
make ARCH=${HEADERS_ARCH:-$TARGET_KERNEL_ARCH} INSTALL_HDR_PATH=dest headers_install
mkdir -p $SYSROOT_PREFIX/usr/include
cp -R dest/include/* $SYSROOT_PREFIX/usr/include
}
Expand Down

0 comments on commit de9d1af

Please sign in to comment.