3 # Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
11 # global CC options for all platforms
12 CCOPTS
="-W -Wall -Wundef -O -nostdlib -ffreestanding -Wstrict-prototypes -pipe -std=gnu99"
14 # global LD options for all platforms
18 use_logf
="#undef ROCKBOX_HAS_LOGF"
19 use_bootchart
="#undef DO_BOOTCHART"
21 scriptver
=`echo '$Revision$' | sed -e 's:\\$::g' -e 's/Revision: //'`
28 thread_support
="ASSEMBLER_THREADS"
34 # Begin Function Definitions
44 WINDRES
=${prefix}windres
45 DLLTOOL
=${prefix}dlltool
46 DLLWRAP
=${prefix}dllwrap
47 RANLIB
=${prefix}ranlib
55 # setup files and paths depending on the platform
56 if [ -z "$ARG_PREFIX" ]; then
57 sharedir
="/usr/local/share/rockbox"
58 bindir
="/usr/local/bin"
59 libdir
="/usr/local/lib"
61 if [ -d "$ARG_PREFIX" ]; then
62 if [ -z `echo $ARG_PREFIX | grep "^/"` ]; then
63 ARG_PREFIX
=`realpath $ARG_PREFIX`
64 if [ "0" != "$?" ]; then
65 echo "ERROR: Could not get prefix path (is realpath installed?)."
69 sharedir
="$ARG_PREFIX/share/rockbox"
70 bindir
="$ARG_PREFIX/bin"
71 libdir
="$ARG_PREFIX/lib"
73 echo "ERROR: PREFIX directory $ARG_PREFIX does not exist"
79 # Set the application LCD size according to the following priorities:
80 # 1) If --lcdwidth and --lcdheight are set, use them
81 # 2) If a size is passed to the app_set_lcd_size() function, use that
82 # 3) Otherwise ask the user
84 if [ -z "$ARG_LCDWIDTH" ]; then
87 if [ -z "$ARG_LCDHEIGHT" ]; then
91 echo "Enter the LCD width (default: 320)"
92 if [ -z "$ARG_LCDWIDTH" ]; then
95 app_lcd_width
="$ARG_LCDWIDTH"
97 if [ -z "$app_lcd_width" ]; then app_lcd_width
="320"; fi
98 echo "Enter the LCD height (default: 480)"
99 if [ -z "$ARG_LCDHEIGHT" ]; then
100 app_lcd_height
=`input`
102 app_lcd_height
="$ARG_LCDHEIGHT"
104 if [ -z "$app_lcd_height" ]; then app_lcd_height
="480"; fi
105 if [ $app_lcd_width -gt $app_lcd_height ]; then
106 lcd_orientation
="landscape"
108 lcd_orientation
="portrait"
110 echo "Selected $app_lcd_width x $app_lcd_height resolution ($lcd_orientation)"
111 ARG_LCDWIDTH
=$app_lcd_width
112 ARG_LCDHEIGHT
=$app_lcd_height
114 app_lcd_width
="#define LCD_WIDTH $app_lcd_width"
115 app_lcd_height
="#define LCD_HEIGHT $app_lcd_height"
119 if [ "$ARG_ARM_EABI" != "0" ]; then
120 prefixtools arm-elf-eabi-
128 # scan the $PATH for the given command
135 # echo "checks for $file in $path" >&2
136 if test -f "$path/$file"; then
141 # check whether caller wants literal return value if not found
142 if [ "$2" = "--lit" ]; then
147 # scan the $PATH for sdl-config - check whether for a (cross-)win32
150 # sdl-config might (not) be prefixed for cross compiles so try both.
151 files
="sdl-config:${CROSS}sdl-config"
159 #echo "checks for $file in $path" >&2
160 if test -f "$path/$file"; then
161 if [ "0" != `$path/$file --libs |grep -c mwindows` ]; then
162 if [ "yes" = "${winbuild}" ]; then
167 if [ "yes" != "${winbuild}" ]; then
177 # check for availability of sigaltstack to support our thread engine
178 check_sigaltstack
() {
179 cat >$tmpdir/check_threads.c
<<EOF
181 int main(int argc, char **argv)
184 #define NULL (void*)0
186 sigaltstack(NULL, NULL);
190 $CC -o $tmpdir/check_threads
$tmpdir/check_threads.c
1> /dev
/null
192 rm -rf $tmpdir/check_threads
*
196 # check for availability of Fiber on Win32 to support our thread engine
198 cat >$tmpdir/check_threads.c
<<EOF
200 int main(int argc, char **argv)
202 ConvertThreadToFiber(NULL);
206 $CC -o $tmpdir/check_threads
$tmpdir/check_threads.c
2>/dev
/null
208 rm -rf $tmpdir/check_threads
*
214 # default tool setup for native building
215 prefixtools
"$CROSS_COMPILE"
216 ARG_ARM_THUMB
=0 # can't use thumb in native builds
220 GCCOPTS
=`echo $CCOPTS | sed -e s/-ffreestanding// -e s/-nostdlib// -e s/-Wundef// -e s/-O//`
221 GCCOPTS
="$GCCOPTS -fno-builtin -g"
223 LDOPTS
='-lm' # button-sdl.c uses sqrt()
227 # default output binary name, don't override app_get_platform()
228 if [ "$app_type" != "sdl-app" ]; then
232 # default share option, override below if needed
233 SHARED_LDFLAG
="-shared"
234 SHARED_CFLAGS
="-fPIC -fvisibility=hidden"
236 if [ "$win32crosscompile" = "yes" ]; then
237 LDOPTS
="$LDOPTS -mconsole"
240 CROSS
=${CROSS:-"i586-mingw32msvc-"}
245 echo "Cygwin host detected"
248 LDOPTS
="$LDOPTS -mconsole"
255 echo "MinGW host detected"
258 LDOPTS
="$LDOPTS -mconsole"
264 sigaltstack
=`check_sigaltstack`
265 echo "Linux host detected"
266 LDOPTS
="$LDOPTS -ldl"
270 sigaltstack
=`check_sigaltstack`
271 echo "FreeBSD host detected"
272 LDOPTS
="$LDOPTS -ldl"
276 sigaltstack
=`check_sigaltstack`
277 echo "Darwin host detected"
278 LDOPTS
="$LDOPTS -ldl"
279 SHARED_LDFLAG
="-dynamiclib -Wl\,-single_module"
283 sigaltstack
=`check_sigaltstack`
284 echo "*Solaris host detected"
286 GCCOPTS
="$GCCOPTS -fPIC"
287 LDOPTS
="$LDOPTS -ldl"
291 echo "[ERROR] Unsupported system: $uname, fix configure and retry"
297 [ "$winbuild" != "yes" ] && GLOBAL_LDOPTS
="$GLOBAL_LDOPTS -Wl,-z,defs"
298 sdl
=`findsdl $winbuild`
300 if [ -n `echo $app_type | grep "sdl"` ]; then
301 if [ -z "$sdl" ]; then
302 echo "configure didn't find sdl-config, which indicates that you"
303 echo "don't have SDL (properly) installed. Please correct and"
304 echo "re-run configure!"
307 # generic sdl-config checker
308 GCCOPTS
="$GCCOPTS `$sdl --cflags`"
309 LDOPTS
="$LDOPTS `$sdl --libs`"
314 GCCOPTS
="$GCCOPTS -I\$(SIMDIR)"
316 if test "X$win32crosscompile" != "Xyes"; then
317 if test "`uname -m`" = "i686"; then
318 echo "Enabling MMX support"
319 GCCOPTS
="$GCCOPTS -mmmx"
321 # x86_64 supports MMX by default
324 cat >$tmpdir/conftest-
$id.c
<<EOF
326 int main(int argc, char **argv)
329 char *varp = (char *)&var;
337 $CC -o $tmpdir/conftest-
$id $tmpdir/conftest-
$id.c
2>/dev
/null
339 # when cross compiling, the endianess cannot be detected because the above program doesn't run
340 # on the local machine. assume little endian but print a warning
341 endian
=`$tmpdir/conftest-$id 2> /dev/null`
342 if [ "$endian" != "" ] && [ $endian -gt "1" ]; then
350 if [ "$CROSS_COMPILE" != "" ]; then
351 echo "WARNING: Cross Compiling, cannot detect endianess. Assuming little endian!"
354 if [ "$app_type" = "sdl-sim" ]; then
355 echo "Simulator environment deemed $endian endian"
356 elif [ "$app_type" = "sdl-app" ]; then
357 echo "Application environment deemed $endian endian"
358 elif [ "$app_type" = "checkwps" ]; then
359 echo "CheckWPS environment deemed $endian endian"
362 # use wildcard here to make it work even if it was named *.exe like
364 rm -f $tmpdir/conftest-
$id*
366 # We are crosscompiling
367 # add cross-compiler option(s)
369 LDOPTS
="$LDOPTS -mconsole"
371 output
="rockboxui.exe"
372 endian
="little" # windows is little endian
373 echo "Enabling MMX support"
374 GCCOPTS
="$GCCOPTS -mmmx"
378 if [ -z "$ARG_THREAD_SUPPORT" ] ||
[ "$ARG_THREAD_SUPPORT" = "0" ]; then
379 if [ "$sigaltstack" = "0" ]; then
380 thread_support
="HAVE_SIGALTSTACK_THREADS"
381 LDOPTS
="$LDOPTS -lpthread" # pthread needed
382 echo "Selected sigaltstack threads"
383 elif [ "$fibers" = "0" ]; then
384 thread_support
="HAVE_WIN32_FIBER_THREADS"
385 echo "Selected Win32 Fiber threads"
389 if [ -n `echo $app_type | grep "sdl"` ] && [ -z "$thread_support" ] \
390 && [ "$ARG_THREAD_SUPPORT" != "0" ]; then
391 thread_support
="HAVE_SDL_THREADS"
392 if [ "$ARG_THREAD_SUPPORT" = "1" ]; then
393 echo "Selected SDL threads"
395 echo "WARNING: Falling back to SDL threads"
401 # functions for setting up cross-compiler names and options
402 # also set endianess and what the exact recommended gcc version is
403 # the gcc version should most likely match what versions we build with
408 GCCOPTS
="$CCOPTS -m1"
409 GCCOPTIMIZE
="-fomit-frame-pointer -fschedule-insns"
415 prefixtools calmrisc16-unknown-elf-
416 GCCOPTS
="-Wl\,--no-check-sections $CCOPTS"
417 GCCOPTIMIZE
="-fomit-frame-pointer"
422 prefixtools m68k-elf-
423 GCCOPTS
="$CCOPTS -mcpu=5249 -malign-int -mstrict-align"
424 GCCOPTIMIZE
="-fomit-frame-pointer"
431 GCCOPTS
="$CCOPTS -mcpu=arm7tdmi"
432 if test "X$1" != "Xshort" -a "$ARG_ARM_EABI" = "0"; then
433 GCCOPTS
="$GCCOPTS -mlong-calls"
435 GCCOPTIMIZE
="-fomit-frame-pointer"
441 GCCOPTS
="$CCOPTS -mcpu=arm9tdmi"
442 if test "$modelname" != "gigabeatfx" -a "$t_manufacturer" != "as3525" -a "$ARG_ARM_EABI" = "0"; then
443 GCCOPTS
="$GCCOPTS -mlong-calls"
445 GCCOPTIMIZE
="-fomit-frame-pointer"
451 GCCOPTS
="$CCOPTS -mbig-endian -mcpu=arm940t"
452 if test "$ARG_ARM_EABI" = "0"; then
453 GCCOPTS
="$GCCOPTS -mlong-calls"
455 GCCOPTIMIZE
="-fomit-frame-pointer"
461 GCCOPTS
="$CCOPTS -mcpu=arm940t"
462 if test "$ARG_ARM_EABI" = "0"; then
463 GCCOPTS
="$GCCOPTS -mlong-calls"
465 GCCOPTIMIZE
="-fomit-frame-pointer"
471 GCCOPTS
="$CCOPTS -mcpu=arm9e"
472 if test "$ARG_ARM_EABI" = "0"; then
473 GCCOPTS
="$GCCOPTS -mlong-calls"
475 GCCOPTIMIZE
="-fomit-frame-pointer"
481 GCCOPTS
="$CCOPTS -mcpu=arm926ej-s"
482 if test "$t_manufacturer" != "as3525" -a "$ARG_ARM_EABI" = "0"; then
483 GCCOPTS
="$GCCOPTS -mlong-calls"
485 GCCOPTIMIZE
="-fomit-frame-pointer"
491 GCCOPTS
="$CCOPTS -mcpu=arm1136jf-s"
492 if test "$modelname" != "gigabeats" -a "$ARG_ARM_EABI" = "0"; then
493 GCCOPTS
="$GCCOPTS -mlong-calls"
495 GCCOPTIMIZE
="-fomit-frame-pointer"
501 GCCOPTS
="$CCOPTS -mcpu=arm1176jz-s"
502 if test "$ARG_ARM_EABI" = "0"; then
503 GCCOPTS
="$GCCOPTS -mlong-calls"
505 GCCOPTIMIZE
="-fomit-frame-pointer"
511 GCCOPTS
="$CCOPTS -march=armv5te"
512 GCCOPTIMIZE
="-fomit-frame-pointer"
517 prefixtools mipsel-elf-
518 # mips is predefined, but we want it for paths. use __mips instead
519 GCCOPTS
="$CCOPTS -march=mips32 -mtune=r4600 -mno-mips16 -mno-long-calls -Umips"
520 GCCOPTS
="$GCCOPTS -ffunction-sections -msoft-float -G 0 -Wno-parentheses"
521 GCCOPTIMIZE
="-fomit-frame-pointer"
527 # Scratchbox sets up "gcc" based on the active target
530 GCCOPTS
=`echo $CCOPTS | sed -e s/-ffreestanding// -e s/-nostdlib// -e s/-Wundef//`
531 GCCOPTS
="$GCCOPTS -fno-builtin -g -I\$(SIMDIR)"
533 LDOPTS
="-lm -ldl $LDOPTS"
534 GLOBAL_LDOPTS
="$GLOBAL_LDOPTS -Wl,-z,defs"
535 SHARED_LDFLAG
="-shared"
538 thread_support
="HAVE_SIGALTSTACK_THREADS"
541 # Determine maemo version
542 if pkg-config
--atleast-version=5 maemo-version
; then
543 if [ "$1" == "4" ]; then
544 echo "ERROR: Maemo 4 SDK required."
547 extradefines
="$extradefines -DMAEMO5"
548 echo "Found N900 maemo version"
550 elif pkg-config
--atleast-version=4 maemo-version
; then
551 if [ "$1" == "5" ]; then
552 echo "ERROR: Maemo 5 SDK required."
555 extradefines
="$extradefines -DMAEMO4"
556 echo "Found N8xx maemo version"
558 echo "Unable to determine maemo version. Is the maemo-version-dev package installed?"
563 if [ $is_n900 -eq 1 ]; then
564 GCCOPTS
="$GCCOPTS `pkg-config --cflags sdl`"
565 LDOPTS
="$LDOPTS `pkg-config --libs sdl`"
567 GCCOPTS
="$GCCOPTS `sdl-config --cflags`"
568 LDOPTS
="$LDOPTS `sdl-config --libs`"
571 # glib and libosso support
572 GCCOPTS
="$GCCOPTS `pkg-config --cflags libosso glib-2.0 gthread-2.0`"
573 LDOPTS
="$LDOPTS `pkg-config --libs libosso glib-2.0 gthread-2.0`"
575 # libhal support: Battery monitoring
576 GCCOPTS
="$GCCOPTS `pkg-config --cflags hal`"
577 LDOPTS
="$LDOPTS `pkg-config --libs hal`"
579 GCCOPTS
="$GCCOPTS -O2 -fno-strict-aliasing"
580 if [ $is_n900 -eq 1 ]; then
581 # gstreamer support: Audio output.
582 GCCOPTS
="$GCCOPTS `pkg-config --cflags gstreamer-base-0.10 gstreamer-plugins-base-0.10 gstreamer-app-0.10`"
583 LDOPTS
="$LDOPTS `pkg-config --libs gstreamer-base-0.10 gstreamer-plugins-base-0.10 gstreamer-app-0.10`"
585 # N900 specific: libplayback support
586 GCCOPTS
="$GCCOPTS `pkg-config --cflags libplayback-1`"
587 LDOPTS
="$LDOPTS `pkg-config --libs libplayback-1`"
589 # N900 specific: Enable ARMv7 NEON support
590 if sb-conf show
-A |
grep -q -i arm
; then
591 echo "Detected ARM target"
592 GCCOPTS
="$GCCOPTS -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp"
593 extradefines
="$extradefines -DMAEMO_ARM_BUILD"
595 echo "Detected x86 target"
598 # N8xx specific: Enable armv5te instructions
599 if sb-conf show
-A |
grep -q -i arm
; then
600 echo "Detected ARM target"
601 GCCOPTS
="$GCCOPTS -mcpu=arm1136jf-s -mfloat-abi=softfp -mfpu=vfp"
602 extradefines
="$extradefines -DMAEMO_ARM_BUILD"
604 echo "Detected x86 target"
610 # Note: The new "Ivanovic" pandora toolchain is not able to compile rockbox.
611 # You have to use the sebt3 toolchain:
612 # http://www.gp32x.com/board/index.php?/topic/58490-yactfeau/
614 PNDSDK
="/usr/local/angstrom/arm"
615 if [ ! -x $PNDSDK/bin
/arm-angstrom-linux-gnueabi-gcc
]; then
616 echo "Pandora SDK gcc not found in $PNDSDK/bin/arm-angstrom-linux-gnueabi-gcc"
620 PATH
=$PNDSDK/bin
:$PATH:$PNDSDK/arm-angstrom-linux-gnueabi
/usr
/bin
621 PKG_CONFIG_PATH
=$PNDSDK/arm-angstrom-linux-gnueabi
/usr
/lib
/pkgconfig
622 LDOPTS
="-L$PNDSDK/arm-angstrom-linux-gnueabi/usr/lib -Wl,-rpath,$PNDSDK/arm-angstrom-linux-gnueabi/usr/lib $LDOPTS"
623 PKG_CONFIG
="pkg-config"
625 GCCOPTS
=`echo $CCOPTS | sed -e s/-ffreestanding// -e s/-nostdlib// -e s/-Wundef//`
626 GCCOPTS
="$GCCOPTS -fno-builtin -g -I\$(SIMDIR)"
628 LDOPTS
="-lm -ldl $LDOPTS"
629 GLOBAL_LDOPTS
="$GLOBAL_LDOPTS -Wl,-z,defs"
630 SHARED_LDFLAG
="-shared"
633 thread_support
="HAVE_SIGALTSTACK_THREADS"
636 GCCOPTS
="-I$PNDSDK/arm-angstrom-linux-gnueabi/usr/include"
640 prefixtools
"$PNDSDK/bin/arm-angstrom-linux-gnueabi-"
643 GCCOPTS
="$GCCOPTS `$PNDSDK/bin/sdl-config --cflags`"
644 LDOPTS
="$LDOPTS `$PNDSDK/bin/sdl-config --libs`"
647 GCCOPTS
="$GCCOPTS -O2 -fno-strict-aliasing"
648 GCCOPTS
="$GCCOPTS -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp"
649 GCCOPTS
="$GCCOPTS -ffast-math -fsingle-precision-constant"
653 if [ -z "$ANDROID_SDK_PATH" ]; then
654 echo "ERROR: You need the Android SDK installed and have the ANDROID_SDK_PATH"
655 echo "environment variable point to the root directory of the Android SDK."
658 if [ -z "$ANDROID_NDK_PATH" ]; then
659 echo "ERROR: You need the Android NDK installed (r5 or higher) and have the ANDROID_NDK_PATH"
660 echo "environment variable point to the root directory of the Android NDK."
663 buildhost
=$
(uname |
tr "[:upper:]" "[:lower:]")
665 gcctarget
="arm-linux-androideabi-"
666 gccprefix
=$ANDROID_NDK_PATH/toolchains
/$gcctarget$gccchoice/prebuilt
/$buildhost-x86
667 PATH
=$PATH:$gccprefix/bin
668 prefixtools
$gcctarget
669 GCCOPTS
=`echo $CCOPTS | sed -e s/-ffreestanding// -e s/-nostdlib// -e s/-Wundef//`
670 GCCOPTS
="$GCCOPTS -ffunction-sections -march=armv5te -mtune=xscale -msoft-float -fomit-frame-pointer \
671 --sysroot=$ANDROID_NDK_PATH/platforms/android-5/arch-arm"
672 GLOBAL_LDOPTS
="$GLOBAL_LDOPTS -nostdlib -lc -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack \
673 --sysroot=$ANDROID_NDK_PATH/platforms/android-5/arch-arm"
674 LDOPTS
="$LDOPTS -shared -nostdlib -ldl -llog"
676 SHARED_LDFLAG
="-shared"
681 atype
=`echo "$1" | cut -c 2-`
682 ##################################################################
683 # Prompt for specific developer options
685 if [ "$atype" ]; then
690 printf "Enter your developer options (press only enter when done)\n\
691 (D)EBUG, (L)ogf, Boot(c)hart, (S)imulator, (P)rofiling, (V)oice, (W)in32 crosscompile,\n\
692 (T)est plugins, S(m)all C lib:"
693 if [ "$memory" = "2" ]; then
696 if [ "$modelname" = "archosplayer" ]; then
697 printf ", Use (A)TA poweroff"
699 if [ "$t_model" = "ondio" ]; then
700 printf ", (B)acklight MOD"
702 if [ "$modelname" = "iaudiom5" ]; then
703 printf ", (F)M radio MOD"
705 if [ "$modelname" = "iriverh120" ]; then
712 while [ $cont = "1" ]; do
714 if [ "$interact" ]; then
717 option
=`echo "$atype" | cut -c 1`
722 if [ "yes" = "$profile" ]; then
723 echo "Debug is incompatible with profiling"
725 echo "DEBUG build enabled"
730 echo "logf() support enabled"
734 echo "Using Rockbox' small C library"
735 extradefines
="$extradefines -DHAVE_ROCKBOX_C_LIBRARY"
738 echo "Including test plugins"
739 extradefines
="$extradefines -DHAVE_TEST_PLUGINS"
742 echo "bootchart enabled (logf also enabled)"
747 echo "Simulator build enabled"
751 if [ "yes" = "$use_debug" ]; then
752 echo "Profiling is incompatible with debug"
754 echo "Profiling support is enabled"
759 echo "Voice build selected"
763 if [ "$memory" = "2" ]; then
765 echo "Memory size selected: 8MB"
769 if [ "$modelname" = "archosplayer" ]; then
770 have_ata_poweroff
="#define HAVE_ATA_POWER_OFF"
771 echo "ATA power off enabled"
775 if [ "$t_model" = "ondio" ]; then
776 have_backlight
="#define HAVE_BACKLIGHT"
777 echo "Backlight functions enabled"
781 if [ "$modelname" = "iaudiom5" ]; then
782 have_fmradio_in
="#define HAVE_FMRADIO_IN"
783 echo "FM radio functions enabled"
787 if [ "$modelname" = "iriverh120" ]; then
788 config_rtc
="#define CONFIG_RTC RTC_DS1339_DS3231"
789 have_rtc_alarm
="#define HAVE_RTC_ALARM"
790 echo "RTC functions enabled (DS1339/DS3231)"
794 echo "Enabling Windows 32 cross-compiling"
795 win32crosscompile
="yes"
797 "") # Match enter press when finished with advanced options
801 echo "[ERROR] Option $option unsupported"
804 if [ "$interact" ]; then
805 btype
="$btype$option"
807 atype
=`echo "$atype" | cut -c 2-`
808 [ "$atype" ] || cont
=0
813 if [ "yes" = "$voice" ]; then
814 # Ask about languages to build
816 voicelanguage
=`whichlang`
817 echo "Voice language set to $voicelanguage"
819 # Configure encoder and TTS engine for each language
820 for thislang
in `echo $voicelanguage | sed 's/,/ /g'`; do
821 voiceconfig
"$thislang"
824 if [ "yes" = "$use_debug" ]; then
826 GCCOPTS
="$GCCOPTS -g -DDEBUG"
828 if [ "yes" = "$logf" ]; then
829 use_logf
="#define ROCKBOX_HAS_LOGF 1"
831 if [ "yes" = "$bootchart" ]; then
832 use_bootchart
="#define DO_BOOTCHART 1"
834 if [ "yes" = "$simulator" ]; then
836 extradefines
="$extradefines -DSIMULATOR"
840 if [ "yes" = "$profile" ]; then
841 extradefines
="$extradefines -DRB_PROFILE"
842 PROFILE_OPTS
="-finstrument-functions"
846 # Configure voice settings
849 if [ ! "$ARG_TTS" ]; then
850 echo "Building $thislang voice for $modelname. Select options"
854 if [ -n "`findtool flite`" ]; then
858 DEFAULT_TTS_OPTS
=$FLITE_OPTS
859 DEFAULT_NOISEFLOOR
="500"
862 if [ -n "`findtool espeak`" ]; then
866 DEFAULT_TTS_OPTS
=$ESPEAK_OPTS
867 DEFAULT_NOISEFLOOR
="500"
870 if [ -n "`findtool festival`" ]; then
871 FESTIVAL
="(F)estival "
874 FESTIVAL_OPTS
="--language italian"
877 FESTIVAL_OPTS
="--language spanish"
880 FESTIVAL_OPTS
="--language finnish"
883 FESTIVAL_OPTS
="--language czech"
889 DEFAULT_TTS
="festival"
890 DEFAULT_TTS_OPTS
=$FESTIVAL_OPTS
891 DEFAULT_NOISEFLOOR
="500"
894 if [ -n "`findtool swift`" ]; then
898 DEFAULT_TTS_OPTS
=$SWIFT_OPTS
899 DEFAULT_NOISEFLOOR
="500"
902 # Allow SAPI if Windows is in use
903 if [ -n "`findtool winver`" ]; then
907 DEFAULT_TTS_OPTS
=$SAPI_OPTS
908 DEFAULT_NOISEFLOOR
="500"
912 if [ "$FESTIVAL" = "$FLITE" ] && [ "$FLITE" = "$ESPEAK" ] && [ "$ESPEAK" = "$SAPI" ] && [ "$SAPI" = "$SWIFT" ]; then
913 echo "You need Festival, eSpeak or Flite in your path, or SAPI available to build voice files"
917 if [ "$ARG_TTS" ]; then
920 echo "TTS engine to use: ${FLITE}${FESTIVAL}${ESPEAK}${SAPI}${SWIFT}(${DEFAULT_CHOICE})?"
923 advopts
="$advopts --tts=$option"
927 NOISEFLOOR
="500" # TODO: check this value
933 TTS_OPTS
=$ESPEAK_OPTS
936 TTS_ENGINE
="festival"
938 TTS_OPTS
=$FESTIVAL_OPTS
951 TTS_ENGINE
=$DEFAULT_TTS
952 TTS_OPTS
=$DEFAULT_TTS_OPTS
953 NOISEFLOOR
=$DEFAULT_NOISEFLOOR
955 echo "Using $TTS_ENGINE for TTS"
957 # Select which voice to use for Festival
958 if [ "$TTS_ENGINE" = "festival" ]; then
959 voicelist
=`echo "(voice.list)"|festival -i 2>/dev/null |tr "\n" " "|sed -e 's/.*festival> (\(.*\)) festival>/\1/'|sort`
960 for voice
in $voicelist; do
961 TTS_FESTIVAL_VOICE
="$voice" # Default choice
964 if [ "$ARG_VOICE" ]; then
968 for voice
in $voicelist; do
969 printf "%3d. %s\n" "$i" "$voice"
972 printf "Please select which Festival voice to use (default is $TTS_FESTIVAL_VOICE): "
976 for voice
in $voicelist; do
977 if [ "$i" = "$CHOICE" -o "$voice" = "$CHOICE" ]; then
978 TTS_FESTIVAL_VOICE
="$voice"
982 advopts
="$advopts --voice=$CHOICE"
983 echo "Festival voice set to $TTS_FESTIVAL_VOICE"
984 echo "(voice_$TTS_FESTIVAL_VOICE)" > festival-prolog.scm
987 # Read custom tts options from command line
988 if [ "$ARG_TTSOPTS" ]; then
989 TTS_OPTS
="$ARG_TTSOPTS"
990 advopts
="$advopts --ttsopts='$TTS_OPTS'"
991 echo "$TTS_ENGINE options set to $TTS_OPTS"
994 if [ "$swcodec" = "yes" ]; then
996 ENC_OPTS
="-q 4 -c 10"
998 if [ -n "`findtool lame`" ]; then
1000 ENC_OPTS
="--resample 12 -t -m m -h -V 9.999 -S -B 64 --vbr-new"
1002 echo "You need LAME in the system path to build voice files for"
1003 echo "HWCODEC targets."
1008 echo "Using $ENCODER for encoding voice clips"
1010 # Read custom encoder options from command line
1011 if [ "$ARG_ENCOPTS" ]; then
1012 ENC_OPTS
="$ARG_ENCOPTS"
1013 advopts
="$advopts --encopts='$ENC_OPTS'"
1014 echo "$ENCODER options set to $ENC_OPTS"
1018 if [ -n "`findtool cygpath`" ]; then
1019 TEMPDIR
=`cygpath . -a -w`
1024 # figure out which languages that are around
1025 for file in $rootdir/apps
/lang
/*.lang
; do
1026 clean
=`basename $file .lang`
1027 langs
="$langs $clean"
1030 if [ "$ARG_LANG" ]; then
1033 echo "Select a number for the language to use (default is english)"
1034 # FIXME The multiple-language feature is currently broken
1035 # echo "You may enter a comma-separated list of languages to build"
1038 for one
in $langs; do
1044 advopts
="$advopts --language=$pick"
1049 # Allow the user to pass a comma-separated list of langauges
1050 for thispick
in `echo $pick | sed 's/,/ /g'`; do
1052 for one
in $langs; do
1053 # Accept both the language number and name
1054 if [ "$num" = "$thispick" ] ||
[ "$thispick" = "$one" ]; then
1055 if [ "$output" = "" ]; then
1064 if [ -z "$output" ]; then
1072 echo "Rockbox configure script."
1073 echo "Invoke this in a directory to generate a Makefile to build Rockbox"
1074 echo "Do *NOT* run this within the tools directory!"
1077 Usage: configure [OPTION]...
1079 --target=TARGET Sets the target, TARGET can be either the target ID or
1080 corresponding string. Run without this option to see all
1083 --ram=RAM Sets the RAM for certain targets. Even though any number
1084 is accepted, not every number is correct. The default
1085 value will be applied, if you entered a wrong number
1086 (which depends on the target). Watch the output. Run
1087 without this option if you are not sure which the right
1090 --type=TYPE Sets the build type. Shortcuts are also valid.
1091 Run without this option to see all available types.
1092 Multiple values are allowed and managed in the input
1093 order. So --type=b stands for Bootloader build, while
1094 --type=ab stands for "Backlight MOD" build.
1096 --lcdwidth=X Sets the width of the LCD. Used only for application
1099 --lcdheight=Y Sets the height of the LCD. Used only for application
1102 --language=LANG Set the language used for voice generation (used only if
1105 --tts=ENGINE Set the TTS engine used for voice generation (used only
1108 --voice=VOICE Set voice to use with selected TTS (used only if TYPE is
1111 --ttsopts=OPTS Set TTS engine manual options (used only if TYPE is AV).
1113 --encopts=OPTS Set encoder manual options (used only if ATYPE is AV).
1115 --rbdir=dir Use alternative rockbox directory (default: ${rbdir}).
1116 This is useful for having multiple alternate builds on
1117 your device that you can load with ROLO. However as the
1118 bootloader looks for .rockbox you won't be able to boot
1121 --ccache Enable ccache use (done by default these days)
1122 --no-ccache Disable ccache use
1124 --eabi Make configure prefer toolchains that are able to compile
1125 for the new ARM standard abi EABI
1126 --no-eabi The opposite of --eabi (prefer old non-eabi toolchains)
1127 --thumb Build with -mthumb (for ARM builds)
1128 --no-thumb The opposite of --thumb (don't use thumb even for targets
1129 where this is the default
1130 --sdl-threads Force use of SDL threads. They have inferior performance,
1131 but are better debuggable with GDB
1132 --no-sdl-threads Disallow use of SDL threads. This prevents the default
1133 behavior of falling back to them if no native thread
1135 --prefix Target installation directory
1136 --help Shows this message (must not be used with other options)
1155 ARG_PREFIX
="$PREFIX"
1160 --ccache) ARG_CCACHE
=1;;
1161 --no-ccache) ARG_CCACHE
=0;;
1162 --encopts=*) ARG_ENCOPTS
=`echo "$arg" | cut -d = -f 2`;;
1163 --language=*) ARG_LANG
=`echo "$arg" | cut -d = -f 2`;;
1164 --lcdwidth=*) ARG_LCDWIDTH
=`echo "$arg" | cut -d = -f 2`;;
1165 --lcdheight=*) ARG_LCDHEIGHT
=`echo "$arg" | cut -d = -f 2`;;
1166 --ram=*) ARG_RAM
=`echo "$arg" | cut -d = -f 2`;;
1167 --rbdir=*) ARG_RBDIR
=`echo "$arg" | cut -d = -f 2`;;
1168 --target=*) ARG_TARGET
=`echo "$arg" | cut -d = -f 2`;;
1169 --tts=*) ARG_TTS
=`echo "$arg" | cut -d = -f 2`;;
1170 --ttsopts=*) ARG_TTSOPTS
=`echo "$arg" | cut -d = -f 2`;;
1171 --type=*) ARG_TYPE
=`echo "$arg" | cut -d = -f 2`;;
1172 --voice=*) ARG_VOICE
=`echo "$arg" | cut -d = -f 2`;;
1173 --eabi) ARG_ARM_EABI
=1;;
1174 --no-eabi) ARG_ARM_EABI
=0;;
1175 --thumb) ARG_ARM_THUMB
=1;;
1176 --no-thumb) ARG_ARM_THUMB
=0;;
1177 --sdl-threads)ARG_THREAD_SUPPORT
=1;;
1179 ARG_THREAD_SUPPORT
=0;;
1180 --prefix=*) ARG_PREFIX
=`echo "$arg" | cut -d = -f 2`;;
1182 *) err
=1; echo "[ERROR] Option '$arg' unsupported";;
1185 [ "$err" ] && exit 1
1189 if [ "$TMPDIR" != "" ]; then
1194 echo Using temporary directory
$tmpdir
1196 if test -r "configure"; then
1197 # this is a check for a configure script in the current directory, it there
1198 # is one, try to figure out if it is this one!
1200 if { grep "^# Jukebox" configure
>/dev
/null
2>&1 ; } then
1201 echo "WEEEEEEEEP. Don't run this configure script within the tools directory."
1202 echo "It will only cause you pain and grief. Instead do this:"
1205 echo " mkdir build-dir"
1206 echo " cd build-dir"
1207 echo " ../tools/configure"
1209 echo "Much happiness will arise from this. Enjoy"
1214 # get our current directory
1217 if { echo $pwd |
grep " "; } then
1218 echo "You're running this script in a path that contains space. The build"
1219 echo "system is unfortunately not clever enough to deal with this. Please"
1220 echo "run the script from a different path, rename the path or fix the build"
1225 if [ -z "$rootdir" ]; then
1226 ##################################################################
1227 # Figure out where the source code root is!
1229 rootdir
=`dirname $0`/..
/
1231 #####################################################################
1232 # Convert the possibly relative directory name to an absolute version
1238 # cd back to the build dir
1243 appsdir
='$(ROOTDIR)/apps'
1244 toolsdir
='$(ROOTDIR)/tools'
1247 ##################################################################
1248 # Figure out target platform
1251 if [ "$ARG_TARGET" ]; then
1252 buildfor
=$ARG_TARGET
1254 echo "Enter target platform:"
1256 ==Archos== ==iriver== ==Apple iPod==
1257 0) Player/Studio 10) H120/H140 20) Color/Photo
1258 1) Recorder 11) H320/H340 21) Nano 1G
1259 2) FM Recorder 12) iHP-100/110/115 22) Video
1260 3) Recorder v2 13) iFP-790 23) 3G
1261 4) Ondio SP 14) H10 20Gb 24) 4G Grayscale
1262 5) Ondio FM 15) H10 5/6Gb 25) Mini 1G
1263 6) AV300 26) Mini 2G
1264 ==Toshiba== 27) 1G, 2G
1265 ==Cowon/iAudio== 40) Gigabeat F/X 28) Nano 2G
1266 30) X5/X5V/X5L 41) Gigabeat S 29) Classic/6G
1268 32) 7 ==Olympus= ==SanDisk==
1269 33) D2 70) M:Robe 500 50) Sansa e200
1270 34) M3/M3L 71) M:Robe 100 51) Sansa e200R
1272 ==Creative== ==Philips== 53) Sansa m200
1273 90) Zen Vision:M 30GB 100) GoGear SA9200 54) Sansa c100
1274 91) Zen Vision:M 60GB 101) GoGear HDD1630/ 55) Sansa Clip
1275 92) Zen Vision HDD1830 56) Sansa e200v2
1276 102) GoGear HDD6330 57) Sansa m200v4
1277 ==Onda== 58) Sansa Fuze
1278 120) VX747 ==Meizu== 59) Sansa c200v2
1279 121) VX767 110) M6SL 60) Sansa Clipv2
1280 122) VX747+ 111) M6SP 61) Sansa View
1281 123) VX777 112) M3 62) Sansa Clip+
1283 ==Samsung== ==Tatung== 64) Sansa Fuze+
1284 140) YH-820 150) Elio TPJ-1022 65) Sansa Clip Zip
1286 142) YH-925 ==Packard Bell== ==Logik==
1287 143) YP-S3 160) Vibe 500 80) DAX 1GB MP3/DAB
1289 ==Application== ==MPIO== ==Lyre project==
1290 200) SDL 170) HD200 130) Lyre proto 1
1291 201) Android 171) HD300 131) Mini2440
1293 203) Nokia N900 ==ROCKCHIP==
1294 204) Pandora 180) rk27xx generic
1301 # Set of tools built for all target platforms:
1302 toolset
="rdf2binary convbdf codepages"
1304 # Toolsets for some target families:
1305 archosbitmaptools
="$toolset scramble descramble sh2d uclpack bmp2rb"
1306 iriverbitmaptools
="$toolset scramble descramble mkboot bmp2rb"
1307 iaudiobitmaptools
="$toolset scramble descramble mkboot bmp2rb"
1308 ipodbitmaptools
="$toolset scramble bmp2rb"
1309 gigabeatbitmaptools
="$toolset scramble descramble bmp2rb"
1310 tccbitmaptools
="$toolset scramble bmp2rb"
1311 # generic is used by IFP, Meizu and Onda
1312 genericbitmaptools
="$toolset bmp2rb"
1313 # scramble is used by all other targets
1314 scramblebitmaptools
="$genericbitmaptools scramble"
1317 # ---- For each target ----
1320 # target_id: a unique number identifying this target, IS NOT the menu number.
1321 # Just use the currently highest number+1 when you add a new
1323 # modelname: short model name used all over to identify this target
1324 # memory: number of megabytes of RAM this target has. If the amount can
1325 # be selected by the size prompt, let memory be unset here
1326 # target: -Ddefine passed to the build commands to make the correct
1327 # config-*.h file get included etc
1328 # tool: the tool that takes a plain binary and converts that into a
1329 # working "firmware" file for your target
1330 # output: the final output file name
1331 # boottool: the tool that takes a plain binary and generates a bootloader
1332 # file for your target (or blank to use $tool)
1333 # bootoutput:the final output file name for the bootloader (or blank to use
1335 # appextra: passed to the APPEXTRA variable in the Makefiles.
1336 # TODO: add proper explanation
1337 # archosrom: used only for Archos targets that build a special flashable .ucl
1339 # flash: name of output for flashing, for targets where there's a special
1340 # file output for this.
1341 # plugins: set to 'yes' to build the plugins. Early development builds can
1342 # set this to no in the early stages to have an easier life for a
1344 # swcodec: set 'yes' on swcodec targets
1345 # toolset: lists what particular tools in the tools/ directory that this
1346 # target needs to have built prior to building Rockbox
1349 # *cc: sets up gcc and compiler options for your target builds. Note
1350 # that if you select a simulator build, the compiler selection is
1351 # overridden later in the script.
1357 modelname
="archosplayer"
1358 target
="-DARCHOS_PLAYER"
1360 tool
="$rootdir/tools/scramble"
1362 appextra
="player:gui"
1363 archosrom
="$pwd/rombox.ucl"
1364 flash
="$pwd/rockbox.ucl"
1368 # toolset is the tools within the tools directory that we build for
1369 # this particular target.
1370 toolset
="$toolset scramble descramble sh2d player_unifont uclpack"
1372 # Note: the convbdf is present in the toolset just because: 1) the
1373 # firmware/Makefile assumes it is present always, and 2) we will need it when we
1374 # build the player simulator
1377 t_manufacturer
="archos"
1383 modelname
="archosrecorder"
1384 target
="-DARCHOS_RECORDER"
1386 tool
="$rootdir/tools/scramble"
1387 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1388 bmp2rb_native
="$rootdir/tools/bmp2rb -f 0"
1390 appextra
="recorder:gui:radio"
1391 #archosrom="$pwd/rombox.ucl"
1392 flash
="$pwd/rockbox.ucl"
1395 # toolset is the tools within the tools directory that we build for
1396 # this particular target.
1397 toolset
=$archosbitmaptools
1399 t_manufacturer
="archos"
1405 modelname
="archosfmrecorder"
1406 target
="-DARCHOS_FMRECORDER"
1408 tool
="$rootdir/tools/scramble -fm"
1409 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1410 bmp2rb_native
="$rootdir/tools/bmp2rb -f 0"
1412 appextra
="recorder:gui:radio"
1413 #archosrom="$pwd/rombox.ucl"
1414 flash
="$pwd/rockbox.ucl"
1417 # toolset is the tools within the tools directory that we build for
1418 # this particular target.
1419 toolset
=$archosbitmaptools
1421 t_manufacturer
="archos"
1427 modelname
="archosrecorderv2"
1428 target
="-DARCHOS_RECORDERV2"
1430 tool
="$rootdir/tools/scramble -v2"
1431 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1432 bmp2rb_native
="$rootdir/tools/bmp2rb -f 0"
1434 appextra
="recorder:gui:radio"
1435 #archosrom="$pwd/rombox.ucl"
1436 flash
="$pwd/rockbox.ucl"
1439 # toolset is the tools within the tools directory that we build for
1440 # this particular target.
1441 toolset
=$archosbitmaptools
1443 t_manufacturer
="archos"
1449 modelname
="archosondiosp"
1450 target
="-DARCHOS_ONDIOSP"
1452 tool
="$rootdir/tools/scramble -osp"
1453 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1454 bmp2rb_native
="$rootdir/tools/bmp2rb -f 0"
1456 appextra
="recorder:gui:radio"
1457 #archosrom="$pwd/rombox.ucl"
1458 flash
="$pwd/rockbox.ucl"
1461 # toolset is the tools within the tools directory that we build for
1462 # this particular target.
1463 toolset
=$archosbitmaptools
1465 t_manufacturer
="archos"
1471 modelname
="archosondiofm"
1472 target
="-DARCHOS_ONDIOFM"
1474 tool
="$rootdir/tools/scramble -ofm"
1475 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1476 bmp2rb_native
="$rootdir/tools/bmp2rb -f 0"
1478 appextra
="recorder:gui:radio"
1479 #archosrom="$pwd/rombox.ucl"
1480 flash
="$pwd/rockbox.ucl"
1483 toolset
=$archosbitmaptools
1485 t_manufacturer
="archos"
1491 modelname
="archosav300"
1492 target
="-DARCHOS_AV300"
1495 tool
="$rootdir/tools/scramble -mm=C"
1496 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1497 bmp2rb_native
="$rootdir/tools/bmp2rb -f 6"
1499 appextra
="recorder:gui:radio"
1502 # toolset is the tools within the tools directory that we build for
1503 # this particular target.
1504 toolset
="$toolset scramble descramble bmp2rb"
1505 # architecture, manufacturer and model for the target-tree build
1507 t_manufacturer
="archos"
1513 modelname
="iriverh120"
1514 target
="-DIRIVER_H120"
1517 tool
="$rootdir/tools/scramble -add=h120"
1518 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1519 bmp2rb_native
="$rootdir/tools/bmp2rb -f 2"
1520 bmp2rb_remotemono
="$rootdir/tools/bmp2rb -f 0"
1521 bmp2rb_remotenative
="$rootdir/tools/bmp2rb -f 0"
1522 output
="rockbox.iriver"
1523 bootoutput
="bootloader.iriver"
1524 appextra
="recorder:gui:radio"
1525 flash
="$pwd/rombox.iriver"
1528 # toolset is the tools within the tools directory that we build for
1529 # this particular target.
1530 toolset
=$iriverbitmaptools
1532 t_manufacturer
="iriver"
1538 modelname
="iriverh300"
1539 target
="-DIRIVER_H300"
1542 tool
="$rootdir/tools/scramble -add=h300"
1543 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1544 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
1545 bmp2rb_remotemono
="$rootdir/tools/bmp2rb -f 0"
1546 bmp2rb_remotenative
="$rootdir/tools/bmp2rb -f 0"
1547 output
="rockbox.iriver"
1548 appextra
="recorder:gui:radio"
1551 # toolset is the tools within the tools directory that we build for
1552 # this particular target.
1553 toolset
=$iriverbitmaptools
1555 t_manufacturer
="iriver"
1561 modelname
="iriverh100"
1562 target
="-DIRIVER_H100"
1565 tool
="$rootdir/tools/scramble -add=h100"
1566 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1567 bmp2rb_native
="$rootdir/tools/bmp2rb -f 2"
1568 bmp2rb_remotemono
="$rootdir/tools/bmp2rb -f 0"
1569 bmp2rb_remotenative
="$rootdir/tools/bmp2rb -f 0"
1570 output
="rockbox.iriver"
1571 bootoutput
="bootloader.iriver"
1572 appextra
="recorder:gui:radio"
1573 flash
="$pwd/rombox.iriver"
1576 # toolset is the tools within the tools directory that we build for
1577 # this particular target.
1578 toolset
=$iriverbitmaptools
1580 t_manufacturer
="iriver"
1586 modelname
="iriverifp7xx"
1587 target
="-DIRIVER_IFP7XX"
1591 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1592 bmp2rb_native
="$rootdir/tools/bmp2rb -f 0"
1593 output
="rockbox.wma"
1594 appextra
="recorder:gui:radio"
1597 # toolset is the tools within the tools directory that we build for
1598 # this particular target.
1599 toolset
=$genericbitmaptools
1601 t_manufacturer
="pnx0101"
1602 t_model
="iriver-ifp7xx"
1607 modelname
="iriverh10"
1608 target
="-DIRIVER_H10"
1611 tool
="$rootdir/tools/scramble -mi4v3 -model=h10 -type=RBOS"
1612 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1613 bmp2rb_native
="$rootdir/tools/bmp2rb -f 5"
1614 output
="rockbox.mi4"
1615 appextra
="recorder:gui:radio"
1618 boottool
="$rootdir/tools/scramble -mi4v3 -model=h10 -type=RBBL"
1619 bootoutput
="H10_20GC.mi4"
1620 # toolset is the tools within the tools directory that we build for
1621 # this particular target.
1622 toolset
=$scramblebitmaptools
1623 # architecture, manufacturer and model for the target-tree build
1625 t_manufacturer
="iriver"
1631 modelname
="iriverh10_5gb"
1632 target
="-DIRIVER_H10_5GB"
1635 tool
="$rootdir/tools/scramble -mi4v2 -model=h105 -type=RBOS"
1636 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1637 bmp2rb_native
="$rootdir/tools/bmp2rb -f 5"
1638 output
="rockbox.mi4"
1639 appextra
="recorder:gui:radio"
1642 boottool
="$rootdir/tools/scramble -mi4v2 -model=h105 -type=RBBL"
1643 bootoutput
="H10.mi4"
1644 # toolset is the tools within the tools directory that we build for
1645 # this particular target.
1646 toolset
=$scramblebitmaptools
1647 # architecture, manufacturer and model for the target-tree build
1649 t_manufacturer
="iriver"
1655 modelname
="ipodcolor"
1656 target
="-DIPOD_COLOR"
1659 tool
="$rootdir/tools/scramble -add=ipco"
1660 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1661 bmp2rb_native
="$rootdir/tools/bmp2rb -f 5"
1662 output
="rockbox.ipod"
1663 appextra
="recorder:gui:radio"
1666 bootoutput
="bootloader-$modelname.ipod"
1667 # toolset is the tools within the tools directory that we build for
1668 # this particular target.
1669 toolset
=$ipodbitmaptools
1670 # architecture, manufacturer and model for the target-tree build
1672 t_manufacturer
="ipod"
1678 modelname
="ipodnano1g"
1679 target
="-DIPOD_NANO"
1682 tool
="$rootdir/tools/scramble -add=nano"
1683 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1684 bmp2rb_native
="$rootdir/tools/bmp2rb -f 5"
1685 output
="rockbox.ipod"
1686 appextra
="recorder:gui:radio"
1689 bootoutput
="bootloader-$modelname.ipod"
1690 # toolset is the tools within the tools directory that we build for
1691 # this particular target.
1692 toolset
=$ipodbitmaptools
1693 # architecture, manufacturer and model for the target-tree build
1695 t_manufacturer
="ipod"
1701 modelname
="ipodvideo"
1702 target
="-DIPOD_VIDEO"
1703 memory
=64 # always. This is reduced at runtime if needed
1705 tool
="$rootdir/tools/scramble -add=ipvd"
1706 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1707 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
1708 output
="rockbox.ipod"
1709 appextra
="recorder:gui:radio"
1712 bootoutput
="bootloader-$modelname.ipod"
1713 # toolset is the tools within the tools directory that we build for
1714 # this particular target.
1715 toolset
=$ipodbitmaptools
1716 # architecture, manufacturer and model for the target-tree build
1718 t_manufacturer
="ipod"
1728 tool
="$rootdir/tools/scramble -add=ip3g"
1729 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1730 bmp2rb_native
="$rootdir/tools/bmp2rb -f 6"
1731 output
="rockbox.ipod"
1732 appextra
="recorder:gui:radio"
1735 bootoutput
="bootloader-$modelname.ipod"
1736 # toolset is the tools within the tools directory that we build for
1737 # this particular target.
1738 toolset
=$ipodbitmaptools
1739 # architecture, manufacturer and model for the target-tree build
1741 t_manufacturer
="ipod"
1751 tool
="$rootdir/tools/scramble -add=ip4g"
1752 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1753 bmp2rb_native
="$rootdir/tools/bmp2rb -f 6"
1754 output
="rockbox.ipod"
1755 appextra
="recorder:gui:radio"
1758 bootoutput
="bootloader-$modelname.ipod"
1759 # toolset is the tools within the tools directory that we build for
1760 # this particular target.
1761 toolset
=$ipodbitmaptools
1762 # architecture, manufacturer and model for the target-tree build
1764 t_manufacturer
="ipod"
1770 modelname
="ipodmini1g"
1771 target
="-DIPOD_MINI"
1774 tool
="$rootdir/tools/scramble -add=mini"
1775 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1776 bmp2rb_native
="$rootdir/tools/bmp2rb -f 6"
1777 output
="rockbox.ipod"
1778 appextra
="recorder:gui:radio"
1781 bootoutput
="bootloader-$modelname.ipod"
1782 # toolset is the tools within the tools directory that we build for
1783 # this particular target.
1784 toolset
=$ipodbitmaptools
1785 # architecture, manufacturer and model for the target-tree build
1787 t_manufacturer
="ipod"
1793 modelname
="ipodmini2g"
1794 target
="-DIPOD_MINI2G"
1797 tool
="$rootdir/tools/scramble -add=mn2g"
1798 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1799 bmp2rb_native
="$rootdir/tools/bmp2rb -f 6"
1800 output
="rockbox.ipod"
1801 appextra
="recorder:gui:radio"
1804 bootoutput
="bootloader-$modelname.ipod"
1805 # toolset is the tools within the tools directory that we build for
1806 # this particular target.
1807 toolset
=$ipodbitmaptools
1808 # architecture, manufacturer and model for the target-tree build
1810 t_manufacturer
="ipod"
1816 modelname
="ipod1g2g"
1817 target
="-DIPOD_1G2G"
1820 tool
="$rootdir/tools/scramble -add=1g2g"
1821 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1822 bmp2rb_native
="$rootdir/tools/bmp2rb -f 6"
1823 output
="rockbox.ipod"
1824 appextra
="recorder:gui:radio"
1827 bootoutput
="bootloader-$modelname.ipod"
1828 # toolset is the tools within the tools directory that we build for
1829 # this particular target.
1830 toolset
=$ipodbitmaptools
1831 # architecture, manufacturer and model for the target-tree build
1833 t_manufacturer
="ipod"
1839 modelname
="ipodnano2g"
1840 target
="-DIPOD_NANO2G"
1843 tool
="$rootdir/tools/scramble -add=nn2g"
1844 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1845 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
1846 output
="rockbox.ipod"
1847 appextra
="recorder:gui:radio"
1850 bootoutput
="bootloader-$modelname.ipod"
1851 # toolset is the tools within the tools directory that we build for
1852 # this particular target.
1853 toolset
=$ipodbitmaptools
1854 # architecture, manufacturer and model for the target-tree build
1856 t_manufacturer
="s5l8700"
1857 t_model
="ipodnano2g"
1866 tool
="$rootdir/tools/scramble -add=ip6g"
1867 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1868 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
1869 output
="rockbox.ipod"
1870 appextra
="recorder:gui:radio"
1873 bootoutput
="bootloader-$modelname.ipod"
1874 # toolset is the tools within the tools directory that we build for
1875 # this particular target.
1876 toolset
=$ipodbitmaptools
1877 # architecture, manufacturer and model for the target-tree build
1879 t_manufacturer
="s5l8702"
1885 modelname
="iaudiox5"
1886 target
="-DIAUDIO_X5"
1889 tool
="$rootdir/tools/scramble -add=iax5"
1890 boottool
="$rootdir/tools/scramble -iaudiox5"
1891 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1892 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
1893 bmp2rb_remotemono
="$rootdir/tools/bmp2rb -f 0"
1894 bmp2rb_remotenative
="$rootdir/tools/bmp2rb -f 7"
1895 output
="rockbox.iaudio"
1896 bootoutput
="x5_fw.bin"
1897 appextra
="recorder:gui:radio"
1900 # toolset is the tools within the tools directory that we build for
1901 # this particular target.
1902 toolset
="$iaudiobitmaptools"
1903 # architecture, manufacturer and model for the target-tree build
1905 t_manufacturer
="iaudio"
1911 modelname
="iaudiom5"
1912 target
="-DIAUDIO_M5"
1915 tool
="$rootdir/tools/scramble -add=iam5"
1916 boottool
="$rootdir/tools/scramble -iaudiom5"
1917 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1918 bmp2rb_native
="$rootdir/tools/bmp2rb -f 2"
1919 bmp2rb_remotemono
="$rootdir/tools/bmp2rb -f 0"
1920 bmp2rb_remotenative
="$rootdir/tools/bmp2rb -f 7"
1921 output
="rockbox.iaudio"
1922 bootoutput
="m5_fw.bin"
1923 appextra
="recorder:gui:radio"
1926 # toolset is the tools within the tools directory that we build for
1927 # this particular target.
1928 toolset
="$iaudiobitmaptools"
1929 # architecture, manufacturer and model for the target-tree build
1931 t_manufacturer
="iaudio"
1941 tool
="$rootdir/tools/scramble -add=i7"
1942 boottool
="$rootdir/tools/scramble -tcc=crc"
1943 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1944 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
1945 output
="rockbox.iaudio"
1946 appextra
="recorder:gui:radio"
1949 bootoutput
="I7_FW.BIN"
1950 # toolset is the tools within the tools directory that we build for
1951 # this particular target.
1952 toolset
="$tccbitmaptools"
1953 # architecture, manufacturer and model for the target-tree build
1955 t_manufacturer
="tcc77x"
1965 tool
="$rootdir/tools/scramble -add=d2"
1967 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1968 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
1970 bootoutput
="bootloader-cowond2.bin"
1971 appextra
="recorder:gui:radio"
1974 toolset
="$tccbitmaptools"
1975 # architecture, manufacturer and model for the target-tree build
1977 t_manufacturer
="tcc780x"
1983 modelname
="iaudiom3"
1984 target
="-DIAUDIO_M3"
1987 tool
="$rootdir/tools/scramble -add=iam3"
1988 boottool
="$rootdir/tools/scramble -iaudiom3"
1989 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
1990 bmp2rb_native
="$rootdir/tools/bmp2rb -f 7"
1991 output
="rockbox.iaudio"
1992 bootoutput
="cowon_m3.bin"
1993 appextra
="recorder:gui:radio"
1996 # toolset is the tools within the tools directory that we build for
1997 # this particular target.
1998 toolset
="$iaudiobitmaptools"
1999 # architecture, manufacturer and model for the target-tree build
2001 t_manufacturer
="iaudio"
2007 modelname
="gigabeatfx"
2008 target
="-DGIGABEAT_F"
2011 tool
="$rootdir/tools/scramble -add=giga"
2012 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2013 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2014 output
="rockbox.gigabeat"
2015 appextra
="recorder:gui:radio"
2018 toolset
=$gigabeatbitmaptools
2019 boottool
="$rootdir/tools/scramble -gigabeat"
2020 bootoutput
="FWIMG01.DAT"
2021 # architecture, manufacturer and model for the target-tree build
2023 t_manufacturer
="s3c2440"
2024 t_model
="gigabeat-fx"
2029 modelname
="gigabeats"
2030 target
="-DGIGABEAT_S"
2033 tool
="$rootdir/tools/scramble -add=gigs"
2034 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2035 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2036 output
="rockbox.gigabeat"
2037 appextra
="recorder:gui:radio"
2040 toolset
="$gigabeatbitmaptools"
2041 boottool
="$rootdir/tools/scramble -gigabeats"
2043 # architecture, manufacturer and model for the target-tree build
2045 t_manufacturer
="imx31"
2046 t_model
="gigabeat-s"
2051 modelname
="mrobe500"
2052 target
="-DMROBE_500"
2055 tool
="$rootdir/tools/scramble -add=m500"
2056 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2057 bmp2rb_native
="$rootdir/tools/bmp2rb -f 8"
2058 bmp2rb_remotemono
="$rootdir/tools/bmp2rb -f 0"
2059 bmp2rb_remotenative
="$rootdir/tools/bmp2rb -f 0"
2060 output
="rockbox.mrobe500"
2061 appextra
="recorder:gui:radio"
2064 toolset
=$gigabeatbitmaptools
2066 bootoutput
="rockbox.mrboot"
2067 # architecture, manufacturer and model for the target-tree build
2069 t_manufacturer
="tms320dm320"
2075 modelname
="mrobe100"
2076 target
="-DMROBE_100"
2079 tool
="$rootdir/tools/scramble -mi4v2 -model=m100 -type=RBOS"
2080 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2081 bmp2rb_native
="$rootdir/tools/bmp2rb -f 0"
2082 bmp2rb_remotemono
="$rootdir/tools/bmp2rb -f 0"
2083 bmp2rb_remotenative
="$rootdir/tools/bmp2rb -f 0"
2084 output
="rockbox.mi4"
2085 appextra
="recorder:gui:radio"
2088 boottool
="$rootdir/tools/scramble -mi4v2 -model=m100 -type=RBBL"
2089 bootoutput
="pp5020.mi4"
2090 # toolset is the tools within the tools directory that we build for
2091 # this particular target.
2092 toolset
=$scramblebitmaptools
2093 # architecture, manufacturer and model for the target-tree build
2095 t_manufacturer
="olympus"
2101 modelname
="logikdax"
2102 target
="-DLOGIK_DAX"
2105 tool
="$rootdir/tools/scramble -add=ldax"
2106 boottool
="$rootdir/tools/scramble -tcc=crc"
2107 bootoutput
="player.rom"
2108 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2109 bmp2rb_native
="$rootdir/tools/bmp2rb -f 0"
2110 output
="rockbox.logik"
2111 appextra
="recorder:gui:radio"
2114 # toolset is the tools within the tools directory that we build for
2115 # this particular target.
2116 toolset
=$tccbitmaptools
2117 # architecture, manufacturer and model for the target-tree build
2119 t_manufacturer
="tcc77x"
2125 modelname
="zenvisionm30gb"
2126 target
="-DCREATIVE_ZVM"
2129 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2130 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2131 tool
="$rootdir/tools/scramble -creative=zvm"
2133 output
="rockbox.zvm"
2134 appextra
="recorder:gui:radio"
2137 toolset
=$ipodbitmaptools
2138 boottool
="$rootdir/tools/scramble -creative=zvm -no-ciff"
2139 bootoutput
="rockbox.zvmboot"
2140 # architecture, manufacturer and model for the target-tree build
2142 t_manufacturer
="tms320dm320"
2143 t_model
="creative-zvm"
2148 modelname
="zenvisionm60gb"
2149 target
="-DCREATIVE_ZVM60GB"
2152 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2153 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2154 tool
="$rootdir/tools/scramble -creative=zvm60 -no-ciff"
2156 output
="rockbox.zvm60"
2157 appextra
="recorder:gui:radio"
2160 toolset
=$ipodbitmaptools
2161 boottool
="$rootdir/tools/scramble -creative=zvm60"
2162 bootoutput
="rockbox.zvm60boot"
2163 # architecture, manufacturer and model for the target-tree build
2165 t_manufacturer
="tms320dm320"
2166 t_model
="creative-zvm"
2171 modelname
="zenvision"
2172 target
="-DCREATIVE_ZV"
2175 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2176 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2177 tool
="$rootdir/tools/scramble -creative=zenvision -no-ciff"
2180 appextra
="recorder:gui:radio"
2183 toolset
=$ipodbitmaptools
2184 boottool
="$rootdir/tools/scramble -creative=zenvision"
2185 bootoutput
="rockbox.zvboot"
2186 # architecture, manufacturer and model for the target-tree build
2188 t_manufacturer
="tms320dm320"
2189 t_model
="creative-zvm"
2194 modelname
="sansae200"
2195 target
="-DSANSA_E200"
2196 memory
=32 # supposedly
2198 tool
="$rootdir/tools/scramble -mi4v3 -model=e200 -type=RBOS"
2199 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2200 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2201 output
="rockbox.mi4"
2202 appextra
="recorder:gui:radio"
2205 boottool
="$rootdir/tools/scramble -mi4v3 -model=e200 -type=RBBL"
2206 bootoutput
="PP5022.mi4"
2207 # toolset is the tools within the tools directory that we build for
2208 # this particular target.
2209 toolset
=$scramblebitmaptools
2210 # architecture, manufacturer and model for the target-tree build
2212 t_manufacturer
="sandisk"
2213 t_model
="sansa-e200"
2217 # the e200R model is pretty much identical to the e200, it only has a
2218 # different option to the scramble tool when building a bootloader and
2219 # makes the bootloader output file name in all lower case.
2221 modelname
="sansae200r"
2222 target
="-DSANSA_E200"
2223 memory
=32 # supposedly
2225 tool
="$rootdir/tools/scramble -mi4v3 -model=e20r -type=RBOS"
2226 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2227 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2228 output
="rockbox.mi4"
2229 appextra
="recorder:gui:radio"
2232 boottool
="$rootdir/tools/scramble -mi4r -model=e20r -type=RBBL"
2233 bootoutput
="pp5022.mi4"
2234 # toolset is the tools within the tools directory that we build for
2235 # this particular target.
2236 toolset
=$scramblebitmaptools
2237 # architecture, manufacturer and model for the target-tree build
2239 t_manufacturer
="sandisk"
2240 t_model
="sansa-e200"
2245 modelname
="sansac200"
2246 target
="-DSANSA_C200"
2247 memory
=32 # supposedly
2249 tool
="$rootdir/tools/scramble -mi4v3 -model=c200 -type=RBOS"
2250 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2251 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2252 output
="rockbox.mi4"
2253 appextra
="recorder:gui:radio"
2256 boottool
="$rootdir/tools/scramble -mi4v3 -model=c200 -type=RBBL"
2257 bootoutput
="firmware.mi4"
2258 # toolset is the tools within the tools directory that we build for
2259 # this particular target.
2260 toolset
=$scramblebitmaptools
2261 # architecture, manufacturer and model for the target-tree build
2263 t_manufacturer
="sandisk"
2264 t_model
="sansa-c200"
2269 modelname
="sansam200"
2270 target
="-DSANSA_M200"
2273 tool
="$rootdir/tools/scramble -add=m200"
2274 boottool
="$rootdir/tools/scramble -tcc=crc"
2275 bootoutput
="player.rom"
2276 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2277 bmp2rb_native
="$rootdir/tools/bmp2rb -f 0"
2278 output
="rockbox.m200"
2279 appextra
="recorder:gui:radio"
2282 # toolset is the tools within the tools directory that we build for
2283 # this particular target.
2284 toolset
=$tccbitmaptools
2285 # architecture, manufacturer and model for the target-tree build
2287 t_manufacturer
="tcc77x"
2293 modelname
="sansac100"
2294 target
="-DSANSA_C100"
2297 tool
="$rootdir/tools/scramble -add=c100"
2298 boottool
="$rootdir/tools/scramble -tcc=crc"
2299 bootoutput
="player.rom"
2300 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2301 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2302 output
="rockbox.c100"
2303 appextra
="recorder:gui:radio"
2306 # toolset is the tools within the tools directory that we build for
2307 # this particular target.
2308 toolset
=$tccbitmaptools
2309 # architecture, manufacturer and model for the target-tree build
2311 t_manufacturer
="tcc77x"
2317 modelname
="sansaclip"
2318 target
="-DSANSA_CLIP"
2320 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2321 bmp2rb_native
="$bmp2rb_mono"
2322 tool
="$rootdir/tools/scramble -add=clip"
2323 output
="rockbox.sansa"
2324 bootoutput
="bootloader-clip.sansa"
2325 appextra
="recorder:gui:radio"
2328 toolset
=$scramblebitmaptools
2330 t_manufacturer
="as3525"
2331 t_model
="sansa-clip"
2332 if [ "$ARG_ARM_THUMB" != 0 ]; then ARG_ARM_THUMB
=1; fi
2334 GCCOPTS
=`echo $GCCOPTS | sed 's/ -O / -Os /'`
2340 modelname
="sansae200v2"
2341 target
="-DSANSA_E200V2"
2343 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2344 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2345 tool
="$rootdir/tools/scramble -add=e2v2"
2346 output
="rockbox.sansa"
2347 bootoutput
="bootloader-e200v2.sansa"
2348 appextra
="recorder:gui:radio"
2351 toolset
=$scramblebitmaptools
2353 t_manufacturer
="as3525"
2354 t_model
="sansa-e200v2"
2361 modelname
="sansam200v4"
2362 target
="-DSANSA_M200V4"
2364 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2365 bmp2rb_native
="$bmp2rb_mono"
2366 tool
="$rootdir/tools/scramble -add=m2v4"
2367 output
="rockbox.sansa"
2368 bootoutput
="bootloader-m200v4.sansa"
2369 appextra
="recorder:gui:radio"
2372 toolset
=$scramblebitmaptools
2374 t_manufacturer
="as3525"
2375 t_model
="sansa-m200v4"
2376 if [ "$ARG_ARM_THUMB" != 0 ]; then ARG_ARM_THUMB
=1; fi
2378 GCCOPTS
=`echo $GCCOPTS | sed 's/ -O / -Os /'`
2384 modelname
="sansafuze"
2385 target
="-DSANSA_FUZE"
2387 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2388 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2389 tool
="$rootdir/tools/scramble -add=fuze"
2390 output
="rockbox.sansa"
2391 bootoutput
="bootloader-fuze.sansa"
2392 appextra
="recorder:gui:radio"
2395 toolset
=$scramblebitmaptools
2397 t_manufacturer
="as3525"
2398 t_model
="sansa-fuze"
2405 modelname
="sansac200v2"
2406 target
="-DSANSA_C200V2"
2407 memory
=2 # as per OF diagnosis mode
2408 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2409 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2410 tool
="$rootdir/tools/scramble -add=c2v2"
2411 output
="rockbox.sansa"
2412 bootoutput
="bootloader-c200v2.sansa"
2413 appextra
="recorder:gui:radio"
2416 # toolset is the tools within the tools directory that we build for
2417 # this particular target.
2418 toolset
=$scramblebitmaptools
2419 # architecture, manufacturer and model for the target-tree build
2421 t_manufacturer
="as3525"
2422 t_model
="sansa-c200v2"
2423 if [ "$ARG_ARM_THUMB" != 0 ]; then ARG_ARM_THUMB
=1; fi
2425 GCCOPTS
=`echo $GCCOPTS | sed 's/ -O / -Os /'`
2430 modelname
="sansaclipv2"
2431 target
="-DSANSA_CLIPV2"
2433 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2434 bmp2rb_native
="$bmp2rb_mono"
2435 tool
="$rootdir/tools/scramble -add=clv2"
2436 output
="rockbox.sansa"
2437 bootoutput
="bootloader-clipv2.sansa"
2438 appextra
="recorder:gui:radio"
2441 toolset
=$scramblebitmaptools
2443 t_manufacturer
="as3525"
2444 t_model
="sansa-clipv2"
2449 echo "Sansa View is not yet supported!"
2452 modelname
="sansaview"
2453 target
="-DSANSA_VIEW"
2456 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2457 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2458 output
="rockbox.mi4"
2462 boottool
="$rootdir/tools/scramble -mi4v3 -model=view -type=RBBL"
2463 bootoutput
="firmware.mi4"
2464 # toolset is the tools within the tools directory that we build for
2465 # this particular target.
2466 toolset
=$scramblebitmaptools
2468 t_manufacturer
="sandisk"
2469 t_model
="sansa-view"
2474 modelname
="sansaclipplus"
2475 target
="-DSANSA_CLIPPLUS"
2477 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2478 bmp2rb_native
="$bmp2rb_mono"
2479 tool
="$rootdir/tools/scramble -add=cli+"
2480 output
="rockbox.sansa"
2481 bootoutput
="bootloader-clipplus.sansa"
2482 appextra
="recorder:gui:radio"
2485 toolset
=$scramblebitmaptools
2487 t_manufacturer
="as3525"
2488 t_model
="sansa-clipplus"
2494 modelname
="sansafuzev2"
2495 target
="-DSANSA_FUZEV2"
2497 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2498 bmp2rb_native
="$rootdir/tools/bmp2rb -f 5"
2499 tool
="$rootdir/tools/scramble -add=fuz2"
2500 output
="rockbox.sansa"
2501 bootoutput
="bootloader-fuzev2.sansa"
2502 appextra
="recorder:gui:radio"
2505 toolset
=$scramblebitmaptools
2507 t_manufacturer
="as3525"
2508 t_model
="sansa-fuzev2"
2514 modelname
="sansafuzeplus"
2515 target
="-DSANSA_FUZEPLUS"
2517 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2518 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2519 tool
="$rootdir/tools/scramble -add=fuz+"
2520 output
="rockbox.sansa"
2523 appextra
="gui:recorder:radio"
2526 toolset
=$scramblebitmaptools
2528 t_manufacturer
="imx233"
2529 t_model
="sansa-fuzeplus"
2535 modelname
="sansaclipzip"
2536 target
="-DSANSA_CLIPZIP"
2538 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2539 bmp2rb_native
="$rootdir/tools/bmp2rb -f 5"
2540 tool
="$rootdir/tools/scramble -add=clzp"
2541 output
="rockbox.sansa"
2542 bootoutput
="bootloader-clipzip.sansa"
2543 appextra
="recorder:gui:radio"
2546 toolset
=$scramblebitmaptools
2548 t_manufacturer
="as3525"
2549 t_model
="sansa-clipzip"
2555 modelname
="tatungtpj1022"
2556 target
="-DTATUNG_TPJ1022"
2559 tool
="$rootdir/tools/scramble -add tpj2"
2560 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2561 bmp2rb_native
="$rootdir/tools/bmp2rb -f 5"
2562 output
="rockbox.elio"
2563 appextra
="recorder:gui:radio"
2566 boottool
="$rootdir/tools/scramble -mi4v2"
2567 bootoutput
="pp5020.mi4"
2568 # toolset is the tools within the tools directory that we build for
2569 # this particular target.
2570 toolset
=$scramblebitmaptools
2571 # architecture, manufacturer and model for the target-tree build
2573 t_manufacturer
="tatung"
2579 modelname
="gogearsa9200"
2580 target
="-DPHILIPS_SA9200"
2581 memory
=32 # supposedly
2583 tool
="$rootdir/tools/scramble -mi4v3 -model=9200 -type=RBOS"
2584 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2585 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2586 output
="rockbox.mi4"
2587 appextra
="recorder:gui:radio"
2590 boottool
="$rootdir/tools/scramble -mi4v3 -model=9200 -type=RBBL"
2591 bootoutput
="FWImage.ebn"
2592 # toolset is the tools within the tools directory that we build for
2593 # this particular target.
2594 toolset
=$scramblebitmaptools
2595 # architecture, manufacturer and model for the target-tree build
2597 t_manufacturer
="philips"
2603 modelname
="gogearhdd1630"
2604 target
="-DPHILIPS_HDD1630"
2605 memory
=32 # supposedly
2607 tool
="$rootdir/tools/scramble -mi4v3 -model=1630 -type=RBOS"
2608 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2609 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2610 output
="rockbox.mi4"
2611 appextra
="recorder:gui:radio"
2614 boottool
="$rootdir/tools/scramble -mi4v3 -model=1630 -type=RBBL"
2615 bootoutput
="FWImage.ebn"
2616 # toolset is the tools within the tools directory that we build for
2617 # this particular target.
2618 toolset
=$scramblebitmaptools
2619 # architecture, manufacturer and model for the target-tree build
2621 t_manufacturer
="philips"
2627 modelname
="gogearhdd6330"
2628 target
="-DPHILIPS_HDD6330"
2631 tool
="$rootdir/tools/scramble -mi4v3 -model=6330 -type=RBOS"
2632 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2633 bmp2rb_native
="$rootdir/tools/bmp2rb -f 5"
2634 output
="rockbox.mi4"
2635 appextra
="recorder:gui:radio"
2638 boottool
="$rootdir/tools/scramble -mi4v3 -model=6330 -type=RBBL"
2639 bootoutput
="FWImage.ebn"
2640 # toolset is the tools within the tools directory that we build for
2641 # this particular target.
2642 toolset
=$scramblebitmaptools
2643 # architecture, manufacturer and model for the target-tree build
2645 t_manufacturer
="philips"
2651 modelname
="meizum6sl"
2652 target
="-DMEIZU_M6SL"
2656 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2657 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2658 output
="rockbox.meizu"
2659 appextra
="recorder:gui:radio"
2662 toolset
=$genericbitmaptools
2664 bootoutput
="rockboot.ebn"
2665 # architecture, manufacturer and model for the target-tree build
2667 t_manufacturer
="s5l8700"
2668 t_model
="meizu-m6sl"
2673 modelname
="meizum6sp"
2674 target
="-DMEIZU_M6SP"
2678 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2679 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2680 output
="rockbox.meizu"
2681 appextra
="recorder:gui:radio"
2684 toolset
=$genericbitmaptools
2686 bootoutput
="rockboot.ebn"
2687 # architecture, manufacturer and model for the target-tree build
2689 t_manufacturer
="s5l8700"
2690 t_model
="meizu-m6sp"
2700 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2701 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2702 output
="rockbox.meizu"
2703 appextra
="recorder:gui:radio"
2706 toolset
=$genericbitmaptools
2708 bootoutput
="rockboot.ebn"
2709 # architecture, manufacturer and model for the target-tree build
2711 t_manufacturer
="s5l8700"
2717 modelname
="ondavx747"
2718 target
="-DONDA_VX747"
2721 tool
="$rootdir/tools/scramble -add=x747"
2722 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2723 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2724 output
="rockbox.vx747"
2725 appextra
="recorder:gui:radio"
2728 toolset
=$genericbitmaptools
2729 boottool
="$rootdir/tools/scramble -ccpmp"
2730 bootoutput
="ccpmp.bin"
2731 # architecture, manufacturer and model for the target-tree build
2733 t_manufacturer
="ingenic_jz47xx"
2734 t_model
="onda_vx747"
2739 modelname
="ondavx767"
2740 target
="-DONDA_VX767"
2744 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2745 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2746 output
="rockbox.vx767"
2747 appextra
="recorder:gui:radio"
2750 toolset
=$genericbitmaptools
2751 boottool
="$rootdir/tools/scramble -ccpmp"
2752 bootoutput
="ccpmp.bin"
2753 # architecture, manufacturer and model for the target-tree build
2755 t_manufacturer
="ingenic_jz47xx"
2756 t_model
="onda_vx767"
2761 modelname
="ondavx747p"
2762 target
="-DONDA_VX747P"
2765 tool
="$rootdir/tools/scramble -add=747p"
2766 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2767 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2768 output
="rockbox.vx747p"
2769 appextra
="recorder:gui:radio"
2772 toolset
=$genericbitmaptools
2773 boottool
="$rootdir/tools/scramble -ccpmp"
2774 bootoutput
="ccpmp.bin"
2775 # architecture, manufacturer and model for the target-tree build
2777 t_manufacturer
="ingenic_jz47xx"
2778 t_model
="onda_vx747"
2783 modelname
="ondavx777"
2784 target
="-DONDA_VX777"
2787 tool
="$rootdir/tools/scramble -add=x777"
2788 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2789 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2790 output
="rockbox.vx777"
2791 appextra
="recorder:gui:radio"
2794 toolset
=$genericbitmaptools
2795 boottool
="$rootdir/tools/scramble -ccpmp"
2796 bootoutput
="ccpmp.bin"
2797 # architecture, manufacturer and model for the target-tree build
2799 t_manufacturer
="ingenic_jz47xx"
2800 t_model
="onda_vx747"
2805 modelname
="lyreproto1"
2806 target
="-DLYRE_PROTO1"
2810 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2811 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2812 output
="rockbox.lyre"
2813 appextra
="recorder:gui:radio"
2816 toolset
=$scramblebitmaptools
2818 bootoutput
="bootloader-proto1.lyre"
2819 # architecture, manufacturer and model for the target-tree build
2821 t_manufacturer
="at91sam"
2822 t_model
="lyre_proto1"
2827 modelname
="mini2440"
2831 tool
="$rootdir/tools/scramble -add=m244"
2832 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2833 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2834 output
="rockbox.mini2440"
2835 appextra
="recorder:gui:radio"
2838 toolset
=$scramblebitmaptools
2840 bootoutput
="bootloader-mini2440.lyre"
2841 # architecture, manufacturer and model for the target-tree build
2843 t_manufacturer
="s3c2440"
2849 modelname
="samsungyh820"
2850 target
="-DSAMSUNG_YH820"
2853 tool
="$rootdir/tools/scramble -mi4v2 -model=y820 -type=RBOS"
2854 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2855 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2856 output
="rockbox.mi4"
2857 appextra
="recorder:gui:radio"
2860 boottool
="$rootdir/tools/scramble -mi4v2 -model=y820 -type=RBBL"
2861 bootoutput
="FW_YH820.mi4"
2862 # toolset is the tools within the tools directory that we build for
2863 # this particular target.
2864 toolset
=$scramblebitmaptools
2865 # architecture, manufacturer and model for the target-tree build
2867 t_manufacturer
="samsung"
2873 modelname
="samsungyh920"
2874 target
="-DSAMSUNG_YH920"
2877 tool
="$rootdir/tools/scramble -mi4v2 -model=y920 -type=RBOS"
2878 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2879 bmp2rb_native
="$rootdir/tools/bmp2rb -f 2"
2880 output
="rockbox.mi4"
2881 appextra
="recorder:gui:radio"
2884 boottool
="$rootdir/tools/scramble -mi4v2 -model=y920 -type=RBBL"
2885 bootoutput
="PP5020.mi4"
2886 # toolset is the tools within the tools directory that we build for
2887 # this particular target.
2888 toolset
=$scramblebitmaptools
2889 # architecture, manufacturer and model for the target-tree build
2891 t_manufacturer
="samsung"
2897 modelname
="samsungyh925"
2898 target
="-DSAMSUNG_YH925"
2901 tool
="$rootdir/tools/scramble -mi4v2 -model=y925 -type=RBOS"
2902 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2903 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2904 output
="rockbox.mi4"
2905 appextra
="recorder:gui:radio"
2908 boottool
="$rootdir/tools/scramble -mi4v2 -model=y925 -type=RBBL"
2909 bootoutput
="FW_YH925.mi4"
2910 # toolset is the tools within the tools directory that we build for
2911 # this particular target.
2912 toolset
=$scramblebitmaptools
2913 # architecture, manufacturer and model for the target-tree build
2915 t_manufacturer
="samsung"
2921 modelname
="samsungyps3"
2922 target
="-DSAMSUNG_YPS3"
2926 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2927 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
2928 output
="rockbox.yps3"
2929 appextra
="recorder:gui:radio"
2932 toolset
=$genericbitmaptools
2934 bootoutput
="rockboot.ebn"
2935 # architecture, manufacturer and model for the target-tree build
2937 t_manufacturer
="s5l8700"
2944 target
="-DPBELL_VIBE500"
2947 tool
="$rootdir/tools/scramble -mi4v3 -model=v500 -type=RBOS"
2948 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2949 bmp2rb_native
="$rootdir/tools/bmp2rb -f 5"
2950 output
="rockbox.mi4"
2951 appextra
="recorder:gui:radio"
2954 boottool
="$rootdir/tools/scramble -mi4v3 -model=v500 -type=RBBL"
2955 bootoutput
="jukebox.mi4"
2956 # toolset is the tools within the tools directory that we build for
2957 # this particular target.
2958 toolset
=$scramblebitmaptools
2959 # architecture, manufacturer and model for the target-tree build
2961 t_manufacturer
="pbell"
2967 modelname
="mpiohd200"
2968 target
="-DMPIO_HD200"
2971 tool
="$rootdir/tools/scramble -add=hd20"
2972 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2973 bmp2rb_native
="$rootdir/tools/bmp2rb -f 7"
2974 output
="rockbox.mpio"
2975 bootoutput
="bootloader.mpio"
2976 appextra
="recorder:gui:radio"
2979 # toolset is the tools within the tools directory that we build for
2980 # this particular target.
2981 toolset
="$genericbitmaptools"
2982 # architecture, manufacturer and model for the target-tree build
2984 t_manufacturer
="mpio"
2990 modelname
="mpiohd300"
2991 target
="-DMPIO_HD300"
2994 tool
="$rootdir/tools/scramble -add=hd30"
2995 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
2996 bmp2rb_native
="$rootdir/tools/bmp2rb -f 2"
2997 output
="rockbox.mpio"
2998 bootoutput
="bootloader.mpio"
2999 appextra
="recorder:gui:radio"
3002 # toolset is the tools within the tools directory that we build for
3003 # this particular target.
3004 toolset
="$genericbitmaptools"
3005 # architecture, manufacturer and model for the target-tree build
3007 t_manufacturer
="mpio"
3013 modelname
="rk27generic"
3014 target
="-DRK27_GENERIC"
3017 tool
="$rootdir/tools/scramble -add=rk27"
3018 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
3019 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
3020 output
="rockbox.rk27"
3021 bootoutput
="bootloader.rk27"
3022 appextra
="recorder:gui:radio"
3025 # toolset is the tools within the tools directory that we build for
3026 # this particular target.
3027 toolset
="$genericbitmaptools"
3028 # architecture, manufacturer and model for the target-tree build
3030 t_manufacturer
="rk27xx"
3031 t_model
="rk27generic"
3046 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
3047 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
3049 bootoutput
="rockbox"
3050 appextra
="recorder:gui:radio"
3053 # architecture, manufacturer and model for the target-tree build
3055 t_manufacturer
="sdl"
3066 sharedir
="/data/data/org.rockbox/app_rockbox/rockbox"
3067 bindir
="/data/data/org.rockbox/lib"
3068 libdir
="/data/data/org.rockbox/app_rockbox"
3074 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
3075 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
3076 output
="librockbox.so"
3077 bootoutput
="librockbox.so"
3078 appextra
="recorder:gui:radio:hosted/android"
3081 # architecture, manufacturer and model for the target-tree build
3083 t_manufacturer
="android"
3090 modelname
="nokian8xx"
3092 target
="-DNOKIAN8XX"
3093 sharedir
="/opt/rockbox/share/rockbox"
3094 bindir
="/opt/rockbox/bin"
3095 libdir
="/opt/rockbox/lib"
3101 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
3102 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
3104 bootoutput
="rockbox"
3105 appextra
="recorder:gui:radio"
3108 # architecture, manufacturer and model for the target-tree build
3110 t_manufacturer
="maemo"
3117 modelname
="nokian900"
3119 target
="-DNOKIAN900"
3120 sharedir
="/opt/rockbox/share/rockbox"
3121 bindir
="/opt/rockbox/bin"
3122 libdir
="/opt/rockbox/lib"
3128 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
3129 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
3131 bootoutput
="rockbox"
3132 appextra
="recorder:gui:radio"
3135 # architecture, manufacturer and model for the target-tree build
3137 t_manufacturer
="maemo"
3147 sharedir
="rockbox/share/rockbox"
3148 bindir
="rockbox/bin"
3149 libdir
="rockbox/lib"
3155 bmp2rb_mono
="$rootdir/tools/bmp2rb -f 0"
3156 bmp2rb_native
="$rootdir/tools/bmp2rb -f 4"
3158 bootoutput
="rockbox"
3159 appextra
="recorder:gui:radio"
3162 # architecture, manufacturer and model for the target-tree build
3164 t_manufacturer
="pandora"
3169 echo "Please select a supported target platform!"
3175 echo "Platform set to $modelname"
3179 ############################################################################
3180 # Amount of memory, for those that can differ. They have $memory unset at
3184 if [ -z "$memory" ]; then
3187 if [ "$ARG_RAM" ]; then
3190 echo "Enter size of your RAM (in MB): (Defaults to 32)"
3203 if [ "$ARG_RAM" ]; then
3206 echo "Enter size of your RAM (in MB): (Defaults to 2)"
3219 echo "Memory size selected: $memory MB"
3220 [ "$ARG_TYPE" ] ||
echo ""
3224 ##################################################################
3225 # Figure out build "type"
3228 # the ifp7x0 is the only platform that supports building a gdb stub like
3232 gdbstub
=", (G)DB stub"
3234 sansae200r|sansae200
)
3235 gdbstub
=", (I)nstaller"
3238 gdbstub
=", (E)raser"
3241 gdbstub
=", (E)raser"
3246 if [ "$ARG_TYPE" ]; then
3249 echo "Build (N)ormal, (A)dvanced, (S)imulator, (B)ootloader, (C)heckWPS, (D)atabase tool$gdbstub: (Defaults to N)"
3255 appsdir
='$(ROOTDIR)/bootloader'
3257 extradefines
="$extradefines -DBOOTLOADER -DE200R_INSTALLER -ffunction-sections -fdata-sections"
3259 echo "e200R-installer build selected"
3262 appsdir
='$(ROOTDIR)/bootloader'
3264 extradefines
="$extradefines -DBOOTLOADER -DSANSA_PP_ERASE -ffunction-sections -fdata-sections"
3266 echo "sansa eraser build selected"
3269 if test $t_manufacturer = "archos"; then
3270 # Archos SH-based players do this somewhat differently for
3272 appsdir
='$(ROOTDIR)/flash/bootbox'
3275 appsdir
='$(ROOTDIR)/bootloader'
3278 if test -n "$boottool"; then
3281 if test -n "$bootoutput"; then
3285 extradefines
="$extradefines -DBOOTLOADER -ffunction-sections -fdata-sections"
3287 echo "Bootloader build selected"
3290 if [ "$modelname" = "sansae200r" ]; then
3291 echo "Do not use the e200R target for simulator builds. Use e200 instead."
3296 extradefines
="$extradefines -DSIMULATOR"
3299 echo "Simulator build selected"
3302 echo "Advanced build selected"
3303 whichadvanced
$btype
3306 extradefines
="$extradefines -DSTUB" # for target makefile symbol EXTRA_DEFINES
3307 appsdir
='$(ROOTDIR)/gdb'
3316 echo "GDB stub build selected"
3324 extradefines
="$extradefines -DDEBUG"
3325 appsdir
='$(ROOTDIR)/tools/checkwps';
3326 output
='checkwps.'${modelname};
3328 echo "CheckWPS build selected"
3336 appsdir
='$(ROOTDIR)/tools/database';
3341 output
="database_${modelname}.exe"
3344 output
='database.'${modelname};
3348 echo "Database tool build selected"
3351 if [ "$modelname" = "sansae200r" ]; then
3352 echo "Do not use the e200R target for regular builds. Use e200 instead."
3356 btype
="N" # set it explicitly since RET only gets here as well
3357 echo "Normal build selected"
3361 # to be able running "make manual" from non-manual configuration
3364 manualdev
="archosfmrecorder"
3367 manualdev
="iriverh100"
3370 manualdev
="ipodmini1g"
3373 manualdev
=$modelname
3377 if [ -z "$debug" ]; then
3378 GCCOPTS
="$GCCOPTS $GCCOPTIMIZE"
3381 if [ "yes" = "$application" ]; then
3382 echo Building Rockbox as an Application
3383 extradefines
="$extradefines -DAPPLICATION"
3386 echo "Using source code root directory: $rootdir"
3388 # this was once possible to change at build-time, but no more:
3393 if [ "yes" = "$simulator" ]; then
3394 # setup compiler and things for simulator
3397 if [ -d "simdisk" ]; then
3398 echo "Subdirectory 'simdisk' already present"
3401 echo "Created a 'simdisk' subdirectory for simulating the hard disk"
3405 # Now, figure out version number of the (gcc) compiler we are about to use
3406 gccver
=`$CC -dumpversion`;
3408 # figure out the binutil version too and display it, mostly for the build
3409 # system etc to be able to see it easier
3410 if [ $uname = "Darwin" ]; then
3411 ldver
=`$LD -v 2>&1 | sed -e 's/[^0-9.-]//g'`
3413 ldver
=`$LD --version | head -n 1 | sed -e 's/[^0-9.]//g'`
3416 if [ -z "$gccver" ]; then
3417 echo "[WARNING] The compiler you must use ($CC) is not in your path!"
3418 echo "[WARNING] this may cause your build to fail since we cannot do the"
3419 echo "[WARNING] checks we want now."
3422 # gccver should now be "3.3.5", "3.4.3", "2.95.3-6" and similar, but don't
3425 num1
=`echo $gccver | cut -d . -f1`
3426 num2
=`echo $gccver | cut -d . -f2`
3427 gccnum
=`(expr $num1 "*" 100 + $num2) 2>/dev/null`
3434 echo "Using $CC $gccver ($gccnum)"
3436 if test "$gccnum" -ge "400"; then
3437 # gcc 4.0 is just *so* much pickier on arguments that differ in signedness
3438 # so we ignore that warnings for now
3440 GCCOPTS
="$GCCOPTS -Wno-pointer-sign"
3443 if test "$gccnum" -ge "402"; then
3444 # disable warning about "warning: initialized field overwritten" as gcc 4.2
3445 # and later would throw it for several valid cases
3446 GCCOPTS
="$GCCOPTS -Wno-override-init"
3450 ""|
"$CROSS_COMPILE")
3454 # cross-compile for win32
3457 # Verify that the cross-compiler is of a recommended version!
3458 if test "$gccver" != "$gccchoice"; then
3459 echo "WARNING: Your cross-compiler $CC $gccver is not of the recommended"
3460 echo "WARNING: version $gccchoice!"
3461 echo "WARNING: This may cause your build to fail since it may be a version"
3462 echo "WARNING: that isn't functional or known to not be the best choice."
3463 echo "WARNING: If you suffer from build problems, you know that this is"
3464 echo "WARNING: a likely source for them..."
3472 echo "Using $LD $ldver"
3474 # check the compiler for SH platforms
3475 if test "$CC" = "sh-elf-gcc"; then
3476 if test "$gccnum" -lt "400"; then
3477 echo "WARNING: Consider upgrading your compiler to the 4.0.X series!"
3478 echo "WARNING: http://www.rockbox.org/twiki/bin/view/Main/CrossCompiler"
3480 # figure out patch status
3481 gccpatch
=`$CC --version`;
3483 if { echo $gccpatch |
grep "rockbox" >/dev
/null
2>&1; } then
3484 echo "gcc $gccver is rockbox patched"
3485 # then convert -O to -Os to get smaller binaries!
3486 GCCOPTS
=`echo $GCCOPTS | sed 's/ -O / -Os /'`
3488 echo "WARNING: You use an unpatched gcc compiler: $gccver"
3489 echo "WARNING: http://www.rockbox.org/twiki/bin/view/Main/CrossCompiler"
3494 if test "$CC" = "m68k-elf-gcc"; then
3495 # convert -O to -Os to get smaller binaries!
3496 GCCOPTS
=`echo $GCCOPTS | sed 's/ -O / -Os /'`
3499 if [ "$ARG_CCACHE" = "1" ]; then
3500 echo "Enable ccache for building"
3502 elif [ "$ARG_CCACHE" != "0" ]; then
3503 ccache
=`findtool ccache`
3504 if test -n "$ccache"; then
3505 echo "Found and uses ccache ($ccache)"
3509 # figure out the full path to the various commands if possible
3510 HOSTCC
=`findtool gcc --lit`
3511 HOSTAR
=`findtool ar --lit`
3512 CC
=`findtool ${CC} --lit`
3513 LD
=`findtool ${AR} --lit`
3514 AR
=`findtool ${AR} --lit`
3515 AS
=`findtool ${AS} --lit`
3516 OC
=`findtool ${OC} --lit`
3517 WINDRES
=`findtool ${WINDRES} --lit`
3518 DLLTOOL
=`findtool ${DLLTOOL} --lit`
3519 DLLWRAP
=`findtool ${DLLWRAP} --lit`
3520 RANLIB
=`findtool ${RANLIB} --lit`
3522 if test -n "$ccache"; then
3526 if test "$ARG_ARM_THUMB" = "1"; then
3527 extradefines
="$extradefines -DUSE_THUMB"
3528 CC
="$toolsdir/thumb-cc.py $CC"
3531 if test "X$endian" = "Xbig"; then
3532 defendian
="ROCKBOX_BIG_ENDIAN"
3534 defendian
="ROCKBOX_LITTLE_ENDIAN"
3537 if [ "$ARG_RBDIR" != "" ]; then
3538 if [ -z `echo $ARG_RBDIR | grep '^/'` ]; then
3543 echo "Using alternate rockbox dir: ${rbdir}"
3546 cat > autoconf.h
<<EOF
3547 /* This header was made by configure */
3548 #ifndef __BUILD_AUTOCONF_H
3549 #define __BUILD_AUTOCONF_H
3551 /* Define endianess for the target or simulator platform */
3552 #define ${defendian} 1
3554 /* Define this if you build rockbox to support the logf logging and display */
3557 /* Define this to record a chart with timings for the stages of boot */
3560 /* optional define for a backlight modded Ondio */
3563 /* optional define for FM radio mod for iAudio M5 */
3566 /* optional define for ATA poweroff on Player */
3567 ${have_ata_poweroff}
3569 /* optional defines for RTC mod for h1x0 */
3573 /* the threading backend we use */
3574 #define ${thread_support}
3576 /* lcd dimensions for application builds from configure */
3580 /* root of Rockbox */
3581 #define ROCKBOX_DIR "${rbdir}"
3582 #define ROCKBOX_SHARE_PATH "${sharedir}"
3583 #define ROCKBOX_BINARY_PATH "${bindir}"
3584 #define ROCKBOX_LIBRARY_PATH "${libdir}"
3586 #endif /* __BUILD_AUTOCONF_H */
3589 if test -n "$t_cpu"; then
3590 TARGET_INC
="-I\$(FIRMDIR)/target/$t_cpu/$t_manufacturer/$t_model"
3592 if [ "$t_cpu" = "hosted" ] && [ "$t_manufacturer" = "maemo" ]; then
3593 # Maemo needs the SDL port, too
3594 TARGET_INC
="$TARGET_INC -I\$(FIRMDIR)/target/hosted/sdl/app"
3595 TARGET_INC
="$TARGET_INC -I\$(FIRMDIR)/target/hosted/sdl"
3596 elif [ "$t_cpu" = "hosted" ] && [ "$t_manufacturer" = "pandora" ]; then
3597 # Pandora needs the SDL port, too
3598 TARGET_INC
="$TARGET_INC -I\$(FIRMDIR)/target/hosted/sdl/app"
3599 TARGET_INC
="$TARGET_INC -I\$(FIRMDIR)/target/hosted/sdl"
3600 elif [ "$simulator" = "yes" ]; then # a few more includes for the sim target tree
3601 TARGET_INC
="$TARGET_INC -I\$(FIRMDIR)/target/hosted/sdl"
3602 TARGET_INC
="$TARGET_INC -I\$(FIRMDIR)/target/hosted"
3605 TARGET_INC
="$TARGET_INC -I\$(FIRMDIR)/target/$t_cpu/$t_manufacturer"
3606 TARGET_INC
="$TARGET_INC -I\$(FIRMDIR)/target/$t_cpu"
3610 if test "$swcodec" = "yes"; then
3611 voicetoolset
="rbspeexenc voicefont wavtrim"
3613 voicetoolset
="voicefont wavtrim"
3616 if test "$apps" = "apps"; then
3617 # only when we build "real" apps we build the .lng files
3621 #### Fix the cmdline ###
3622 if [ -n "$ARG_PREFIX" ]; then
3623 cmdline
="$cmdline --prefix=\$(PREFIX)"
3625 if [ -n "$ARG_LCDWIDTH" ]; then
3626 cmdline
="$cmdline --lcdwidth=$ARG_LCDWIDTH --lcdheight=$ARG_LCDHEIGHT "
3629 # remove parts from the cmdline we're going to set unconditionally
3630 cmdline
=`echo $cmdline | sed -e s,--target=[a-zA-Z_0-9]\*,,g \
3631 -e s,--ram=[0-9]\*,,g \
3632 -e s,--rbdir=[./a-zA-Z0-9]\*,,g \
3633 -e s,--type=[a-zA-Z]\*,,g`
3634 cmdline
="$cmdline --target=\$(MODELNAME) --ram=\$(MEMORYSIZE) --rbdir=\$(RBDIR) --type=$btype$advopts"
3638 cat > Makefile
<<EOF
3639 ## Automatically generated. http://www.rockbox.org/
3641 export ROOTDIR=${rootdir}
3642 export FIRMDIR=\$(ROOTDIR)/firmware
3643 export APPSDIR=${appsdir}
3644 export TOOLSDIR=${toolsdir}
3645 export DOCSDIR=${rootdir}/docs
3646 export MANUALDIR=${rootdir}/manual
3647 export DEBUG=${debug}
3648 export MODELNAME=${modelname}
3649 export ARCHOSROM=${archosrom}
3650 export FLASHFILE=${flash}
3651 export TARGET_ID=${target_id}
3652 export TARGET=${target}
3654 export MANUFACTURER=${t_manufacturer}
3655 export OBJDIR=${pwd}
3656 export BUILDDIR=${pwd}
3657 export LANGUAGE=${language}
3658 export VOICELANGUAGE=${voicelanguage}
3659 export MEMORYSIZE=${memory}
3660 export BUILDDATE:=\$(shell date -u +'-DYEAR=%Y -DMONTH=%m -DDAY=%d')
3661 export MKFIRMWARE=${tool}
3662 export BMP2RB_MONO=${bmp2rb_mono}
3663 export BMP2RB_NATIVE=${bmp2rb_native}
3664 export BMP2RB_REMOTEMONO=${bmp2rb_remotemono}
3665 export BMP2RB_REMOTENATIVE=${bmp2rb_remotenative}
3666 export BINARY=${output}
3667 export APPEXTRA=${appextra}
3668 export ENABLEDPLUGINS=${plugins}
3669 export SOFTWARECODECS=${swcodec}
3670 export EXTRA_DEFINES=${extradefines}
3671 export HOSTCC=${HOSTCC}
3672 export HOSTAR=${HOSTAR}
3678 export WINDRES=${WINDRES}
3679 export DLLTOOL=${DLLTOOL}
3680 export DLLWRAP=${DLLWRAP}
3681 export RANLIB=${RANLIB}
3682 export PREFIX=${ARG_PREFIX}
3683 export PROFILE_OPTS=${PROFILE_OPTS}
3684 export APP_TYPE=${app_type}
3685 export APPLICATION=${application}
3686 export SIMDIR=\$(ROOTDIR)/uisimulator/sdl
3687 export GCCOPTS=${GCCOPTS}
3688 export TARGET_INC=${TARGET_INC}
3689 export LOADADDRESS=${loadaddress}
3690 export SHARED_LDFLAG=${SHARED_LDFLAG}
3691 export SHARED_CFLAGS=${SHARED_CFLAGS}
3692 export LDOPTS=${LDOPTS}
3693 export GLOBAL_LDOPTS=${GLOBAL_LDOPTS}
3694 export GCCVER=${gccver}
3695 export GCCNUM=${gccnum}
3696 export UNAME=${uname}
3697 export MANUALDEV=${manualdev}
3698 export TTS_OPTS=${TTS_OPTS}
3699 export TTS_ENGINE=${TTS_ENGINE}
3700 export ENC_OPTS=${ENC_OPTS}
3701 export ENCODER=${ENCODER}
3702 export USE_ELF=${USE_ELF}
3703 export RBDIR=${rbdir}
3704 export ROCKBOX_SHARE_PATH=${sharedir}
3705 export ROCKBOX_BINARY_PATH=${bindir}
3706 export ROCKBOX_LIBRARY_PATH=${libdir}
3707 export SDLCONFIG=${sdl}
3708 export LCDORIENTATION=${lcd_orientation}
3710 CONFIGURE_OPTIONS=${cmdline}
3712 include \$(TOOLSDIR)/root.make
3715 echo "Created Makefile"