#!/bin/sh # __________ __ ___. # Open \______ \ ____ ____ | | _\_ |__ _______ ___ # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # \/ \/ \/ \/ \/ # $Id$ # # global CC options for all platforms CCOPTS="-W -Wall -O -nostdlib -ffreestanding -Wstrict-prototypes" use_logf="#undef ROCKBOX_HAS_LOGF" use_simsound="#undef ROCKBOX_HAS_SIMSOUND" scriptver=`echo '$Revision$' | sed -e 's:\\$::g' -e 's/Revision: //'` # # Begin Function Definitions # input() { read response echo $response } prefixtools () { prefix="$1" CC=${prefix}gcc WINDRES=${prefix}windres DLLTOOL=${prefix}dlltool DLLWRAP=${prefix}dllwrap RANLIB=${prefix}ranlib LD=${prefix}ld AR=${prefix}ar AS=${prefix}as OC=${prefix}objcopy } crosswincc () { # naive approach to selecting a mingw cross-compiler on linux/*nix echo "Enabling win32 crosscompiling" prefixtools i586-mingw32msvc- LDOPTS="-lgdi32 -luser32 -mwindows" # add cross-compiler option(s) GCCOPTS="$GCCOPTS -mno-cygwin" output="rockboxui.exe" # use this as output binary name crosscompile="yes" endian="little" # windows is little endian } checksoundcard () { if test -n "$codecs"; then if test -f "/usr/include/sys/soundcard.h"; then # We have a header file so we can build the sound code use_simsound="#define ROCKBOX_HAS_SIMSOUND 1" echo "Enabled PCM sound playback in simulator" fi # header file present fi # has codecs } # scan the $PATH for the given command findtool(){ file="$1" IFS=":" for path in $PATH do # echo "checks for $file in $path" >&2 if test -f "$path/$file"; then echo "$path/$file" return fi done } simcc () { # default tool setup for native building prefixtools "" GCCOPTS='-W -Wall -g -fno-builtin' output="rockboxui" # use this as default output binary name if [ "$simver" = "sdl" ]; then # generic sdl-config checker sdl=`findtool sdl-config` if [ -z "$sdl" ]; then echo "configure didn't find sdl-config, which indicates that you" echo "don't have SDL (properly) installed. Please correct and" echo "re-run configure!" exit fi fi case $uname in CYGWIN*) echo "Cygwin host detected" if [ "$simver" = "win32" ]; then # win32 version GCCOPTS="$GCCOPTS -mno-cygwin -DNOCYGWIN" LDOPTS="-lgdi32 -luser32 -mno-cygwin" elif [ "$simver" = "sdl" ]; then # sdl version GCCOPTS="$GCCOPTS `sdl-config --cflags`" LDOPTS="`sdl-config --libs`" checksoundcard else # x11 version GCCOPTS="$GCCOPTS" LDOPTS='-L/usr/X11R6/lib -lSM -lICE -lXt -lX11 -lXmu -lSM -lICE -lX11 -lpthread' checksoundcard fi output="rockboxui.exe" # use this as output binary name ;; Linux) echo "Linux host detected" GCCOPTS="$GCCOPTS" if [ "$simver" = "win32" ]; then LDOPTS='-L/usr/X11R6/lib -lX11 -lm -lXt -lXmu -lnsl -ldl -lpthread' crosswincc # setup cross-compiler elif [ "$simver" = "sdl" ]; then GCCOPTS="$GCCOPTS `sdl-config --cflags`" LDOPTS="`sdl-config --libs`" checksoundcard else LDOPTS='-L/usr/X11R6/lib -lX11 -lm -lXt -lXmu -lnsl -ldl -lpthread' checksoundcard fi # not a cross-compiler ;; FreeBSD) echo "FreeBSD host detected" LDOPTS='-L/usr/X11R6/lib -lX11 -lm -lXt -lXmu -dl -lpthread' if [ "$simver" = "win32" ]; then crosswincc # setup cross-compiler fi ;; *) echo "Unsupported system: $uname, fix configure and retry" exit ;; esac if [ `uname -m` = "x86_64" ]; then GCCOPTS="$GCCOPTS -fPIC" # needed to make shared objects link fi if test "X$crosscompile" != "Xyes"; then id=$$ cat >/tmp/conftest-$id.c < int main(int argc, char **argv) { int var=0; char *varp = (char *)&var; *varp=1; printf("%d\n", var); return 0; } EOF $CC -o /tmp/conftest-$id /tmp/conftest-$id.c 2>/dev/null if test `/tmp/conftest-$id 2>/dev/null` -gt "1"; then # big endian endian="big" else # little endian endian="little" fi echo "Simulator environment deemed $endian endian" # use wildcard here to make it work even if it was named *.exe like # on cygwin rm -f /tmp/conftest-$id* fi } shcc () { prefixtools sh-elf- GCCOPTS="$CCOPTS -m1" GCCOPTIMIZE="-fomit-frame-pointer -fschedule-insns" endian="big" } calmrisccc () { prefixtools calmrisc16-unknown-elf- GCCOPTS="-Wl\,--no-check-sections $CCOPTS" GCCOPTIMIZE="-fomit-frame-pointer" endian="big" } coldfirecc () { prefixtools m68k-elf- GCCOPTS="$CCOPTS -g -m5200 -Wa\,-m5249 -malign-int -mstrict-align" GCCOPTIMIZE="-fomit-frame-pointer" endian="big" } arm7tdmicc () { prefixtools arm-elf- GCCOPTS="$CCOPTS -mcpu=arm7tdmi" if test "X$1" != "Xshort"; then GCCOPTS="$GCCOPTS -ffunction-sections -mlong-calls" fi GCCOPTIMIZE="-fomit-frame-pointer" endian="little" } arm9tdmicc () { prefixtools arm-elf- GCCOPTS="$CCOPTS -mcpu=arm9tdmi -ffunction-sections -mlong-calls" GCCOPTIMIZE="-fomit-frame-pointer" endian="little" } whichaddr () { case $archos in gmini120|gminisp) echo "" echo "Where do you want the firmware to be flashed?" echo "WARNING: Do not answer this question lightly," echo "unless you don't plan to flash your gmini." echo "In this case, reply '0x10000' (no quotes) and " echo "re-configure when you know better." loadaddress=`input` if [ "0$loadaddress" = "0" ]; then #default loadaddress="0x10000"; fi echo "You selected $loadaddress" ;; *) ;; esac } whichdevel () { ################################################################## # Prompt for specific developer options # echo "" echo "Enter your developer options (press enter when done)" echo "(D)EBUG, (L)ogf, (S)imulator, (P)rofiling" cont=1 while [ $cont = "1" ]; do option=`input`; case $option in [Dd]) if [ "yes" = "$profile" ]; then echo "Debug is incompatible with profiling" else echo "define DEBUG" use_debug="yes" fi ;; [Ll]) echo "logf() support enabled" logf="yes" ;; [Ss]) echo "Simulator build enabled" simulator="yes" ;; [Pp]) if [ "yes" = "$use_debug" ]; then echo "Profiling is incompatible with debug" else echo "Profiling support is enabled" profile="yes" fi ;; *) echo "done" cont=0 ;; esac done if [ "yes" = "$use_debug" ]; then debug="-DDEBUG" GCCOPTS="$GCCOPTS -g -DDEBUG" fi if [ "yes" = "$logf" ]; then use_logf="#define ROCKBOX_HAS_LOGF 1" fi if [ "yes" = "$simulator" ]; then debug="-DDEBUG" extradefines="$extradefines -DSIMULATOR" whichsim fi if [ "yes" = "$profile" ]; then extradefines="$extradefines -DRB_PROFILE" PROFILE_OPTS="-finstrument-functions" GCCOPTS="$GCCOPTS $GCCOPTIMIZE" fi } whichsim () { if [ -z "$simver" ]; then ################################################################## # Figure out what simulator version # # x11 is deprecated so hide it from the question # win32 is also deprecated # echo "" echo "Build (S)DL version? (S)" option=`input`; case $option in [Ww]) simver="win32" WINDRES=windres DLLTOOL=dlltool DLLWRAP=dllwrap # make sure the code knows this is for win32 extradefines="$extradefines -DWIN32" ;; [Xx]) simver="x11" extradefines="$extradefines -DX11" ;; [Ss]|*) simver="sdl" extradefines="$extradefines -DSDL" ;; esac echo "Selected $simver simulator" fi } if test "$1" = "--help"; then echo "Rockbox configure script." echo "Invoke this in a directory to generate a Makefile to build Rockbox" echo "Do *NOT* run this within the tools directory!" echo "" echo "Usage: configure [--ccache]" exit fi if test "$1" = "--ccache"; then echo "Enable ccache for building" ccache="yes" fi if test -r "configure"; then # this is a check for a configure script in the current directory, it there # is one, try to figure out if it is this one! if { grep "^# Jukebox" configure >/dev/null 2>&1 ; } then echo "WEEEEEEEEP. Don't run this configure script within the tools directory." echo "It will only cause you pain and grief. Instead do this:" echo "" echo " cd .." echo " mkdir build-dir" echo " cd build-dir" echo " ../tools/configure" echo "" echo "Much happiness will arise from this. Enjoy" exit fi fi if [ "$target" = "--help" -o \ "$target" = "-h" ]; then echo "Just invoke the script and answer the questions." echo "This script will write a Makefile for you" exit fi # get our current directory pwd=`pwd`; if [ "$target" = "update" ]; then echo "configure update is unfortunately no longer supported" exit else echo "This script will setup your Rockbox build environment." echo "Further docs here: http://www.rockbox.org/" echo "" fi if [ -z "$rootdir" ]; then ################################################################## # Figure out where the source code root is! # firmfile="crt0.S" # a file to check for in the firmware root dir for dir in . .. ../.. ../rockbox*; do if [ -f $dir/firmware/$firmfile ]; then rootdir=$dir break fi done if [ -z "$rootdir" ]; then echo "This script couldn't find your source code root directory. Please enter the" echo "full path to the source code directory here:" firmdir=`input` fi ##################################################################### # Convert the possibly relative directory name to an absolute version # now=`pwd` cd $rootdir rootdir=`pwd` echo "Using this source code root directory:" echo $rootdir echo "" # cd back to the build dir cd $now fi apps="apps" appsdir='\$(ROOTDIR)/apps' firmdir='\$(ROOTDIR)/firmware' toolsdir='\$(ROOTDIR)/tools' ################################################################## # Figure out target platform # echo "Enter target platform:" echo "1 - Archos Player/Studio" echo "2 - Archos Recorder" echo "3 - Archos FM Recorder" echo "4 - Archos Recorder v2" echo "5 - Archos Gmini 120" echo "6 - Archos Gmini SP" echo "7 - Archos Ondio SP" echo "8 - Archos Ondio FM" echo "9 - iriver H120/H140" echo "10 - iriver H320/H340" echo "11 - iriver iHP-100/iHP-110/iHP-115" echo "12 - iAudio X5" echo "13 - iPod Color/Photo" echo "14 - iPod Nano" echo "15 - iPod Video" echo "16 - iPod 3G" echo "17 - iPod 4G (Grayscale)" echo "18 - iPod Mini (1G)" echo "19 - iriver iFP-790" echo "20 - Toshiba Gigabeat F" echo "21 - iPod Mini 2G" echo "22 - iriver H10" echo "23 - SanDisk Sansa e200" target_id=`input`; # Set of tools built for all target platforms: toolset="rdf2binary convbdf" # Toolsets for some target families: archosbitmaptools="$toolset scramble descramble sh2d uclpack bmp2rb codepages" iriverbitmaptools="$toolset scramble descramble mkboot bmp2rb codepages" iaudiobitmaptools="$toolset scramble descramble mkboot bmp2rb codepages" ipodbitmaptools="$toolset scramble ipod_fw bmp2rb codepages" # generic is used by Gigabeat, IFP, H10, Sansa-e200 genericbitmaptools="$toolset bmp2rb codepages" case $target_id in 1) archos="player" target="-DARCHOS_PLAYER" shcc tool="$rootdir/tools/scramble" output="archos.mod" appextra="player:gui" archosrom="$pwd/rombox.ucl" flash="$pwd/rockbox.ucl" plugins="yes" codecs="" # toolset is the tools within the tools directory that we build for # this particular target. toolset="$toolset scramble descramble sh2d generate_rocklatin uclpack" # Note: the convbdf is present in the toolset just because: 1) the # firmware/Makefile assumes it is present always, and 2) we will need it when we # build the player simulator ;; 2) archos="recorder" target="-DARCHOS_RECORDER" shcc tool="$rootdir/tools/scramble" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0" output="ajbrec.ajz" appextra="recorder:gui" archosrom="$pwd/rombox.ucl" flash="$pwd/rockbox.ucl" plugins="yes" codecs="" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$archosbitmaptools ;; 3) archos="fmrecorder" target="-DARCHOS_FMRECORDER" shcc tool="$rootdir/tools/scramble -fm" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0" output="ajbrec.ajz" appextra="recorder:gui" archosrom="$pwd/rombox.ucl" flash="$pwd/rockbox.ucl" plugins="yes" codecs="" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$archosbitmaptools ;; 4) archos="recorderv2" target="-DARCHOS_RECORDERV2" shcc tool="$rootdir/tools/scramble -v2" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0" output="ajbrec.ajz" appextra="recorder:gui" archosrom="$pwd/rombox.ucl" flash="$pwd/rockbox.ucl" plugins="yes" codecs="" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$archosbitmaptools ;; 5) archos="gmini120" target="-DARCHOS_GMINI120" memory=16 # fixed size (16 is a guess, remove comment when checked) calmrisccc tool="cp" # might work for now! bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0" output="rockbox.gmini" appextra="recorder:gui" archosrom="" flash="" plugins="" # disabled for now, enable later on codecs="libmad" # toolset is the tools within the tools directory that we build for # this particular target. toolset="$toolset bmp2rb codepages" ;; 6) archos="gminisp" target="-DARCHOS_GMINISP" memory=16 # fixed size (16 is a guess, remove comment when checked) calmrisccc tool="cp" # might work for now! bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0" output="rockbox.gmini" appextra="recorder:gui" archosrom="" flash="" plugins="" # disabled for now, enable later on codecs="libmad" # toolset is the tools within the tools directory that we build for # this particular target. toolset="$toolset bmp2rb codepages" ;; 7) archos="ondiosp" target="-DARCHOS_ONDIOSP" shcc tool="$rootdir/tools/scramble -osp" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0" output="ajbrec.ajz" appextra="recorder:gui" archosrom="$pwd/rombox.ucl" flash="$pwd/rockbox.ucl" plugins="yes" codecs="" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$archosbitmaptools ;; 8) archos="ondiofm" target="-DARCHOS_ONDIOFM" shcc tool="$rootdir/tools/scramble -ofm" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0" output="ajbrec.ajz" appextra="recorder:gui" archosrom="$pwd/rombox.ucl" flash="$pwd/rockbox.ucl" plugins="yes" codecs="" toolset=$archosbitmaptools ;; 9) archos="h120" target="-DIRIVER_H120" memory=32 # always coldfirecc tool="$rootdir/tools/scramble -add=h120" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 2" bmp2rb_remotemono="$rootdir/tools/bmp2rb -f 0" bmp2rb_remotenative="$rootdir/tools/bmp2rb -f 0" output="rockbox.iriver" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$iriverbitmaptools ;; 10) archos="h300" target="-DIRIVER_H300" memory=32 # always coldfirecc tool="$rootdir/tools/scramble -add=h300" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 4" bmp2rb_remotemono="$rootdir/tools/bmp2rb -f 0" bmp2rb_remotenative="$rootdir/tools/bmp2rb -f 0" output="rockbox.iriver" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$iriverbitmaptools ;; 11) archos="h100" target="-DIRIVER_H100" memory=16 # always coldfirecc tool="$rootdir/tools/scramble -add=h100" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 2" bmp2rb_remotemono="$rootdir/tools/bmp2rb -f 0" bmp2rb_remotenative="$rootdir/tools/bmp2rb -f 0" output="rockbox.iriver" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$iriverbitmaptools ;; 12) archos="x5" target="-DIAUDIO_X5" memory=16 # always coldfirecc tool="$rootdir/tools/scramble -add=iax5" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 4" bmp2rb_remotemono="$rootdir/tools/bmp2rb -f 0" bmp2rb_remotenative="$rootdir/tools/bmp2rb -f 7" output="rockbox.iaudio" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset="$iaudiobitmaptools" # architecture, manufacturer and model for the target-tree build t_cpu="coldfire" t_manufacturer="iaudio" t_model="x5" ;; 13) archos="ipodcolor" target="-DIPOD_COLOR" memory=32 # always arm7tdmicc tool="$rootdir/tools/scramble -add=ipco" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 5" output="rockbox.ipod" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$ipodbitmaptools ;; 14) archos="ipodnano" target="-DIPOD_NANO" memory=32 # always arm7tdmicc tool="$rootdir/tools/scramble -add=nano" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 5" output="rockbox.ipod" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$ipodbitmaptools ;; 15) archos="ipodvideo" target="-DIPOD_VIDEO" memory=32 # 30GB models have 32MB, 60GB have 64MB arm7tdmicc tool="$rootdir/tools/scramble -add=ipvd" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 4" output="rockbox.ipod" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$ipodbitmaptools ;; 16) archos="ipod3g" target="-DIPOD_3G" memory=32 # always arm7tdmicc tool="$rootdir/tools/scramble -add=ip3g" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 6" output="rockbox.ipod" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$ipodbitmaptools ;; 17) archos="ipod4g" target="-DIPOD_4G" memory=32 # always arm7tdmicc tool="$rootdir/tools/scramble -add=ip4g" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 6" output="rockbox.ipod" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$ipodbitmaptools ;; 18) archos="ipodmini" target="-DIPOD_MINI" memory=32 # always arm7tdmicc tool="$rootdir/tools/scramble -add=mini" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 6" output="rockbox.ipod" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$ipodbitmaptools ;; 19) archos="ifp7xx" target="-DIRIVER_IFP7XX" memory=1 arm7tdmicc short tool="cp" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 0" output="rockbox.wma" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$genericbitmaptools ;; 20) archos="gigabeatf" target="-DGIGABEAT_F" memory=32 # always arm9tdmicc tool="cp" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 4" output="rockbox.gigabeat" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" toolset=$genericbitmaptools # architecture, manufacturer and model for the target-tree build t_cpu="arm" t_manufacturer="gigabeat" t_model="meg-fx" ;; 21) archos="ipodmini2g" target="-DIPOD_MINI2G" memory=32 # always arm7tdmicc tool="$rootdir/tools/scramble -add=mn2g" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 6" output="rockbox.ipod" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$ipodbitmaptools ;; 22) archos="h10" target="-DIRIVER_H10" memory=32 # always arm7tdmicc tool="$rootdir/tools/mkmi4.sh h10" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 5" output="H10_20GC.mi4" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$genericbitmaptools # architecture, manufacturer and model for the target-tree build t_cpu="arm" t_manufacturer="iriver" t_model="h10" ;; 23) archos="e200" target="-DSANSA_E200" memory=32 # supposedly arm7tdmicc tool="$rootdir/tools/mkmi4.sh e200" bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" bmp2rb_native="$rootdir/tools/bmp2rb -f 5" output="PP5022.mi4" appextra="recorder:gui" archosrom="" flash="" plugins="yes" codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" # toolset is the tools within the tools directory that we build for # this particular target. toolset=$genericbitmaptools # architecture, manufacturer and model for the target-tree build t_cpu="arm" t_manufacturer="sandisk" t_model="sansa-e200" ;; *) echo "Please select an actual target platform!" exit ;; esac echo "Platform set to $archos" ############################################################################ # Amount of memory, for those that can differ. # if [ -z "$memory" ]; then size="2" if [ -z "$update" ]; then echo "Enter size of your RAM (in MB): (defaults to 2)" size=`input`; fi case $size in 8) memory="8" ;; *) memory="2" ;; esac echo "Memory size selected: $memory MB" fi ################################################################## # Figure out build "type" # # the ifp7x0 is the only platform that supports building a gdb stub like # this case $archos in ifp7xx) gdbstub="(G)DB stub, " ;; *) ;; esac echo "" echo "Build (N)ormal, (D)evel, (S)imulator, (B)ootloader, $gdbstub(M)anual? (N)" option=`input`; case $option in [Bb]) case $archos in h100|h120|h300|x5|ipodcolor|ipodnano|ipodvideo|ipod3g|ipod4g|ipodmini|ipodmini2g|gigabeatf|h10|e200) extradefines="-DBOOTLOADER" # for target makefile symbol EXTRA_DEFINES appsdir='\$(ROOTDIR)/bootloader' apps="bootloader" ;; *) extradefines="-DBOOTLOADER -ffunction-sections -fdata-sections" appsdir='\$(ROOTDIR)/flash/bootbox' apps="bootbox" ;; esac bootloader="1" echo "Bootloader build selected" ;; [Ss]) debug="-DDEBUG" simulator="yes" extradefines="-DSIMULATOR" echo "Simulator build selected" whichsim ;; [Dd]) echo "Devel build selected" whichdevel ;; [Gg]) extradefines="-DSTUB" # for target makefile symbol EXTRA_DEFINES appsdir='\$(ROOTDIR)/gdb' apps="stub" case $archos in ifp7xx) output="stub.wma" ;; *) ;; esac echo "GDB stub build selected" ;; [Mm]) appsdir='\$(ROOTDIR)/manual' firmdir='\$(ROOTDIR)/manual/platform' # No Makefile here. Effectively ignores target toolsdir=$firmdir; toolset=''; apps="manual" case $archos in fmrecorder) archos="recorderv2fm" ;; recorderv2) archos="recorderv2fm" ;; h1??) archos="h1xx" ;; ipodmini2g) archos="ipodmini" ;; *) ;; esac echo "Manual build selected" ;; *) debug="" echo "Normal build selected" GCCOPTS="$GCCOPTS $GCCOPTIMIZE" ;; esac whichaddr # this was once possible to change at build-time, but no more: language="english" uname=`uname` if [ "yes" = "$simulator" ]; then # setup compiler and things for simulator simcc if [ -d "archos" ]; then echo "sub directory archos already present" else mkdir archos echo "created an archos subdirectory for simulating the hard disk" fi fi # Now, figure out version number of the (gcc) compiler we are about to use gccver=`$CC -dumpversion`; if [ -z "$gccver" ]; then echo "WARNING: The compiler you must use ($CC) is not in your path!" echo "WARNING: this may cause your build to fail since we cannot do the" echo "WARNING: checks we want now." else # gccver should now be "3.3.5", "3.4.3", "2.95.3-6" and similar, but don't # DEPEND on it num1=`echo $gccver | cut -d . -f1` num2=`echo $gccver | cut -d . -f2` gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null` # This makes: # 3.3.X => 303 # 3.4.X => 304 # 2.95.3 => 295 echo "Using $CC $gccver ($gccnum)" if test "$gccnum" -ge "400"; then # gcc 4.0 is just *so* much pickier on arguments that differ in signedness # so we ignore that warnings for now # -Wno-pointer-sign GCCOPTS="$GCCOPTS -Wno-pointer-sign" fi fi # check the compiler for SH platforms if test "$CC" = "sh-elf-gcc"; then if test "$gccnum" -lt "400"; then echo "WARNING: Consider upgrading your compiler to the 4.0.X series!" echo "WARNING: http://www.rockbox.org/twiki/bin/view/Main/CrossCompiler" else # figure out patch status gccpatch=`$CC --version`; if { echo $gccpatch | grep "rockbox" >/dev/null 2>&1; } then echo "gcc $gccver is rockbox patched" # then convert -O to -Os to get smaller binaries! GCCOPTS=`echo $GCCOPTS | sed 's/ -O / -Os /'` else echo "WARNING: You use an unpatched gcc compiler: $gccver" echo "WARNING: http://www.rockbox.org/twiki/bin/view/Main/CrossCompiler" fi fi fi if test "X$ccache" = "Xyes"; then CC="ccache $CC" fi if test "X$endian" = "Xbig"; then defendian="ROCKBOX_BIG_ENDIAN" else defendian="ROCKBOX_LITTLE_ENDIAN" fi sed > autoconf.h \ -e "s,@ENDIAN@,${defendian},g" \ -e "s,^#undef ROCKBOX_HAS_LOGF,$use_logf,g" \ -e "s,@SIMSOUND@,$use_simsound,g" \ < Makefile \ -e "s,@ROOTDIR@,${rootdir},g" \ -e "s,@DEBUG@,${debug},g" \ -e "s,@MEMORY@,${memory},g" \ -e "s,@TARGET_ID@,${target_id},g" \ -e "s,@TARGET@,${target},g" \ -e "s,@ARCHOS@,${archos},g" \ -e "s,@LANGUAGE@,${language},g" \ -e "s,@PWD@,${pwd},g" \ -e "s,@CC@,${CC},g" \ -e "s,@LD@,${LD},g" \ -e "s,@AR@,${AR},g" \ -e "s,@AS@,${AS},g" \ -e "s,@OC@,${OC},g" \ -e "s,@WINDRES@,${WINDRES},g" \ -e "s,@DLLTOOL@,${DLLTOOL},g" \ -e "s,@DLLWRAP@,${DLLWRAP},g" \ -e "s,@RANLIB@,${RANLIB},g" \ -e "s,@TOOL@,${tool},g" \ -e "s,@BMP2RB_NATIVE@,${bmp2rb_native},g" \ -e "s,@BMP2RB_MONO@,${bmp2rb_mono},g" \ -e "s,@BMP2RB_REMOTENATIVE@,${bmp2rb_remotenative},g" \ -e "s,@BMP2RB_REMOTEMONO@,${bmp2rb_remotemono},g" \ -e "s,@OUTPUT@,${output},g" \ -e "s,@APPEXTRA@,${appextra},g" \ -e "s,@ARCHOSROM@,${archosrom},g" \ -e "s,@FLASHFILE@,${flash},g" \ -e "s,@PLUGINS@,${plugins},g" \ -e "s,@CODECS@,${codecs},g" \ -e "s,@PROFILE_OPTS@,${PROFILE_OPTS},g" \ -e "s,@GCCOPTS@,${GCCOPTS},g" \ -e "s,@TARGET_INC@,${TARGET_INC},g" \ -e "s!@LDOPTS@!${LDOPTS}!g" \ -e "s,@LOADADDRESS@,${loadaddress},g" \ -e "s,@EXTRADEF@,${extradefines},g" \ -e "s,@APPSDIR@,${appsdir},g" \ -e "s,@FIRMDIR@,${firmdir},g" \ -e "s,@TOOLSDIR@,${toolsdir},g" \ -e "s,@APPS@,${apps},g" \ -e "s,@SIMVER@,${simver},g" \ -e "s,@GCCVER@,${gccver},g" \ -e "s,@GCCNUM@,${gccnum},g" \ -e "s,@UNAME@,${uname},g" \ -e "s,@ENDIAN@,${defendian},g" \ -e "s,@TOOLSET@,${toolset},g" \ -e "${simmagic1}" \ -e "${simmagic2}" \ <> Makefile <