commit
563a671a3b
225 changed files with 40219 additions and 9233 deletions
4
.github/workflows/build-dev.yaml
vendored
4
.github/workflows/build-dev.yaml
vendored
|
@ -100,7 +100,7 @@ jobs:
|
|||
* Decompress the image.
|
||||
* Write the image to an SDCARD using an imaging tool. Common imaging tools include [Balena Etcher](https://www.balena.io/etcher/), [Raspberry Pi Imager](https://www.raspberrypi.com/software/), and [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/). If you're skilled with the command line, dd works fine too.
|
||||
|
||||
Download: [[Win600/Atari VCS/Generic x86_64](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.img.gz)] [[RG353V/RG353P](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351P](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.img.gz)]
|
||||
Download: [[Win600/Atari VCS/Generic x86_64](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.img.gz)] [[RG353P/RG353M/RG353V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351P/RG351M](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.img.gz)]
|
||||
|
||||
> RG353V users, enable "DEVICE IS RG353V" in the system settings menu after flashing.
|
||||
|
||||
|
@ -111,7 +111,7 @@ jobs:
|
|||
* Copy the update to your device over the network to your device's update share.
|
||||
* Reboot the device, and the update will begin automatically.
|
||||
|
||||
Download: [[Win600/x86_64](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)] [[RG353V/RG353P](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351P](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.tar)]
|
||||
Download: [[Win600/x86_64](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)] [[RG353P/RG353M/RG353V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351P](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.tar)]
|
||||
|
||||
## Documentation
|
||||
* [Home](https://github.com/JustEnoughLinuxOS/distribution/wiki)
|
||||
|
|
4
.github/workflows/build-main.yaml
vendored
4
.github/workflows/build-main.yaml
vendored
|
@ -97,7 +97,7 @@ jobs:
|
|||
* Decompress the image.
|
||||
* Write the image to an SDCARD using an imaging tool. Common imaging tools include [Balena Etcher](https://www.balena.io/etcher/), [Raspberry Pi Imager](https://www.raspberrypi.com/software/), and [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/). If you're skilled with the command line, dd works fine too.
|
||||
|
||||
Download: [[Win600/Atari VCS/Generic x86_64](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.img.gz)] [[RG353V/RG353P](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351P](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.img.gz)]
|
||||
Download: [[Win600/Atari VCS/Generic x86_64](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.img.gz)] [[RG353P/RG353M/RG353V](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351P/RG351M](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.img.gz)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.img.gz)]
|
||||
|
||||
> RG353V users, enable "DEVICE IS RG353V" in the system settings menu after flashing.
|
||||
|
||||
|
@ -110,7 +110,7 @@ jobs:
|
|||
* Copy the update to your device over the network to your device's update share.
|
||||
* Reboot the device, and the update will begin automatically.
|
||||
|
||||
Download: [[Win600/x86_64](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)] [[RG353V/RG353P](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351P](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.tar)]
|
||||
Download: [[Win600/x86_64](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)] [[RG353P/RG353M/RG353P](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351P/RG353M](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.tar)]
|
||||
|
||||
## Documentation
|
||||
* [Home](https://github.com/JustEnoughLinuxOS/distribution/wiki)
|
||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -28,7 +28,7 @@ mkpkg-temp
|
|||
/lost+found/
|
||||
|
||||
# symlinks...
|
||||
/sources
|
||||
/sources*
|
||||
/.work
|
||||
|
||||
# ccache
|
||||
|
|
|
@ -9,7 +9,7 @@ Just Enough Linux Operating System (JELOS) is a community developed Linux distri
|
|||
* Supports FAT32, ExFAT, and EXT4 file systems on removable storage (slot/device #2).
|
||||
* 2.4GHz and 5GHz 802.11 A/B/G/N/AC WIFI support.
|
||||
* Online update capability for easy access to stable or development builds.
|
||||
* Support for the Anbernic WIN600, RG552, RG503, RG353P, RG353V, RG351P/M, RG351MP, RG351V, and Atari VCS.
|
||||
* Support for the Anbernic WIN600, RG552, RG503, RG353P, RG353M, RG353V, RG351P, RG351M, RG351MP, RG351V, and Atari VCS.
|
||||
* Developed by a small, friendly community.
|
||||
|
||||
## Licenses
|
||||
|
|
|
@ -2,3 +2,4 @@ np2kai # Last major commit before hiatus is broken
|
|||
vicesa # Doesn't support updating with the script.
|
||||
duckstationsa # Latest commits break device patching. Need to research.
|
||||
ecwolf
|
||||
raze
|
||||
|
|
|
@ -719,6 +719,15 @@ do_autoreconf() {
|
|||
export LIBTOOLIZE=$TOOLCHAIN/bin/libtoolize
|
||||
fi
|
||||
|
||||
# >autoconf-2.69 will call gtkdocize when used in macros
|
||||
# when called with --install parameter.
|
||||
# use "true" unless gtkdocsize is in the toolchain.
|
||||
if [ -e "$TOOLCHAIN/bin/gtkdocize" ]; then
|
||||
export GTKDOCIZE=$TOOLCHAIN/bin/gtkdocize
|
||||
else
|
||||
export GTKDOCIZE=true
|
||||
fi
|
||||
|
||||
if [ -e "$TOOLCHAIN/bin/intltoolize" ]; then
|
||||
export INTLTOOLIZE=$TOOLCHAIN/bin/intltoolize
|
||||
fi
|
||||
|
|
15
config/path
15
config/path
|
@ -61,18 +61,12 @@ XORG_PATH_DRIVERS=/usr/lib/xorg/modules/drivers
|
|||
|
||||
. config/optimize
|
||||
|
||||
# use ARM toolchain on 64/32 split builds
|
||||
# use different toolchain for 64/32 split builds
|
||||
if [ -z "$KERNEL_TOOLCHAIN" -a "$TARGET_KERNEL_ARCH" = "arm64" -a "$TARGET_ARCH" = "arm" ]; then
|
||||
if [ "${MACHINE_HARDWARE_NAME}" = "x86_64" ]; then
|
||||
KERNEL_TOOLCHAIN="aarch64-none-linux-gnu"
|
||||
elif [ "${MACHINE_HARDWARE_NAME}" = "aarch64" ]; then
|
||||
KERNEL_TOOLCHAIN="aarch64-none-elf"
|
||||
else
|
||||
die "No known toolchain available for ${MACHINE_HARDWARE_NAME}."
|
||||
fi
|
||||
KERNEL_TOOLCHAIN="aarch64"
|
||||
fi
|
||||
if [ -n "$KERNEL_TOOLCHAIN" ]; then
|
||||
TARGET_KERNEL_PREFIX=$TOOLCHAIN/lib/gcc-arm-$KERNEL_TOOLCHAIN/bin/$KERNEL_TOOLCHAIN-
|
||||
TARGET_KERNEL_PREFIX=$KERNEL_TOOLCHAIN-none-elf-
|
||||
else
|
||||
TARGET_KERNEL_PREFIX=$TARGET_PREFIX
|
||||
fi
|
||||
|
@ -106,3 +100,6 @@ unset CONFIG_SITE
|
|||
# Ignore custom python installs...
|
||||
unset PYTHONHOME PYTHONPATH PYTHONSTARTUP
|
||||
export PYTHONNOUSERSITE=yes #disable PEP 370
|
||||
|
||||
# Fix #4737
|
||||
unset PYTHONDONTWRITEBYTECODE
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="android-headers"
|
||||
PKG_VERSION="25"
|
||||
PKG_SHA256="1e0ecdf56c33aaa523109254e2c475878d8cfc5795ebd4bb5ecbaf80926f4fe9"
|
||||
PKG_LICENSE="Apache"
|
||||
PKG_SITE="https://android.googlesource.com/"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="Android Platform Headers from AOSP releases."
|
||||
PKG_TOOLCHAIN="manual"
|
|
@ -4,8 +4,8 @@
|
|||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="attr"
|
||||
PKG_VERSION="2.4.48"
|
||||
PKG_SHA256="5ead72b358ec709ed00bbf7a9eaef1654baad937c001c044fe8b74c57f5324e7"
|
||||
PKG_VERSION="2.5.1"
|
||||
PKG_SHA256="bae1c6949b258a0d68001367ce0c741cebdacdd3b62965d17e5eb23cd78adaf8"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://savannah.nongnu.org/projects/attr"
|
||||
PKG_URL="http://download.savannah.nongnu.org/releases/attr/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="autoconf-archive"
|
||||
PKG_VERSION="2019.01.06"
|
||||
PKG_SHA256="17195c833098da79de5778ee90948f4c5d90ed1a0cf8391b4ab348e2ec511e3f"
|
||||
PKG_VERSION="2022.09.03"
|
||||
PKG_SHA256="e07454f00d8cae7907bed42d0747798927809947684d94c37207a4d63a32f423"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://www.gnu.org/software/autoconf-archive/"
|
||||
PKG_URL="http://ftpmirror.gnu.org/autoconf-archive/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
|
||||
PKG_NAME="autoconf"
|
||||
PKG_VERSION="2.69"
|
||||
PKG_SHA256="64ebcec9f8ac5b2487125a86a7760d2591ac9e1d3dbd59489633f9de62a57684"
|
||||
PKG_VERSION="2.71"
|
||||
PKG_SHA256="f14c83cfebcc9427f2c3cea7258bd90df972d92eb26752da4ddad81c87a0faa4"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://sources.redhat.com/autoconf/"
|
||||
PKG_URL="http://ftpmirror.gnu.org/autoconf/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
|
|
|
@ -1,59 +0,0 @@
|
|||
From 8e269b13bc042bc2504d5860e0d453b4aac32909 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Sun, 24 Jun 2018 13:45:26 +0200
|
||||
Subject: [PATCH] backport AC_INIT: add --runstatedir option to configure
|
||||
|
||||
Backport of a197431414088a417b407b9b20583b2e8f7363bd.
|
||||
Changes to NEWS and doc/autoconf.tex have been dropped.
|
||||
---
|
||||
lib/autoconf/general.m4 | 13 ++++++++++++-
|
||||
1 file changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
|
||||
index adfae1db..1437c0ca 100644
|
||||
--- a/lib/autoconf/general.m4
|
||||
+++ b/lib/autoconf/general.m4
|
||||
@@ -586,6 +586,7 @@ AC_SUBST([datadir], ['${datarootdir}'])dnl
|
||||
AC_SUBST([sysconfdir], ['${prefix}/etc'])dnl
|
||||
AC_SUBST([sharedstatedir], ['${prefix}/com'])dnl
|
||||
AC_SUBST([localstatedir], ['${prefix}/var'])dnl
|
||||
+AC_SUBST([runstatedir], ['${localstatedir}/run'])dnl
|
||||
AC_SUBST([includedir], ['${prefix}/include'])dnl
|
||||
AC_SUBST([oldincludedir], ['/usr/include'])dnl
|
||||
AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
|
||||
@@ -812,6 +813,15 @@ do
|
||||
| -silent | --silent | --silen | --sile | --sil)
|
||||
silent=yes ;;
|
||||
|
||||
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
|
||||
+ | --runstate | --runstat | --runsta | --runst | --runs \
|
||||
+ | --run | --ru | --r)
|
||||
+ ac_prev=runstatedir ;;
|
||||
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
|
||||
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
|
||||
+ | --run=* | --ru=* | --r=*)
|
||||
+ runstatedir=$ac_optarg ;;
|
||||
+
|
||||
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
||||
ac_prev=sbindir ;;
|
||||
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
||||
@@ -921,7 +931,7 @@ fi
|
||||
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
|
||||
datadir sysconfdir sharedstatedir localstatedir includedir \
|
||||
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
|
||||
- libdir localedir mandir
|
||||
+ libdir localedir mandir runstatedir
|
||||
do
|
||||
eval ac_val=\$$ac_var
|
||||
# Remove trailing slashes.
|
||||
@@ -1058,6 +1068,7 @@ Fine tuning of the installation directories:
|
||||
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
||||
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
||||
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
||||
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
|
||||
--libdir=DIR object code libraries [EPREFIX/lib]
|
||||
--includedir=DIR C header files [PREFIX/include]
|
||||
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
The check for solaris 'print' causes significant problems on a linux machine
|
||||
with dash as /bin/sh since it triggers the execution of "print" which on some
|
||||
linux systems is a perl script which is part of mailcap. Worse, this perl
|
||||
script calls "which file" and if successful ignores the path file was found
|
||||
in and just runs "file" without a path. Each exection causes PATH to be searched.
|
||||
|
||||
Simply assuming the shell's printf function works cuts out all the fork overhead
|
||||
and when parallel tasks are running, this overhead appears to be significant.
|
||||
|
||||
RP
|
||||
2015/11/28
|
||||
Upstream-Status: Inappropriate
|
||||
|
||||
Index: autoconf-2.69/lib/m4sugar/m4sh.m4
|
||||
===================================================================
|
||||
--- autoconf-2.69.orig/lib/m4sugar/m4sh.m4
|
||||
+++ autoconf-2.69/lib/m4sugar/m4sh.m4
|
||||
@@ -1045,40 +1045,8 @@ m4_defun([_AS_ECHO_PREPARE],
|
||||
[[as_nl='
|
||||
'
|
||||
export as_nl
|
||||
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
|
||||
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
|
||||
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
|
||||
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
|
||||
-# Prefer a ksh shell builtin over an external printf program on Solaris,
|
||||
-# but without wasting forks for bash or zsh.
|
||||
-if test -z "$BASH_VERSION$ZSH_VERSION" \
|
||||
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
|
||||
- as_echo='print -r --'
|
||||
- as_echo_n='print -rn --'
|
||||
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
|
||||
- as_echo='printf %s\n'
|
||||
- as_echo_n='printf %s'
|
||||
-else
|
||||
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
|
||||
- as_echo_body='eval /usr/ucb/echo -n "$][1$as_nl"'
|
||||
- as_echo_n='/usr/ucb/echo -n'
|
||||
- else
|
||||
- as_echo_body='eval expr "X$][1" : "X\\(.*\\)"'
|
||||
- as_echo_n_body='eval
|
||||
- arg=$][1;
|
||||
- case $arg in @%:@(
|
||||
- *"$as_nl"*)
|
||||
- expr "X$arg" : "X\\(.*\\)$as_nl";
|
||||
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
|
||||
- esac;
|
||||
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
|
||||
- '
|
||||
- export as_echo_n_body
|
||||
- as_echo_n='sh -c $as_echo_n_body as_echo'
|
||||
- fi
|
||||
- export as_echo_body
|
||||
- as_echo='sh -c $as_echo_body as_echo'
|
||||
-fi
|
||||
+as_echo='printf %s\n'
|
||||
+as_echo_n='printf %s'
|
||||
]])# _AS_ECHO_PREPARE
|
||||
|
||||
|
|
@ -43,39 +43,30 @@ Index: autoconf-2.63/bin/autoreconf.in
|
|||
# Even if the user specified a configure.ac, trim to get the
|
||||
# directory, and look for configure.ac again. Because (i) the code
|
||||
# is simpler, and (ii) we are still able to diagnose simultaneous
|
||||
@@ -255,6 +266,11 @@
|
||||
{
|
||||
my ($aclocal, $flags) = @_;
|
||||
|
||||
+ @ex = grep (/^aclocal$/, @exclude);
|
||||
+ if ($#ex != -1) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
# aclocal 1.8+ does all this for free. It can be recognized by its
|
||||
# --force support.
|
||||
if ($aclocal_supports_force)
|
||||
@@ -368,7 +384,10 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- xsystem_hint ("autopoint is needed because this package uses Gettext", "$autopoint");
|
||||
- xsystem_hint ("autopoint is needed because this package uses Gettext",
|
||||
- $autopoint);
|
||||
+ @ex = grep (/^autopoint$/, @exclude);
|
||||
+ if ($#ex == -1) {
|
||||
+ xsystem_hint ("autopoint is needed because this package uses Gettext", "$autopoint");
|
||||
+ xsystem_hint ("autopoint is needed because this package uses Gettext",
|
||||
+ $autopoint);
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
@@ -532,16 +551,17 @@
|
||||
@@ -532,16 +551,19 @@
|
||||
{
|
||||
$libtoolize .= " --ltdl";
|
||||
}
|
||||
- xsystem_hint ("libtoolize is needed because this package uses Libtool", $libtoolize);
|
||||
- xsystem_hint ("libtoolize is needed because this package uses Libtool",
|
||||
- $libtoolize);
|
||||
- $rerun_aclocal = 1;
|
||||
+ @ex = grep (/^libtoolize$/, @exclude);
|
||||
+ if ($#ex == -1) {
|
||||
+ xsystem_hint ("libtoolize is needed because this package uses Libtool", $libtoolize);
|
||||
+ xsystem_hint ("libtoolize is needed because this package uses Libtool",
|
||||
+ $libtoolize);
|
||||
+ $rerun_aclocal = 1;
|
||||
+ }
|
||||
}
|
||||
|
@ -84,11 +75,24 @@ Index: autoconf-2.63/bin/autoreconf.in
|
|||
verb "$configure_ac: not running libtoolize: --install not given";
|
||||
}
|
||||
|
||||
-
|
||||
-
|
||||
# ------------------- #
|
||||
# Rerunning aclocal. #
|
||||
# ------------------- #
|
||||
|
||||
# --------------------- #
|
||||
# Running intltoolize. #
|
||||
# --------------------- #
|
||||
@@ -748,8 +748,11 @@
|
||||
}
|
||||
elsif ($install)
|
||||
{
|
||||
- xsystem_hint ("gtkdocize is needed because this package uses Gtkdoc",
|
||||
- $gtkdocize);
|
||||
+ @ex = grep (/^autopoint$/, @exclude);
|
||||
+ if ($#ex == -1) {
|
||||
+ xsystem_hint ("gtkdocize is needed because this package uses Gtkdoc",
|
||||
+ $gtkdocize);
|
||||
+ }
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -572,7 +592,10 @@
|
||||
# latter runs the former, and (ii) autoconf is stricter than
|
||||
# autoheader. So all in all, autoconf should give better error
|
||||
|
@ -115,8 +119,8 @@ Index: autoconf-2.63/bin/autoreconf.in
|
|||
|
||||
@@ -610,7 +636,10 @@
|
||||
# We should always run automake, and let it decide whether it shall
|
||||
# update the file or not. In fact, the effect of `$force' is already
|
||||
# included in `$automake' via `--no-force'.
|
||||
# update the file or not. In fact, the effect of '$force' is already
|
||||
# included in '$automake' via '--no-force'.
|
||||
- xsystem ($automake);
|
||||
+ @ex = grep (/^automake$/, @exclude);
|
||||
+ if ($#ex == -1) {
|
||||
|
@ -124,7 +128,7 @@ Index: autoconf-2.63/bin/autoreconf.in
|
|||
+ }
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------------------- #
|
||||
@@ -634,7 +663,10 @@
|
||||
}
|
||||
else
|
||||
|
|
10
packages/devel/autoconf/patches/man-exclude.patch
Normal file
10
packages/devel/autoconf/patches/man-exclude.patch
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- a/Makefile.in 2021-02-28 12:25:11.000000000 +0000
|
||||
+++ b/Makefile.in 2021-02-28 12:25:11.000000000 +0000
|
||||
@@ -780,7 +780,6 @@
|
||||
man/autoconf.1 \
|
||||
man/autoheader.1 \
|
||||
man/autom4te.1 \
|
||||
- man/autoreconf.1 \
|
||||
man/autoscan.1 \
|
||||
man/autoupdate.1 \
|
||||
man/ifnames.1
|
|
@ -9,6 +9,7 @@ PKG_SITE="http://sources.redhat.com/automake/"
|
|||
PKG_URL="http://ftpmirror.gnu.org/automake/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_DEPENDS_HOST="ccache:host autoconf:host"
|
||||
PKG_LONGDESC="A GNU tool for automatically creating Makefiles."
|
||||
PKG_BUILD_FLAGS="-parallel"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--target=${TARGET_NAME} --disable-silent-rules"
|
||||
|
||||
|
|
54
packages/devel/binutils-aarch64/package.mk
Normal file
54
packages/devel/binutils-aarch64/package.mk
Normal file
|
@ -0,0 +1,54 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="binutils-aarch64"
|
||||
PKG_VERSION="$(get_pkg_version binutils)"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_HOST="toolchain:host"
|
||||
PKG_LONGDESC="A GNU collection of binary utilities for 64-bit ARM."
|
||||
PKG_DEPENDS_UNPACK+=" binutils"
|
||||
PKG_PATCH_DIRS+=" $(get_pkg_directory binutils)/patches"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--target=aarch64-none-elf \
|
||||
--with-sysroot=${SYSROOT_PREFIX} \
|
||||
--with-lib-path=${SYSROOT_PREFIX}/lib:${SYSROOT_PREFIX}/usr/lib \
|
||||
--without-ppl \
|
||||
--enable-static \
|
||||
--without-cloog \
|
||||
--disable-werror \
|
||||
--disable-multilib \
|
||||
--disable-libada \
|
||||
--disable-libssp \
|
||||
--enable-version-specific-runtime-libs \
|
||||
--enable-plugins \
|
||||
--enable-gold \
|
||||
--enable-ld=default \
|
||||
--enable-lto \
|
||||
--disable-nls"
|
||||
|
||||
unpack() {
|
||||
mkdir -p ${PKG_BUILD}
|
||||
tar --strip-components=1 -xf ${SOURCES}/binutils/binutils-${PKG_VERSION}.tar.xz -C ${PKG_BUILD}
|
||||
}
|
||||
|
||||
pre_configure_host() {
|
||||
unset CPPFLAGS
|
||||
unset CFLAGS
|
||||
unset CXXFLAGS
|
||||
unset LDFLAGS
|
||||
}
|
||||
|
||||
make_host() {
|
||||
make configure-host
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make MAKEINFO=true
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
cp -v ../include/libiberty.h ${SYSROOT_PREFIX}/usr/include
|
||||
make -C bfd install # fix parallel build with libctf requiring bfd
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make MAKEINFO=true install
|
||||
}
|
54
packages/devel/binutils-arm-none-eabi/package.mk
Normal file
54
packages/devel/binutils-arm-none-eabi/package.mk
Normal file
|
@ -0,0 +1,54 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="binutils-arm-none-eabi"
|
||||
PKG_VERSION="$(get_pkg_version binutils)"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_HOST="toolchain:host"
|
||||
PKG_LONGDESC="A GNU collection of binary utilities for ARM Cortex-R/M processors."
|
||||
PKG_DEPENDS_UNPACK+=" binutils"
|
||||
PKG_PATCH_DIRS+=" $(get_pkg_directory binutils)/patches"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--target=arm-none-eabi \
|
||||
--with-sysroot=${SYSROOT_PREFIX} \
|
||||
--with-lib-path=${SYSROOT_PREFIX}/lib:${SYSROOT_PREFIX}/usr/lib \
|
||||
--without-ppl \
|
||||
--enable-static \
|
||||
--without-cloog \
|
||||
--disable-werror \
|
||||
--disable-multilib \
|
||||
--disable-libada \
|
||||
--disable-libssp \
|
||||
--enable-version-specific-runtime-libs \
|
||||
--enable-plugins \
|
||||
--enable-gold \
|
||||
--enable-ld=default \
|
||||
--enable-lto \
|
||||
--disable-nls"
|
||||
|
||||
unpack() {
|
||||
mkdir -p ${PKG_BUILD}
|
||||
tar --strip-components=1 -xf ${SOURCES}/binutils/binutils-${PKG_VERSION}.tar.xz -C ${PKG_BUILD}
|
||||
}
|
||||
|
||||
pre_configure_host() {
|
||||
unset CPPFLAGS
|
||||
unset CFLAGS
|
||||
unset CXXFLAGS
|
||||
unset LDFLAGS
|
||||
}
|
||||
|
||||
make_host() {
|
||||
make configure-host
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make MAKEINFO=true
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
cp -v ../include/libiberty.h ${SYSROOT_PREFIX}/usr/include
|
||||
make -C bfd install # fix parallel build with libctf requiring bfd
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make MAKEINFO=true install
|
||||
}
|
54
packages/devel/binutils-bpf/package.mk
Normal file
54
packages/devel/binutils-bpf/package.mk
Normal file
|
@ -0,0 +1,54 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="binutils-bpf"
|
||||
PKG_VERSION="$(get_pkg_version binutils)"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_HOST="toolchain:host"
|
||||
PKG_LONGDESC="A GNU collection of binary utilities for 64-bit ARM."
|
||||
PKG_DEPENDS_UNPACK+=" binutils"
|
||||
PKG_PATCH_DIRS+=" $(get_pkg_directory binutils)/patches"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--target=bpf \
|
||||
--with-sysroot=${SYSROOT_PREFIX} \
|
||||
--with-lib-path=${SYSROOT_PREFIX}/lib:${SYSROOT_PREFIX}/usr/lib \
|
||||
--without-ppl \
|
||||
--enable-static \
|
||||
--without-cloog \
|
||||
--disable-werror \
|
||||
--disable-multilib \
|
||||
--disable-libada \
|
||||
--disable-libssp \
|
||||
--enable-version-specific-runtime-libs \
|
||||
--enable-plugins \
|
||||
--enable-gold \
|
||||
--enable-ld=default \
|
||||
--enable-lto \
|
||||
--disable-nls"
|
||||
|
||||
unpack() {
|
||||
mkdir -p ${PKG_BUILD}
|
||||
tar --strip-components=1 -xf ${SOURCES}/binutils/binutils-${PKG_VERSION}.tar.xz -C ${PKG_BUILD}
|
||||
}
|
||||
|
||||
pre_configure_host() {
|
||||
unset CPPFLAGS
|
||||
unset CFLAGS
|
||||
unset CXXFLAGS
|
||||
unset LDFLAGS
|
||||
}
|
||||
|
||||
make_host() {
|
||||
make configure-host
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make MAKEINFO=true
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
cp -v ../include/libiberty.h ${SYSROOT_PREFIX}/usr/include
|
||||
make -C bfd install # fix parallel build with libctf requiring bfd
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make MAKEINFO=true install
|
||||
}
|
54
packages/devel/binutils-or1k/package.mk
Normal file
54
packages/devel/binutils-or1k/package.mk
Normal file
|
@ -0,0 +1,54 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="binutils-or1k"
|
||||
PKG_VERSION="$(get_pkg_version binutils)"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_HOST="toolchain:host"
|
||||
PKG_LONGDESC="A GNU collection of binary utilities for OpenRISC 1000."
|
||||
PKG_DEPENDS_UNPACK+=" binutils"
|
||||
PKG_PATCH_DIRS+=" $(get_pkg_directory binutils)/patches"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--target=or1k-none-elf \
|
||||
--with-sysroot=${SYSROOT_PREFIX} \
|
||||
--with-lib-path=${SYSROOT_PREFIX}/lib:${SYSROOT_PREFIX}/usr/lib \
|
||||
--without-ppl \
|
||||
--enable-static \
|
||||
--without-cloog \
|
||||
--disable-werror \
|
||||
--disable-multilib \
|
||||
--disable-libada \
|
||||
--disable-libssp \
|
||||
--enable-version-specific-runtime-libs \
|
||||
--enable-plugins \
|
||||
--enable-gold \
|
||||
--enable-ld=default \
|
||||
--enable-lto \
|
||||
--disable-nls"
|
||||
|
||||
unpack() {
|
||||
mkdir -p ${PKG_BUILD}
|
||||
tar --strip-components=1 -xf ${SOURCES}/binutils/binutils-${PKG_VERSION}.tar.xz -C ${PKG_BUILD}
|
||||
}
|
||||
|
||||
pre_configure_host() {
|
||||
unset CPPFLAGS
|
||||
unset CFLAGS
|
||||
unset CXXFLAGS
|
||||
unset LDFLAGS
|
||||
}
|
||||
|
||||
make_host() {
|
||||
make configure-host
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make MAKEINFO=true
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
cp -v ../include/libiberty.h ${SYSROOT_PREFIX}/usr/include
|
||||
make -C bfd install # fix parallel build with libctf requiring bfd
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make MAKEINFO=true install
|
||||
}
|
|
@ -3,10 +3,11 @@
|
|||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="binutils"
|
||||
PKG_VERSION="2.38"
|
||||
PKG_VERSION="2.39"
|
||||
PKG_SHA256="645c25f563b8adc0a81dbd6a41cffbf4d37083a382e02d5d3df4f65c09516d00"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.gnu.org/software/binutils/"
|
||||
PKG_URL="http://ftp.gnu.org/gnu/binutils/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_SITE="https://www.gnu.org/software/binutils/"
|
||||
PKG_URL="https://ftp.gnu.org/gnu/binutils/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_DEPENDS_HOST="ccache:host bison:host flex:host linux:host"
|
||||
PKG_DEPENDS_TARGET="toolchain zlib binutils:host"
|
||||
PKG_LONGDESC="A GNU collection of binary utilities."
|
||||
|
@ -15,6 +16,7 @@ PKG_CONFIGURE_OPTS_HOST="--target=${TARGET_NAME} \
|
|||
--with-sysroot=${SYSROOT_PREFIX} \
|
||||
--with-lib-path=${SYSROOT_PREFIX}/lib:${SYSROOT_PREFIX}/usr/lib \
|
||||
--without-ppl \
|
||||
--enable-static \
|
||||
--without-cloog \
|
||||
--disable-werror \
|
||||
--disable-multilib \
|
||||
|
@ -33,8 +35,8 @@ PKG_CONFIGURE_OPTS_TARGET="--target=${TARGET_NAME} \
|
|||
--with-system-zlib \
|
||||
--without-ppl \
|
||||
--without-cloog \
|
||||
--disable-static \
|
||||
--enable-shared \
|
||||
--enable-static \
|
||||
--disable-shared \
|
||||
--disable-werror \
|
||||
--disable-multilib \
|
||||
--disable-libada \
|
||||
|
@ -54,12 +56,15 @@ pre_configure_host() {
|
|||
|
||||
make_host() {
|
||||
make configure-host
|
||||
make
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make MAKEINFO=true
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
cp -v ../include/libiberty.h ${SYSROOT_PREFIX}/usr/include
|
||||
make install
|
||||
make -C bfd install # fix parallel build with libctf requiring bfd
|
||||
# override the makeinfo binary with true - this does not build the documentation
|
||||
make HELP2MAN=true MAKEINFO=true install
|
||||
}
|
||||
|
||||
make_target() {
|
||||
|
|
|
@ -10,9 +10,9 @@ From: Khem Raj <raj.khem@gmail.com>
|
|||
Date: Fri, 15 Jan 2016 06:31:09 +0000
|
||||
Subject: [PATCH 09/13] warn for uses of system directories when cross linking
|
||||
|
||||
--- a/ld/ldfile.c 2015-11-13 09:27:42.000000000 +0100
|
||||
+++ b/ld/ldfile.c 2016-11-15 19:09:31.658371254 +0100
|
||||
@@ -102,6 +102,17 @@ ldfile_add_library_path (const char *nam
|
||||
--- a/ld/ldfile.c
|
||||
+++ b/ld/ldfile.c
|
||||
@@ -103,6 +103,17 @@ ldfile_add_library_path (const char *nam
|
||||
if (!cmdline && config.only_cmd_line_lib_dirs)
|
||||
return;
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
--- a/bfd/Makefile.in 2022-08-05 09:53:59.000000000 +0000
|
||||
+++ b/bfd/Makefile.in 2022-08-07 11:22:25.397501975 +0000
|
||||
@@ -264,7 +264,7 @@
|
||||
am__v_texidevnull_0 = > /dev/null
|
||||
am__v_texidevnull_1 =
|
||||
am__dirstamp = $(am__leading_dot)dirstamp
|
||||
-INFO_DEPS = doc/bfd.info
|
||||
+INFO_DEPS =
|
||||
am__TEXINFO_TEX_DIR = $(srcdir)
|
||||
DVIS = doc/bfd.dvi
|
||||
PDFS = doc/bfd.pdf
|
|
@ -3,8 +3,7 @@
|
|||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="boost"
|
||||
PKG_VERSION="1.78.0"
|
||||
PKG_SHA256="8681f175d4bdb26c52222665793eef08490d7758529330f98d3b29dd0735bccc"
|
||||
PKG_VERSION="1.80.0"
|
||||
PKG_LICENSE="OSS"
|
||||
PKG_SITE="http://www.boost.org/"
|
||||
PKG_URL="https://boostorg.jfrog.io/artifactory/main/release/${PKG_VERSION}/source/${PKG_NAME}_${PKG_VERSION//./_}.tar.bz2"
|
||||
|
@ -21,7 +20,7 @@ make_host() {
|
|||
|
||||
makeinstall_host() {
|
||||
mkdir -p ${TOOLCHAIN}/bin
|
||||
cp bjam ${TOOLCHAIN}/bin
|
||||
cp b2 ${TOOLCHAIN}/bin
|
||||
}
|
||||
|
||||
pre_configure_target() {
|
||||
|
@ -31,7 +30,7 @@ pre_configure_target() {
|
|||
|
||||
configure_target() {
|
||||
sh bootstrap.sh --prefix=/usr \
|
||||
--with-bjam=${TOOLCHAIN}/bin/bjam \
|
||||
--with-bjam=${TOOLCHAIN}/bin/b2 \
|
||||
--with-python=${TOOLCHAIN}/bin/python \
|
||||
--with-python-root=${SYSROOT_PREFIX}/usr
|
||||
|
||||
|
@ -42,6 +41,7 @@ configure_target() {
|
|||
}
|
||||
|
||||
makeinstall_target() {
|
||||
ln -sf ${TOOLCHAIN}/bin/b2 ${TOOLCHAIN}/bin/bjam
|
||||
${TOOLCHAIN}/bin/bjam -d2 --ignore-site-config \
|
||||
--layout=system \
|
||||
--prefix=${SYSROOT_PREFIX}/usr \
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="cmake"
|
||||
PKG_VERSION="3.23.2"
|
||||
PKG_SHA256="f316b40053466f9a416adf981efda41b160ca859e97f6a484b447ea299ff26aa"
|
||||
PKG_VERSION="3.24.2"
|
||||
PKG_SHA256="0d9020f06f3ddf17fb537dc228e1a56c927ee506b486f55fe2dc19f69bf0c8db"
|
||||
PKG_LICENSE="BSD"
|
||||
PKG_SITE="https://cmake.org/"
|
||||
PKG_URL="https://cmake.org/files/v$(get_pkg_version_maj_min)/cmake-${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="configtools"
|
||||
PKG_VERSION="c8ddc8472f8efcadafc1ef53ca1d863415fddd5f" # 2020-12-22
|
||||
PKG_SHA256="6389d62e4e55554c764c2c0deb5b42767f34d7f274728c28355fedbaa337165b"
|
||||
PKG_VERSION="20403c5701973a4cbd7e0b4bbeb627fcd424a0f1" # 2022-08-01
|
||||
PKG_SHA256="d89be2c5a06d45e4a8731404cd6eb52ddde393480a56754a68b44f36753e38d7"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://git.savannah.gnu.org/cgit/config.git"
|
||||
PKG_URL="http://git.savannah.gnu.org/cgit/config.git/snapshot/config-${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -1,24 +1,15 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="crossguid"
|
||||
PKG_VERSION="8f399e8bd4252be9952f3dfa8199924cc8487ca4"
|
||||
PKG_SHA256="022c9f02cc36e865cd8fd0111a597ff2bd91988deeb348dbe2aba64aed1abd99"
|
||||
PKG_VERSION="ca1bf4b810e2d188d04cb6286f957008ee1b7681" # 2019-05-30
|
||||
PKG_SHA256="6be27e0b3a4907f0cd3cfadec255ee1b925569e1bd06e67a4d2f4267299b69c4"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/graeme-hill/crossguid"
|
||||
PKG_URL="https://github.com/graeme-hill/crossguid/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain util-linux"
|
||||
PKG_LONGDESC="minimal, cross platform, C++ GUID library"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
make_target() {
|
||||
${CXX} -c guid.cpp -o guid.o ${CXXFLAGS} -std=c++11 -DGUID_LIBUUID
|
||||
${AR} rvs libcrossguid.a guid.o
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p ${SYSROOT_PREFIX}/usr/lib/
|
||||
cp libcrossguid.a ${SYSROOT_PREFIX}/usr/lib/
|
||||
mkdir -p ${SYSROOT_PREFIX}/usr/include/
|
||||
cp guid.h ${SYSROOT_PREFIX}/usr/include
|
||||
}
|
||||
PKG_CMAKE_OPTS_TARGET="-DCROSSGUID_TESTS=OFF \
|
||||
-Wno-dev"
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
# Copyright (C) 2022-present Team CoreELEC (https://coreelec.org)
|
||||
|
||||
PKG_NAME="dbus-glib"
|
||||
PKG_VERSION="0.110"
|
||||
PKG_SHA256="7ce4760cf66c69148f6bd6c92feaabb8812dee30846b24cd0f7395c436d7e825"
|
||||
PKG_VERSION="0.112"
|
||||
PKG_SHA256="7d550dccdfcd286e33895501829ed971eeb65c614e73aadb4a08aeef719b143a"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://freedesktop.org/wiki/Software/dbus"
|
||||
PKG_URL="https://dbus.freedesktop.org/releases/dbus-glib/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
|
|
13
packages/devel/ecm/package.mk
Normal file
13
packages/devel/ecm/package.mk
Normal file
|
@ -0,0 +1,13 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
PKG_NAME="ecm"
|
||||
PKG_VERSION="v5.84.0"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/KDE/extra-cmake-modules"
|
||||
PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_SHORTDESC="KDE Extra CMake Modules"
|
||||
PKG_TOOLCHAIN="cmake"
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DBUILD_TESTING=OFF -DBUILD_HTML_DOCS=OFF -DBUILD_MAN_DOCS=OFF -DBUILD_QTHELP_DOCS=OFF"
|
|
@ -3,8 +3,8 @@
|
|||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="elfutils"
|
||||
PKG_VERSION="0.186"
|
||||
PKG_SHA256="7f6fb9149b1673d38d9178a0d3e0fb8a1ec4f53a9f4c2ff89469609879641177"
|
||||
PKG_VERSION="0.187"
|
||||
PKG_SHA256="e70b0dfbe610f90c4d1fe0d71af142a4e25c3c4ef9ebab8d2d72b65159d454c8"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://sourceware.org/elfutils/"
|
||||
PKG_URL="https://sourceware.org/elfutils/ftp/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="fakeroot"
|
||||
PKG_VERSION="1.25.3"
|
||||
PKG_SHA256="8e903683357f7f5bcc31b879fd743391ad47691d4be33d24a76be3b6c21e956c"
|
||||
PKG_VERSION="1.29"
|
||||
PKG_SHA256="8fbbafb780c9173e3ace4a04afbc1d900f337f3216883939f5c7db3431be7c20"
|
||||
PKG_LICENSE="GPL3"
|
||||
PKG_SITE="https://tracker.debian.org/pkg/fakeroot"
|
||||
PKG_URL="http://ftp.debian.org/debian/pool/main/f/fakeroot/${PKG_NAME}_${PKG_VERSION}.orig.tar.gz"
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
From f6ca3217ec2fad93d078fa0121aa8f88d7d12ccb Mon Sep 17 00:00:00 2001
|
||||
From: lualiliu <lualiliu@outlook.com>
|
||||
Date: Wed, 7 Sep 2022 10:57:49 +0800
|
||||
Subject: [PATCH] Add a patch about fakeroot(_STAT_VER undeclared)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
solve it:
|
||||
libfakeroot.c:99:40: error: ‘_STAT_VER’ undeclared (first use in this
|
||||
function)
|
||||
---
|
||||
...fine-_STAT_VER-if-not-already-define.patch | 34 +++++++++++++++++++
|
||||
1 file changed, 34 insertions(+)
|
||||
create mode 100644 packages/devel/fakeroot/patches/0001-libfakeroot.c-define-_STAT_VER-if-not-already-define.patch
|
||||
|
||||
diff --git a/packages/devel/fakeroot/patches/0001-libfakeroot.c-define-_STAT_VER-if-not-already-define.patch b/packages/devel/fakeroot/patches/0001-libfakeroot.c-define-_STAT_VER-if-not-already-define.patch
|
||||
new file mode 100644
|
||||
index 00000000..613d0c95
|
||||
--- /dev/null
|
||||
+++ b/packages/devel/fakeroot/patches/0001-libfakeroot.c-define-_STAT_VER-if-not-already-define.patch
|
||||
@@ -0,0 +1,34 @@
|
||||
+From ca68c7336dea4a07cf5b77c1fdc9e9aee4984ca5 Mon Sep 17 00:00:00 2001
|
||||
+From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
|
||||
+Date: Thu, 11 Feb 2021 20:59:25 -0800
|
||||
+Subject: [PATCH 1/3] libfakeroot.c: define _STAT_VER if not already defined
|
||||
+
|
||||
+Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
|
||||
+---
|
||||
+ libfakeroot.c | 10 ++++++++++
|
||||
+ 1 file changed, 10 insertions(+)
|
||||
+
|
||||
+diff --git a/libfakeroot.c b/libfakeroot.c
|
||||
+index 3e80e38..14cdbc4 100644
|
||||
+--- a/libfakeroot.c
|
||||
++++ b/libfakeroot.c
|
||||
+@@ -90,6 +90,16 @@
|
||||
+ #define SEND_GET_XATTR64(a,b,c) send_get_xattr64(a,b)
|
||||
+ #endif
|
||||
+
|
||||
++#ifndef _STAT_VER
|
||||
++ #if defined (__aarch64__)
|
||||
++ #define _STAT_VER 0
|
||||
++ #elif defined (__x86_64__)
|
||||
++ #define _STAT_VER 1
|
||||
++ #else
|
||||
++ #define _STAT_VER 3
|
||||
++ #endif
|
||||
++#endif
|
||||
++
|
||||
+ /*
|
||||
+ These INT_* (which stands for internal) macros should always be used when
|
||||
+ the fakeroot library owns the storage of the stat variable.
|
||||
+--
|
||||
+2.30.1
|
||||
+
|
|
@ -2,8 +2,8 @@
|
|||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="flatbuffers"
|
||||
PKG_VERSION="1.12.0"
|
||||
PKG_SHA256="62f2223fb9181d1d6338451375628975775f7522185266cd5296571ac152bc45"
|
||||
PKG_VERSION="2.0.8"
|
||||
PKG_SHA256="f97965a727d26386afaefff950badef2db3ab6af9afe23ed6d94bfb65f95f37e"
|
||||
PKG_LICENSE="Apache-2.0"
|
||||
PKG_SITE="https://github.com/google/flatbuffers"
|
||||
PKG_URL="https://github.com/google/flatbuffers/archive/v${PKG_VERSION}.tar.gz"
|
||||
|
@ -23,7 +23,7 @@ PKG_CMAKE_OPTS_HOST="-DFLATBUFFERS_CODE_COVERAGE=OFF \
|
|||
PKG_CMAKE_OPTS_TARGET="-DFLATBUFFERS_CODE_COVERAGE=OFF \
|
||||
-DFLATBUFFERS_BUILD_TESTS=OFF \
|
||||
-DFLATBUFFERS_INSTALL=ON \
|
||||
-DFLATBUFFERS_BUILD_FLATLIB=OFF \
|
||||
-DFLATBUFFERS_BUILD_FLATLIB=ON \
|
||||
-DFLATBUFFERS_BUILD_FLATC=OFF \
|
||||
-DFLATBUFFERS_BUILD_FLATHASH=OFF \
|
||||
-DFLATBUFFERS_BUILD_GRPCTEST=OFF \
|
||||
|
|
|
@ -3,14 +3,13 @@
|
|||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="fribidi"
|
||||
PKG_VERSION="1.0.10"
|
||||
PKG_SHA256="7f1c687c7831499bcacae5e8675945a39bacbad16ecaa945e9454a32df653c01"
|
||||
PKG_VERSION="1.0.12"
|
||||
PKG_SHA256="0cd233f97fc8c67bb3ac27ce8440def5d3ffacf516765b91c2cc654498293495"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="http://fribidi.freedesktop.org/"
|
||||
PKG_URL="https://github.com/fribidi/fribidi/releases/download/v${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="A bidirectional algorithm library."
|
||||
PKG_TOOLCHAIN="meson"
|
||||
PKG_BUILD_FLAGS="+pic"
|
||||
|
||||
PKG_MESON_OPTS_TARGET="-Ddeprecated=false \
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="gettext"
|
||||
PKG_VERSION="0.21"
|
||||
PKG_SHA256="d20fcbb537e02dcf1383197ba05bd0734ef7bf5db06bdb241eb69b7d16b73192"
|
||||
PKG_VERSION="0.21.1"
|
||||
PKG_SHA256="50dbc8f39797950aa2c98e939947c527e5ac9ebd2c1b99dd7b06ba33a6767ae6"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.gnu.org/s/gettext/"
|
||||
PKG_URL="http://ftp.gnu.org/pub/gnu/gettext/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_SITE="https://www.gnu.org/s/gettext/"
|
||||
PKG_URL="https://ftp.gnu.org/pub/gnu/gettext/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_DEPENDS_HOST="ccache:host"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="A program internationalization library and tools."
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="glib"
|
||||
PKG_VERSION="2.71.0"
|
||||
PKG_VERSION="2.74.0"
|
||||
PKG_SHA256="3652c7f072d7b031a6b5edd623f77ebc5dcd2ae698598abcc89ff39ca75add30"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="https://www.gtk.org/"
|
||||
PKG_URL="https://download.gnome.org/sources/glib/$(get_pkg_version_maj_min)/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_DEPENDS_HOST="libffi:host pcre:host Python3:host meson:host ninja:host"
|
||||
PKG_DEPENDS_TARGET="toolchain pcre zlib libffi Python3:host util-linux"
|
||||
PKG_DEPENDS_HOST="libffi:host pcre2:host Python3:host meson:host ninja:host"
|
||||
PKG_DEPENDS_TARGET="toolchain pcre2 zlib libffi Python3:host util-linux"
|
||||
PKG_LONGDESC="A library which includes support routines for C such as lists, trees, hashes, memory allocation."
|
||||
PKG_TOOLCHAIN="meson"
|
||||
|
||||
PKG_MESON_OPTS_HOST="-Ddefault_library=shared \
|
||||
-Dinstalled_tests=false \
|
||||
|
|
|
@ -3,18 +3,18 @@
|
|||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="glibc"
|
||||
PKG_VERSION="2.35"
|
||||
PKG_SHA256="5123732f6b67ccd319305efd399971d58592122bcc2a6518a1bd2510dd0cf52e"
|
||||
PKG_VERSION="2.36"
|
||||
PKG_SHA256="1c959fea240906226062cb4b1e7ebce71a9f0e3c0836c09e7e3423d434fcfe75"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://www.gnu.org/software/libc/"
|
||||
PKG_URL="https://ftp.gnu.org/pub/gnu/glibc/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
PKG_DEPENDS_TARGET="ccache:host autotools:host linux:host gcc:bootstrap pigz:host Python3:host"
|
||||
PKG_DEPENDS_INIT="glibc"
|
||||
PKG_LONGDESC="The Glibc package contains the main C library."
|
||||
PKG_BUILD_FLAGS="-gold"
|
||||
PKG_BUILD_FLAGS="+bfd -gold"
|
||||
|
||||
case "${DEVICE}" in
|
||||
RG351P|RG351V|RG351MP|RG503|RG353P)
|
||||
RG353P|RG503|RG351P|RG351V|RG351MP)
|
||||
OPT_ENABLE_KERNEL=4.4.0
|
||||
;;
|
||||
*)
|
||||
|
@ -98,6 +98,16 @@ EOF
|
|||
|
||||
# binaries to install into target
|
||||
GLIBC_INCLUDE_BIN="getent ldd locale localedef"
|
||||
|
||||
# glibc does not need / nor build successfully with _FILE_OFFSET_BITS or _TIME_BITS set
|
||||
case ${ARCH} in
|
||||
arm|aarch64)
|
||||
export CFLAGS=$(echo ${CFLAGS} | sed -e "s|-D_FILE_OFFSET_BITS=64||g")
|
||||
export CFLAGS=$(echo ${CFLAGS} | sed -e "s|-D_TIME_BITS=64||g")
|
||||
export CXXFLAGS=$(echo ${CXXFLAGS} | sed -e "s|-D_FILE_OFFSET_BITS=64||g")
|
||||
export CXXFLAGS=$(echo ${CXXFLAGS} | sed -e "s|-D_TIME_BITS=64||g")
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
|
@ -108,9 +118,7 @@ post_makeinstall_target() {
|
|||
|
||||
safe_remove ${INSTALL}/usr/lib/audit
|
||||
safe_remove ${INSTALL}/usr/lib/glibc
|
||||
safe_remove ${INSTALL}/usr/lib/libc_pic
|
||||
safe_remove ${INSTALL}/usr/lib/*.o
|
||||
safe_remove ${INSTALL}/usr/lib/*.map
|
||||
safe_remove ${INSTALL}/var
|
||||
|
||||
# add UTF-8 charmap
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
From 85892fbc0d6f64f564f0d4c9514a7183ad8eb985 Mon Sep 17 00:00:00 2001
|
||||
From: alex <knaerzche@gmail.com>
|
||||
Date: Sun, 17 Jul 2022 12:16:20 +0200
|
||||
Subject: [PATCH] HACK: Don't check GLIBC_ABI_DT_RELR support for ChromeOS
|
||||
libwidevinecdm.so
|
||||
|
||||
---
|
||||
elf/dl-version.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/elf/dl-version.c b/elf/dl-version.c
|
||||
index cda0889209..058394f148 100644
|
||||
--- a/elf/dl-version.c
|
||||
+++ b/elf/dl-version.c
|
||||
@@ -373,7 +373,8 @@ _dl_check_map_versions (struct link_map *map, int verbose, int trace_mode)
|
||||
if (d->d_tag == DT_NEEDED)
|
||||
{
|
||||
const char *name = strtab + d->d_un.d_val;
|
||||
- if (strncmp (name, "libc.so.", 8) == 0)
|
||||
+ if (strncmp (name, "libc.so.", 8) == 0 &&
|
||||
+ strstr (map->l_name, "libwidevinecdm.so") == NULL)
|
||||
{
|
||||
_dl_exception_create
|
||||
(&exception, DSO_FILENAME (map->l_name),
|
||||
--
|
||||
2.37.1
|
||||
|
|
@ -1,327 +0,0 @@
|
|||
From 6676e967dba405ca31d57b63e096becd13d4a200 Mon Sep 17 00:00:00 2001
|
||||
From: Rahul Chaudhry <rahulchaudhry@chromium.org>
|
||||
Date: Thu, 15 Mar 2018 14:30:17 -0700
|
||||
Subject: [PATCH 4/8] sys-libs/glibc: add support for SHT_RELR sections.
|
||||
|
||||
This patch adds experimental support for SHT_RELR sections, proposed
|
||||
here: https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
|
||||
|
||||
SHT_RELR sections are supported for arm, aarch64, and x86_64 targets.
|
||||
To enable them, pass '--experimental-use-relr' flag to gold.
|
||||
|
||||
Definitions for the new ELF section type and dynamic array tags, as well
|
||||
as the encoding used in the new section are all under discussion and are
|
||||
subject to change. We plan to send the patch upstream after the gABI has
|
||||
been updated to include the new definitions.
|
||||
|
||||
[Adrian: forward-ported to glibc 2.32]
|
||||
---
|
||||
elf/do-rel.h | 41 ++++++++++++++++++++++++++++++++++--
|
||||
elf/dynamic-link.h | 15 +++++++++++++
|
||||
elf/elf.h | 15 +++++++++++--
|
||||
elf/get-dynamic-info.h | 7 ++++++
|
||||
sysdeps/aarch64/dl-machine.h | 10 +++++++++
|
||||
sysdeps/arm/dl-machine.h | 10 +++++++++
|
||||
sysdeps/i386/dl-machine.h | 10 +++++++++
|
||||
sysdeps/x86_64/dl-machine.h | 10 +++++++++
|
||||
8 files changed, 114 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/elf/do-rel.h
|
||||
+++ b/elf/do-rel.h
|
||||
@@ -28,6 +28,12 @@
|
||||
# define elf_machine_rel_relative elf_machine_rela_relative
|
||||
#endif
|
||||
|
||||
+#ifdef DO_RELR
|
||||
+# define elf_dynamic_do_Rel elf_dynamic_do_Relr
|
||||
+# define Rel Relr
|
||||
+# define elf_machine_rel_relative elf_machine_relr_relative
|
||||
+#endif
|
||||
+
|
||||
#ifndef DO_ELF_MACHINE_REL_RELATIVE
|
||||
# define DO_ELF_MACHINE_REL_RELATIVE(map, l_addr, relative) \
|
||||
elf_machine_rel_relative (l_addr, relative, \
|
||||
@@ -48,12 +54,12 @@ elf_dynamic_do_Rel (struct link_map *map
|
||||
const ElfW(Rel) *r = (const void *) reladdr;
|
||||
const ElfW(Rel) *end = (const void *) (reladdr + relsize);
|
||||
ElfW(Addr) l_addr = map->l_addr;
|
||||
-# if defined ELF_MACHINE_IRELATIVE && !defined RTLD_BOOTSTRAP
|
||||
+# if defined ELF_MACHINE_IRELATIVE && !defined RTLD_BOOTSTRAP && !defined DO_RELR
|
||||
const ElfW(Rel) *r2 = NULL;
|
||||
const ElfW(Rel) *end2 = NULL;
|
||||
# endif
|
||||
|
||||
-#if (!defined DO_RELA || !defined ELF_MACHINE_PLT_REL) && !defined RTLD_BOOTSTRAP
|
||||
+#if (!defined DO_RELA || !defined ELF_MACHINE_PLT_REL) && !defined RTLD_BOOTSTRAP && !defined DO_RELR
|
||||
/* We never bind lazily during ld.so bootstrap. Unfortunately gcc is
|
||||
not clever enough to see through all the function calls to realize
|
||||
that. */
|
||||
@@ -82,8 +88,10 @@ elf_dynamic_do_Rel (struct link_map *map
|
||||
else
|
||||
#endif
|
||||
{
|
||||
+# if !defined DO_RELR
|
||||
const ElfW(Sym) *const symtab =
|
||||
(const void *) D_PTR (map, l_info[DT_SYMTAB]);
|
||||
+# endif
|
||||
const ElfW(Rel) *relative = r;
|
||||
r += nrelative;
|
||||
|
||||
@@ -110,9 +118,36 @@ elf_dynamic_do_Rel (struct link_map *map
|
||||
if (l_addr != 0 || ! map->l_info[VALIDX(DT_GNU_PRELINKED)])
|
||||
# endif
|
||||
#endif
|
||||
+
|
||||
+#ifdef DO_RELR
|
||||
+ {
|
||||
+ ElfW(Addr) base = 0;
|
||||
+ for (; relative < end; ++relative)
|
||||
+ {
|
||||
+ ElfW(Relr) entry = *relative;
|
||||
+ if ((entry&1) == 0)
|
||||
+ {
|
||||
+ elf_machine_relr_relative (l_addr, scope, (void *) (l_addr + entry));
|
||||
+ base = entry + sizeof(ElfW(Addr));
|
||||
+ continue;
|
||||
+ }
|
||||
+ ElfW(Addr) offset = base;
|
||||
+ while (entry != 0)
|
||||
+ {
|
||||
+ entry >>= 1;
|
||||
+ if ((entry&1) != 0)
|
||||
+ elf_machine_relr_relative (l_addr, scope, (void *) (l_addr + offset));
|
||||
+ offset += sizeof(ElfW(Addr));
|
||||
+ }
|
||||
+ base += (8*sizeof(ElfW(Addr)) - 1) * sizeof(ElfW(Addr));
|
||||
+ }
|
||||
+ }
|
||||
+#else
|
||||
for (; relative < r; ++relative)
|
||||
DO_ELF_MACHINE_REL_RELATIVE (map, l_addr, relative);
|
||||
+#endif
|
||||
|
||||
+#if !defined DO_RELR
|
||||
#ifdef RTLD_BOOTSTRAP
|
||||
/* The dynamic linker always uses versioning. */
|
||||
assert (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL);
|
||||
@@ -211,6 +246,7 @@ elf_dynamic_do_Rel (struct link_map *map
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,3 +256,4 @@ elf_dynamic_do_Rel (struct link_map *map
|
||||
#undef elf_machine_rel_relative
|
||||
#undef DO_ELF_MACHINE_REL_RELATIVE
|
||||
#undef DO_RELA
|
||||
+#undef DO_RELR
|
||||
--- a/elf/dynamic-link.h
|
||||
+++ b/elf/dynamic-link.h
|
||||
@@ -50,6 +50,11 @@ static inline void __attribute__((always_i
|
||||
elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
|
||||
void *const reloc_addr);
|
||||
# endif
|
||||
+# if ! ELF_MACHINE_NO_RELR
|
||||
+static inline void __attribute__((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr, struct r_scope_elem *scope[],
|
||||
+ void *const reloc_addr);
|
||||
+# endif
|
||||
# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
|
||||
static inline void __attribute__((always_inline))
|
||||
elf_machine_lazy_rel (struct link_map *map, struct r_scope_elem *scope[],
|
||||
@@ -146,6 +151,15 @@ elf_machine_lazy_rel (struct link_map *m
|
||||
# define ELF_DYNAMIC_DO_RELA(map, scope, lazy, skip_ifunc) /* Nothing to do. */
|
||||
# endif
|
||||
|
||||
+# if ! ELF_MACHINE_NO_RELR
|
||||
+# define DO_RELR
|
||||
+# include "do-rel.h"
|
||||
+# define ELF_DYNAMIC_DO_RELR(map, scope, lazy, skip_ifunc) \
|
||||
+ _ELF_DYNAMIC_DO_RELOC (RELR, Relr, map, scope, lazy, skip_ifunc, 1)
|
||||
+# else
|
||||
+# define ELF_DYNAMIC_DO_RELR(map, scope, lazy, skip_ifunc) /* Nothing to do. */
|
||||
+# endif
|
||||
+
|
||||
/* This can't just be an inline function because GCC is too dumb
|
||||
to inline functions containing inlines themselves. */
|
||||
# define ELF_DYNAMIC_RELOCATE(map, scope, lazy, consider_profile, skip_ifunc) \
|
||||
@@ -154,6 +168,7 @@ elf_machine_lazy_rel (struct link_map *m
|
||||
(consider_profile)); \
|
||||
ELF_DYNAMIC_DO_REL ((map), (scope), edr_lazy, skip_ifunc); \
|
||||
ELF_DYNAMIC_DO_RELA ((map), (scope), edr_lazy, skip_ifunc); \
|
||||
+ ELF_DYNAMIC_DO_RELR ((map), (scope), edr_lazy, skip_ifunc); \
|
||||
} while (0)
|
||||
|
||||
#endif
|
||||
--- a/elf/elf.h
|
||||
+++ b/elf/elf.h
|
||||
@@ -443,7 +443,8 @@ typedef struct
|
||||
#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */
|
||||
#define SHT_GROUP 17 /* Section group */
|
||||
#define SHT_SYMTAB_SHNDX 18 /* Extended section indices */
|
||||
-#define SHT_NUM 19 /* Number of defined types. */
|
||||
+#define SHT_RELR 19 /* Relative relocation, only offsets */
|
||||
+#define SHT_NUM 20 /* Number of defined types. */
|
||||
#define SHT_LOOS 0x60000000 /* Start OS-specific. */
|
||||
#define SHT_GNU_ATTRIBUTES 0x6ffffff5 /* Object attributes. */
|
||||
#define SHT_GNU_HASH 0x6ffffff6 /* GNU-style hash table. */
|
||||
@@ -662,6 +663,12 @@ typedef struct
|
||||
Elf64_Sxword r_addend; /* Addend */
|
||||
} Elf64_Rela;
|
||||
|
||||
+/* Relocation table entry for relative (in section of type SHT_RELR). */
|
||||
+
|
||||
+typedef Elf32_Word Elf32_Relr; /* offset/bitmap for relative relocations */
|
||||
+
|
||||
+typedef Elf64_Xword Elf64_Relr; /* offset/bitmap for relative relocations */
|
||||
+
|
||||
/* How to extract and insert information held in the r_info field. */
|
||||
|
||||
#define ELF32_R_SYM(val) ((val) >> 8)
|
||||
@@ -887,7 +894,10 @@ typedef struct
|
||||
#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/
|
||||
#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */
|
||||
#define DT_SYMTAB_SHNDX 34 /* Address of SYMTAB_SHNDX section */
|
||||
-#define DT_NUM 35 /* Number used */
|
||||
+#define DT_RELRSZ 35
|
||||
+#define DT_RELR 36
|
||||
+#define DT_RELRENT 37
|
||||
+#define DT_NUM 38 /* Number used */
|
||||
#define DT_LOOS 0x6000000d /* Start of OS-specific */
|
||||
#define DT_HIOS 0x6ffff000 /* End of OS-specific */
|
||||
#define DT_LOPROC 0x70000000 /* Start of processor-specific */
|
||||
@@ -939,6 +949,7 @@ typedef struct
|
||||
GNU extension. */
|
||||
#define DT_VERSYM 0x6ffffff0
|
||||
|
||||
+#define DT_RELRCOUNT 0x6ffffff8
|
||||
#define DT_RELACOUNT 0x6ffffff9
|
||||
#define DT_RELCOUNT 0x6ffffffa
|
||||
|
||||
--- a/elf/get-dynamic-info.h
|
||||
+++ b/elf/get-dynamic-info.h
|
||||
@@ -89,6 +89,9 @@ elf_get_dynamic_info (struct link_map *l
|
||||
# if ! ELF_MACHINE_NO_REL
|
||||
ADJUST_DYN_INFO (DT_REL);
|
||||
# endif
|
||||
+# if ! ELF_MACHINE_NO_RELR
|
||||
+ ADJUST_DYN_INFO (DT_RELR);
|
||||
+#endif
|
||||
ADJUST_DYN_INFO (DT_JMPREL);
|
||||
ADJUST_DYN_INFO (VERSYMIDX (DT_VERSYM));
|
||||
ADJUST_DYN_INFO (ADDRIDX (DT_GNU_HASH));
|
||||
@@ -113,6 +116,10 @@ elf_get_dynamic_info (struct link_map *l
|
||||
if (info[DT_REL] != NULL)
|
||||
assert (info[DT_RELENT]->d_un.d_val == sizeof (ElfW(Rel)));
|
||||
#endif
|
||||
+#if ! ELF_MACHINE_NO_RELR
|
||||
+ if (info[DT_RELR] != NULL)
|
||||
+ assert (info[DT_RELRENT]->d_un.d_val == sizeof (ElfW(Relr)));
|
||||
+# endif
|
||||
if (bootstrap || static_pie_bootstrap)
|
||||
{
|
||||
assert (info[DT_RUNPATH] == NULL);
|
||||
--- a/sysdeps/aarch64/dl-machine.h
|
||||
+++ b/sysdeps/aarch64/dl-machine.h
|
||||
@@ -384,6 +385,15 @@ elf_machine_rela_relative (ElfW(Addr) l_
|
||||
}
|
||||
|
||||
static inline void
|
||||
+__attribute__ ((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr, struct r_scope_elem *scope[],
|
||||
+ void *const reloc_addr_arg)
|
||||
+{
|
||||
+ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
|
||||
+ *reloc_addr += l_addr;
|
||||
+}
|
||||
+
|
||||
+static inline void
|
||||
__attribute__ ((always_inline))
|
||||
elf_machine_lazy_rel (struct link_map *map, struct r_scope_elem *scope[],
|
||||
ElfW(Addr) l_addr,
|
||||
--- a/sysdeps/arm/dl-machine.h
|
||||
+++ b/sysdeps/arm/dl-machine.h
|
||||
@@ -637,6 +638,15 @@ elf_machine_rel_relative (Elf32_Addr l_a
|
||||
*reloc_addr += l_addr;
|
||||
}
|
||||
|
||||
+static inline void
|
||||
+__attribute ((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr, struct r_scope_elem *scope[],
|
||||
+ void *const reloc_addr_arg)
|
||||
+{
|
||||
+ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
|
||||
+ *reloc_addr += l_addr;
|
||||
+}
|
||||
+
|
||||
# ifndef RTLD_BOOTSTRAP
|
||||
static inline void
|
||||
__attribute__ ((always_inline))
|
||||
--- a/sysdeps/i386/dl-machine.h
|
||||
+++ b/sysdeps/i386/dl-machine.h
|
||||
@@ -626,6 +626,15 @@ elf_machine_rel_relative (Elf32_Addr l_a
|
||||
*reloc_addr += l_addr;
|
||||
}
|
||||
|
||||
+static inline void
|
||||
+__attribute ((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr, struct r_scope_elem *scope[],
|
||||
+ void *const reloc_addr_arg)
|
||||
+{
|
||||
+ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
|
||||
+ *reloc_addr += l_addr;
|
||||
+}
|
||||
+
|
||||
# ifndef RTLD_BOOTSTRAP
|
||||
static inline void
|
||||
__attribute__ ((always_inline))
|
||||
--- a/sysdeps/x86_64/dl-machine.h
|
||||
+++ b/sysdeps/x86_64/dl-machine.h
|
||||
@@ -545,6 +546,15 @@ elf_machine_rela_relative (ElfW(Addr) l_
|
||||
}
|
||||
|
||||
static inline void
|
||||
+__attribute ((always_inline))
|
||||
+elf_machine_relr_relative (ElfW(Addr) l_addr, struct r_scope_elem *scope[],
|
||||
+ void *const reloc_addr_arg)
|
||||
+{
|
||||
+ ElfW(Addr) *const reloc_addr = reloc_addr_arg;
|
||||
+ *reloc_addr += l_addr;
|
||||
+}
|
||||
+
|
||||
+static inline void
|
||||
__attribute ((always_inline))
|
||||
elf_machine_lazy_rel (struct link_map *map, struct r_scope_elem *scope[],
|
||||
ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
|
||||
--- a/sysdeps/arm/dl-machine-rel.h 2022-02-03 05:27:54.000000000 +0000
|
||||
+++ b/sysdeps/arm/dl-machine-rel.h 2022-04-11 10:16:03.103743770 +0000
|
||||
@@ -23,6 +23,7 @@
|
||||
Prelinked libraries may use Elf32_Rela though. */
|
||||
#define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
|
||||
#define ELF_MACHINE_NO_REL 0
|
||||
+#define ELF_MACHINE_NO_RELR 0
|
||||
|
||||
/* ARM never uses Elf32_Rela relocations for the dynamic linker.
|
||||
Prelinked libraries may use Elf32_Rela though. */
|
||||
--- a/sysdeps/generic/dl-machine-rel.h 2022-02-03 05:27:54.000000000 +0000
|
||||
+++ b/sysdeps/generic/dl-machine-rel.h 2022-04-11 10:28:40.996539086 +0000
|
||||
@@ -23,6 +23,7 @@
|
||||
#define ELF_MACHINE_NO_REL 1
|
||||
/* Defined if the architecture supports Elf{32,64}_Rela relocations. */
|
||||
#define ELF_MACHINE_NO_RELA 0
|
||||
+#define ELF_MACHINE_NO_RELR 0
|
||||
/* Used to calculate the index of link_map l_reloc_result. */
|
||||
#define PLTREL ElfW(Rela)
|
||||
|
||||
--- a/sysdeps/i386/dl-machine-rel.h 2022-02-03 05:27:54.000000000 +0000
|
||||
+++ b/sysdeps/i386/dl-machine-rel.h 2022-04-11 10:16:17.677066810 +0000
|
||||
@@ -23,6 +23,7 @@
|
||||
Prelinked libraries may use Elf32_Rela though. */
|
||||
#define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
|
||||
#define ELF_MACHINE_NO_REL 0
|
||||
+#define ELF_MACHINE_NO_RELR 0
|
||||
|
||||
/* The i386 never uses Elf32_Rela relocations for the dynamic linker.
|
||||
Prelinked libraries may use Elf32_Rela though. */
|
|
@ -1,31 +0,0 @@
|
|||
From patchwork Thu Feb 3 20:07:40 2022
|
||||
Subject: [COMMITTED] linux: Fix missing __convert_scm_timestamps (BZ #28860)
|
||||
Date: Thu, 3 Feb 2022 17:07:40 -0300
|
||||
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
|
||||
Commit 948ce73b31 made recvmsg/recvmmsg to always call
|
||||
__convert_scm_timestamps for 64 bit time_t symbol, so adjust it to
|
||||
always build it for __TIMESIZE != 64.
|
||||
|
||||
It fixes build for architecture with 32 bit time_t support when
|
||||
configured with minimum kernel of 5.1.
|
||||
---
|
||||
sysdeps/unix/sysv/linux/convert_scm_timestamps.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/sysdeps/unix/sysv/linux/convert_scm_timestamps.c b/sysdeps/unix/sysv/linux/convert_scm_timestamps.c
|
||||
index 82171bf325..dfc8c2beff 100644
|
||||
--- a/sysdeps/unix/sysv/linux/convert_scm_timestamps.c
|
||||
+++ b/sysdeps/unix/sysv/linux/convert_scm_timestamps.c
|
||||
@@ -16,9 +16,9 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
-#include <kernel-features.h>
|
||||
+#include <bits/timesize.h>
|
||||
|
||||
-#ifndef __ASSUME_TIME64_SYSCALLS
|
||||
+#if __TIMESIZE != 64
|
||||
# include <stdint.h>
|
||||
# include <string.h>
|
||||
# include <sys/socket.h>
|
|
@ -9,85 +9,90 @@ Date: Tue Oct 1 12:09:07 2013 +0300
|
|||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -730,6 +730,38 @@ gaih_inet (const char *name, const struc
|
||||
if (res_ctx == NULL)
|
||||
no_more = 1;
|
||||
if (res_ctx == NULL)
|
||||
no_more = 1;
|
||||
|
||||
+ /* AI_ADDRCONFIG determines whether or not we should suppress any
|
||||
+ * hostname lookups. If the local host has only IPv4 interfaces,
|
||||
+ * then suppress lookups for IPv6 addresses, and vice versa; if
|
||||
+ * the local host has only IPv6 interfaces, suppress any lookups
|
||||
+ * for IPv4 addresses..
|
||||
+ *
|
||||
+ * Link-local IPv6 addresses and loopback addresses of either
|
||||
+ * family are ignored when determining whether or not the host has
|
||||
+ * an interface of the given address family, cf. __check_pf().
|
||||
+ *
|
||||
+ * This logic is only applied for AF_UNSPEC. If the caller
|
||||
+ * explicitly requested an address family, give him what he asked
|
||||
+ * for.
|
||||
+ *
|
||||
+ * If we didn't find any interfaces of either address family,
|
||||
+ * we ignore AI_ADDRCONFIG and return all available resutlts. */
|
||||
+ int suppress_af = 0;
|
||||
+ if (req->ai_family == AF_UNSPEC)
|
||||
+ {
|
||||
+ struct in6addrinfo *in6ai = NULL;
|
||||
+ size_t in6ailen = 0;
|
||||
+ bool seen_ipv4 = false;
|
||||
+ bool seen_ipv6 = false;
|
||||
+ __check_pf (&seen_ipv4, &seen_ipv6, &in6ai, &in6ailen);
|
||||
+ __free_in6ai (in6ai);
|
||||
+ /* AI_ADDRCONFIG determines whether or not we should suppress any
|
||||
+ * hostname lookups. If the local host has only IPv4 interfaces,
|
||||
+ * then suppress lookups for IPv6 addresses, and vice versa; if
|
||||
+ * the local host has only IPv6 interfaces, suppress any lookups
|
||||
+ * for IPv4 addresses..
|
||||
+ *
|
||||
+ * Link-local IPv6 addresses and loopback addresses of either
|
||||
+ * family are ignored when determining whether or not the host has
|
||||
+ * an interface of the given address family, cf. __check_pf().
|
||||
+ *
|
||||
+ * This logic is only applied for AF_UNSPEC. If the caller
|
||||
+ * explicitly requested an address family, give him what he asked
|
||||
+ * for.
|
||||
+ *
|
||||
+ * If we didn't find any interfaces of either address family,
|
||||
+ * we ignore AI_ADDRCONFIG and return all available resutlts. */
|
||||
+ int suppress_af = 0;
|
||||
+ if (req->ai_family == AF_UNSPEC)
|
||||
+ {
|
||||
+ struct in6addrinfo *in6ai = NULL;
|
||||
+ size_t in6ailen = 0;
|
||||
+ bool seen_ipv4 = false;
|
||||
+ bool seen_ipv6 = false;
|
||||
+ __check_pf (&seen_ipv4, &seen_ipv6, &in6ai, &in6ailen);
|
||||
+ __free_in6ai (in6ai);
|
||||
+
|
||||
+ if(seen_ipv4 && !seen_ipv6)
|
||||
+ suppress_af = AF_INET6;
|
||||
+ else if(seen_ipv6 && !seen_ipv4)
|
||||
+ suppress_af = AF_INET;
|
||||
+ }
|
||||
+ if(seen_ipv4 && !seen_ipv6)
|
||||
+ suppress_af = AF_INET6;
|
||||
+ else if(seen_ipv6 && !seen_ipv4)
|
||||
+ suppress_af = AF_INET;
|
||||
+ }
|
||||
+
|
||||
while (!no_more)
|
||||
{
|
||||
no_data = 0;
|
||||
while (!no_more)
|
||||
{
|
||||
no_data = 0;
|
||||
@@ -737,7 +769,7 @@ gaih_inet (const char *name, const struc
|
||||
|
||||
/* gethostbyname4_r sends out parallel A and AAAA queries and
|
||||
is thus only suitable for PF_UNSPEC. */
|
||||
- if (req->ai_family == PF_UNSPEC)
|
||||
+ if (req->ai_family == PF_UNSPEC && !suppress_af)
|
||||
fct4 = __nss_lookup_function (nip, "gethostbyname4_r");
|
||||
/* gethostbyname4_r sends out parallel A and AAAA queries and
|
||||
is thus only suitable for PF_UNSPEC. */
|
||||
- if (req->ai_family == PF_UNSPEC)
|
||||
+ if (req->ai_family == PF_UNSPEC && !suppress_af)
|
||||
fct4 = __nss_lookup_function (nip, "gethostbyname4_r");
|
||||
|
||||
if (fct4 != NULL)
|
||||
@@ -826,20 +858,22 @@ gaih_inet (const char *name, const struc
|
||||
if (fct4 != NULL)
|
||||
@@ -826,25 +858,27 @@ gaih_inet (const char *name, const struc
|
||||
|
||||
if (fct != NULL)
|
||||
if (fct != NULL)
|
||||
{
|
||||
- if (req->ai_family == AF_INET6
|
||||
- || req->ai_family == AF_UNSPEC)
|
||||
+ if ((req->ai_family == AF_INET6
|
||||
+ || req->ai_family == AF_UNSPEC)
|
||||
+ && suppress_af != AF_INET6)
|
||||
{
|
||||
if ((result = gethosts (fct, AF_INET6, name, req, tmpbuf,
|
||||
res, &status, &no_data)) != 0)
|
||||
{
|
||||
- if (req->ai_family == AF_INET6
|
||||
- || req->ai_family == AF_UNSPEC)
|
||||
+ if ((req->ai_family == AF_INET6
|
||||
+ || req->ai_family == AF_UNSPEC)
|
||||
+ && suppress_af != AF_INET6)
|
||||
{
|
||||
gethosts (AF_INET6);
|
||||
no_inet6_data = no_data;
|
||||
inet6_status = status;
|
||||
}
|
||||
- if (req->ai_family == AF_INET
|
||||
- || req->ai_family == AF_UNSPEC
|
||||
- || (req->ai_family == AF_INET6
|
||||
- && (req->ai_flags & AI_V4MAPPED)
|
||||
- /* Avoid generating the mapped addresses if we
|
||||
- know we are not going to need them. */
|
||||
- && ((req->ai_flags & AI_ALL) || !got_ipv6)))
|
||||
+ if ((req->ai_family == AF_INET
|
||||
+ || req->ai_family == AF_UNSPEC
|
||||
+ || (req->ai_family == AF_INET6
|
||||
+ && (req->ai_flags & AI_V4MAPPED)
|
||||
+ /* Avoid generating the mapped addresses if we
|
||||
+ know we are not going to need them. */
|
||||
+ && ((req->ai_flags & AI_ALL) || !got_ipv6)))
|
||||
+ && suppress_af != AF_INET)
|
||||
{
|
||||
gethosts (AF_INET);
|
||||
|
||||
__resolv_context_put (res_ctx);
|
||||
goto out;
|
||||
}
|
||||
no_inet6_data = no_data;
|
||||
inet6_status = status;
|
||||
}
|
||||
- if (req->ai_family == AF_INET
|
||||
- || req->ai_family == AF_UNSPEC
|
||||
- || (req->ai_family == AF_INET6
|
||||
- && (req->ai_flags & AI_V4MAPPED)
|
||||
- /* Avoid generating the mapped addresses if we
|
||||
- know we are not going to need them. */
|
||||
- && ((req->ai_flags & AI_ALL) || !res->got_ipv6)))
|
||||
+ if ((req->ai_family == AF_INET
|
||||
+ || req->ai_family == AF_UNSPEC
|
||||
+ || (req->ai_family == AF_INET6
|
||||
+ && (req->ai_flags & AI_V4MAPPED)
|
||||
+ /* Avoid generating the mapped addresses if we
|
||||
+ know we are not going to need them. */
|
||||
+ && ((req->ai_flags & AI_ALL) || !res->got_ipv6)))
|
||||
+ && suppress_af != AF_INET)
|
||||
{
|
||||
if ((result = gethosts (fct, AF_INET, name, req, tmpbuf,
|
||||
res, &status, &no_data)) != 0)
|
||||
--- a/sysdeps/unix/sysv/linux/check_pf.c
|
||||
+++ b/sysdeps/unix/sysv/linux/check_pf.c
|
||||
@@ -224,7 +224,8 @@ make_request (int fd, pid_t pid)
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
# Copyright (C) 2020-present Team CoreELEC (https://coreelec.org)
|
||||
|
||||
PKG_NAME="gobject-introspection"
|
||||
PKG_VERSION="1.72.0"
|
||||
PKG_SHA256="07c30d7f465dabd861c03a950430343e976d445179ad451a4dd1b17329e1cbae"
|
||||
PKG_VERSION="1.74.0"
|
||||
PKG_SHA256="79ed5d764d288f046b027ff064be174d7904904565de150a94841740a2a0455d"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="http://www.gtk.org/"
|
||||
|
@ -18,7 +18,9 @@ PKG_LONGDESC="GLib is a library which includes support routines for C such as li
|
|||
PKG_TOOLCHAIN="meson"
|
||||
|
||||
pre_configure_host() {
|
||||
PKG_MESON_OPTS_HOST="-Ddoctool=disabled"
|
||||
PKG_MESON_OPTS_HOST=" \
|
||||
-Ddoctool=disabled \
|
||||
-Dbuild_introspection_data=false"
|
||||
|
||||
# prevent g-ir-scanner from writing cache data to $HOME
|
||||
export GI_SCANNER_DISABLE_CACHE="1"
|
||||
|
|
14
packages/devel/gperftools/package.mk
Normal file
14
packages/devel/gperftools/package.mk
Normal file
|
@ -0,0 +1,14 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2021-present Team CoreELEC (https://coreelec.org)
|
||||
|
||||
PKG_NAME="gperftools"
|
||||
PKG_VERSION="2.9.1"
|
||||
PKG_SHA256="484a88279d2fa5753d7e9dea5f86954b64975f20e796a6ffaf2f3426a674a06a"
|
||||
PKG_LICENSE="BSD"
|
||||
PKG_SITE="https://github.com/gperftools/gperftools"
|
||||
PKG_URL="https://github.com/gperftools/gperftools/archive/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="Google Performance Tools"
|
||||
PKG_TOOLCHAIN="autotools"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-minimal --disable-debugalloc --disable-static"
|
13
packages/devel/json-c/package.mk
Normal file
13
packages/devel/json-c/package.mk
Normal file
|
@ -0,0 +1,13 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2010-2011 Roman Weber (roman@openelec.tv)
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="json-c"
|
||||
PKG_VERSION="0.16"
|
||||
PKG_SHA256="c169436bd63a30fce4f9560befccb6bad3d375c8c7e9905ceb4e1f28f2cb24f7"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/json-c/json-c"
|
||||
PKG_URL="https://github.com/json-c/json-c/archive/json-c-${PKG_VERSION%-*}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="Implements a reference counting object model that allows you to easily construct JSON objects in C."
|
|
@ -1,11 +0,0 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="libao"
|
||||
PKG_VERSION="cafce902"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://gitlab.xiph.org/xiph/libao"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="Audio output portability library."
|
||||
PKG_TOOLCHAIN="autotools"
|
24
packages/devel/libbpf/package.mk
Normal file
24
packages/devel/libbpf/package.mk
Normal file
|
@ -0,0 +1,24 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libbpf"
|
||||
PKG_VERSION="0.8.1"
|
||||
PKG_SHA256="7bda8187efc619d1eb20a1ba5ab949dd68d40dd44945310c91ac0f915fa4a42b"
|
||||
PKG_LICENSE="LGPL-2.1"
|
||||
PKG_SITE="https://github.com/libbpf/libbpf"
|
||||
PKG_URL="https://github.com/libbpf/libbpf/archive/refs/tags/v${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain elfutils"
|
||||
PKG_LONGDESC="libbpf supports building BPF CO-RE-enabled applications"
|
||||
PKG_TOOLCHAIN="make"
|
||||
|
||||
make_target() {
|
||||
make BUILD_STATIC_ONLY=1 \
|
||||
PREFIX=${SYSROOT_PREFIX}/usr \
|
||||
-C src
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
make BUILD_STATIC_ONLY=1 \
|
||||
PREFIX=${SYSROOT_PREFIX}/usr \
|
||||
-C src install
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
diff --git a/src/Makefile b/src/Makefile
|
||||
index 81ea6b8..7ab5f13 100644
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -67,15 +67,12 @@ INSTALL = install
|
||||
|
||||
DESTDIR ?=
|
||||
|
||||
-ifeq ($(filter-out %64 %64be %64eb %64le %64el s390x, $(shell uname -m)),)
|
||||
- LIBSUBDIR := lib64
|
||||
-else
|
||||
- LIBSUBDIR := lib
|
||||
-endif
|
||||
+LIBSUBDIR := lib
|
||||
|
||||
# By default let the pc file itself use ${prefix} in includedir/libdir so that
|
||||
# the prefix can be overridden at runtime (eg: --define-prefix)
|
||||
ifndef LIBDIR
|
||||
+ PREFIX_PC := /usr
|
||||
LIBDIR_PC := $$\{prefix\}/$(LIBSUBDIR)
|
||||
else
|
||||
LIBDIR_PC := $(LIBDIR)
|
||||
@@ -106,7 +103,7 @@ $(OBJDIR)/libbpf.so.$(LIBBPF_VERSION): $(SHARED_OBJS)
|
||||
$^ $(ALL_LDFLAGS) -o $@
|
||||
|
||||
$(OBJDIR)/libbpf.pc: force
|
||||
- $(Q)sed -e "s|@PREFIX@|$(PREFIX)|" \
|
||||
+ $(Q)sed -e "s|@PREFIX@|$(PREFIX_PC)|" \
|
||||
-e "s|@LIBDIR@|$(LIBDIR_PC)|" \
|
||||
-e "s|@VERSION@|$(LIBBPF_VERSION)|" \
|
||||
< libbpf.pc.template > $@
|
||||
diff --git a/src/libbpf.pc.template b/src/libbpf.pc.template
|
||||
index b45ed53..fe6ddde 100644
|
||||
--- a/src/libbpf.pc.template
|
||||
+++ b/src/libbpf.pc.template
|
||||
@@ -7,6 +7,6 @@ includedir=${prefix}/include
|
||||
Name: libbpf
|
||||
Description: BPF library
|
||||
Version: @VERSION@
|
||||
-Libs: -L${libdir} -lbpf
|
||||
+Libs: -L${libdir} -lbpf -lz
|
||||
Requires.private: libelf zlib
|
||||
Cflags: -I${includedir}
|
|
@ -3,8 +3,8 @@
|
|||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libcec"
|
||||
PKG_VERSION="4.0.7"
|
||||
PKG_SHA256="bcd92c376993a5721d346edcc09eb17289451f9156b1d1d113c9663c2046315a"
|
||||
PKG_VERSION="6.0.2"
|
||||
PKG_SHA256="090696d7a4fb772d7acebbb06f91ab92e025531c7c91824046b9e4e71ecb3377"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://libcec.pulse-eight.com/"
|
||||
PKG_URL="https://github.com/Pulse-Eight/libcec/archive/libcec-${PKG_VERSION}.tar.gz"
|
||||
|
@ -16,10 +16,19 @@ PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=1 \
|
|||
-DCMAKE_INSTALL_LIBDIR_NOARCH:STRING=lib \
|
||||
-DSKIP_PYTHON_WRAPPER=1 \
|
||||
-DHAVE_IMX_API=0 \
|
||||
-DHAVE_AOCEC_API=0 -DHAVE_AMLOGIC_API=0 \
|
||||
-DHAVE_GIT_BIN=0 \
|
||||
-DHAVE_RPI_LIB=0"
|
||||
|
||||
if [ "${KODIPLAYER_DRIVER}" = "libamcodec" ]; 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"
|
||||
fi
|
||||
else
|
||||
PKG_CMAKE_OPTS_TARGET="${PKG_CMAKE_OPTS_TARGET} -DHAVE_AOCEC_API=0 -DHAVE_AMLOGIC_API=0"
|
||||
fi
|
||||
|
||||
# libX11 and xrandr to read the sink's EDID, used to determine the PC's HDMI physical address
|
||||
if [ "${DISPLAYSERVER}" = "x11" ]; then
|
||||
PKG_DEPENDS_TARGET+=" libX11 libXrandr"
|
||||
|
@ -35,7 +44,11 @@ post_makeinstall_target() {
|
|||
# Remove the Python3 demo - useless for us
|
||||
rm -f ${INSTALL}/usr/bin/pyCecClient
|
||||
|
||||
PYTHON_DIR=${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}
|
||||
# Remove the sysmlink and redirect to /var/lib so that we can change libcec versions at run time
|
||||
rm -f ${INSTALL}/usr/lib/libcec.so.6
|
||||
ln -sf /var/lib/libcec.so.6 ${INSTALL}/usr/lib/libcec.so.6
|
||||
|
||||
PYTHON_DIR=${INSTALL}/usr/lib/${PKG_PYTHON_VERSION}
|
||||
if [ -d ${PYTHON_DIR}/dist-packages ]; then
|
||||
mv ${PYTHON_DIR}/dist-packages ${PYTHON_DIR}/site-packages
|
||||
fi
|
||||
|
|
27
packages/devel/libevent/package.mk
Normal file
27
packages/devel/libevent/package.mk
Normal file
|
@ -0,0 +1,27 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2018-present Team CoreELEC (https://coreelec.org)
|
||||
|
||||
PKG_NAME="libevent"
|
||||
PKG_VERSION="2.1.11-stable"
|
||||
PKG_SHA256="a65bac6202ea8c5609fd5c7e480e6d25de467ea1917c08290c521752f147283d"
|
||||
PKG_LICENSE="BSD"
|
||||
PKG_SITE="https://libevent.org"
|
||||
PKG_URL="https://github.com/libevent/libevent/releases/download/release-$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain openssl"
|
||||
PKG_LONGDESC="The libevent API provides a mechanism to execute a callback function when a specific event occurs."
|
||||
PKG_TOOLCHAIN="configure"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-static \
|
||||
--disable-libevent-regress \
|
||||
--disable-samples \
|
||||
--enable-openssl"
|
||||
|
||||
post_unpack() {
|
||||
# https://github.com/libevent/libevent/issues/863
|
||||
# Uninstall.cmake.in is missing from 2.1.11 release
|
||||
touch $PKG_BUILD/cmake/Uninstall.cmake.in
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -f $INSTALL/usr/bin/event_rpcgen.py
|
||||
}
|
|
@ -14,6 +14,7 @@ PKG_LONGDESC="Foreign Function Interface Library."
|
|||
PKG_TOOLCHAIN="autotools"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-debug \
|
||||
--enable-static --disable-shared \
|
||||
--with-pic \
|
||||
--enable-structs \
|
||||
--enable-raw-api \
|
||||
|
|
|
@ -2,13 +2,17 @@
|
|||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libfmt"
|
||||
PKG_VERSION="5.3.0" # newer version break easyrpg!
|
||||
PKG_SHA256="defa24a9af4c622a7134076602070b45721a43c51598c8456ec6f2c4dbb51c89"
|
||||
PKG_VERSION="9.1.0"
|
||||
PKG_SHA256="5dea48d1fcddc3ec571ce2058e13910a0d4a6bab4cc09a809d8b1dd1c88ae6f2"
|
||||
PKG_LICENSE="BSD"
|
||||
PKG_SITE="https://github.com/fmtlib/fmt"
|
||||
PKG_URL="https://github.com/fmtlib/fmt/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_URL="https://github.com/fmtlib/fmt/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="fmt is an open-source formatting library for C++. It can be used as a safe alternative to printf or as a fast alternative to IOStreams."
|
||||
PKG_BUILD_FLAGS="+pic"
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET="-DFMT_DOC=OFF -DFMT_INSTALL=ON -DFMT_TEST=OFF -DFMT_USE_CPP11=ON"
|
||||
PKG_CMAKE_OPTS_TARGET="-DCMAKE_CXX_STANDARD=14 \
|
||||
-DCMAKE_CXX_EXTENSIONS:BOOL=OFF \
|
||||
-DFMT_DOC=OFF \
|
||||
-DFMT_INSTALL=ON \
|
||||
-DFMT_TEST=OFF \
|
||||
-DBUILD_SHARED_LIBS=ON"
|
||||
|
|
25
packages/devel/libirman/package.mk
Normal file
25
packages/devel/libirman/package.mk
Normal file
|
@ -0,0 +1,25 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libirman"
|
||||
PKG_VERSION="0.5.2"
|
||||
PKG_SHA256="43e58d7cd22b3a4c4dc8dcf8542a269ebcb4d8f6ceea0577b9fc882898f09a47"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://sourceforge.net/projects/libirman"
|
||||
PKG_URL="http://downloads.sourceforge.net/project/libirman/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain systemd lirc"
|
||||
PKG_NEED_UNPACK="$(get_pkg_directory lirc)"
|
||||
PKG_LONGDESC="libirman library for lircd"
|
||||
PKG_TOOLCHAIN="autotools"
|
||||
PKG_BUILD_FLAGS="+pic -parallel"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-swtest"
|
||||
|
||||
post_configure_target() {
|
||||
libtool_remove_rpath libtool
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf ${INSTALL}/usr/bin
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
diff -Naur a/config.h.in b/config.h.in
|
||||
--- a/config.h.in 2016-05-18 18:19:56.000000000 +0200
|
||||
+++ b/config.h.in 2016-12-26 22:49:43.514203152 +0100
|
||||
@@ -21,6 +21,9 @@
|
||||
/* Define to 1 if you have the `mkfifo' function. */
|
||||
#undef HAVE_MKFIFO
|
||||
|
||||
+/* defined if poll.h is available */
|
||||
+#undef HAVE_POLL_H
|
||||
+
|
||||
/* Define to 1 if you have the `select' function. */
|
||||
#undef HAVE_SELECT
|
||||
|
||||
@@ -48,6 +51,9 @@
|
||||
/* Define to 1 if you have the <sys/file.h> header file. */
|
||||
#undef HAVE_SYS_FILE_H
|
||||
|
||||
+/* defined if sys/poll.h is available */
|
||||
+#undef HAVE_SYS_POLL_H
|
||||
+
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
diff -Naur a/configure.ac b/configure.ac
|
||||
--- a/configure.ac 2016-05-18 18:19:41.000000000 +0200
|
||||
+++ b/configure.ac 2016-12-26 22:48:40.190031280 +0100
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
-AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h termios.h memory.hi sys/file.h)
|
||||
+AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h termios.h memory.hi sys/file.h poll.h sys/poll.h)
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_TYPE_PID_T
|
|
@ -18,6 +18,10 @@ pre_configure_target() {
|
|||
export CONFIG_SHELL="/bin/bash"
|
||||
}
|
||||
|
||||
post_configure_target() {
|
||||
libtool_remove_rpath libtool
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf ${INSTALL}/usr/bin
|
||||
}
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2020-present Fewtarius
|
||||
# Sodium License: https://libsodium.gitbook.io/doc/#license
|
||||
|
||||
PKG_NAME="libsodium"
|
||||
PKG_VERSION="d1580db1b34b7c73abb960e5f464a87ce8b7ed7d"
|
||||
PKG_SHA256="75902b344f2a2279698266dc53fb48dfa394d2f507ae81c8f935264bbed49588"
|
||||
PKG_LICENSE="ISC"
|
||||
PKG_SITE="https://github.com/jedisct1/libsodium"
|
||||
PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_GIT_CLONE_BRANCH="stable"
|
||||
PKG_DEPENDS_HOST="toolchain"
|
||||
PKG_LONGDESC="A modern, easy-to-use software library for encryption, decryption, signatures, password hashing and more."
|
||||
PKG_TOOLCHAIN="autotools"
|
|
@ -0,0 +1,170 @@
|
|||
From e249c43741779ae7dd6834f6840384257d4c3dd8 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Crowe <mac@mcrowe.com>
|
||||
Date: Fri, 6 Nov 2020 15:22:37 +0000
|
||||
Subject: [PATCH] [SV 45763] Fix large command line on POSIX systems
|
||||
|
||||
When presented with a very long command line (as is common when linking
|
||||
a large number of files with absolute paths in a deep subdirectory),
|
||||
make fails to execute the command as it doesn't split the command line
|
||||
to fit within the limits.
|
||||
|
||||
This is based on a fix for Debian bug 688601[1] by Adam Conrad applied
|
||||
by Manoj Srivastava originally applied for Debian make-dfsg 4.0-5 in
|
||||
2014 but dropped in 2018 (it seems under the incorrect assumption that
|
||||
it had been accepted upstream.)
|
||||
|
||||
I've tweaked Adam's original patch so that it compiles successfully with
|
||||
-Werror on top of current master. This required:
|
||||
|
||||
* moving the eval_line declaration to the top of the block, so I moved
|
||||
the macros too
|
||||
* using a const variable when iterating over the shell
|
||||
* adding a cast to avoid a signed/unsigned mismatch.
|
||||
|
||||
As suggested in the Savannah bug report[2], I've added a test case that
|
||||
fails without the rest of the patch. I'm not sure what the consequences
|
||||
of running the test on non-POSIX targets would be and whether it needs
|
||||
marking as an expected failure.
|
||||
|
||||
* src/job.c (construct_command_argv_internal): support running commands
|
||||
longer than MAX_ARG_STRLEN
|
||||
* tests/scripts/features/long_command_line: add test for such a command
|
||||
* configure.ac: check for now-required sys/user.h and linux/binfmts.h
|
||||
headers
|
||||
|
||||
[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=688601
|
||||
[2] https://savannah.gnu.org/bugs/?45763#comment2
|
||||
---
|
||||
src/job.c | 52 +++++++++++++++++++++++-
|
||||
tests/scripts/features/long_command_line | 30 ++++++++++++++
|
||||
2 files changed, 81 insertions(+), 1 deletions(-)
|
||||
create mode 100644 tests/scripts/features/long_command_line
|
||||
|
||||
diff --git a/src/job.c b/src/job.c
|
||||
index 3bcec38..734c591 100644
|
||||
--- a/src/job.c
|
||||
+++ b/src/job.c
|
||||
@@ -26,6 +26,12 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
#include "variable.h"
|
||||
#include "os.h"
|
||||
|
||||
+#include <sys/user.h>
|
||||
+#include <linux/binfmts.h>
|
||||
+#ifndef PAGE_SIZE
|
||||
+# define PAGE_SIZE (sysconf(_SC_PAGESIZE))
|
||||
+#endif
|
||||
+
|
||||
/* Default shell to use. */
|
||||
#ifdef WINDOWS32
|
||||
# ifdef HAVE_STRINGS_H
|
||||
@@ -3228,6 +3236,15 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
|
||||
size_t sflags_len = shellflags ? strlen (shellflags) : 0;
|
||||
#ifdef WINDOWS32
|
||||
char *command_ptr = NULL; /* used for batch_mode_shell mode */
|
||||
+#endif
|
||||
+ char *args_ptr;
|
||||
+#ifdef MAX_ARG_STRLEN
|
||||
+ static char eval_line[] = "eval\\ \\\"set\\ x\\;\\ shift\\;\\ ";
|
||||
+#define ARG_NUMBER_DIGITS 5
|
||||
+#define EVAL_LEN (sizeof(eval_line)-1 + shell_len + 4 \
|
||||
+ + (7 + ARG_NUMBER_DIGITS) * 2 * line_len / (MAX_ARG_STRLEN - 2))
|
||||
+#else
|
||||
+#define EVAL_LEN 0
|
||||
#endif
|
||||
|
||||
# ifdef __EMX__ /* is this necessary? */
|
||||
@@ -3395,7 +3412,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
|
||||
}
|
||||
|
||||
new_line = xmalloc ((shell_len*2) + 1 + sflags_len + 1
|
||||
- + (line_len*2) + 1);
|
||||
+ + (line_len*2) + 1 + EVAL_LEN);
|
||||
ap = new_line;
|
||||
/* Copy SHELL, escaping any characters special to the shell. If
|
||||
we don't escape them, construct_command_argv_internal will
|
||||
@@ -3415,6 +3432,31 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
|
||||
#ifdef WINDOWS32
|
||||
command_ptr = ap;
|
||||
#endif
|
||||
+
|
||||
+#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN)
|
||||
+ if (unixy_shell && line_len > MAX_ARG_STRLEN)
|
||||
+ {
|
||||
+ const char *q;
|
||||
+ unsigned j;
|
||||
+ memcpy (ap, eval_line, sizeof (eval_line) - 1);
|
||||
+ ap += sizeof (eval_line) - 1;
|
||||
+ for (j = 1; j <= 2 * line_len / (MAX_ARG_STRLEN - 2); j++)
|
||||
+ ap += sprintf (ap, "\\$\\{%u\\}", j);
|
||||
+ *ap++ = '\\';
|
||||
+ *ap++ = '"';
|
||||
+ *ap++ = ' ';
|
||||
+ /* Copy only the first word of SHELL to $0. */
|
||||
+ for (q = shell; *q != '\0'; ++q)
|
||||
+ {
|
||||
+ if (isspace ((unsigned char)*q))
|
||||
+ break;
|
||||
+ *ap++ = *q;
|
||||
+ }
|
||||
+ *ap++ = ' ';
|
||||
+ }
|
||||
+#endif
|
||||
+ args_ptr = ap;
|
||||
+
|
||||
for (p = line; *p != '\0'; ++p)
|
||||
{
|
||||
if (restp != NULL && *p == '\n')
|
||||
@@ -3462,6 +3504,14 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
|
||||
}
|
||||
#endif
|
||||
*ap++ = *p;
|
||||
+#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN)
|
||||
+ if (unixy_shell && line_len > MAX_ARG_STRLEN
|
||||
+ && (ap - args_ptr > (long)(MAX_ARG_STRLEN - 2)))
|
||||
+ {
|
||||
+ *ap++ = ' ';
|
||||
+ args_ptr = ap;
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
if (ap == new_line + shell_len + sflags_len + 2)
|
||||
{
|
||||
diff --git a/tests/scripts/features/long_command_line b/tests/scripts/features/long_command_line
|
||||
new file mode 100644
|
||||
index 0000000..3899ac8
|
||||
--- /dev/null
|
||||
+++ b/tests/scripts/features/long_command_line
|
||||
@@ -0,0 +1,30 @@
|
||||
+# -*-perl-*-
|
||||
+$description = "Test long command line.";
|
||||
+
|
||||
+$details = "";
|
||||
+
|
||||
+# Variable names containing UTF8 characters
|
||||
+run_make_test(q!
|
||||
+# 49 characters
|
||||
+ARGS:=one two three four five six seven eight niner ten
|
||||
+# 49*4+3 = 199 characters
|
||||
+ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS)
|
||||
+# 199*4+3 = 799 characters
|
||||
+ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS)
|
||||
+# 799*4+3 = 3199 characters
|
||||
+ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS)
|
||||
+# 3199*4+3 = 12799 characters
|
||||
+ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS)
|
||||
+# 12799*4+3 = 51199 characters
|
||||
+ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS)
|
||||
+# 51199*4+3 = 204799 characters
|
||||
+ARGS:=$(ARGS) $(ARGS) $(ARGS) $(ARGS)
|
||||
+# 24799*2+1 = 409599 characters
|
||||
+#ARGS:=$(ARGS) $(ARGS)
|
||||
+
|
||||
+test:
|
||||
+ @: $(ARGS)
|
||||
+!,
|
||||
+ '', "");
|
||||
+
|
||||
+1;
|
||||
--
|
||||
2.20.1
|
||||
|
27
packages/devel/mimalloc/package.mk
Normal file
27
packages/devel/mimalloc/package.mk
Normal file
|
@ -0,0 +1,27 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mimalloc"
|
||||
PKG_VERSION="2.0.6"
|
||||
PKG_SHA256="9f05c94cc2b017ed13698834ac2a3567b6339a8bde27640df5a1581d49d05ce5"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/microsoft/mimalloc"
|
||||
PKG_URL="https://github.com/microsoft/mimalloc/archive/refs/tags/v${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_HOST="cmake:host ninja:host"
|
||||
PKG_LONGDESC="mimalloc (pronounced "me-malloc") is a general purpose allocator with excellent performance characteristics"
|
||||
|
||||
PKG_CMAKE_OPTS_HOST="-DMI_SECURE=OFF \
|
||||
-DMI_DEBUG_FULL=OFF \
|
||||
-DMI_OVERRIDE=ON \
|
||||
-DMI_XMALLOC=OFF \
|
||||
-DMI_SHOW_ERRORS=OFF \
|
||||
-DMI_USE_CXX=OFF \
|
||||
-DMI_SEE_ASM=OFF \
|
||||
-DMI_LOCAL_DYNAMIC_TLS=OFF \
|
||||
-DMI_BUILD_SHARED=ON \
|
||||
-DMI_BUILD_STATIC=OFF \
|
||||
-DMI_BUILD_OBJECT=OFF \
|
||||
-DMI_BUILD_TESTS=OFF \
|
||||
-DMI_DEBUG_TSAN=OFF \
|
||||
-DMI_DEBUG_UBSAN=OFF \
|
||||
-DMI_SKIP_COLLECT_ON_EXIT=OFF"
|
23
packages/devel/mold/package.mk
Normal file
23
packages/devel/mold/package.mk
Normal file
|
@ -0,0 +1,23 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mold"
|
||||
PKG_VERSION="1.6.0"
|
||||
PKG_SHA256="59cd3ea1a2a5fb50d0d97faddd8bff4c7e71054a576c00a87b17f56ecbd88729"
|
||||
PKG_LICENSE="AGPL-3.0-or-later"
|
||||
PKG_SITE="https://github.com/rui314/mold"
|
||||
PKG_URL="https://github.com/rui314/mold/archive/refs/tags/v${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_HOST="cmake:host zlib:host zstd:host openssl:host tbb:host mimalloc:host"
|
||||
PKG_LONGDESC="mold is a faster drop-in replacement for existing Unix linkers"
|
||||
|
||||
PKG_CMAKE_OPTS_HOST="-DCMAKE_INSTALL_LIBDIR="${TOOLCHAIN}/${TARGET_NAME}/lib"
|
||||
-DCMAKE_INSTALL_BINDIR="${TARGET_NAME}/bin" \
|
||||
-DCMAKE_INSTALL_LIBEXECDIR="${TARGET_NAME}" \
|
||||
-DMOLD_LTO=ON \
|
||||
-DMOLD_MOSTLY_STATIC=ON \
|
||||
-DMOLD_USE_SYSTEM_MIMALLOC=ON \
|
||||
-DMOLD_USE_SYSTEM_TBB=ON"
|
||||
|
||||
post_makeinstall_host() {
|
||||
ln -sf ${TOOLCHAIN}/${TARGET_NAME}/bin/mold ${TARGET_PREFIX}ld.mold
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
From f7f2ef6182d058f7c58401d9278aa3136cb996f5 Mon Sep 17 00:00:00 2001
|
||||
From: SupervisedThinking <supervisedthinking@gmail.com>
|
||||
Date: Thu, 29 Sep 2022 11:49:57 +0200
|
||||
Subject: [PATCH] CMakeLists: allow custom mold binary install path
|
||||
|
||||
- https://cmake.org/cmake/help/latest/command/install.html
|
||||
- ${CMAKE_INSTALL_BINDIR} defaults to bin if not set
|
||||
---
|
||||
CMakeLists.txt | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 7136cf2b..4542f915 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -287,7 +287,7 @@ if(BUILD_TESTING)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_SKIP_INSTALL_RULES)
|
||||
- install(TARGETS mold RUNTIME DESTINATION bin)
|
||||
+ install(TARGETS mold RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
install(FILES docs/mold.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1/)
|
||||
install(CODE "
|
164
packages/devel/mold/patches/mold-999.01-fix-strip-on-armv7.patch
Normal file
164
packages/devel/mold/patches/mold-999.01-fix-strip-on-armv7.patch
Normal file
|
@ -0,0 +1,164 @@
|
|||
From 610042a8e927106cb2d852fba2a90faa0d0e050f Mon Sep 17 00:00:00 2001
|
||||
From: Rui Ueyama <ruiu@bluewhale.systems>
|
||||
Date: Fri, 21 Oct 2022 07:08:09 +0800
|
||||
Subject: [PATCH] [ELF] Set .ARM.exidx's sh_link to .text
|
||||
|
||||
GNU binutil's strip command doesn't like an .ARM.exidx section with
|
||||
sh_link set to 0. arm-linux-gnueabihf-strip actually crashes on my
|
||||
machine when the command is run on such a file.
|
||||
|
||||
https://github.com/rui314/mold/issues/801
|
||||
---
|
||||
elf/arch-arm32.cc | 56 +++++++++++++++++++++++++++++--------------
|
||||
elf/mold.h | 2 +-
|
||||
elf/output-chunks.cc | 4 ++--
|
||||
elf/passes.cc | 2 +-
|
||||
test/elf/exception.sh | 8 +++++++
|
||||
5 files changed, 50 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/elf/arch-arm32.cc b/elf/arch-arm32.cc
|
||||
index 46e45d43d..bea510763 100644
|
||||
--- a/elf/arch-arm32.cc
|
||||
+++ b/elf/arch-arm32.cc
|
||||
@@ -552,14 +552,6 @@ void RangeExtensionThunk<E>::copy_buf(Context<E> &ctx) {
|
||||
}
|
||||
}
|
||||
|
||||
-template <typename E>
|
||||
-static OutputSection<E> *find_exidx_section(Context<E> &ctx) {
|
||||
- for (std::unique_ptr<OutputSection<E>> &osec : ctx.output_sections)
|
||||
- if (osec->shdr.sh_type == SHT_ARM_EXIDX)
|
||||
- return osec.get();
|
||||
- return nullptr;
|
||||
-}
|
||||
-
|
||||
// ARM executables use an .ARM.exidx section to look up an exception
|
||||
// handling record for the current instruction pointer. The table needs
|
||||
// to be sorted by their addresses.
|
||||
@@ -569,13 +561,7 @@ static OutputSection<E> *find_exidx_section(Context<E> &ctx) {
|
||||
// likely that it's due to some historical reason.
|
||||
//
|
||||
// This function sorts .ARM.exidx records.
|
||||
-void sort_arm_exidx(Context<E> &ctx) {
|
||||
- Timer t(ctx, "sort_arm_exidx");
|
||||
-
|
||||
- OutputSection<E> *osec = find_exidx_section(ctx);
|
||||
- if (!osec)
|
||||
- return;
|
||||
-
|
||||
+static void sort_exidx(Context<E> &ctx, OutputSection<E> &osec) {
|
||||
// .ARM.exidx records consists of a signed 31-bit relative address
|
||||
// and a 32-bit value. The relative address indicates the start
|
||||
// address of a function that the record covers. The value is one of
|
||||
@@ -595,11 +581,11 @@ void sort_arm_exidx(Context<E> &ctx) {
|
||||
ul32 val;
|
||||
};
|
||||
|
||||
- if (osec->shdr.sh_size % sizeof(Entry))
|
||||
+ if (osec.shdr.sh_size % sizeof(Entry))
|
||||
Fatal(ctx) << "invalid .ARM.exidx section size";
|
||||
|
||||
- Entry *ent = (Entry *)(ctx.buf + osec->shdr.sh_offset);
|
||||
- i64 num_entries = osec->shdr.sh_size / sizeof(Entry);
|
||||
+ Entry *ent = (Entry *)(ctx.buf + osec.shdr.sh_offset);
|
||||
+ i64 num_entries = osec.shdr.sh_size / sizeof(Entry);
|
||||
|
||||
// Entry's addresses are relative to themselves. In order to sort
|
||||
// records by addresses, we first translate them so that the addresses
|
||||
@@ -628,4 +614,38 @@ void sort_arm_exidx(Context<E> &ctx) {
|
||||
});
|
||||
}
|
||||
|
||||
+void fixup_arm_exidx_section(Context<E> &ctx) {
|
||||
+ Timer t(ctx, "fixup_arm_exidx_section");
|
||||
+
|
||||
+ auto find_exidx = [&]() -> OutputSection<E> * {
|
||||
+ for (std::unique_ptr<OutputSection<E>> &osec : ctx.output_sections)
|
||||
+ if (osec->shdr.sh_type == SHT_ARM_EXIDX)
|
||||
+ return osec.get();
|
||||
+ return nullptr;
|
||||
+ };
|
||||
+
|
||||
+ OutputSection<E> *exidx = find_exidx();
|
||||
+ if (!exidx)
|
||||
+ return;
|
||||
+
|
||||
+ // Sort .ARM.exidx contents
|
||||
+ sort_exidx(ctx, *exidx);
|
||||
+
|
||||
+ // .ARM.exidx's sh_link should be set to the .text section index.
|
||||
+ // Runtime doesn't care about it, but the binutils's strip command does.
|
||||
+ if (ctx.shdr) {
|
||||
+ auto find_text = [&]() -> OutputSection<E> * {
|
||||
+ for (std::unique_ptr<OutputSection<E>> &osec : ctx.output_sections)
|
||||
+ if (osec->name == ".text")
|
||||
+ return osec.get();
|
||||
+ return nullptr;
|
||||
+ };
|
||||
+
|
||||
+ if (OutputSection<E> *text = find_exidx()) {
|
||||
+ exidx->shdr.sh_link = text->shndx;
|
||||
+ ctx.shdr->copy_buf(ctx);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
} // namespace mold::elf
|
||||
diff --git a/elf/mold.h b/elf/mold.h
|
||||
index 11938270e..c8bac2b4e 100644
|
||||
--- a/elf/mold.h
|
||||
+++ b/elf/mold.h
|
||||
@@ -1434,7 +1434,7 @@ template <typename E> void write_dependency_file(Context<E> &);
|
||||
// arch-arm32.cc
|
||||
//
|
||||
|
||||
-void sort_arm_exidx(Context<ARM32> &ctx);
|
||||
+void fixup_arm_exidx_section(Context<ARM32> &ctx);
|
||||
|
||||
//
|
||||
// arch-riscv64.cc
|
||||
diff --git a/elf/output-chunks.cc b/elf/output-chunks.cc
|
||||
index 54562feb2..0d1d0dcfd 100644
|
||||
--- a/elf/output-chunks.cc
|
||||
+++ b/elf/output-chunks.cc
|
||||
@@ -847,9 +847,9 @@ get_output_name(Context<E> &ctx, std::string_view name, u64 flags) {
|
||||
|
||||
if ((name == ".rodata" || name.starts_with(".rodata.")) && (flags & SHF_MERGE))
|
||||
return (flags & SHF_STRINGS) ? ".rodata.str" : ".rodata.cst";
|
||||
- if (name == ".ARM.exidx" || name.starts_with(".ARM.exidx."))
|
||||
+ if (name.starts_with(".ARM.exidx"))
|
||||
return ".ARM.exidx";
|
||||
- if (name == ".ARM.extab" || name.starts_with(".ARM.extab."))
|
||||
+ if (name.starts_with(".ARM.extab"))
|
||||
return ".ARM.extab";
|
||||
|
||||
if (ctx.arg.z_keep_text_section_prefix) {
|
||||
diff --git a/elf/passes.cc b/elf/passes.cc
|
||||
index 713a06a84..4bffc3dbd 100644
|
||||
--- a/elf/passes.cc
|
||||
+++ b/elf/passes.cc
|
||||
@@ -1102,7 +1102,7 @@ void copy_chunks(Context<E> &ctx) {
|
||||
report_undef_errors(ctx);
|
||||
|
||||
if constexpr (std::is_same_v<E, ARM32>)
|
||||
- sort_arm_exidx(ctx);
|
||||
+ fixup_arm_exidx_section(ctx);
|
||||
}
|
||||
|
||||
template <typename E>
|
||||
diff --git a/test/elf/exception.sh b/test/elf/exception.sh
|
||||
index 6832966f0..c584c99fa 100755
|
||||
--- a/test/elf/exception.sh
|
||||
+++ b/test/elf/exception.sh
|
||||
@@ -65,3 +65,11 @@ if [ $MACHINE = x86_64 -o $MACHINE = aarch64 ]; then
|
||||
$CXX -B. -o $t/exe10 $t/e.o -no-pie
|
||||
$QEMU $t/exe10
|
||||
fi
|
||||
+
|
||||
+$CXX -B. -o $t/exe11 $t/b.o -pie
|
||||
+$STRIP $t/exe11
|
||||
+$QEMU $t/exe11
|
||||
+
|
||||
+$CXX -B. -o $t/exe12 $t/c.o -no-pie
|
||||
+$STRIP $t/exe12
|
||||
+$QEMU $t/exe12
|
|
@ -10,10 +10,11 @@ PKG_URL="https://github.com/PCRE2Project/pcre2/releases/download/pcre2-${PKG_VER
|
|||
PKG_DEPENDS_HOST="toolchain:host"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="A set of functions that implement regular expression pattern matching using the same syntax."
|
||||
PKG_BUILD_FLAGS="+pic +pic:host"
|
||||
PKG_BUILD_FLAGS="+pic"
|
||||
|
||||
PKG_CMAKE_OPTS_HOST="-DBUILD_SHARED_LIBS=OFF \
|
||||
-DBUILD_STATIC_LIBS=ON \
|
||||
-DPCRE2_STATIC_PIC=ON \
|
||||
-DPCRE2_BUILD_PCRE2_8=ON \
|
||||
-DPCRE2_BUILD_PCRE2_16=ON \
|
||||
-DPCRE2_BUILD_PCRE2_32=ON \
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="popt"
|
||||
PKG_VERSION="1.18"
|
||||
PKG_SHA256="5159bc03a20b28ce363aa96765f37df99ea4d8850b1ece17d1e6ad5c24fdc5d1"
|
||||
PKG_VERSION="1.19"
|
||||
PKG_SHA256="c25a4838fc8e4c1c8aacb8bd620edb3084a3d63bf8987fdad3ca2758c63240f9"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/rpm-software-management/popt"
|
||||
PKG_URL="http://ftp.rpm.org/popt/releases/popt-1.x/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="slang"
|
||||
PKG_VERSION="2.3.2"
|
||||
PKG_SHA256="fc9e3b0fc4f67c3c1f6d43c90c16a5c42d117b8e28457c5b46831b8b5d3ae31a"
|
||||
PKG_VERSION="2.3.3"
|
||||
PKG_SHA256="f9145054ae131973c61208ea82486d5dd10e3c5cdad23b7c4a0617743c8f5a18"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.jedsoft.org/slang/"
|
||||
PKG_URL="https://www.jedsoft.org/releases/slang/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_DEPENDS_TARGET="toolchain pcre"
|
||||
PKG_LONGDESC="A library designed to allow a developer to create robust multi-platform software."
|
||||
PKG_BUILD_FLAGS="-parallel"
|
||||
|
||||
|
@ -17,6 +17,7 @@ PKG_CONFIGURE_OPTS_TARGET="--without-onig"
|
|||
pre_configure_target() {
|
||||
# slang fails to build in subdirs
|
||||
cd ${PKG_BUILD}
|
||||
sed -i 's|RPATH=".*"|RPATH=""|' configure
|
||||
rm -rf .${TARGET_NAME}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,17 @@
|
|||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="spdlog"
|
||||
PKG_VERSION="1.9.2"
|
||||
PKG_SHA256="6fff9215f5cb81760be4cc16d033526d1080427d236e86d70bb02994f85e3d38"
|
||||
PKG_VERSION="1.10.0"
|
||||
PKG_SHA256="697f91700237dbae2326b90469be32b876b2b44888302afbc7aceb68bcfe8224"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/gabime/spdlog"
|
||||
PKG_URL="https://github.com/gabime/spdlog/archive/v${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain libfmt"
|
||||
PKG_LONGDESC="Very fast, header only, C++ logging library."
|
||||
PKG_TOOLCHAIN="cmake"
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET="-DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_EXTENSIONS:BOOL=OFF -DSPDLOG_FMT_EXTERNAL=ON -DSPDLOG_BUILD_EXAMPLE=OFF -DSPDLOG_BUILD_TESTS=OFF"
|
||||
PKG_CMAKE_OPTS_TARGET="-DCMAKE_CXX_STANDARD=14 \
|
||||
-DCMAKE_CXX_EXTENSIONS:BOOL=OFF \
|
||||
-DSPDLOG_BUILD_SHARED=ON \
|
||||
-DSPDLOG_FMT_EXTERNAL=ON \
|
||||
-DSPDLOG_BUILD_EXAMPLE=OFF \
|
||||
-DSPDLOG_BUILD_TESTS=OFF"
|
||||
|
|
27
packages/devel/tbb/package.mk
Normal file
27
packages/devel/tbb/package.mk
Normal file
|
@ -0,0 +1,27 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="tbb"
|
||||
PKG_VERSION="2021.7.0"
|
||||
PKG_SHA256="2cae2a80cda7d45dc7c072e4295c675fff5ad8316691f26f40539f7e7e54c0cc"
|
||||
PKG_LICENSE="Apache-2.0"
|
||||
PKG_SITE="https://github.com/oneapi-src/oneTBB"
|
||||
PKG_URL="https://github.com/oneapi-src/oneTBB/archive/refs/tags/v${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_HOST="cmake:host ninja:host"
|
||||
PKG_LONGDESC="oneTBB is a flexible C++ library that simplifies the work of adding parallelism to complex applications"
|
||||
|
||||
PKG_CMAKE_OPTS_HOST="-DTBB_TEST=OFF \
|
||||
-DTBB_EXAMPLES=OFF \
|
||||
-DTBB_STRICT=OFF \
|
||||
-DTBB4PY_BUILD=OFF \
|
||||
-DTBB_BUILD=ON \
|
||||
-DTBBMALLOC_BUILD=ON \
|
||||
-DTBBMALLOC_PROXY_BUILD=ON \
|
||||
-DTBB_CPF=OFF \
|
||||
-DTBB_FIND_PACKAGE=OFF \
|
||||
-DTBB_DISABLE_HWLOC_AUTOMATIC_SEARCH=OFF \
|
||||
-DTBB_ENABLE_IPO=ON"
|
||||
|
||||
pre_configure_host() {
|
||||
export CXXFLAGS+=" -D__TBB_DYNAMIC_LOAD_ENABLED=0"
|
||||
}
|
|
@ -0,0 +1,168 @@
|
|||
From 3a8bc6478654afcbd219f45e7ea01353c2d57eb6 Mon Sep 17 00:00:00 2001
|
||||
From: Rui Ueyama <ruiu@cs.stanford.edu>
|
||||
Date: Sat, 7 May 2022 19:55:24 +0800
|
||||
Subject: [PATCH] Retry if pthread_create fails with EAGAIN
|
||||
|
||||
On many Unix-like systems, pthread_create can fail spuriously even if
|
||||
the running machine has enough resources to spawn a new thread.
|
||||
Therefore, if EAGAIN is returned from pthread_create, we actually have
|
||||
to try again.
|
||||
|
||||
I observed this issue when running the mold linker
|
||||
(https://github.com/rui314/mold) under a heavy load. mold uses OneTBB
|
||||
for parallelization.
|
||||
|
||||
As another data point, Go has the same logic to retry on EAGAIN:
|
||||
https://go-review.googlesource.com/c/go/+/33894/
|
||||
|
||||
nanosleep is defined in POSIX 2001, so I believe that all Unix-like
|
||||
systems support it.
|
||||
|
||||
Signed-off-by: Rui Ueyama <ruiu@cs.stanford.edu>
|
||||
---
|
||||
src/tbb/rml_thread_monitor.h | 30 +++++++++++++++-
|
||||
test/CMakeLists.txt | 3 ++
|
||||
test/tbb/test_pthread_create.cpp | 59 ++++++++++++++++++++++++++++++++
|
||||
3 files changed, 91 insertions(+), 1 deletion(-)
|
||||
create mode 100644 test/tbb/test_pthread_create.cpp
|
||||
|
||||
diff --git a/src/tbb/rml_thread_monitor.h b/src/tbb/rml_thread_monitor.h
|
||||
index 13b556380..dc046ba00 100644
|
||||
src/tbb/rml_thread_monitor.h | 19 ++++++++++++++++++-
|
||||
1 file changed, 18 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/tbb/rml_thread_monitor.h b/src/tbb/rml_thread_monitor.h
|
||||
index 13b556380..5b844b232 100644
|
||||
--- a/src/tbb/rml_thread_monitor.h
|
||||
+++ b/src/tbb/rml_thread_monitor.h
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <pthread.h>
|
||||
#include <cstring>
|
||||
#include <cstdlib>
|
||||
+#include <time.h>
|
||||
#else
|
||||
#error Unsupported platform
|
||||
#endif
|
||||
@@ -183,6 +184,32 @@ inline void thread_monitor::check( int error_code, const char* routine ) {
|
||||
}
|
||||
}
|
||||
|
||||
+// pthread_create(2) can spuriously fail on Linux. This is a function
|
||||
+// to wrap pthread_create(2) to retry if it fails with EAGAIN.
|
||||
+inline void do_pthread_create(pthread_t *handle, pthread_attr_t *s, void* (*thread_routine)(void*), void* arg) {
|
||||
+#ifdef __linux__
|
||||
+ int tries = 0;
|
||||
+ const int max_num_tries = 20;
|
||||
+
|
||||
+ for (;;) {
|
||||
+ int error_code = pthread_create(handle, s, thread_routine, arg);
|
||||
+ if (!error_code)
|
||||
+ break;
|
||||
+ if (error_code != EAGAIN || tries++ > max_num_tries) {
|
||||
+ handle_perror(error_code, "pthread_create has failed");
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ // Retry after tries * 1 millisecond.
|
||||
+ struct timespec ts = {0, tries * 1000 * 1000};
|
||||
+ nanosleep(&ts, NULL);
|
||||
+ }
|
||||
+#else
|
||||
+ if (int error_code = pthread_create(handle, s, thread_routine, arg))
|
||||
+ handle_perror(error_code, "pthread_create has failed");
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
inline thread_monitor::handle_type thread_monitor::launch( void* (*thread_routine)(void*), void* arg, std::size_t stack_size ) {
|
||||
// FIXME - consider more graceful recovery than just exiting if a thread cannot be launched.
|
||||
// Note that there are some tricky situations to deal with, such that the thread is already
|
||||
@@ -191,8 +218,9 @@ inline thread_monitor::handle_type thread_monitor::launch( void* (*thread_routin
|
||||
check(pthread_attr_init( &s ), "pthread_attr_init has failed");
|
||||
if( stack_size>0 )
|
||||
check(pthread_attr_setstacksize( &s, stack_size ), "pthread_attr_setstack_size has failed" );
|
||||
+
|
||||
pthread_t handle;
|
||||
- check( pthread_create( &handle, &s, thread_routine, arg ), "pthread_create has failed" );
|
||||
+ do_pthread_create(&handle, &s, thread_routine, arg);
|
||||
check( pthread_attr_destroy( &s ), "pthread_attr_destroy has failed" );
|
||||
return handle;
|
||||
}
|
||||
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
|
||||
index f15679e83..92802b015 100644
|
||||
--- a/test/CMakeLists.txt
|
||||
+++ b/test/CMakeLists.txt
|
||||
@@ -373,6 +373,9 @@ if (TARGET TBB::tbb)
|
||||
if (APPLE OR ANDROID_PLATFORM)
|
||||
target_link_libraries(test_dynamic_link PRIVATE -rdynamic) # for the test_dynamic_link
|
||||
endif()
|
||||
+ if (UNIX AND NOT APPLE)
|
||||
+ tbb_add_test(SUBDIR tbb NAME test_pthread_create DEPENDENCIES TBB::tbb)
|
||||
+ endif()
|
||||
tbb_add_test(SUBDIR tbb NAME test_collaborative_call_once DEPENDENCIES TBB::tbb)
|
||||
tbb_add_test(SUBDIR tbb NAME test_concurrent_lru_cache DEPENDENCIES TBB::tbb)
|
||||
tbb_add_test(SUBDIR tbb NAME test_concurrent_unordered_map DEPENDENCIES TBB::tbb)
|
||||
diff --git a/test/tbb/test_pthread_create.cpp b/test/tbb/test_pthread_create.cpp
|
||||
new file mode 100644
|
||||
index 000000000..4cb1f4ea5
|
||||
--- /dev/null
|
||||
+++ b/test/tbb/test_pthread_create.cpp
|
||||
@@ -0,0 +1,59 @@
|
||||
+/*
|
||||
+ Copyright (c) 2005-2022 Intel Corporation
|
||||
+
|
||||
+ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ you may not use this file except in compliance with the License.
|
||||
+ You may obtain a copy of the License at
|
||||
+
|
||||
+ http://www.apache.org/licenses/LICENSE-2.0
|
||||
+
|
||||
+ Unless required by applicable law or agreed to in writing, software
|
||||
+ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ See the License for the specific language governing permissions and
|
||||
+ limitations under the License.
|
||||
+*/
|
||||
+
|
||||
+#include "common/test.h"
|
||||
+#include "common/utils.h"
|
||||
+
|
||||
+#include <atomic>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/wait.h>
|
||||
+#include <tbb/global_control.h>
|
||||
+#include <tbb/parallel_for.h>
|
||||
+#include <thread>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+//! Test that thread pool creation won't be affected with a spurious failure of pthread_create().
|
||||
+//! \brief \ref error_guessing
|
||||
+TEST_CASE("pthread_create is not affected by fork") {
|
||||
+ std::atomic_bool done;
|
||||
+
|
||||
+ std::thread thr([&]() {
|
||||
+ while (!done) {
|
||||
+ pid_t pid = fork();
|
||||
+ CHECK(pid != -1);
|
||||
+
|
||||
+ if (pid == 0) {
|
||||
+ // child
|
||||
+ _exit(0);
|
||||
+ } else {
|
||||
+ int wstatus;
|
||||
+ do {
|
||||
+ pid_t pid2 = waitpid(pid, &wstatus, 0);
|
||||
+ CHECK(pid2 != -1);
|
||||
+ } while (!WIFEXITED(wstatus) && !WIFSIGNALED(wstatus));
|
||||
+ }
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
+ for (int i = 0; i < 50; i++) {
|
||||
+ tbb::task_scheduler_handle handle{tbb::attach{}};
|
||||
+ tbb::parallel_for(0, 10000, [](int) {});
|
||||
+ tbb::finalize(handle);
|
||||
+ }
|
||||
+
|
||||
+ done = true;
|
||||
+ thr.join();
|
||||
+}
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2019-present Shanti Gilbert (https://github.com/shantigilbert)
|
||||
# Copyright (C) 2022-present Fewtarius
|
||||
PKG_NAME="PPSSPPSDL"
|
||||
PKG_VERSION="eb18a87eeec1827a83ac6e9b3bc0e29043616205"
|
||||
PKG_VERSION="109db81eca29fcd618b4ebf7969d1f2a40918410"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
@ -32,17 +32,16 @@ if [ "${OPENGLES_SUPPORT}" = yes ]; then
|
|||
-DUSING_X11_VULKAN=OFF"
|
||||
fi
|
||||
|
||||
### Vulkan is still not working for PPSSPP on the win600 yet.
|
||||
#if [ "${VULKAN_SUPPORT}" = "yes" ]
|
||||
#then
|
||||
# PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
|
||||
# PKG_CMAKE_OPTS_TARGET+=" -DUSE_VULKAN_DISPLAY_KHR=ON \
|
||||
# -DVULKAN=ON \
|
||||
# -DEGL_NO_X11=1
|
||||
# -DMESA_EGL_NO_X11_HEADERS=1"
|
||||
#else
|
||||
if [ "${VULKAN_SUPPORT}" = "yes" ]
|
||||
then
|
||||
PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_VULKAN_DISPLAY_KHR=ON \
|
||||
-DVULKAN=ON \
|
||||
-DEGL_NO_X11=1
|
||||
-DMESA_EGL_NO_X11_HEADERS=1"
|
||||
else
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DVULKAN=OFF"
|
||||
#fi
|
||||
fi
|
||||
|
||||
if [ "${DISPLAYSERVER}" = "wl" ]; then
|
||||
PKG_DEPENDS_TARGET+=" wayland ${WINDOWMANAGER}"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
PKG_NAME="amiberry"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_VERSION="d64358d725e27e7273f93ce290b31abf4ab3b4a9"
|
||||
PKG_VERSION="c3d5861545af0e579ae7d7f5768166c389b4dce1"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/midwan/amiberry"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/retrogame_joypad
|
||||
Extension = Classic
|
||||
Source = 1
|
||||
Classic/Buttons/A = Button 1
|
||||
Classic/Buttons/B = Button 0
|
||||
Classic/Buttons/X = Button 2
|
||||
Classic/Buttons/Y = Button 3
|
||||
Classic/Buttons/ZL = Button 6
|
||||
Classic/Buttons/ZR = Button 7
|
||||
Classic/Buttons/- = Button 8
|
||||
Classic/Buttons/+ = Button 9
|
||||
Classic/Left Stick/Up = Axis 1-
|
||||
Classic/Left Stick/Down = Axis 1+
|
||||
Classic/Left Stick/Left = Axis 0-
|
||||
Classic/Left Stick/Right = Axis 0+
|
||||
Classic/Right Stick/Up = Axis 3-
|
||||
Classic/Right Stick/Down = Axis 3+
|
||||
Classic/Right Stick/Left = Axis 2-
|
||||
Classic/Right Stick/Right = Axis 2+
|
||||
Classic/Triggers/L = Button 4
|
||||
Classic/Triggers/R = Button 5
|
||||
Classic/D-Pad/Up = Button 13
|
||||
Classic/D-Pad/Down = Button 14
|
||||
Classic/D-Pad/Left = Button 15
|
||||
Classic/D-Pad/Right = Button 16
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/retrogame_joypad
|
||||
Extension = Nunchuk
|
||||
Buttons/A = Button 0
|
||||
Buttons/B = Button 1
|
||||
Buttons/1 = Button 3
|
||||
Buttons/2 = Button 2
|
||||
Buttons/- = Button 8
|
||||
Buttons/+ = Button 9
|
||||
D-Pad/Up = Button 13
|
||||
D-Pad/Down = Button 14
|
||||
D-Pad/Left = Button 15
|
||||
D-Pad/Right = Button 16
|
||||
Shake/X = Button 6
|
||||
Shake/Y = Button 6
|
||||
Shake/Z = Button 6
|
||||
Nunchuk/Buttons/C = Button 5
|
||||
Nunchuk/Buttons/Z = Button 4
|
||||
Nunchuk/Stick/Up = Axis 1-
|
||||
Nunchuk/Stick/Down = Axis 1+
|
||||
Nunchuk/Stick/Left = Axis 0-
|
||||
Nunchuk/Stick/Right = Axis 0+
|
||||
Nunchuk/Shake/X = Button 7
|
||||
Nunchuk/Shake/Y = Button 7
|
||||
Nunchuk/Shake/Z = Button 7
|
|
@ -0,0 +1,15 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/retrogame_joypad
|
||||
Buttons/A = Button 0
|
||||
Buttons/B = Button 1
|
||||
Buttons/1 = Button 3
|
||||
Buttons/2 = Button 2
|
||||
Buttons/- = Button 8
|
||||
Buttons/+ = Button 9
|
||||
D-Pad/Up = Button 13
|
||||
D-Pad/Down = Button 14
|
||||
D-Pad/Left = Button 15
|
||||
D-Pad/Right = Button 16
|
||||
Shake/X = Button 4
|
||||
Shake/Y = Button 4
|
||||
Shake/Z = Button 4
|
|
@ -1,12 +1,12 @@
|
|||
[GCPad1]
|
||||
Device = evdev/0/retrogame_joypad
|
||||
Buttons/A = Button 0
|
||||
Buttons/B = Button 1
|
||||
Buttons/Start = Button 9
|
||||
Buttons/X = Button 3
|
||||
Buttons/Y = Button 2
|
||||
Buttons/A = Button 1
|
||||
Buttons/B = Button 0
|
||||
Buttons/Start = Button 8
|
||||
Buttons/X = Button 2
|
||||
Buttons/Y = Button 3
|
||||
Buttons/Z = Button 7
|
||||
Buttons/Hotkey = Button 8
|
||||
Buttons/Hotkey = Button 9
|
||||
C-Stick/Dead Zone = 25.000000000000000
|
||||
C-Stick/Down = Axis 3+
|
||||
C-Stick/Left = Axis 2-
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/retrogame_joypad
|
||||
Extension = Classic
|
||||
Source = 1
|
||||
Classic/Buttons/A = Button 1
|
||||
Classic/Buttons/B = Button 0
|
||||
Classic/Buttons/X = Button 2
|
||||
Classic/Buttons/Y = Button 3
|
||||
Classic/Buttons/ZL = Button 6
|
||||
Classic/Buttons/ZR = Button 7
|
||||
Classic/Buttons/- = Button 8
|
||||
Classic/Buttons/+ = Button 9
|
||||
Classic/Left Stick/Up = Axis 1-
|
||||
Classic/Left Stick/Down = Axis 1+
|
||||
Classic/Left Stick/Left = Axis 0-
|
||||
Classic/Left Stick/Right = Axis 0+
|
||||
Classic/Right Stick/Up = Axis 3-
|
||||
Classic/Right Stick/Down = Axis 3+
|
||||
Classic/Right Stick/Left = Axis 2-
|
||||
Classic/Right Stick/Right = Axis 2+
|
||||
Classic/Triggers/L = Button 4
|
||||
Classic/Triggers/R = Button 5
|
||||
Classic/D-Pad/Up = Button 13
|
||||
Classic/D-Pad/Down = Button 14
|
||||
Classic/D-Pad/Left = Button 15
|
||||
Classic/D-Pad/Right = Button 16
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/retrogame_joypad
|
||||
Extension = Nunchuk
|
||||
Buttons/A = Button 0
|
||||
Buttons/B = Button 1
|
||||
Buttons/1 = Button 3
|
||||
Buttons/2 = Button 2
|
||||
Buttons/- = Button 8
|
||||
Buttons/+ = Button 9
|
||||
D-Pad/Up = Button 13
|
||||
D-Pad/Down = Button 14
|
||||
D-Pad/Left = Button 15
|
||||
D-Pad/Right = Button 16
|
||||
Shake/X = Button 6
|
||||
Shake/Y = Button 6
|
||||
Shake/Z = Button 6
|
||||
Nunchuk/Buttons/C = Button 5
|
||||
Nunchuk/Buttons/Z = Button 4
|
||||
Nunchuk/Stick/Up = Axis 1-
|
||||
Nunchuk/Stick/Down = Axis 1+
|
||||
Nunchuk/Stick/Left = Axis 0-
|
||||
Nunchuk/Stick/Right = Axis 0+
|
||||
Nunchuk/Shake/X = Button 7
|
||||
Nunchuk/Shake/Y = Button 7
|
||||
Nunchuk/Shake/Z = Button 7
|
|
@ -0,0 +1,15 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/retrogame_joypad
|
||||
Buttons/A = Button 0
|
||||
Buttons/B = Button 1
|
||||
Buttons/1 = Button 3
|
||||
Buttons/2 = Button 2
|
||||
Buttons/- = Button 8
|
||||
Buttons/+ = Button 9
|
||||
D-Pad/Up = Button 13
|
||||
D-Pad/Down = Button 14
|
||||
D-Pad/Left = Button 15
|
||||
D-Pad/Right = Button 16
|
||||
Shake/X = Button 4
|
||||
Shake/Y = Button 4
|
||||
Shake/Z = Button 4
|
|
@ -122,7 +122,7 @@ EmulationSpeed = 1.00000000
|
|||
FrameSkip = 0x00000003
|
||||
Overclock = 4.00000000
|
||||
OverclockEnable = False
|
||||
GFXBackend =
|
||||
GFXBackend = Vulkan
|
||||
GPUDeterminismMode = auto
|
||||
PerfMapDir =
|
||||
[Movie]
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
Device = evdev/0/Microsoft X-Box 360 pad
|
||||
Buttons/A = Button 1
|
||||
Buttons/B = Button 0
|
||||
Buttons/Start = Button 7
|
||||
Buttons/Start = Button 6
|
||||
Buttons/X = Button 3
|
||||
Buttons/Y = Button 2
|
||||
Buttons/Z = Button 5
|
||||
Buttons/Hotkey = Button 6
|
||||
Buttons/Hotkey = Button 7
|
||||
C-Stick/Dead Zone = 25.000000000000000
|
||||
C-Stick/Down = Axis 4+
|
||||
C-Stick/Left = Axis 3-
|
||||
|
@ -26,6 +26,4 @@ Main Stick/Modifier/Range = 50.000000000000000
|
|||
Main Stick/Right = Axis 0+
|
||||
Main Stick/Up = Axis 1-
|
||||
Triggers/L = Axis 2+
|
||||
Triggers/L = Axis 2+
|
||||
Triggers/R = Axis 5+
|
||||
Triggers/R = Axis 5+
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/Microsoft X-Box 360 pad
|
||||
Extension = Classic
|
||||
Source = 1
|
||||
Classic/Buttons/A = Button 1
|
||||
Classic/Buttons/B = Button 0
|
||||
Classic/Buttons/X = Button 3
|
||||
Classic/Buttons/Y = Button 2
|
||||
Classic/Buttons/ZL = Axis 2+
|
||||
Classic/Buttons/ZR = Axis 5+
|
||||
Classic/Buttons/- = Button 6
|
||||
Classic/Buttons/+ = Button 7
|
||||
Classic/Buttons/Home = Button 8
|
||||
Classic/Left Stick/Up = Axis 1-
|
||||
Classic/Left Stick/Down = Axis 1+
|
||||
Classic/Left Stick/Left = Axis 0-
|
||||
Classic/Left Stick/Right = Axis 0+
|
||||
Classic/Right Stick/Up = Axis 4-
|
||||
Classic/Right Stick/Down = Axis 4+
|
||||
Classic/Right Stick/Left = Axis 3-
|
||||
Classic/Right Stick/Right = Axis 3+
|
||||
Classic/Triggers/L = Button 4
|
||||
Classic/Triggers/R = Button 5
|
||||
Classic/D-Pad/Up = Axis 7-
|
||||
Classic/D-Pad/Down = Axis 7+
|
||||
Classic/D-Pad/Left = Axis 6-
|
||||
Classic/D-Pad/Right = Axis 6+
|
|
@ -0,0 +1,26 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/Microsoft X-Box 360 pad
|
||||
Extension = Nunchuk
|
||||
Buttons/A = Button 0
|
||||
Buttons/B = Button 1
|
||||
Buttons/1 = Button 2
|
||||
Buttons/2 = Button 3
|
||||
Buttons/- = Button 6
|
||||
Buttons/+ = Button 7
|
||||
D-Pad/Up = Axis 7-
|
||||
D-Pad/Down = Axis 7+
|
||||
D-Pad/Left = Axis 6-
|
||||
D-Pad/Right = Axis 6+
|
||||
Buttons/Home = Button 8
|
||||
Shake/X = Button 4
|
||||
Shake/Y = Button 4
|
||||
Shake/Z = Button 4
|
||||
Nunchuk/Buttons/C = Button 5
|
||||
Nunchuk/Buttons/Z = Axis 5+
|
||||
Nunchuk/Stick/Up = Axis 1-
|
||||
Nunchuk/Stick/Down = Axis 1+
|
||||
Nunchuk/Stick/Left = Axis 0-
|
||||
Nunchuk/Stick/Right = Axis 0+
|
||||
Nunchuk/Shake/X = Axis 2+
|
||||
Nunchuk/Shake/Y = Axis 2+
|
||||
Nunchuk/Shake/Z = Axis 2+
|
|
@ -0,0 +1,16 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/Microsoft X-Box 360 pad
|
||||
Buttons/A = Button 0
|
||||
Buttons/B = Button 1
|
||||
Buttons/1 = Button 2
|
||||
Buttons/2 = Button 3
|
||||
Buttons/- = Button 6
|
||||
Buttons/+ = Button 7
|
||||
Buttons/Home = Button 8
|
||||
Shake/X = Button 4
|
||||
Shake/Y = Button 4
|
||||
Shake/Z = Button 4
|
||||
D-Pad/Up = Axis 7-
|
||||
D-Pad/Down = Axis 7+
|
||||
D-Pad/Left = Axis 6-
|
||||
D-Pad/Right = Axis 6+
|
|
@ -3,15 +3,15 @@
|
|||
|
||||
PKG_NAME="dolphinsa"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_DEPENDS_TARGET="toolchain libevdev libdrm ffmpeg zlib libpng lzo libusb zstd"
|
||||
PKG_DEPENDS_TARGET="toolchain libevdev libdrm ffmpeg zlib libpng lzo libusb zstd ecm"
|
||||
PKG_LONGDESC="Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements. "
|
||||
|
||||
case ${DEVICE} in
|
||||
RG552|handheld)
|
||||
PKG_SITE="https://github.com/dolphin-emu/dolphin"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_VERSION="9222956acdfb6a0526b6fdada4aeaa936de9fcd1"
|
||||
PKG_PATCH_DIRS+=" new"
|
||||
PKG_VERSION="c931529e7aa5926b8a21a193bf8f80244b3ae888"
|
||||
PKG_PATCH_DIRS+=" wayland"
|
||||
;;
|
||||
*)
|
||||
PKG_SITE="https://github.com/rtissera/dolphin"
|
||||
|
@ -24,26 +24,26 @@ esac
|
|||
|
||||
if [ ! "${OPENGL}" = "no" ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
|
||||
PKG_CONFIGURE_OPTS_TARGET+=" -DENABLE_X11=OFF \
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_X11=OFF \
|
||||
-DENABLE_EGL=ON"
|
||||
fi
|
||||
|
||||
if [ "${OPENGLES_SUPPORT}" = yes ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
|
||||
PKG_CONFIGURE_OPTS_TARGET+=" -DENABLE_X11=OFF \
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_X11=OFF \
|
||||
-DENABLE_EGL=ON"
|
||||
fi
|
||||
|
||||
if [ "${DISPLAYSERVER}" = "wl" ]; then
|
||||
PKG_DEPENDS_TARGET+=" wayland ${WINDOWMANAGER} xorg-server xrandr libXi"
|
||||
PKG_CONFIGURE_OPTS_TARGET+=" -DENABLE_X11=ON \
|
||||
-DENABLE_EGL=ON"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_WAYLAND=ON \
|
||||
-DENABLE_X11=OFF"
|
||||
fi
|
||||
|
||||
if [ "${VULKAN_SUPPORT}" = "yes" ]
|
||||
then
|
||||
PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
|
||||
PKG_CONFIGURE_OPTS_TARGET+=" -DENABLE_VULKAN=ON"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_VULKAN=ON"
|
||||
fi
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_HEADLESS=ON \
|
||||
|
@ -61,12 +61,14 @@ PKG_CMAKE_OPTS_TARGET+=" -DENABLE_HEADLESS=ON \
|
|||
-DENCODE_FRAMEDUMPS=OFF \
|
||||
-DENABLE_CLI_TOOL=OFF"
|
||||
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p ${INSTALL}/usr/bin
|
||||
cp -rf ${PKG_BUILD}/.${TARGET_NAME}/Binaries/dolphin* ${INSTALL}/usr/bin
|
||||
cp -rf ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin
|
||||
|
||||
chmod +x ${INSTALL}/usr/bin/start_dolphin.sh
|
||||
chmod +x ${INSTALL}/usr/bin/start_dolphin_gc.sh
|
||||
chmod +x ${INSTALL}/usr/bin/start_dolphin_wii.sh
|
||||
|
||||
mkdir -p ${INSTALL}/usr/config/dolphin-emu
|
||||
cp -rf ${PKG_BUILD}/Data/Sys/* ${INSTALL}/usr/config/dolphin-emu
|
||||
|
@ -79,9 +81,12 @@ post_install() {
|
|||
DOLPHIN_PLATFORM="drm"
|
||||
;;
|
||||
*)
|
||||
DOLPHIN_PLATFORM="x11"
|
||||
DOLPHIN_PLATFORM="wayland"
|
||||
;;
|
||||
esac
|
||||
sed -e "s/@DOLPHIN_PLATFORM@/${DOLPHIN_PLATFORM}/g" \
|
||||
-i ${INSTALL}/usr/bin/start_dolphin.sh
|
||||
-i ${INSTALL}/usr/bin/start_dolphin_gc.sh
|
||||
sed -e "s/@DOLPHIN_PLATFORM@/${DOLPHIN_PLATFORM}/g" \
|
||||
-i ${INSTALL}/usr/bin/start_dolphin_wii.sh
|
||||
|
||||
}
|
||||
|
|
|
@ -1,142 +0,0 @@
|
|||
diff --git a/Source/Core/Core/HW/GCPadEmu.h b/Source/Core/Core/HW/GCPadEmu.h
|
||||
index 66a1aee4e4..a03eaebcd3 100644
|
||||
--- a/Source/Core/Core/HW/GCPadEmu.h
|
||||
+++ b/Source/Core/Core/HW/GCPadEmu.h
|
||||
@@ -65,6 +65,7 @@ public:
|
||||
static constexpr const char* X_BUTTON = "X";
|
||||
static constexpr const char* Y_BUTTON = "Y";
|
||||
static constexpr const char* Z_BUTTON = "Z";
|
||||
+ static constexpr const char* HOTKEY_BUTTON = "Hotkey";
|
||||
static constexpr const char* START_BUTTON = "Start";
|
||||
|
||||
// i18n: The left trigger button (labeled L on real controllers)
|
||||
diff --git a/Source/Core/Core/HW/GCPadEmu.cpp b/Source/Core/Core/HW/GCPadEmu.cpp
|
||||
index 470d2b8c2f..97818b5b67 100644
|
||||
--- a/Source/Core/Core/HW/GCPadEmu.cpp
|
||||
+++ b/Source/Core/Core/HW/GCPadEmu.cpp
|
||||
@@ -25,6 +25,7 @@ static const u16 button_bitmasks[] = {
|
||||
PAD_BUTTON_Y,
|
||||
PAD_TRIGGER_Z,
|
||||
PAD_BUTTON_START,
|
||||
+ PAD_BUTTON_HOTKEY,
|
||||
0 // MIC HAX
|
||||
};
|
||||
|
||||
@@ -47,6 +48,9 @@ GCPad::GCPad(const unsigned int index) : m_index(index)
|
||||
// i18n: The START/PAUSE button on GameCube controllers
|
||||
m_buttons->AddInput(ControllerEmu::Translate, START_BUTTON, _trans("START"));
|
||||
|
||||
+ // Hotkey Button
|
||||
+ m_buttons->AddInput(ControllerEmu::Translate, HOTKEY_BUTTON, _trans("HOTKEY"));
|
||||
+
|
||||
// sticks
|
||||
groups.emplace_back(m_main_stick = new ControllerEmu::OctagonAnalogStick(
|
||||
MAIN_STICK_GROUP, _trans("Control Stick"), MAIN_STICK_GATE_RADIUS));
|
||||
diff --git a/Source/Core/DolphinNoGUI/PlatformX11.cpp b/Source/Core/DolphinNoGUI/PlatformX11.cpp
|
||||
index 8dcd93bf52..5d7386da38 100644
|
||||
--- a/Source/Core/DolphinNoGUI/PlatformX11.cpp
|
||||
+++ b/Source/Core/DolphinNoGUI/PlatformX11.cpp
|
||||
@@ -16,6 +16,12 @@ static constexpr auto X_None = None;
|
||||
#include "Core/Core.h"
|
||||
#include "Core/State.h"
|
||||
|
||||
+#include "Core/HW/GCPad.h"
|
||||
+#include "InputCommon/GCPadStatus.h"
|
||||
+#include <fmt/format.h>
|
||||
+#include "Core/Config/GraphicsSettings.h"
|
||||
+#include "VideoCommon/VideoConfig.h"
|
||||
+
|
||||
#include <climits>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
@@ -149,11 +155,78 @@ void PlatformX11::MainLoop()
|
||||
{
|
||||
while (IsRunning())
|
||||
{
|
||||
+ static int hotkey = 0;
|
||||
+ static int slot = 0;
|
||||
+ static int fps = 0;
|
||||
+ static int aspect = 0;
|
||||
+
|
||||
UpdateRunningFlag();
|
||||
Core::HostDispatchJobs();
|
||||
ProcessEvents();
|
||||
UpdateWindowPosition();
|
||||
|
||||
+ if(Pad::IsInitialized()) {
|
||||
+ GCPadStatus x = Pad::GetStatus(0);
|
||||
+
|
||||
+ if( (x.button & PAD_BUTTON_HOTKEY) == PAD_BUTTON_HOTKEY) { // hotkey pressed
|
||||
+ if(hotkey == 1) {
|
||||
+ hotkey = 2;
|
||||
+ }
|
||||
+ } else {
|
||||
+ hotkey = 1; // assure hotkey is released between actions
|
||||
+ }
|
||||
+
|
||||
+ if(hotkey == 2) { // hotkey pressed
|
||||
+ if( (x.button & PAD_BUTTON_START) == PAD_BUTTON_START) {
|
||||
+ RequestShutdown();
|
||||
+ hotkey = 0;
|
||||
+ }
|
||||
+
|
||||
+ if( (x.button & PAD_TRIGGER_L) == PAD_TRIGGER_L) {
|
||||
+ State::Load(slot);
|
||||
+ hotkey = 0;
|
||||
+ }
|
||||
+ if( (x.button & PAD_TRIGGER_R) == PAD_TRIGGER_R) {
|
||||
+ State::Save(slot);
|
||||
+ hotkey = 0;
|
||||
+ }
|
||||
+ if( (x.button & PAD_BUTTON_DOWN) == PAD_BUTTON_DOWN) {
|
||||
+ if(slot > 0) slot--;
|
||||
+ Core::DisplayMessage(fmt::format("Slot {} selected", slot), 4000);
|
||||
+ hotkey = 0;
|
||||
+ }
|
||||
+ if( (x.button & PAD_BUTTON_UP) == PAD_BUTTON_UP) {
|
||||
+ if(slot < 10) slot++;
|
||||
+ Core::DisplayMessage(fmt::format("Slot {} selected", slot), 4000);
|
||||
+ hotkey = 0;
|
||||
+ }
|
||||
+ if( (x.button & PAD_BUTTON_A) == PAD_BUTTON_A) {
|
||||
+ Core::SaveScreenShot();
|
||||
+ hotkey = 0;
|
||||
+ }
|
||||
+ if( (x.button & PAD_BUTTON_Y) == PAD_BUTTON_Y) {
|
||||
+ if(fps == 0) {
|
||||
+ Config::SetCurrent(Config::GFX_SHOW_FPS, True);
|
||||
+ fps = 1;
|
||||
+ } else {
|
||||
+ Config::SetCurrent(Config::GFX_SHOW_FPS, False);
|
||||
+ fps = 0;
|
||||
+ }
|
||||
+ hotkey = 0;
|
||||
+ }
|
||||
+ if( (x.button & PAD_BUTTON_X) == PAD_BUTTON_X) {
|
||||
+ if(aspect == 0) {
|
||||
+ Config::SetCurrent(Config::GFX_ASPECT_RATIO, AspectMode::Stretch);
|
||||
+ aspect = 1;
|
||||
+ } else {
|
||||
+ Config::SetCurrent(Config::GFX_ASPECT_RATIO, AspectMode::Auto);
|
||||
+ aspect = 0;
|
||||
+ }
|
||||
+ hotkey = 0;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
// TODO: Is this sleep appropriate?
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||
}
|
||||
diff --git a/Source/Core/InputCommon/GCPadStatus.h b/Source/Core/InputCommon/GCPadStatus.h
|
||||
index 7da1bbd..57d294d 100644
|
||||
--- a/Source/Core/InputCommon/GCPadStatus.h
|
||||
+++ b/Source/Core/InputCommon/GCPadStatus.h
|
||||
@@ -27,6 +27,7 @@ enum PadButton
|
||||
PAD_BUTTON_X = 0x0400,
|
||||
PAD_BUTTON_Y = 0x0800,
|
||||
PAD_BUTTON_START = 0x1000,
|
||||
+ PAD_BUTTON_HOTKEY = 0x2000,
|
||||
};
|
||||
|
||||
struct GCPadStatus
|
|
@ -1,144 +0,0 @@
|
|||
diff --git a/Source/Core/DolphinNoGUI/MainNoGUI.cpp b/Source/Core/DolphinNoGUI/MainNoGUI.cpp
|
||||
index 11bbf55da1..71d8960652 100644
|
||||
--- a/Source/Core/DolphinNoGUI/MainNoGUI.cpp
|
||||
+++ b/Source/Core/DolphinNoGUI/MainNoGUI.cpp
|
||||
@@ -251,6 +251,10 @@ int main(int argc, char* argv[])
|
||||
if (options.is_set("user"))
|
||||
user_directory = static_cast<const char*>(options.get("user"));
|
||||
|
||||
+ UICommon::SetUserDirectory(user_directory);
|
||||
+ UICommon::Init();
|
||||
+ GCAdapter::Init();
|
||||
+
|
||||
s_platform = GetPlatform(options);
|
||||
if (!s_platform || !s_platform->Init())
|
||||
{
|
||||
@@ -258,17 +262,6 @@ int main(int argc, char* argv[])
|
||||
return 1;
|
||||
}
|
||||
|
||||
- const WindowSystemInfo wsi = s_platform->GetWindowSystemInfo();
|
||||
-
|
||||
- UICommon::SetUserDirectory(user_directory);
|
||||
- UICommon::Init();
|
||||
- UICommon::InitControllers(wsi);
|
||||
-
|
||||
- Common::ScopeGuard ui_common_guard([] {
|
||||
- UICommon::ShutdownControllers();
|
||||
- UICommon::Shutdown();
|
||||
- });
|
||||
-
|
||||
if (save_state_path && !game_specified)
|
||||
{
|
||||
fprintf(stderr, "A save state cannot be loaded without specifying a game to launch.\n");
|
||||
@@ -295,7 +288,7 @@ int main(int argc, char* argv[])
|
||||
|
||||
DolphinAnalytics::Instance().ReportDolphinStart("nogui");
|
||||
|
||||
- if (!BootManager::BootCore(std::move(boot), wsi))
|
||||
+ if (!BootManager::BootCore(std::move(boot), s_platform->GetWindowSystemInfo()))
|
||||
{
|
||||
fprintf(stderr, "Could not boot the specified file\n");
|
||||
return 1;
|
||||
@@ -310,6 +303,7 @@ int main(int argc, char* argv[])
|
||||
|
||||
Core::Shutdown();
|
||||
s_platform.reset();
|
||||
+ UICommon::Shutdown();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp
|
||||
index 8a02534c57..00d8ac09e8 100644
|
||||
--- a/Source/Core/Core/Core.cpp
|
||||
+++ b/Source/Core/Core/Core.cpp
|
||||
@@ -470,14 +470,26 @@ static void EmuThread(std::unique_ptr<BootParameters> boot, WindowSystemInfo wsi
|
||||
DeclareAsCPUThread();
|
||||
s_frame_step = false;
|
||||
|
||||
- // Switch the window used for inputs to the render window. This way, the cursor position
|
||||
- // is relative to the render window, instead of the main window.
|
||||
- ASSERT(g_controller_interface.IsInit());
|
||||
- g_controller_interface.ChangeWindow(wsi.render_window);
|
||||
-
|
||||
- Pad::LoadConfig();
|
||||
- Pad::LoadGBAConfig();
|
||||
- Keyboard::LoadConfig();
|
||||
+ // The frontend will likely have initialized the controller interface, as it needs
|
||||
+ // it to provide the configuration dialogs. In this case, instead of re-initializing
|
||||
+ // entirely, we switch the window used for inputs to the render window. This way, the
|
||||
+ // cursor position is relative to the render window, instead of the main window.
|
||||
+ bool init_controllers = false;
|
||||
+ if (!g_controller_interface.IsInit())
|
||||
+ {
|
||||
+ g_controller_interface.Initialize(wsi);
|
||||
+ Pad::Initialize();
|
||||
+ Pad::InitializeGBA();
|
||||
+ Keyboard::Initialize();
|
||||
+ init_controllers = true;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ g_controller_interface.ChangeWindow(wsi.render_window);
|
||||
+ Pad::LoadConfig();
|
||||
+ Pad::LoadGBAConfig();
|
||||
+ Keyboard::LoadConfig();
|
||||
+ }
|
||||
|
||||
BootSessionData boot_session_data = std::move(boot->boot_session_data);
|
||||
const std::optional<std::string>& savestate_path = boot_session_data.GetSavestatePath();
|
||||
@@ -494,13 +506,50 @@ static void EmuThread(std::unique_ptr<BootParameters> boot, WindowSystemInfo wsi
|
||||
Common::SyncSDImageToSDFolder();
|
||||
}};
|
||||
|
||||
- // Load Wiimotes - only if we are booting in Wii mode
|
||||
+ // Load and Init Wiimotes - only if we are booting in Wii mode
|
||||
+ bool init_wiimotes = false;
|
||||
if (core_parameter.bWii && !Config::Get(Config::MAIN_BLUETOOTH_PASSTHROUGH_ENABLED))
|
||||
{
|
||||
- Wiimote::LoadConfig();
|
||||
+ if (init_controllers)
|
||||
+ {
|
||||
+ Wiimote::Initialize(savestate_path ? Wiimote::InitializeMode::DO_WAIT_FOR_WIIMOTES :
|
||||
+ Wiimote::InitializeMode::DO_NOT_WAIT_FOR_WIIMOTES);
|
||||
+ init_wiimotes = true;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ Wiimote::LoadConfig();
|
||||
+ }
|
||||
}
|
||||
|
||||
- FreeLook::LoadInputConfig();
|
||||
+ if (init_controllers)
|
||||
+ {
|
||||
+ FreeLook::Initialize();
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ FreeLook::LoadInputConfig();
|
||||
+ }
|
||||
+
|
||||
+ Common::ScopeGuard controller_guard{[init_controllers, init_wiimotes] {
|
||||
+ if (!init_controllers)
|
||||
+ return;
|
||||
+
|
||||
+ if (init_wiimotes)
|
||||
+ {
|
||||
+ Wiimote::ResetAllWiimotes();
|
||||
+ Wiimote::Shutdown();
|
||||
+ }
|
||||
+
|
||||
+ FreeLook::Shutdown();
|
||||
+
|
||||
+ ResetRumble();
|
||||
+
|
||||
+ Keyboard::Shutdown();
|
||||
+ Pad::Shutdown();
|
||||
+ Pad::ShutdownGBA();
|
||||
+ g_controller_interface.Shutdown();
|
||||
+ }};
|
||||
|
||||
Movie::Init(*boot);
|
||||
Common::ScopeGuard movie_guard{&Movie::Shutdown};
|
File diff suppressed because it is too large
Load diff
|
@ -1,21 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
. /etc/profile
|
||||
|
||||
if [ ! -d "/storage/.config/dolphin-emu" ]; then
|
||||
mkdir -p "/storage/.config/dolphin-emu"
|
||||
cp -r "/usr/config/dolphin-emu" "/storage/.config/"
|
||||
fi
|
||||
|
||||
if [ ! -d "/storage/.config/dolphin-emu/StateSaves" ]; then
|
||||
mkdir -p "/storage/.config/dolphin-emu/StateSaves"
|
||||
fi
|
||||
|
||||
rm -rf /storage/.local/share/dolphin-emu
|
||||
|
||||
ln -sfv /storage/.config/dolphin-emu /storage/.local/share/dolphin-emu
|
||||
|
||||
/usr/bin/dolphin-emu-nogui -p @DOLPHIN_PLATFORM@ -a HLE -e "${1}"
|
145
packages/games/emulators/dolphinsa/scripts/start_dolphin_gc.sh
Executable file
145
packages/games/emulators/dolphinsa/scripts/start_dolphin_gc.sh
Executable file
|
@ -0,0 +1,145 @@
|
|||
#!/bin/bash
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
. /etc/profile
|
||||
|
||||
#Check if dolphin-emu exists in .config
|
||||
if [ ! -d "/storage/.config/dolphin-emu" ]; then
|
||||
mkdir -p "/storage/.config/dolphin-emu"
|
||||
cp -r "/usr/config/dolphin-emu" "/storage/.config/"
|
||||
fi
|
||||
|
||||
#Check if GC custom controller profile exists in .config/dolphin-emu
|
||||
if [ ! -f "/storage/.config/dolphin-emu/Custom_GCPadNew.ini" ]; then
|
||||
cp -r "/usr/config/dolphin-emu/GCPadNew.ini" "/storage/.config/dolphin-emu/Custom_GCPadNew.ini"
|
||||
fi
|
||||
|
||||
#Link Save States to /roms/savestates
|
||||
if [ ! -d "/storage/roms/savestates/gamecube/" ]; then
|
||||
mkdir -p "/storage/roms/savestates/gamecube/"
|
||||
fi
|
||||
|
||||
rm -rf /storage/.config/dolphin-emu/StateSaves
|
||||
ln -sf /storage/roms/savestates/gamecube /storage/.config/dolphin-emu/StateSaves
|
||||
|
||||
#Emulation Station Features
|
||||
GAME=$(echo "${1}"| sed "s#^/.*/##")
|
||||
AA=$(get_setting anti_aliasing gamecube "${GAME}")
|
||||
ASPECT=$(get_setting aspect_ratio gamecube "${GAME}")
|
||||
RENDERER=$(get_setting graphics_backend gamecube "${GAME}")
|
||||
IRES=$(get_setting internal_resolution gamecube "${GAME}")
|
||||
FPS=$(get_setting show_fps gamecube "${GAME}")
|
||||
CON=$(get_setting gamecube_controller_profile gamecube "${GAME}")
|
||||
|
||||
#Anti-Aliasing
|
||||
if [ "$AA" = "0" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 0' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "2m" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 2' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "2s" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 2' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = True' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "4m" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 4' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "4s" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 4' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = True' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "8m" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 8' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "8s" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 8' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = True' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
|
||||
#Aspect Ratio
|
||||
if [ "$ASPECT" = "0" ]
|
||||
then
|
||||
sed -i '/AspectRatio/c\AspectRatio = 0' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$ASPECT" = "1" ]
|
||||
then
|
||||
sed -i '/AspectRatio/c\AspectRatio = 1' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$ASPECT" = "2" ]
|
||||
then
|
||||
sed -i '/AspectRatio/c\AspectRatio = 2' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$ASPECT" = "3" ]
|
||||
then
|
||||
sed -i '/AspectRatio/c\AspectRatio = 3' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
|
||||
#Video Backend
|
||||
if [ "$RENDERER" = "opengl" ]
|
||||
then
|
||||
sed -i '/GFXBackend/c\GFXBackend = OGL' /storage/.config/dolphin-emu/Dolphin.ini
|
||||
fi
|
||||
|
||||
if [ "$RENDERER" = "vulkan" ]
|
||||
then
|
||||
sed -i '/GFXBackend/c\GFXBackend = Vulkan' /storage/.config/dolphin-emu/Dolphin.ini
|
||||
fi
|
||||
if [ "$RENDERER" = "software" ]
|
||||
then
|
||||
sed -i '/GFXBackend/c\GFXBackend = Software Renderer' /storage/.config/dolphin-emu/Dolphin.ini
|
||||
fi
|
||||
|
||||
#Internal Resolution
|
||||
if [ "$IRES" = "1" ]
|
||||
then
|
||||
sed -i '/InternalResolution/c\InternalResolution = 1' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$IRES" = "2" ]
|
||||
then
|
||||
sed -i '/InternalResolution/c\InternalResolution = 2' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$IRES" = "3" ]
|
||||
then
|
||||
sed -i '/InternalResolution/c\InternalResolution = 3' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
|
||||
#Show FPS
|
||||
if [ "$FPS" = "false" ]
|
||||
then
|
||||
sed -i '/ShowFPS/c\ShowFPS = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$FPS" = "true" ]
|
||||
then
|
||||
sed -i '/ShowFPS/c\ShowFPS = true' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
|
||||
#GC Controller Profile
|
||||
if [ "$CON" = "default" ]
|
||||
then
|
||||
cp -r /usr/config/dolphin-emu/GCPadNew.ini /storage/.config/dolphin-emu/GCPadNew.ini
|
||||
fi
|
||||
if [ "$CON" = "custom" ]
|
||||
then
|
||||
cp -r /storage/.config/dolphin-emu/Custom_GCPadNew.ini /storage/.config/dolphin-emu/GCPadNew.ini
|
||||
fi
|
||||
|
||||
#Link .config/dolphin-emu to .local
|
||||
rm -rf /storage/.local/share/dolphin-emu
|
||||
ln -sf /storage/.config/dolphin-emu /storage/.local/share/dolphin-emu
|
||||
|
||||
#Run Dolphin emulator
|
||||
/usr/bin/dolphin-emu-nogui -p @DOLPHIN_PLATFORM@ -a HLE -e "${1}"
|
156
packages/games/emulators/dolphinsa/scripts/start_dolphin_wii.sh
Executable file
156
packages/games/emulators/dolphinsa/scripts/start_dolphin_wii.sh
Executable file
|
@ -0,0 +1,156 @@
|
|||
#!/bin/bash
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
. /etc/profile
|
||||
|
||||
#Check if dolphin-emu exists in .config
|
||||
if [ ! -d "/storage/.config/dolphin-emu" ]; then
|
||||
mkdir -p "/storage/.config/dolphin-emu"
|
||||
cp -r "/usr/config/dolphin-emu" "/storage/.config/"
|
||||
fi
|
||||
|
||||
#Check if Wii custom controller profile exists in .config/dolphin-emu
|
||||
if [ ! -f "/storage/.config/dolphin-emu/Custom_WiimoteNew.ini" ]; then
|
||||
cp -r "/usr/config/dolphin-emu/WiiControllerProfiles/remote.ini" "/storage/.config/dolphin-emu/Custom_WiimoteNew.ini"
|
||||
fi
|
||||
|
||||
#Gamecube controller profile needed for hotkeys to work
|
||||
cp -r "/usr/config/dolphin-emu/GCPadNew.ini" "/storage/.config/dolphin-emu/GCPadNew.ini"
|
||||
|
||||
#Link Save States to /roms/savestates/wii
|
||||
if [ ! -d "/storage/roms/savestates/wii/" ]; then
|
||||
mkdir -p "/storage/roms/savestates/wii/"
|
||||
fi
|
||||
|
||||
rm -rf /storage/.config/dolphin-emu/StateSaves
|
||||
ln -sf /storage/roms/savestates/wii /storage/.config/dolphin-emu/StateSaves
|
||||
|
||||
#Emulation Station options
|
||||
GAME=$(echo "${1}"| sed "s#^/.*/##")
|
||||
AA=$(get_setting anti_aliasing wii "${GAME}")
|
||||
ASPECT=$(get_setting aspect_ratio wii "${GAME}")
|
||||
RENDERER=$(get_setting graphics_backend wii "${GAME}")
|
||||
IRES=$(get_setting internal_resolution wii "${GAME}")
|
||||
FPS=$(get_setting show_fps wii "${GAME}")
|
||||
CON=$(get_setting wii_controller_profile wii "${GAME}")
|
||||
|
||||
#Anti-Aliasing
|
||||
if [ "$AA" = "0" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 0' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "2m" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 2' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "2s" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 2' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = True' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "4m" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 4' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "4s" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 4' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = True' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "8m" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 8' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$AA" = "8s" ]
|
||||
then
|
||||
sed -i '/MSAA/c\MSAA = 8' /storage/.config/dolphin-emu/GFX.ini
|
||||
sed -i '/SSAA/c\SSAA = True' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
|
||||
#Aspect Ratio
|
||||
if [ "$ASPECT" = "0" ]
|
||||
then
|
||||
sed -i '/AspectRatio/c\AspectRatio = 0' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$ASPECT" = "1" ]
|
||||
then
|
||||
sed -i '/AspectRatio/c\AspectRatio = 1' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$ASPECT" = "2" ]
|
||||
then
|
||||
sed -i '/AspectRatio/c\AspectRatio = 2' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$ASPECT" = "3" ]
|
||||
then
|
||||
sed -i '/AspectRatio/c\AspectRatio = 3' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
|
||||
#Video Backend
|
||||
if [ "$RENDERER" = "opengl" ]
|
||||
then
|
||||
sed -i '/GFXBackend/c\GFXBackend = OGL' /storage/.config/dolphin-emu/Dolphin.ini
|
||||
fi
|
||||
|
||||
if [ "$RENDERER" = "vulkan" ]
|
||||
then
|
||||
sed -i '/GFXBackend/c\GFXBackend = Vulkan' /storage/.config/dolphin-emu/Dolphin.ini
|
||||
fi
|
||||
if [ "$RENDERER" = "software" ]
|
||||
then
|
||||
sed -i '/GFXBackend/c\GFXBackend = Software Renderer' /storage/.config/dolphin-emu/Dolphin.ini
|
||||
fi
|
||||
|
||||
#Internal Resolution
|
||||
if [ "$IRES" = "1" ]
|
||||
then
|
||||
sed -i '/InternalResolution/c\InternalResolution = 1' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$IRES" = "2" ]
|
||||
then
|
||||
sed -i '/InternalResolution/c\InternalResolution = 2' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$IRES" = "3" ]
|
||||
then
|
||||
sed -i '/InternalResolution/c\InternalResolution = 3' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
|
||||
#Show FPS
|
||||
if [ "$FPS" = "true" ]
|
||||
then
|
||||
sed -i '/ShowFPS/c\ShowFPS = True' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
if [ "$FPS" = "false" ]
|
||||
then
|
||||
sed -i '/ShowFPS/c\ShowFPS = False' /storage/.config/dolphin-emu/GFX.ini
|
||||
fi
|
||||
|
||||
#Wii Controller Profile
|
||||
if [ "$CON" = "remote" ]
|
||||
then
|
||||
cp -r /usr/config/dolphin-emu/WiiControllerProfiles/remote.ini /storage/.config/dolphin-emu/WiimoteNew.ini
|
||||
fi
|
||||
if [ "$CON" = "nunchuck" ]
|
||||
then
|
||||
cp -r /usr/config/dolphin-emu/WiiControllerProfiles/nunchuck.ini /storage/.config/dolphin-emu/WiimoteNew.ini
|
||||
fi
|
||||
if [ "$CON" = "classic" ]
|
||||
then
|
||||
cp -r /usr/config/dolphin-emu/WiiControllerProfiles/classic.ini /storage/.config/dolphin-emu/WiimoteNew.ini
|
||||
fi
|
||||
if [ "$CON" = "custom" ]
|
||||
then
|
||||
cp -r /storage/.config/dolphin-emu/Custom_WiimoteNew.ini /storage/.config/dolphin-emu/WiimoteNew.ini
|
||||
fi
|
||||
|
||||
#Link .config/dolphin-emu to .local
|
||||
rm -rf /storage/.local/share/dolphin-emu
|
||||
ln -sf /storage/.config/dolphin-emu /storage/.local/share/dolphin-emu
|
||||
|
||||
#Run Dolphin emulator
|
||||
/usr/bin/dolphin-emu-nogui -p @DOLPHIN_PLATFORM@ -a HLE -e "${1}"
|
|
@ -9,7 +9,7 @@ if [ ! -d "/storage/.config/drastic/aarch64/drastic" ]; then
|
|||
echo -e "=> ${OS_NAME} DRASTIC INSTALLATION"
|
||||
echo -e "\nChecking for internet connection..."
|
||||
|
||||
INETUP=$(ping -c1 -w1 www.google.com >/dev/null 2>&1)
|
||||
INETUP=$(/usr/bin/amionline >/dev/null 2>&1)
|
||||
if [ $? == 0 ]
|
||||
then
|
||||
mkdir -p "/storage/.config/drastic/aarch64"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
PKG_NAME="duckstationsa"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_DEPENDS_TARGET="toolchain SDL2 nasm:host pulseaudio openssl libidn2 nghttp2 zlib curl libevdev"
|
||||
PKG_DEPENDS_TARGET="toolchain SDL2 nasm:host pulseaudio openssl libidn2 nghttp2 zlib curl libevdev ecm"
|
||||
PKG_SITE="https://github.com/stenzek/duckstation"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_SHORTDESC="Fast PlayStation 1 emulator for x86-64/AArch32/AArch64 "
|
||||
|
@ -29,12 +29,18 @@ if [ "${OPENGLES_SUPPORT}" = yes ]; then
|
|||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_X11=OFF \
|
||||
-DUSE_DRMKMS=ON \
|
||||
-DENABLE_EGL=ON \
|
||||
-DUSE_MALI=OFF"
|
||||
-DUSE_MALI=OFF \
|
||||
-DENABLE_VULKAN=OFF"
|
||||
fi
|
||||
|
||||
if [ "${DISPLAYSERVER}" = "wl" ]; then
|
||||
PKG_DEPENDS_TARGET+=" wayland ${WINDOWMANAGER} xorg-server xrandr libXi"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_X11=ON"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_X11=OFF -DUSE_WAYLAND=ON"
|
||||
fi
|
||||
|
||||
if [ "${VULKAN_SUPPORT}" = "yes" ]; then
|
||||
PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_VULKAN=ON"
|
||||
fi
|
||||
|
||||
pre_configure_target() {
|
||||
|
@ -47,8 +53,6 @@ pre_configure_target() {
|
|||
-DUSE_SDL2=ON \
|
||||
-DENABLE_CHEEVOS=ON \
|
||||
-DUSE_FBDEV=OFF \
|
||||
-DUSE_WAYLAND=OFF \
|
||||
-DENABLE_VULKAN=OFF
|
||||
-DUSE_EVDEV=ON"
|
||||
}
|
||||
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
diff --git a/src/frontend-common/fullscreen_ui.cpp b/src/frontend-common/fullscreen_ui.cpp
|
||||
index ce53e69f..fc0b24d5 100644
|
||||
--- a/src/frontend-common/fullscreen_ui.cpp
|
||||
+++ b/src/frontend-common/fullscreen_ui.cpp
|
||||
@@ -244,6 +244,7 @@ static void DoChangeDiscFromFile();
|
||||
static void DoChangeDisc();
|
||||
static void DoRequestExit();
|
||||
static void DoToggleFullscreen();
|
||||
+static void EnableDoToggleFullscreen();
|
||||
static void DoCheatsMenu();
|
||||
static void DoToggleAnalogMode();
|
||||
|
||||
@@ -1038,6 +1039,11 @@ void FullscreenUI::DoToggleFullscreen()
|
||||
Host::RunOnCPUThread([]() { Host::SetFullscreen(!Host::IsFullscreen()); });
|
||||
}
|
||||
|
||||
+void FullscreenUI::EnableDoToggleFullscreen()
|
||||
+{
|
||||
+ Host::SetFullscreen(true);
|
||||
+}
|
||||
+
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Landing Window
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -1050,6 +1056,8 @@ void FullscreenUI::SwitchToLanding()
|
||||
|
||||
void FullscreenUI::DrawLandingWindow()
|
||||
{
|
||||
+ EnableDoToggleFullscreen();
|
||||
+
|
||||
BeginFullscreenColumns(nullptr, 0.0f, true);
|
||||
|
||||
if (BeginFullscreenColumnWindow(0.0f, -710.0f, "logo", UIPrimaryDarkColor))
|
|
@ -0,0 +1,34 @@
|
|||
diff --git a/src/frontend-common/platform_misc_unix.cpp b/src/frontend-common/platform_misc_unix.cpp
|
||||
index 1f7ae9ec..e0487476 100644
|
||||
--- a/src/frontend-common/platform_misc_unix.cpp
|
||||
+++ b/src/frontend-common/platform_misc_unix.cpp
|
||||
@@ -24,12 +24,12 @@ static bool SetScreensaverInhibitX11(bool inhibit, const WindowInfo& wi)
|
||||
char* argv[4] = {command.GetWriteableCharArray(), operation.GetWriteableCharArray(), id.GetWriteableCharArray(),
|
||||
nullptr};
|
||||
pid_t pid;
|
||||
- int res = posix_spawnp(&pid, "xdg-screensaver", nullptr, nullptr, argv, environ);
|
||||
- if (res != 0)
|
||||
- {
|
||||
- Log_ErrorPrintf("posix_spawnp() failed: %d", res);
|
||||
- return false;
|
||||
- }
|
||||
+ //int res = posix_spawnp(&pid, "xdg-screensaver", nullptr, nullptr, argv, environ);
|
||||
+ //if (res != 0)
|
||||
+ //{
|
||||
+ // Log_ErrorPrintf("posix_spawnp() failed: %d", res);
|
||||
+ // return false;
|
||||
+ //}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -95,8 +95,8 @@ bool FrontendCommon::PlaySoundAsync(const char* path)
|
||||
pid_t pid;
|
||||
|
||||
// Since we set SA_NOCLDWAIT in Qt, we don't need to wait here.
|
||||
- int res = posix_spawnp(&pid, cmdname, nullptr, nullptr, const_cast<char**>(argv), environ);
|
||||
- return (res == 0);
|
||||
+// int res = posix_spawnp(&pid, cmdname, nullptr, nullptr, const_cast<char**>(argv), environ);
|
||||
+// return (res == 0);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
|
@ -4,7 +4,7 @@
|
|||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="flycastsa"
|
||||
PKG_VERSION="092006fbbecd77c13cb3eb6545e94d7ca721575e"
|
||||
PKG_VERSION="0cbf6f6601e5c0bbd849cf6cdde4ab6ae4b030ff"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/flyinghead/flycast"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
# Copyright (C) 2018-present 5schatten (https://github.com/5schatten)
|
||||
|
||||
PKG_NAME="hatarisa"
|
||||
PKG_VERSION="d487c2daaee8cc263a740d17ea5cd55b7435926e"
|
||||
PKG_SHA256="f5f1aca4524039a37aed3a3f005b007a7d7f51cdfabfa416026d25222d6afc3e"
|
||||
PKG_VERSION="68a9cc999a6167427aaf50c55f6ad6c2c5055425"
|
||||
PKG_SHA256="718cb33bb67010483902a0b865e151b7069cc4658868449ffe9dadd679737299"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/hatari/hatari"
|
||||
PKG_URL="https://github.com/hatari/hatari/archive/${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="pico-8"
|
||||
PKG_VERSION="8f85d9a4fcd96e806d6c0f884ed9738c2bdf892d"
|
||||
PKG_VERSION="428c14a99c6cb5c050371a88f1d22bbb7d554011"
|
||||
PKG_SHA256=""
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC)
|
||||
|
||||
PKG_NAME="retroarch"
|
||||
PKG_VERSION="0cebebbfdc817757afe4dfa763dc930e9083826c"
|
||||
PKG_VERSION="2e73b87328577506f0cce1b7af9045b21e74f52b"
|
||||
PKG_SITE="https://github.com/libretro/RetroArch"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_DEPENDS_TARGET="toolchain SDL2 alsa-lib openssl freetype zlib retroarch-assets core-info ffmpeg libass joyutils empty nss-mdns openal-soft libogg libvorbisidec libvorbis libvpx libpng libdrm pulseaudio miniupnpc flac"
|
||||
PKG_DEPENDS_TARGET="toolchain SDL2 alsa-lib libass openssl freetype zlib retroarch-assets core-info ffmpeg libass joyutils empty nss-mdns openal-soft libogg libvorbisidec libvorbis libvpx libpng libdrm pulseaudio miniupnpc flac"
|
||||
PKG_LONGDESC="Reference frontend for the libretro API."
|
||||
GET_HANDLER_SUPPORT="git"
|
||||
|
||||
|
@ -73,6 +73,9 @@ pre_configure_target() {
|
|||
PKG_DEPENDS_TARGET+=" librga libgo2"
|
||||
PKG_CONFIGURE_OPTS_TARGET+=" --enable-odroidgo2"
|
||||
;;
|
||||
*)
|
||||
PKG_CONFIGURE_OPTS_TARGET+=" --disable-odroidgo2"
|
||||
;;
|
||||
esac
|
||||
|
||||
cd ${PKG_BUILD}
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# Copyright (C) 2020-present Fewtarius
|
||||
|
||||
PKG_NAME="scummvmsa"
|
||||
PKG_VERSION="ea0f0cc9ee1e089c94e1ce9fee6a587920e3147f"
|
||||
PKG_SHA256="b925ddc03488bd0fb1adf79ed3f70fbeb46ccc79558b82ce8262d9f56994399b"
|
||||
PKG_VERSION="35f1cecbe4400eec7f2e5bbb5a86c2bbd878cc41"
|
||||
PKG_SHA256="332e50e16a82fa13647928b1dc6745129732827ac9101c4d9962c32cd336edd2"
|
||||
PKG_REV="1"
|
||||
PKG_LICENSE="GPL2"
|
||||
PKG_SITE="https://github.com/scummvm/scummvm"
|
||||
|
|
|
@ -10,7 +10,7 @@ GET_HANDLER_SUPPORT="git"
|
|||
PKG_BUILD_FLAGS="+speed"
|
||||
PKG_PATCH_DIRS+="${DEVICE}"
|
||||
|
||||
case ${ARCH} in
|
||||
case ${TARGET_ARCH} in
|
||||
aarch64|arm)
|
||||
PKG_VERSION="c7618d2ecbf77b1e8188fa8af4fa1cfb34833a72"
|
||||
PKG_GIT_CLONE_BRANCH="pi4-1-9-0"
|
||||
|
@ -53,11 +53,11 @@ pre_configure_target() {
|
|||
PKG_CMAKE_OPTS_TARGET="${PKG_BUILD}/yabause "
|
||||
|
||||
if [ ! "${OPENGL}" = "no" ]; then
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_EGL=ON"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_EGL=ON -DUSE_OPENGL=ON"
|
||||
fi
|
||||
|
||||
if [ "${OPENGLES_SUPPORT}" = yes ]; then
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_EGL=ON"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_EGL=ON -DUSE_OPENGL=OFF"
|
||||
fi
|
||||
|
||||
#if [ "${VULKAN_SUPPORT}" = "yes" ]
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue