| #!/bin/sh |
| # __________ __ ___. |
| # Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| # \/ \/ \/ \/ \/ |
| # $Id$ |
| # |
| |
| |
| # |
| # Begin Function Definitions |
| # |
| input() { |
| read response |
| echo $response |
| } |
| |
| 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 |
| fi |
| } |
| |
| |
| simul () { |
| |
| ################################################################## |
| # Figure out where the firmware code is! |
| # |
| |
| # a file to check for in the uisimulator root dir |
| simfile="$simver/lcd-$simver.c" |
| |
| for dir in uisimulator . .. ../uisimulator ../../uisimulator; do |
| if [ -f "$dir/$simfile" ]; then |
| simdir="$dir/$simver" |
| break |
| fi |
| done |
| |
| if [ -z "$simdir" ]; then |
| echo "This script couldn't find your uisimulator/$simver directory. Please enter the" |
| echo "full path to your uisimulator/$simver directory here:" |
| |
| simdir=`input` |
| fi |
| |
| sed > Makefile \ |
| -e "s,@SIMDIR@,${simdir},g" \ |
| -e "s,@TARGET@,${target},g" \ |
| -e "s,@DEBUG@,${debug},g" \ |
| -e "s,@DISPLAY@,${display},g" \ |
| -e "s,@KEYPAD@,${keypad},g" \ |
| -e "s,@PWD@,${pwd},g" \ |
| -e "s,@LANGUAGE@,${language},g" \ |
| -e "s,@SIMVER@,${simver},g" \ |
| -e "s,@EXTRA_DEFINES@,${extra_defines},g" \ |
| <<EOF |
| ## Automaticly generated. http://rockbox.haxx.se |
| |
| SIMDIR=@SIMDIR@ |
| DEBUG=@DEBUG@ |
| TARGET=@TARGET@ |
| DISPLAY=@DISPLAY@ |
| KEYPAD=@KEYPAD@ |
| THISDIR="@PWD@" |
| SIMVER=@SIMVER@ |
| LANGUAGE=@LANGUAGE@ |
| VERSION=\$(shell date +%y%m%d-%H%M) |
| EXTRA_DEFINES=@EXTRA_DEFINES@ |
| |
| .PHONY: |
| |
| all: sim |
| |
| sim: |
| \$(MAKE) -C \$(SIMDIR) DISPLAY=\$(DISPLAY) KEYPAD=\$(KEYPAD) OBJDIR=\$(THISDIR) VERSION=\$(VERSION) LANGUAGE=\$(LANGUAGE) EXTRA_DEFINES="\$(EXTRA_DEFINES)" |
| |
| clean: |
| \$(MAKE) -C \$(SIMDIR) DISPLAY=\$(DISPLAY) KEYPAD=\$(KEYPAD) OBJDIR=\$(THISDIR) clean |
| |
| tags: |
| @rm -f TAGS |
| make -C \$(SIMDIR) DISPLAY=\$(DISPLAY) KEYPAD=\$(KEYPAD) OBJDIR=\$(THISDIR) tags |
| |
| 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 $appsdir/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 |
| } |
| |
| |
| # |
| # Beging Build Script |
| # |
| |
| 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 |
| target="" |
| if [ -f Makefile ]; then |
| if { grep "^## Auto" Makefile >/dev/null 2>&1 ; } then |
| echo "Existing generated Makefile found. Getting defaults from it." |
| target=`grep "^TARGET=" Makefile | cut -d= -f2-` |
| debug=`grep "^DEBUG=" Makefile | cut -d= -f2-` |
| language=`grep "^LANGUAGE=" Makefile | cut -d= -f2-` |
| extra_defines=`grep "^EXTRA_DEFINES=" Makefile | cut -d= -f2-` |
| |
| if [ "$debug" = "SIMULATOR=1" ]; then |
| simulator="yes" |
| display=`grep "^DISPLAY=" Makefile | cut -d= -f2-` |
| keypad=`grep "^KEYPAD=" Makefile | cut -d= -f2-` |
| simver=`grep "^SIMVER=" Makefile | cut -d= -f2-` |
| fi |
| fi |
| fi |
| else |
| |
| echo "Setup your Rockbox build environment." |
| echo "http://rockbox.haxx.se/" |
| echo "" |
| |
| fi |
| |
| if [ -z "$target" ]; then |
| |
| ################################################################## |
| # Figure out target platform |
| # |
| |
| echo "Enter target platform: (defaults to Recorder)" |
| |
| echo "1 - Archos Player/Studio" |
| echo "2 - Archos Recorder" |
| |
| getit=`input`; |
| |
| case $getit in |
| |
| 1) |
| target="-DARCHOS_PLAYER" |
| display="-DHAVE_LCD_CHARCELLS" |
| keypad="-DHAVE_PLAYER_KEYPAD" |
| ;; |
| |
| *|2) |
| target="-DARCHOS_RECORDER" |
| display="-DHAVE_LCD_BITMAP" |
| keypad="-DHAVE_RECORDER_KEYPAD" |
| ;; |
| |
| esac |
| fi |
| |
| if [ -z "$extra_defines" ]; then |
| if [ "-DARCHOS_RECORDER" = "$target" ] ; then |
| disable_demos="-DDISABLE_NOTHING" |
| disable_games="" |
| |
| echo "Do you want to use Demos? (Y)" |
| getit=`input`; |
| if [ "n" = "$getit" -o "N" = "$getit" ] ; then |
| disable_demos="-DDISABLE_DEMOS" |
| fi |
| |
| echo "Do you want to play Games? (Y)" |
| getit=`input`; |
| if [ "n" = "$getit" -o "N" = "$getit" ] ; then |
| disable_games=" -DDISABLE_GAMES" |
| fi |
| |
| extra_defines="$disable_demos$disable_games" |
| fi |
| fi |
| |
| |
| if [ -z "$debug" ]; then |
| ################################################################## |
| # Figure out debug on/off |
| # |
| echo "" |
| echo "Build (N)ormal, (D)ebug or (S)imulated version? (N)" |
| |
| option=`input`; |
| |
| case $option in |
| [Ss]) |
| debug="SIMULATOR=1" |
| simulator="yes" |
| whichsim |
| ;; |
| [Dd]) |
| debug="DEBUG=1" |
| ;; |
| *) |
| debug="NODEBUG=1" |
| ;; |
| |
| esac |
| fi |
| |
| ################################################################## |
| # Figure out where the firmware code is! |
| # |
| |
| firmfile="crt0.S" # a file to check for in the firmware root dir |
| |
| for dir in firmware . .. ../firmware ../../firmware; do |
| if [ -f $dir/$firmfile ]; then |
| firmdir=$dir |
| break |
| fi |
| done |
| |
| if [ -z "$firmdir" ]; then |
| echo "This script couldn't find your firmware directory. Please enter the" |
| echo "full path to the firmware directory here:" |
| |
| firmdir=`input` |
| fi |
| |
| ################################################################## |
| # Figure out where the apps code is! |
| # |
| |
| appsfile="credits.c" # a file to check for in the apps root dir |
| |
| for dir in apps . .. ../apps ../../apps $firmdir/apps $firmdir/../apps; do |
| if [ -f $dir/$appsfile ]; then |
| appsdir=$dir |
| break |
| fi |
| done |
| |
| if [ -z "$appsdir" ]; then |
| echo "This script couldn't find your apps directory. Please enter the" |
| echo "full path to the apps directory here:" |
| |
| appsdir=`input` |
| 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 |
| fi |
| |
| if [ "yes" = "$simulator" ]; then |
| # we have already dealt with the simulator Makefile separately |
| simul |
| exit |
| fi |
| |
| sed > Makefile \ |
| -e "s,@FIRMDIR@,${firmdir},g" \ |
| -e "s,@APPSDIR@,${appsdir},g" \ |
| -e "s,@DEBUG@,${debug},g" \ |
| -e "s,@TARGET@,${target},g" \ |
| -e "s,@LANGUAGE@,${language},g" \ |
| -e "s,@EXTRA_DEFINES@,${extra_defines},g" \ |
| -e "s,@PWD@,${pwd},g" \ |
| <<EOF |
| ## Automaticly generated. http://rockbox.haxx.se |
| |
| FIRMDIR=@FIRMDIR@ |
| APPSDIR=@APPSDIR@ |
| DEBUG=@DEBUG@ |
| TARGET=@TARGET@ |
| THISDIR="@PWD@" |
| LANGUAGE=@LANGUAGE@ |
| VERSION=\$(shell date +%y%m%d-%H%M) |
| |
| EXTRA_DEFINES=@EXTRA_DEFINES@ |
| .PHONY: firmware apps |
| |
| all: firmware apps |
| |
| firmware: |
| \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) \$(DEBUG) OBJDIR=\$(THISDIR) EXTRA_DEFINES="\$(EXTRA_DEFINES)" |
| |
| apps: |
| \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) \$(DEBUG) OBJDIR=\$(THISDIR) VERSION=\$(VERSION) LANGUAGE=\$(LANGUAGE) EXTRA_DEFINES="\$(EXTRA_DEFINES)" |
| |
| clean-firmware: |
| \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) clean |
| |
| clean-apps: |
| \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) clean |
| |
| clean: |
| \$(MAKE) clean-firmware clean-apps |
| |
| tags-firmware: |
| \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) tags |
| |
| tags-apps: |
| \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) tags |
| |
| tags: |
| @rm -f TAGS |
| \$(MAKE) tags-firmware tags-apps |
| EOF |
| |
| echo "Created Makefile" |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |