31e0cd67ff
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3579 a1c6a512-1295-4272-9138-f99709370657
490 lines
11 KiB
Bash
Executable file
490 lines
11 KiB
Bash
Executable file
#!/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
|
|
echo "Selected $simver simulator"
|
|
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,@ARCHOS@,${archos},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
|
|
|
|
ARCHOS=@ARCHOS@
|
|
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
|
|
update="1"
|
|
target=""
|
|
if [ -f Makefile ]; then
|
|
if { grep "^## Auto" Makefile >/dev/null 2>&1 ; } then
|
|
echo "Existing generated Makefile found. Getting defaults from it."
|
|
archos=`grep "^ARCHOS=" Makefile | cut -d= -f2-`
|
|
target=`grep "^TARGET=" Makefile | cut -d= -f2-`
|
|
debug=`grep "^DEBUG=" Makefile | cut -d= -f2-`
|
|
language=`grep "^LANGUAGE=" Makefile | cut -d= -f2-`
|
|
memory=`grep "^MEMORYSIZE=" 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 "This script will setup your Rockbox build environment."
|
|
echo "Further docs here: http://rockbox.haxx.se/docs/"
|
|
echo ""
|
|
|
|
fi
|
|
|
|
if [ -z "$archos" ]; then
|
|
|
|
##################################################################
|
|
# Figure out target platform
|
|
#
|
|
|
|
echo "Enter target platform: (defaults to Recorder)"
|
|
|
|
echo "1 - Archos Player/Studio"
|
|
echo "2 - Archos Recorder"
|
|
echo "3 - Archos FM Recorder"
|
|
|
|
getit=`input`;
|
|
|
|
case $getit in
|
|
|
|
1)
|
|
archos="player"
|
|
target="-DARCHOS_PLAYER"
|
|
display="-DHAVE_LCD_CHARCELLS"
|
|
keypad="-DHAVE_PLAYER_KEYPAD"
|
|
;;
|
|
|
|
3)
|
|
archos="fmrecorder"
|
|
target="-DARCHOS_FMRECORDER"
|
|
display="-DHAVE_LCD_BITMAP"
|
|
keypad="-DHAVE_RECORDER_KEYPAD"
|
|
;;
|
|
|
|
*)
|
|
archos="recorder"
|
|
target="-DARCHOS_RECORDER"
|
|
display="-DHAVE_LCD_BITMAP"
|
|
keypad="-DHAVE_RECORDER_KEYPAD"
|
|
;;
|
|
|
|
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 "$extra_defines" ]; then
|
|
if [ "player" != "$archos" ] ; 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"
|
|
echo "Demos disabled"
|
|
else
|
|
echo "Demos enabled"
|
|
fi
|
|
|
|
echo "Do you want to play Games? (Y)"
|
|
getit=`input`;
|
|
if [ "n" = "$getit" -o "N" = "$getit" ] ; then
|
|
disable_games=" -DDISABLE_GAMES"
|
|
echo "Games disabled"
|
|
else
|
|
echo "Games enabled"
|
|
fi
|
|
|
|
extra_defines="$disable_demos$disable_games"
|
|
fi
|
|
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="SIMULATOR=1"
|
|
simulator="yes"
|
|
echo "Simulator build selected"
|
|
whichsim
|
|
;;
|
|
[Dd])
|
|
debug="DEBUG=1"
|
|
echo "Debug build selected"
|
|
;;
|
|
*)
|
|
debug="NODEBUG=1"
|
|
echo "Normal build selected"
|
|
;;
|
|
|
|
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
|
|
|
|
##################################################################
|
|
# Figure out where the tools directory is!
|
|
#
|
|
|
|
toolsfile="descramble.c" # a file to check for in the tools root dir
|
|
|
|
for dir in tools . .. ../tools ../../tools $firmdir/tools $firmdir/../tools; do
|
|
if [ -f $dir/$toolsfile ]; then
|
|
toolsdir="$dir"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ -z "$toolsdir" ]; then
|
|
# no file found, check if (some of) the necessary tools are in the PATH
|
|
# already
|
|
|
|
toolsexe="scramble"
|
|
|
|
for dir in `echo $PATH | tr ':' ' '`; do
|
|
if [ -x "$dir/$toolsexe" ]; then
|
|
echo "found $toolsexe in $dir"
|
|
toolsdir="$dir"
|
|
break
|
|
fi
|
|
done
|
|
|
|
fi
|
|
|
|
if [ -z "$toolsdir" ]; then
|
|
echo "This script couldn't find your tools directory. Please enter the"
|
|
echo "full path to the tools directory here:"
|
|
|
|
toolsdir=`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
|
|
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,@FIRMDIR@,${firmdir},g" \
|
|
-e "s,@APPSDIR@,${appsdir},g" \
|
|
-e "s,@TOOLSDIR@,${toolsdir},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,@EXTRA_DEFINES@,${extra_defines},g" \
|
|
-e "s,@PWD@,${pwd},g" \
|
|
<<EOF
|
|
## Automaticly generated. http://rockbox.haxx.se
|
|
|
|
FIRMDIR=@FIRMDIR@
|
|
APPSDIR=@APPSDIR@
|
|
TOOLSDIR=@TOOLSDIR@
|
|
DEBUG=@DEBUG@
|
|
ARCHOS=@ARCHOS@
|
|
TARGET=@TARGET@
|
|
THISDIR="@PWD@"
|
|
LANGUAGE=@LANGUAGE@
|
|
MEMORYSIZE=@MEMORY@
|
|
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)" MEM=\$(MEMORYSIZE) TOOLSDIR=\$(TOOLSDIR)
|
|
|
|
apps:
|
|
\$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) \$(DEBUG) OBJDIR=\$(THISDIR) VERSION=\$(VERSION) LANGUAGE=\$(LANGUAGE) EXTRA_DEFINES="\$(EXTRA_DEFINES)" MEM=\$(MEMORYSIZE) TOOLSDIR=\$(TOOLSDIR)
|
|
|
|
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"
|