* for the libretro core, removed a couple of packages which are not needed for the libretro core.
* for the standalone, removed `libglew` which is only used on Windows for one of the plugins and make the GLU libraries mandatory since the core doesn't build without it.
Remove -ffast-math from makefiles on armv8. This option causes the following error when building on the rpi5 (armv8.2a):
/usr/lib/gcc/arm-linux-gnueabihf/12/include/arm_neon.h: In function ‘float16x4_t vmul_n_f16(float16x4_t, float16_t)’:
/usr/lib/gcc/arm-linux-gnueabihf/12/include/arm_neon.h:17755:14: error: conversion of scalar ‘float’ to vector ‘float16x4_t’ involves truncation
This also disables it for other armv8 platforms (that didn't have this problem), but the option does come with some risks and was added to code which I don't think will benefit such as mupen64plus-ui-console.
The make parameters are needed at the install stage and build stage so move them to a function.
Rename variable $source to $dir in the install loop - This matches the build function. An undefined variable $dir was used previously.
This also fixes some slight differences between them that were unnecessary:
* isPlatform "rpi1" && params+=("VFP=1" "VFP_HARD=1") was missing from the install stage
* install was missing isPlatform "armv8" && params+=("HOST_CPU=armv8") which is needed when building for the rpi5 with 64bit kernel and 32bit userland.
The mupen64plus package will contain an md5sum of all the mupen64plus repos last git commit.
As it will get a full hash for each repo, but the update check will compare using any hashes stored in the repos variable, it will mismatch and think there has been an update.
Upstream GlideN64 has a regression due to a recent shader related change, which breaks the video output on GLES devices/platforms.
Until this issue is fixed in the upstream GlideN64, build the plugin from a commit before the changes that cause the regression.
The `libraspberrypi-bin` package has been deprecated in RaspiOS's latest Bookworm release [1], being replaced with `raspi-utils`.
We need this package for `tvservice`, but on KMS platforms this utility is obsolete and always returns an error.
The changes will:
- leave the `libraspberrypi-bin` dependency in `runcommand` just for RPI+DispmanX platforms (Buster and eariler Raspbian)
- replace the `mupen64plus` dependency with the correct one (`libraspberrypi0`), since this is where the (E)GL(ES) VC drivers are located. `tvservice` , used by the starting script, should be installed by the `runcommand` dependency
[1] RasPiOS 06.Dec.2023 release, list of included packages: https://downloads.raspberrypi.com/raspios_arm64/images/raspios_arm64-2023-12-06/2023-12-05-raspios-bookworm-arm64.info
Previous (and initial) Bookworm release contained the `libraspberrypi-bin` package: https://downloads.raspberrypi.com/raspios_arm64/images/raspios_arm64-2023-10-10/2023-10-10-raspios-bookworm-arm64.info
This var is not set locally, it is inheriting wrong value "main packages" from ../admin/setup.sh#L380, resulting in:
mupen64plus-gles2ricemain packages = "...
The _get_repos_mupen64plus function is used for update checks, and it's called before depends_mupen64plus in this case.
If cmake was removed after installing, the hasPackage would fail and an older commit for the GLideN64 repo would
be used, which would cause an update even if not required.
This is unlikely to happen for end users, but the builder module removes dependencies after installing (so missing
dependencies can be identified). This caused mupen64plus binaries to be rebuilt when there had been no changes.
This check is only needed for older pre-buster distros with cmake older than 3.9 so will be removed in the future.
Split off the code to get the various repos depending on platform, adding default branch names.
Add a _pkg_info_mupen64plus function which takes get/newer/check parameters from the main packaging code.
If "get" is called, we check all used repositories, getting the last commit hash of each repo, and make
a md5 checksum which is stored in pkg_repo_extra.
If "newer" is called, we check the remote hashes of all repositories, make a md5 checksum and compare against
installed package pkg_repo_extra.
Switched the hash for GLideN64 for older cmake to a full hash, so we generate the same md5sum also.
If "check" is called (only currently used by our tools module for checking repo validity) it checks all the
repos, outputting any errors, and returns 1 if any of them failed.
This is a lot of extra code, but it's only this module which requires this complexity - we could have just
used the main repository, but as some of the plugins are more actively developed at times, it made sense to
want to update if any of the plugin repositories were changed also. This seemed the best way to do it, but
the additional hook functionality could be used with other modules in the future if it was needed.
There has been a lot of contributions to this module, and unfortunately some of the logic has become rather obfuscated,
with a lot of duplication. This is a combination of an earlier changeset I had, but adding aarch64 needed enough logic
changes, it made sense to include it all. There are more improvements needed, but this de-duplicates some of the logic.
Vero4k may need a revisit.
Changes include:
* temporarily disable rice and gles2n64 for aarch64 due to build errors (just HOST checking errors so may well be easily fixed)
* remove a lot of vero4k specific blocks in favour of the mali flag
* enable mali for module (builds ok on odroid xu)
* was disabled before but re-enabled for all mali platforms with recent vero4k changes. The module needs some additional work and cleanup for other mali boards like odroid-c1 etc
* move lr-mupen64-plus to optional packages (and main for kms platforms)
* dont set mupen64plus standlone as default for rpi+kms
* rework logic in mupen64plus - use kms instead of mesa and de-duplicate a bit
also switched to using DISTCC_HOSTS="" to disable distcc when needed as previous
string replacement was hacky/unreliable and failed due to path duplication bug as
only the first path was removed from MAKEFLAGS
* apply armv8 optimization based on platform flag (rpi3/4)
* remove kms blocking flag and add fkms & generic kms support
* consolidate launcher script execution arguments
* skip "emplace" patch for kms targets (no crash observed)
* apply EGL detection segfault patch for mesa
* disable all blacklist checking for mesa
* run kms targets in native resolution due to lack of modesetting or scaling on KMS.
* allow modules to still use libpng12-dev but show a message for them to be updated
* change libpng-dev dependency to libpng12-dev for Jessie and older