Commit graph

2554 commits

Author SHA1 Message Date
Solomon Peachy
24220d13e5 genlang: Correct the 'size' in the binary vstrings sub-header
It was only taking into account LANG_* strings, and ignoring VOICE_*

Fortunately rbutil currently ignores this field as it's not needed.

Change-Id: If58230cd047abe7a80ebab7eca9147e510b034ea
2026-01-06 23:09:49 -05:00
Solomon Peachy
2c30a6e243 voice: Switch default Turkish Piper TTS voice from fettah to dfki
The former was removed from the upstream repositories "at the request of
contributors", leaving only the latter.

Change-Id: I4afe827be9037915d6d13b4d7ec0713509b88da3
2026-01-04 17:24:53 -05:00
Solomon Peachy
8aec8ee686 configure: Filter out "-Wl,-z,noexecstack" for winsim builds
Change-Id: I0222627729fbd475dfa7f4955b534f76ca780ccf
2026-01-02 07:51:44 -05:00
Mauricio Garrido
09a31fff91 3ds: Enable plugins for the 3ds platform.
This commit enables plugins for the 3ds platform.
And adds 3ds specific pad configurations for each plugin.

Change-Id: Ie28fef4da32ed4cd2caa6c9fa3b2fe312ee009ef
2025-12-31 21:13:34 -05:00
Aidan MacDonald
7418e65138 echoplayer: add 'debug' and 'flash' targets to makefile
This replaces the gdb & openocd config in utils/stm32tools
and is easier to use. Remove the srst workaround; it seems
this was caused by the D1/D3 domains not being powered up
while the CPU was in sleep mode.

Change-Id: I28cc0273b3004c6e3146bb2447f0655cad8bb1c2
2025-12-31 08:10:40 -05:00
Aidan MacDonald
fcf67a2ea9 echoplayer: enable reggen
Change-Id: Iab8ffd231f226d2772201ad92f3920065b7b0736
2025-12-30 13:53:48 -05:00
Aidan MacDonald
44afcc8cbe firmware: add build rules for RegGen-generated headers
Change-Id: I86ff1a39aec1ee428abd6464483ae3732fdf9196
2025-12-30 13:53:48 -05:00
Marc Aarts
a3d16e34ec Update rockboxdev.sh:
- Change alsa-lib and libffi source to use https instead of ftp
- Change glib source to current path (avoids redirect)
- Change mpc source to GNU mirror because www.multiprecision.org seems down
- Change remaining http to https

Original reason for the change is that on WSL2 (Windows 11) for some reason ftp links do not appear to work.

Change-Id: Ib20470e39f625df790895452b6d6b4003cebae07
2025-12-30 07:11:11 -05:00
Aidan MacDonald
969a2b65c7 tools: add RegGen utility
This is a tool written in C which does basically the same job
as regtools' headergen_v2, but using a new input format which
is less verbose than XML. In the interests of simplicity it
omits some features that regtools does support, like variant
registers or the SoC selector stuff so it cannot completely
replace regtools on the i.MX platforms that use these features.

RegGen doesn't generate API macros like regtools does; instead
these are expected to be maintained by hand, since it's arguably
easier to do that way.

Since RegGen has no dependencies beyond a C compiler it can
be integrated with the build system without adding any new
build time dependencies. This will allow generating headers
automatically, which is a substantial improvement over running
headergen_v2 by hand and committing the generated output.

The RegGen tool itself is licensed as GPLv3+, but generated
headers can be licensed as the user chooses.

