Find a file
William Wilgus 231d552972 isdigit replace with a slightly faster and shorter conditional
in testing of three ways of doing this
current: ((_ctype_+1)[(unsigned char)(c)]&_N)

alt1(this patch): (((unsigned int) (c) - '0') < 10)

alt2: ((unsigned int)(c ^ 0x30) < 10)

alt1 and alt2 are the same in terms of speed and instructions (on arm v7) but alt2 has one more
instruction on mips

(across several archs in godbolt mips, armv7v8, x86) and on ARM7 (clipzip) device about 9% faster

less false positives for both alt1 and 2 when you start supplying more than 8bits
not sure if that matters in practice though

I tried similar with isxdigit but could only get to within 1 instruction of the ctype implementation
although it negated the array lookup I saw no discernable speed difference on device

https://godbolt.org/z/qGvh4hqnG

Change-Id: I5c9e8fd3915709853e0e33427038e20a068058b6
2025-02-02 13:57:58 -05:00
android android: target java 1.7 bytecode 2025-01-01 09:59:46 -05:00
apps FS#13555: Updated French Translation (CHAPUIS Adhemar) 2025-02-02 08:05:26 -05:00
backdrops New port: Shanling Q1 native 2021-07-13 22:01:33 +01:00
bootloader iPod S5L87xx bootloader: Move variable declaration to avoid macros 2025-01-27 10:58:31 -05:00
debian Prepare new maemo release 2013-03-10 12:12:38 +01:00
docs FS#13555: Updated French Translation (CHAPUIS Adhemar) 2025-02-02 08:05:26 -05:00
firmware isdigit replace with a slightly faster and shorter conditional 2025-02-02 13:57:58 -05:00
fonts FS#9059: Add WenQangYi Unibt font (William Poetra Yoga Hadisoeseno) 2024-10-27 22:04:54 -04:00
gdb Nuke the never-functional iriver ifp-7xx port 2021-04-26 07:42:58 -04:00
icons Revert Non-Alpha Updated 8x8 tango icons 2020-10-25 16:21:58 +00:00
lib [FixRed] Reove HAVE_PITCHCONTROL from bootloaders, fix warble 2025-01-19 01:20:58 -05:00
manual [Feature] Set values of settings from shortcuts 2025-01-25 15:13:13 -05:00
packaging Prepare unofficial pandora release 2013-03-10 14:09:30 +01:00
tools dailyvoices: Switch back to 'espeak' for Bulgarian and Japanese 2025-02-02 07:53:31 -05:00
uisimulator Creative Zen Vision: fix config file (?!) 2025-01-08 08:06:45 -05:00
utils time-sync: Fix arguments order in linker command 2025-01-16 16:05:18 -05:00
wps [Feature] skinengine subline timeout hide line for n seconds 2024-12-07 23:02:22 -05:00
.gitattributes
.gitignore time-sync: Fix arguments order in linker command 2025-01-16 16:05:18 -05:00
.gitreview misc: Add a .gitreview file for better gerrit integration 2021-06-24 07:22:19 -04:00

               __________               __   ___.
     Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
     Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
     Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
     Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
                       \/            \/     \/    \/            \/

Build Your Own Rockbox

1. Clone 'rockbox' from git (or extract a downloaded archive).

   $ git clone git://git.rockbox.org/rockbox

     or

   $ tar xJf rockbox.tar.xz

2. Create a build directory, preferably in the same directory as the firmware/
   and apps/ directories. This is where all generated files will be written.

   $ cd rockbox
   $ mkdir build
   $ cd build

3. Make sure you have mips/m68k/arm-elf-gcc and siblings in the PATH. Make sure
   that you have 'perl' in your PATH too. Your gcc cross compiler needs to be
   a particular version depending on what player you are compiling for. These
   can be generated using the rockboxdev.sh script in the /tools/ folder of the
   source.

   $ which arm-elf-eabi-gcc
   $ which perl

4. In your build directory, run the 'tools/configure' script and enter what
   target you want to build for and if you want a debug version or not (and a
   few more questions). It'll prompt you. The debug version is for making a
   gdb version out of it. It is only useful if you run gdb towards your target
   Archos.

   $ ../tools/configure

5. *ploink*. Now you have got a Makefile generated for you.

6. Run 'make' and soon the necessary pieces from the firmware and the apps
   directories have been compiled, linked and scrambled for you.

   $ make
   $ make zip

7. unzip the rockbox.zip on your music player, reboot it and
   *smile*.

If you want to build for more than one target, just create several build
directories and create a setup for each target:

   $ mkdir build-fuzeplus
   $ cd build-fuzeplus
   $ ../tools/configure

   $ mkdir build-xduoox3
   $ cd build-xduoox3
   $ ../tools/configure

Questions anyone? Ask on the mailing list or on IRC. We'll be happy to help you!