| #!/bin/sh |
| # __________ __ ___. |
| # Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| # \/ \/ \/ \/ \/ |
| # $Id$ |
| # |
| |
| # global CC options for all platforms |
| CCOPTS="-W -Wall -O -nostdlib -ffreestanding -Wstrict-prototypes" |
| |
| # |
| # Begin Function Definitions |
| # |
| input() { |
| read response |
| echo $response |
| } |
| |
| shcc () { |
| CC=sh-elf-gcc |
| LD=sh-elf-ld |
| AR=sh-elf-ar |
| AS=sh-elf-as |
| OC=sh-elf-objcopy |
| GCCOPTS="$CCOPTS -m1" |
| GCCOPTIMIZE="-fomit-frame-pointer -fschedule-insns" |
| } |
| |
| coldfirecc () { |
| CC=m68k-elf-gcc |
| LD=m68k-elf-ld |
| AR=m68k-elf-ar |
| AS=m68k-elf-as |
| OC=m68k-elf-objcopy |
| GCCOPTS="$CCOPTS -g -m5200 -Wa\,-m5249" |
| GCCOPTIMIZE="-fomit-frame-pointer" |
| } |
| |
| whichsim () { |
| |
| if [ -z "$simver" ]; then |
| |
| ################################################################## |
| # Figure out win32/x11 GUI |
| # |
| echo "" |
| echo "Build (W)in32 or (X)11 GUI version? (X)" |
| |
| option=`input`; |
| |
| case $option in |
| [Ww]) |
| simver="win32" |
| ;; |
| *) |
| simver="x11" |
| ;; |
| esac |
| echo "Selected $simver simulator" |
| fi |
| } |
| |
| |
| simul () { |
| |
| sed > Makefile \ |
| -e "s,@ROOTDIR@,${rootdir},g" \ |
| -e "s,@ARCHOS@,${archos},g" \ |
| -e "s,@DEBUG@,${debug},g" \ |
| -e "s,@KEYPAD@,${keypad},g" \ |
| -e "s,@PWD@,${pwd},g" \ |
| -e "s,@LANGUAGE@,${language},g" \ |
| -e "s,@TARGET@,${target},g" \ |
| -e "s,@SIMVER@,${simver},g" \ |
| <<EOF |
| ## Automaticly generated. http://rockbox.haxx.se |
| |
| export ARCHOS=@ARCHOS@ |
| export ROOTDIR=@ROOTDIR@ |
| export FIRMDIR=\$(ROOTDIR)/firmware |
| export APPSDIR=\$(ROOTDIR)/apps |
| export TOOLSDIR=\$(ROOTDIR)/tools |
| export DOCSDIR=\$(ROOTDIR)/docs |
| export APPSDIR=@ROOTDIR@/apps |
| export SIMDIR=\$(ROOTDIR)/uisimulator/@SIMVER@ |
| export DEBUG=@DEBUG@ |
| export KEYPAD=@KEYPAD@ |
| export OBJDIR=@PWD@ |
| export SIMVER=@SIMVER@ |
| export TARGET=@TARGET@ |
| export LANGUAGE=@LANGUAGE@ |
| export VERSION=\$(shell date +%y%m%d-%H%M) |
| |
| .PHONY: |
| |
| all: sim |
| |
| sim: |
| \$(MAKE) -C \$(SIMDIR) |
| |
| clean: |
| \$(MAKE) -C \$(SIMDIR) clean |
| rm -rf rockbox.zip |
| |
| tags: |
| @rm -f TAGS |
| make -C \$(SIMDIR) tags |
| |
| zip: |
| \$(TOOLSDIR)/buildzip.pl -r "\$(ROOTDIR)" sim\$(TARGET) |
| |
| install: |
| @echo "installing a full setup in your archos dir" |
| @(make zip && cd archos && unzip -oq ../rockbox.zip) |
| EOF |
| |
| echo "Created Makefile" |
| |
| if [ -d "archos" ]; then |
| echo "sub directory archos already present" |
| else |
| mkdir archos |
| echo "created an archos subdirectory for simulating the hard disk" |
| fi |
| |
| } |
| |
| picklang() { |
| # figure out which languages that are around |
| for file in $rootdir/apps/lang/*.lang; do |
| clean=`echo $file | sed -e 's:.*/::g' | cut "-d." -f1` |
| langs="$langs $clean" |
| done |
| |
| num=1 |
| for one in $langs; do |
| echo "$num. $one" |
| num=`expr $num + 1` |
| done |
| |
| read pick |
| return $pick; |
| } |
| |
| whichlang() { |
| num=1 |
| for one in $langs; do |
| if [ "$num" = "$pick" ]; then |
| echo $one |
| return |
| fi |
| num=`expr $num + 1` |
| done |
| } |
| |
| target=$1 |
| debug=$2 |
| |
| 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!" |
| exit |
| 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://rockbox.haxx.se/docs/" |
| 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 |
| |
| if [ -z "$archos" ]; then |
| |
| ################################################################## |
| # Figure out target platform |
| # |
| |
| echo "Enter target platform: (default is Archos Recorder)" |
| |
| echo "1 - Archos Player/Studio" |
| echo "2 - Archos Recorder" |
| echo "3 - Archos FM Recorder" |
| echo "4 - Archos Recorder v2" |
| echo "7 - Archos Ondio SP" |
| echo "8 - Archos Ondio FM" |
| echo "9 - Iriver H100" |
| |
| getit=`input`; |
| |
| case $getit in |
| |
| 1) |
| archos="player" |
| target="-DARCHOS_PLAYER" |
| shcc |
| tool="$rootdir/tools/scramble" |
| output="archos.mod" |
| appextra="player" |
| archosrom="$pwd/rombox.ucl" |
| flash="$pwd/rockbox.ucl" |
| plugins="yes" |
| ;; |
| |
| 3) |
| archos="fmrecorder" |
| target="-DARCHOS_FMRECORDER" |
| shcc |
| tool="$rootdir/tools/scramble -fm" |
| output="ajbrec.ajz" |
| appextra="recorder" |
| archosrom="$pwd/rombox.ucl" |
| flash="$pwd/rockbox.ucl" |
| plugins="yes" |
| ;; |
| |
| 4) |
| archos="recorderv2" |
| target="-DARCHOS_RECORDERV2" |
| shcc |
| tool="$rootdir/tools/scramble -v2" |
| output="ajbrec.ajz" |
| appextra="recorder" |
| archosrom="$pwd/rombox.ucl" |
| flash="$pwd/rockbox.ucl" |
| plugins="yes" |
| ;; |
| |
| 7) |
| archos="ondiosp" |
| target="-DARCHOS_ONDIOSP" |
| shcc |
| tool="$rootdir/tools/scramble -osp" |
| output="ajbrec.ajz" |
| appextra="recorder" |
| archosrom="$pwd/rombox.ucl" |
| flash="$pwd/rockbox.ucl" |
| plugins="yes" |
| ;; |
| |
| 8) |
| archos="ondiofm" |
| target="-DARCHOS_ONDIOFM" |
| shcc |
| tool="$rootdir/tools/scramble -ofm" |
| output="ajbrec.ajz" |
| appextra="recorder" |
| archosrom="$pwd/rombox.ucl" |
| flash="$pwd/rockbox.ucl" |
| plugins="yes" |
| ;; |
| |
| 9) |
| archos="h100" |
| target="-DIRIVER_H100" |
| memory=32 # always |
| coldfirecc |
| tool="cp" |
| output="rockbox.iriver" |
| appextra="recorder" |
| archosrom="" |
| flash="" |
| plugins="" |
| ;; |
| |
| *) |
| archos="recorder" |
| target="-DARCHOS_RECORDER" |
| shcc |
| tool="$rootdir/tools/scramble" |
| output="ajbrec.ajz" |
| appextra="recorder" |
| archosrom="$pwd/rombox.ucl" |
| flash="$pwd/rockbox.ucl" |
| plugins="yes" |
| ;; |
| |
| esac |
| |
| echo "Platform set to $archos" |
| |
| fi |
| |
| 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 |
| |
| if [ -z "$debug" ]; then |
| ################################################################## |
| # Figure out debug on/off |
| # |
| echo "Build (N)ormal, (D)ebug or (S)imulated version? (N)" |
| |
| option=`input`; |
| |
| case $option in |
| [Ss]) |
| debug="1" |
| simulator="yes" |
| echo "Simulator build selected" |
| whichsim |
| ;; |
| [Dd]) |
| debug="1" |
| echo "Debug build selected" |
| GCCOPTS="$GCCOPTS -g -DDEBUG" |
| ;; |
| *) |
| debug="" |
| echo "Normal build selected" |
| GCCOPTS="$GCCOPTS $GCCOPTIMIZE" |
| ;; |
| |
| esac |
| fi |
| |
| |
| if [ -z "$language" ]; then |
| |
| echo "Select a number for the language to use (default is english)" |
| |
| picklang |
| language=`whichlang` |
| |
| if [ -z "$language" ]; then |
| # pick a default |
| language="english" |
| fi |
| echo "Language set to $language" |
| fi |
| |
| if [ "yes" = "$simulator" ]; then |
| # we have already dealt with the simulator Makefile separately |
| simul |
| exit |
| fi |
| |
| sed > Makefile \ |
| -e "s,@ROOTDIR@,${rootdir},g" \ |
| -e "s,@DEBUG@,${debug},g" \ |
| -e "s,@MEMORY@,${memory},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,@TOOL@,${tool},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,@GCCOPTS@,${GCCOPTS},g" \ |
| <<EOF |
| ## Automaticly generated. http://rockbox.haxx.se |
| |
| export ROOTDIR=@ROOTDIR@ |
| export FIRMDIR=\$(ROOTDIR)/firmware |
| export APPSDIR=\$(ROOTDIR)/apps |
| export TOOLSDIR=\$(ROOTDIR)/tools |
| export DOCSDIR=\$(ROOTDIR)/docs |
| export DEBUG=@DEBUG@ |
| export ARCHOS=@ARCHOS@ |
| export ARCHOSROM=@ARCHOSROM@ |
| export FLASHFILE=@FLASHFILE@ |
| export TARGET=@TARGET@ |
| export OBJDIR=@PWD@ |
| export LANGUAGE=@LANGUAGE@ |
| export MEMORYSIZE=@MEMORY@ |
| export VERSION=\$(shell date +%y%m%d-%H%M) |
| export MKFIRMWARE=@TOOL@ |
| export BINARY=@OUTPUT@ |
| export APPEXTRA=@APPEXTRA@ |
| export ENABLEDPLUGINS=@PLUGINS@ |
| export CC=@CC@ |
| export LD=@LD@ |
| export AR=@AR@ |
| export AS=@AS@ |
| export OC=@OC@ |
| export GCCOPTS=@GCCOPTS@ |
| |
| .PHONY: all clean tags zip |
| |
| all: |
| @\$(MAKE) -C \$(FIRMDIR) |
| @\$(MAKE) -C \$(APPSDIR) |
| |
| clean: |
| @\$(MAKE) -C \$(FIRMDIR) clean |
| @\$(MAKE) -C \$(APPSDIR) clean |
| @rm -f rockbox.zip TAGS |
| |
| tags: |
| @rm -f TAGS |
| \$(MAKE) -C \$(FIRMDIR) tags |
| \$(MAKE) -C \$(APPSDIR) tags |
| \$(MAKE) -C \$(APPSDIR)/plugins tags |
| \$(MAKE) -C \$(APPSDIR)/plugins/lib tags |
| |
| zip: |
| \$(TOOLSDIR)/buildzip.pl -r "\$(ROOTDIR)" \$(TARGET) |
| EOF |
| |
| echo "Created Makefile" |