Change-Id: If18f9577f8f4df6e2c97c1665b725773dd5466f0
2025-12-29 18:51:56 -05:00
Solomon Peachy
9c15ef82ee builds: Add Hiby R1 and R3ProII as Unstable targets
Change-Id: If901cacb295668ca661cf5450e88db509aabf409
2025-12-27 17:07:42 -05:00
Marc Aarts
1183b1ab1b Rockbox for the HiBy R3 Pro II/R1
Original author Melissa Autumn (https://codeberg.org/oopsallnaps/rockbox-hibyos) with contributions from Marc Aarts.

Adaptation to Rockbox standards by Marc Aarts

Change-Id: I09e5af7ba0a75c648e4b9fd424badc2d3665c943
2025-12-27 15:44:54 -05:00
Aidan MacDonald
d24a127f63 echoplayer: enable USE_ELF to generate ELF binaries
Make the final .echo binary an ELF file. Most STM32s have
their SRAM divided in multiple non-contiguous regions and
putting an ELF loader in the bootloader is basically the
only reasonable way to load Rockbox on such a system.

Change-Id: I818ef9fefe0d53b44cf64402ee1794ad261343eb
2025-12-23 17:57:59 +00:00
Aidan MacDonald
2e85027ae7 configure: set USE_ELF to no by default
Otherwise, toggling USE_ELF in the target's configure section
and running 'make reconf' has no effect, because the previous
value of USE_ELF is inherited from the makefile.

Change-Id: I72d605ef6987fc590871566d73b24acf37e8fbe6
2025-12-23 17:57:59 +00:00
Aidan MacDonald
6078b2a6b4 echoplayer: enable debug symbols by default
This adds debug symbols to rockbox.elf & bootloader.elf to
make debugging with GDB easier. This won't affect code that
runs on the target because debug symbols are stripped from
the final binary.

Change-Id: I9efe207c63e8bd96404213aad96405be27030ae9
2025-12-23 17:57:59 +00:00
neofright
8cc372c4e4 Add line break to fprintf in database.c
Before:
Scanning files (may take some time)...Read metadata for /Music/foo/bar/baz.ogg

  After:
Scanning files (may take some time)...
Read metadata for /Music/foo/bar/baz.ogg

Change-Id: Id3816104779fd80930cd213bab29765bdd3db451
2025-12-20 02:47:08 -05:00
Solomon Peachy
ecb3e9936f build: Explicitly disable all arch-specific optimizations for sdlapp or sim
Change-Id: I76d1097cea58018cb1e96dbbce8d5feaeacd8a96
2025-12-07 13:22:28 -05:00
Christian Soffke
95ab3e8b0e configure: Fix compatibility with BSD sed used in MacOS
Change-Id: I72f26eed4cbb3996d0a92c4334fa2c63b973bc9b
2025-12-07 13:22:17 -05:00
Solomon Peachy
dada036b10 configure: Partial revert of 6c6bdbf60e
Turns out I compile-tested stale trees instead of the broken change

Net result is just the simpler MIPS revision (32/64/"classic") lookup rather than
the sub-revision (eg mips32r2 etc).

Change-Id: Ideebe522d29132f00f3769222f3846000b3a89fd
2025-12-06 15:54:43 -05:00
Solomon Peachy
6c6bdbf60e configure: Revamp MIPS architecture version+revision detection
This allows us to easily distinguish between mips32 and mips32r2

(Works at least as far back as gcc 4.9)

Change-Id: I2bcba194fd9cbeedf76cea739252271908bf73d0
2025-12-06 14:58:40 -05:00
Solomon Peachy
5e5b434ce8 configure: Simplify the arm architecture version lookup
Going back to at least gcc 4.9, we can key off of __ARM_ARCH
which is all we care about here.

Change-Id: Ic2659db5ff55ccefe2c3f71957b967f36025f7e3
2025-12-06 14:43:03 -05:00
Solomon Peachy
1203b8657e configure: -masm-syntax-unified does not apply to aarch64
Change-Id: Ida12a60b629ccdea3980bcabc79812e3b97181e8
2025-12-06 14:24:32 -05:00
Solomon Peachy
afe128f4cc arm: Profile/variation detection improvements
* Detection of 64-bit Arm v8-a
 * Proper detection of integer division support
   * always on v7-m, v8-a, v9-a, v8-m.main
   * sometimes on v7-a, v7-r, v8-r
   * never on v8-m.base v6-m, v6 and older "classic"
   * tl;dr: Rely on toolchain preprocessor definition

For the most part these additional variations won't acutally work
for native target builds, but sane -A detection is needed for
"local" builds now. -R detection is left out as it's not likely
to matter.

Change-Id: I8f6a52edc4d14490fc00e2f487406eca701eef02
2025-12-04 20:43:30 -05:00
Solomon Peachy
fa164f89e0 tools: Detect A-profile ARM cores for hosted and sim builds
The only v7-a targets we have are built using the androidndk (with gcc
4.9) but it is possible to perform "self-hosted" builds for eg the
simulator or the sdlapp.

Where this gets messy is the considerable amount of inline arm
asm we have.

Native builds will need considerably more work to support
v7-a processors, but we have to start somewhere.

(Note that this contains parts of commit 508bfabe8, which had to
 be reverted due to breakage)

Change-Id: Ia1c8e10d21a976c68fdaae58e4d776854b63186c
2025-12-03 22:49:25 -05:00
Solomon Peachy
bbcf210c94 Nuke maemo (nokian800/nokian900) and [open]pandora targets
They haven't seen any work since 2013, and likely hasn't compiled in at
least a couple of releases -- not that we ever "released" anything for
these targets.

Futhermore, upstream for both has been effectively dead for about as
long, and there's been no user reports of these being used since 2017
(and even then only in passing).

It isn't worth the effort to triage their current state, much less
uplift into something supportable, while the maintenance burden of
keeping these things in-tree can be demonstrated by the diffstat.

Change-Id: Id93bd450679d1b75e2c74295b3ae1548cd241b24
2025-12-03 20:42:02 -05:00
Solomon Peachy
9290a484e4 Revert "Disable Thumb code generation in codecs for ARM profile 65"
This reverts commit 508bfabe83.

Reason for revert: Completely breaks builds made using Android toolchains.  A different approach is necessary.

Change-Id: Ie8767f1f304c1313e8a539179bc33d1cc7032a3c
2025-12-03 20:31:30 -05:00
Vencislav Atanasov
508bfabe83 Disable Thumb code generation in codecs for ARM profile 65
It seems that there are a couple of codecs that use assembly optimizations. Some of their instruction sequences are not valid Thumb code. To be able to compile them successfully on TI OMAP4430, ARM mode is forced on the codecs.

Change-Id: I932186177b540985e37cb3a5333943572da1c60a
2025-12-04 00:03:40 +02:00
Solomon Peachy
d376e0afb7 configure: Fix numeric entries for ihifi 770/770c
Regression from d65bfff876

Change-Id: I0cf3536968368e7a96ada40ebaf6c0c772e6880b
2025-12-02 08:31:54 -05:00
Solomon Peachy
d65bfff876 configure: Rearrange and renumber target listing to clean it up a bit
I didn't change the number of anything that would be consider "popular"
but the longnames are all unchanged so it's only muscle memory that will
be affected.

Change-Id: Ic34a2e01801b14e81d4f7c84633bf10fdcbc43c9
2025-11-29 17:27:52 -05:00
Solomon Peachy
9020360f66 hosted: Pull tinyalsa out of ibasso tree so other targets can use it
Change-Id: I85e31a0d0993d3494568abbc05ff9b114d493d75
2025-11-28 19:33:48 -05:00
Solomon Peachy
a66d870de0 voice: switch Greek Piper voice to a higher-quality model
Change-Id: I61c04ba6a6b6040c7681786f9b405b645fe4fabe
2025-11-02 00:09:57 -04:00
Solomon Peachy
b9475d79a3 voice: switch Bulgarian voice from espeak to Piper
...Should be much nicer.

Change-Id: Ie9afe5ace8a5fae4fa4e52f813be2e57626395ee
2025-11-02 00:06:43 -04:00
Solomon Peachy
a3934f50fe builds.pm: Enable nightly voice generation for Hungrarian (Piper TTS)
Change-Id: I6df4cba92af00f2fbda3e051d6b74b28c4e91b58
2025-11-01 07:57:26 -04:00
Solomon Peachy
3f43fe3cd8 checkwps: Validate all fonts in themes
Makes sure any fonts specified are either:

 * Present in the theme itself
 * One of the fonts in the Rockbox bundle

Change-Id: I215132835e2ae7faa06662637bc867df9c5dba92
2025-10-27 09:52:16 -04:00
Mauricio Garrido
b47d0ef3cf 3ds: Restored default cflags to devkitarm compiler
This commit fixes a "Data Abort" segfault when loading a codec.

Change-Id: I7b0b8f37b588504edec4a029fdd69f0875f664f5
2025-10-26 20:09:54 -06:00
Mauricio Garrido
a4de1195cd 3ds: 3ds port sources. First set of two
This commit adds changes to the original rockbox sources.

Note: the port files, functions, folders, etc., will be referred
to as 'ctru' to avoid using the Nintendo name elsewhere.

Change-Id: I0e2d3d4d2a75bd45ea67dc3452eb8d5487cf1f5a
2025-10-23 20:09:09 -04:00
Solomon Peachy
af7f45bac0 Revert "genlang: Explicitly decompose all display strings"
This reverts commit 4bc336b8be.

Reason for revert:  Font coverage for decomposed diacritics is actually *worse* than using fully composed characters.

Change-Id: Ide37dadd5e9883c1c764ffa35f7e64a7ba91d705
2025-10-22 09:28:35 -04:00
Solomon Peachy
4bc336b8be genlang: Explicitly decompose all display strings
We already have pretty solid support for glyph combining, so this will
allow us to utilize that to fill in gaps of our font coverage.  This is
most notable for Vietnamese, Turkish, and numerous other latin-based
writing systems that have unique glyphs that are essentially just a
"standard" ascii letter plus a diacritic mark.

This leaves *voice* strings fully composed/normalized.

It also has no effect on user-supplied strings (eg filenames or file
metadata)

When we eventually utf8proc merged, this can be removed in favor
of always doing the [de]composition in-system.  We will also need
to revisit our diacritic tables to ensure there's nothing missing.

Change-Id: I7012d27010bb33fb0b565ac7dfd57a16bdcad34f
2025-10-22 08:00:18 -04:00
Solomon Peachy
e09747fe2b builds: Enable Vietnamese voices on nightly runs
Change-Id: I0f2c33d2d95695829be672aa2e6fe5b8e683d63a
2025-10-20 16:51:46 -04:00
Solomon Peachy
0f8f05db29 build: Enforce -Wundef on all targets.
Simulators (and some hosted targets) no longer get a free pass!

This commit includes general fixes for simulator builds, but it
will undoubtedly result in many more warnings that need to be properly
fixed.

Change-Id: I6bb9d3fc4a29ccfe40366c438e058b5dfff0ddc3
2025-10-12 16:12:56 -04:00
Solomon Peachy
7ba4af6ab0 configure: Delete an obsolete, unused toolchain reference
'arm946cc' was only used by the never-finished 'tcc77x' targets that
were removed from the tree in 3ba2f6e5c7 (April 2021)

Change-Id: I935847ec9d339b8e90c6d2362113c2ff94b8b20f
2025-10-08 13:46:10 -04:00
Solomon Peachy
b4565feed6 builds.pm: Add disabled TTS entry for Hungrarian
Will enable once we cross the 85% threshold.

Change-Id: Ia3c5c591fe0bd8bec610e7025e98b8c868e0bfc8
2025-10-04 10:18:27 -04:00
Solomon Peachy
79e4e075e6 updatelang: Respect the target ordering in individual phrases
When matching the target id in a phrase, if there is more than one match
we always use the final one.  This allows us to easily specify a
default/wildcard entry that gets overridden by a target-specific one.

The list of targets was sorted alphabetically to ensure consistent ordering
from one run of the tooling to the next.

However, if a phrase contained both device-specific phrases as well as a
generic "feature" fallback, alphabetical sorting may screw things up, as
the "feature default" was no longer at the top of the list. This is
known to be an issue for LANG_TIME_SET_BUTTON and LANG_TIME_REVERT, but
may affect other phrases as well.

(To be blunt, we shouldn't be mixing feature and device-specific targets
 in this context.  The "feature default" should be removed in favor of
 target-specific entries, but in this specific case it looks to be a
 real PITA due to incomplete keymaps)

Consequently, work around this by sorting the target list within each phrase
based on the ordering in the master (ie English) language file.

Change-Id: Id32439c179a98663f414530fb36012f9b217c1b6
2025-10-02 12:36:49 -04:00
Solomon Peachy
8a94a37502 checkwps: Exclude targets that only exist as a bootloader from buildall
Change-Id: I95cb65a204b4e509d48c9a8fb009d438f382a9f6
2025-09-27 13:47:04 -04:00
Solomon Peachy
d7d7627baf checkwps: Validate %?St() tags
This will bail if referenced setting name does not exist.

Change-Id: I7abd54ec1260d3da6024ebec809f8e270b0a84e5
2025-09-27 10:19:20 -04:00
Solomon Peachy
d29663a412 Revert "configure: remove redundant ARG_ARM_THUMB checks"
This reverts commit 5323c49fe6.

This caused build failures on two of the three affected targets.  The intent
of the delted code was to force thumb on unless it had been explicitly
disabled.  Due to extreme space constraints those targets _need_ to
be built in thumb mode.
2025-09-21 15:50:24 -04:00
Solomon Peachy
977b6ef692 Toolchains: Update to GCC 9.5.0
GCC 9.5.0, binutils 2.38, gmp 6.1.2, mpfr 4.1.1, mpc 1.2.1, isl 0.18

Native:

  * arm - mini2g, nano2g, ipod6g works
  * mips - xduoox3 works
  * m68k - binaries untested

Hosted:

  * arm - samsungypr0 works
  * mips - xduoox3ii works
  * Android NDK - unchanged at GCC 4.9.4

Change-Id: I80faed4c74f7238265bf7a19b794e8476c351411
2025-09-21 09:03:00 -04:00
Solomon Peachy
5a1a5de3e3 build: Use 'nproc' instead of counting /proc/cpuinfo entries
Change-Id: If3b31504bcd37692ad109bb2779620e2302aa9fa
2025-09-21 09:03:00 -04:00
Solomon Peachy
5323c49fe6 configure: remove redundant ARG_ARM_THUMB checks
Change-Id: I25a5e631605173596de5971ff8d9bd7b7500791f
2025-09-21 09:03:00 -04:00
Solomon Peachy
c14ea0e01e samsung ypr0/r1: Shrink audio buffer from 31 to 23MB.
This frees up some headroom in the OS for things like dlopen() and
more effective disk caches.

Change-Id: I8b8dca65ad70adecfcbe674129c294e5ab3b21bb
2025-09-13 08:44:38 -04:00
Solomon Peachy
19ee9363d1 ibasso: Rejigger RAM and buffer sizes a little
Shrink audio buffer from ~256MB to ~192MB.  Increase plugin buffer size
to 2MB, not that it should matter given how much extra RAM this platform has.

This leaves plenty of room for the base OS to do what it needs to do.

Change-Id: I59ca235b9cf80cf86d406e4a144fee7d7784ed5d
2025-09-13 08:44:38 -04:00