blob: ea213b8750ef779f13110381e32b339467738ad0 [file] [log] [blame]
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +00001#!/bin/sh
2# __________ __ ___.
3# Open \______ \ ____ ____ | | _\_ |__ _______ ___
4# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7# \/ \/ \/ \/ \/
8# $Id$
9#
10
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +000011
Robert Hakc3320ae2002-10-17 09:08:05 +000012#
13# Begin Function Definitions
14#
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +000015input() {
16 read response
17 echo $response
18}
19
Robert Hak672b0e22002-10-17 09:19:34 +000020whichsim () {
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000021
22if [ -z "$simver" ]; then
23
24 ##################################################################
25 # Figure out win32/x11 GUI
26 #
27 echo ""
28 echo "Build (W)in32 or (X)11 GUI version? (X)"
29
30 option=`input`;
31
32 case $option in
33 [Ww])
34 simver="win32"
35 ;;
36 *)
37 simver="x11"
38 ;;
39 esac
40fi
Robert Hak672b0e22002-10-17 09:19:34 +000041}
42
43
44simul () {
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000045
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000046 ##################################################################
47 # Figure out where the firmware code is!
48 #
49
Robert Hakc3320ae2002-10-17 09:08:05 +000050 # a file to check for in the uisimulator root dir
51 simfile="$simver/lcd-$simver.c"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000052
53 for dir in uisimulator . .. ../uisimulator ../../uisimulator; do
54 if [ -f "$dir/$simfile" ]; then
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000055 simdir="$dir/$simver"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000056 break
57 fi
58 done
59
60 if [ -z "$simdir" ]; then
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000061 echo "This script couldn't find your uisimulator/$simver directory. Please enter the"
62 echo "full path to your uisimulator/$simver directory here:"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000063
64 simdir=`input`
65 fi
66
67sed > Makefile \
68 -e "s,@SIMDIR@,${simdir},g" \
69 -e "s,@TARGET@,${target},g" \
70 -e "s,@DEBUG@,${debug},g" \
71 -e "s,@DISPLAY@,${display},g" \
72 -e "s,@KEYPAD@,${keypad},g" \
73 -e "s,@PWD@,${pwd},g" \
Daniel Stenbergebe963d2002-09-20 06:38:38 +000074 -e "s,@LANGUAGE@,${language},g" \
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000075 -e "s,@SIMVER@,${simver},g" \
Daniel Stenbergebe963d2002-09-20 06:38:38 +000076 -e "s,@EXTRA_DEFINES@,${extra_defines},g" \
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000077<<EOF
Björn Stenbergcd225732002-08-11 09:17:47 +000078## Automaticly generated. http://rockbox.haxx.se
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000079
80SIMDIR=@SIMDIR@
81DEBUG=@DEBUG@
82TARGET=@TARGET@
83DISPLAY=@DISPLAY@
84KEYPAD=@KEYPAD@
85THISDIR="@PWD@"
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000086SIMVER=@SIMVER@
Daniel Stenbergebe963d2002-09-20 06:38:38 +000087LANGUAGE=@LANGUAGE@
Björn Stenberg6d55a712002-07-15 13:19:00 +000088VERSION=\$(shell date +%y%m%d-%H%M)
Björn Stenbergcd225732002-08-11 09:17:47 +000089EXTRA_DEFINES=@EXTRA_DEFINES@
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000090
Linus Nielsen Feltzinge53bdf02002-07-26 14:13:03 +000091.PHONY:
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000092
93all: sim
94
95sim:
Daniel Stenbergebe963d2002-09-20 06:38:38 +000096 \$(MAKE) -C \$(SIMDIR) DISPLAY=\$(DISPLAY) KEYPAD=\$(KEYPAD) OBJDIR=\$(THISDIR) VERSION=\$(VERSION) LANGUAGE=\$(LANGUAGE) EXTRA_DEFINES="\$(EXTRA_DEFINES)"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000097
Daniel Stenberg6246ce52002-08-15 10:07:27 +000098clean:
Daniel Stenberg23d0b5d2002-08-07 14:37:53 +000099 \$(MAKE) -C \$(SIMDIR) DISPLAY=\$(DISPLAY) KEYPAD=\$(KEYPAD) OBJDIR=\$(THISDIR) clean
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000100
Daniel Stenberg6246ce52002-08-15 10:07:27 +0000101tags:
102 @rm -f TAGS
103 make -C \$(SIMDIR) DISPLAY=\$(DISPLAY) KEYPAD=\$(KEYPAD) OBJDIR=\$(THISDIR) tags
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000104
105EOF
106
Daniel Stenberge45a8f52002-06-06 13:33:38 +0000107 echo "Created Makefile"
Daniel Stenberg45abe612002-05-31 08:38:35 +0000108
Daniel Stenberge45a8f52002-06-06 13:33:38 +0000109 if [ -d "archos" ]; then
110 echo "sub directory archos already present"
111 else
112 mkdir archos
113 echo "created an archos subdirectory for simulating the hard disk"
114 fi
Daniel Stenberg45abe612002-05-31 08:38:35 +0000115
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000116}
117
Robert Hakc3320ae2002-10-17 09:08:05 +0000118picklang() {
119 # figure out which languages that are around
120 for file in $appsdir/lang/*.lang; do
121 clean=`echo $file | sed -e 's:.*/::g' | cut "-d." -f1`
122 langs="$langs $clean"
123 done
124
125 num=1
126 for one in $langs; do
127 echo "$num. $one"
128 num=`expr $num + 1`
129 done
130
131 read pick
132 return $pick;
133}
134
135whichlang() {
136 num=1
137 for one in $langs; do
138 if [ "$num" = "$pick" ]; then
139 echo $one
140 return
141 fi
142 num=`expr $num + 1`
143 done
144}
145
146
147#
148# Beging Build Script
149#
150
151target=$1
152debug=$2
153
154if test "$1" = "--help"; then
155 echo "Rockbox configure script."
156 echo "Invoke this in a directory to generate a Makefile to build Rockbox"
157 echo "Do *NOT* run this within the tools directory!"
158 exit
159fi
160
161if test -r "configure"; then
162 # this is a check for a configure script in the current directory, it there
163 # is one, try to figure out if it is this one!
164
165 if { grep "^# Jukebox" configure >/dev/null 2>&1 ; } then
166 echo "WEEEEEEEEP. Don't run this configure script within the tools directory."
167 echo "It will only cause you pain and grief. Instead do this:"
168 echo ""
169 echo " cd .."
170 echo " mkdir build-dir"
171 echo " cd build-dir"
172 echo " ../tools/configure"
173 echo ""
174 echo "Much happiness will arise from this. Enjoy"
175 exit
176 fi
177fi
178
Daniel Stenbergc38ccba2002-05-31 08:21:20 +0000179if [ "$target" = "--help" -o \
180 "$target" = "-h" ]; then
181 echo "Just invoke the script and answer the questions."
182 echo "This script will write a Makefile for you"
183 exit
184fi
185
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000186# get our current directory
187pwd=`pwd`;
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000188
Daniel Stenberg67096582002-05-23 10:10:44 +0000189if [ "$target" = "update" ]; then
190 target=""
191 if [ -f Makefile ]; then
192 if { grep "^## Auto" Makefile >/dev/null 2>&1 ; } then
193 echo "Existing generated Makefile found. Getting defaults from it."
194 target=`grep "^TARGET=" Makefile | cut -d= -f2-`
195 debug=`grep "^DEBUG=" Makefile | cut -d= -f2-`
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000196 language=`grep "^LANGUAGE=" Makefile | cut -d= -f2-`
Björn Stenbergcd225732002-08-11 09:17:47 +0000197 extra_defines=`grep "^EXTRA_DEFINES=" Makefile | cut -d= -f2-`
Daniel Stenberg63787df2002-06-03 21:56:48 +0000198
199 if [ "$debug" = "SIMULATOR=1" ]; then
200 simulator="yes"
Daniel Stenbergd86da202002-06-03 22:26:56 +0000201 display=`grep "^DISPLAY=" Makefile | cut -d= -f2-`
202 keypad=`grep "^KEYPAD=" Makefile | cut -d= -f2-`
Daniel Stenberg60fe9df2002-08-02 12:06:07 +0000203 simver=`grep "^SIMVER=" Makefile | cut -d= -f2-`
Daniel Stenberg63787df2002-06-03 21:56:48 +0000204 fi
Daniel Stenberg67096582002-05-23 10:10:44 +0000205 fi
206 fi
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000207else
208
209echo "Setup your Rockbox build environment."
Björn Stenbergcd225732002-08-11 09:17:47 +0000210echo "http://rockbox.haxx.se/"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000211echo ""
212
Daniel Stenberg67096582002-05-23 10:10:44 +0000213fi
214
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000215if [ -z "$target" ]; then
216
217##################################################################
218# Figure out target platform
219#
220
221 echo "Enter target platform: (defaults to Recorder)"
222
Linus Nielsen Feltzing0a4b2472002-10-15 12:25:57 +0000223 echo "1 - Archos Player/Studio"
224 echo "2 - Archos Recorder"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000225
226 getit=`input`;
227
228 case $getit in
229
230 1)
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000231 target="-DARCHOS_PLAYER"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000232 display="-DHAVE_LCD_CHARCELLS"
233 keypad="-DHAVE_PLAYER_KEYPAD"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000234 ;;
235
Linus Nielsen Feltzing0a4b2472002-10-15 12:25:57 +0000236 *|2)
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000237 target="-DARCHOS_RECORDER"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000238 display="-DHAVE_LCD_BITMAP"
239 keypad="-DHAVE_RECORDER_KEYPAD"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000240 ;;
241
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000242 esac
243fi
244
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000245if [ -z "$extra_defines" ]; then
246 if [ "-DARCHOS_RECORDER" = "$target" ] ; then
247 disable_demos="-DDISABLE_NOTHING"
248 disable_games=""
Robert Hak15c5cac2002-08-31 20:59:23 +0000249
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000250 echo "Do you want to use Demos? (Y)"
251 getit=`input`;
252 if [ "n" = "$getit" -o "N" = "$getit" ] ; then
253 disable_demos="-DDISABLE_DEMOS"
254 fi
255
256 echo "Do you want to play Games? (Y)"
257 getit=`input`;
258 if [ "n" = "$getit" -o "N" = "$getit" ] ; then
259 disable_games=" -DDISABLE_GAMES"
260 fi
Robert Hak15c5cac2002-08-31 20:59:23 +0000261
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000262 extra_defines="$disable_demos$disable_games"
263 fi
Björn Stenbergcd225732002-08-11 09:17:47 +0000264fi
265
Robert Hak28c60ff2002-08-31 23:21:59 +0000266
Daniel Stenberg67096582002-05-23 10:10:44 +0000267if [ -z "$debug" ]; then
268 ##################################################################
269 # Figure out debug on/off
270 #
271 echo ""
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000272 echo "Build (N)ormal, (D)ebug or (S)imulated version? (N)"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000273
Daniel Stenberg67096582002-05-23 10:10:44 +0000274 option=`input`;
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000275
Daniel Stenberg67096582002-05-23 10:10:44 +0000276 case $option in
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000277 [Ss])
278 debug="SIMULATOR=1"
279 simulator="yes"
Robert Hak672b0e22002-10-17 09:19:34 +0000280 whichsim
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000281 ;;
282 [Dd])
Daniel Stenberg67096582002-05-23 10:10:44 +0000283 debug="DEBUG=1"
284 ;;
285 *)
Daniel Stenberg44d76bc2002-05-24 10:14:10 +0000286 debug="NODEBUG=1"
Daniel Stenberg67096582002-05-23 10:10:44 +0000287 ;;
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000288
Daniel Stenberg67096582002-05-23 10:10:44 +0000289 esac
290fi
291
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000292##################################################################
293# Figure out where the firmware code is!
294#
295
Daniel Stenbergc7036f12002-05-27 12:33:30 +0000296firmfile="crt0.S" # a file to check for in the firmware root dir
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000297
Daniel Stenberg82e6a072002-05-23 09:18:14 +0000298for dir in firmware . .. ../firmware ../../firmware; do
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000299 if [ -f $dir/$firmfile ]; then
300 firmdir=$dir
Daniel Stenberg82e6a072002-05-23 09:18:14 +0000301 break
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000302 fi
303done
304
305if [ -z "$firmdir" ]; then
306 echo "This script couldn't find your firmware directory. Please enter the"
307 echo "full path to the firmware directory here:"
308
309 firmdir=`input`
310fi
311
312##################################################################
313# Figure out where the apps code is!
314#
315
316appsfile="credits.c" # a file to check for in the apps root dir
317
Daniel Stenbergf8a59f22002-05-23 12:48:04 +0000318for dir in apps . .. ../apps ../../apps $firmdir/apps $firmdir/../apps; do
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000319 if [ -f $dir/$appsfile ]; then
320 appsdir=$dir
321 break
322 fi
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000323done
324
325if [ -z "$appsdir" ]; then
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000326 echo "This script couldn't find your apps directory. Please enter the"
327 echo "full path to the apps directory here:"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000328
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000329 appsdir=`input`
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000330fi
331
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000332if [ -z "$language" ]; then
333
334 echo "Select a number for the language to use (default is english)"
335
336 picklang
337 language=`whichlang`
338
339 if [ -z "$language" ]; then
340 # pick a default
341 language="english"
342 fi
343fi
344
Robert Hak9465d4e2002-10-17 09:14:57 +0000345if [ "yes" = "$simulator" ]; then
346 # we have already dealt with the simulator Makefile separately
Robert Hak672b0e22002-10-17 09:19:34 +0000347 simul
Robert Hak9465d4e2002-10-17 09:14:57 +0000348 exit
349fi
350
Daniel Stenberge0c12af2002-05-23 09:39:31 +0000351sed > Makefile \
352 -e "s,@FIRMDIR@,${firmdir},g" \
353 -e "s,@APPSDIR@,${appsdir},g" \
354 -e "s,@DEBUG@,${debug},g" \
355 -e "s,@TARGET@,${target},g" \
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000356 -e "s,@LANGUAGE@,${language},g" \
357 -e "s,@EXTRA_DEFINES@,${extra_defines},g" \
Daniel Stenberge0c12af2002-05-23 09:39:31 +0000358 -e "s,@PWD@,${pwd},g" \
359<<EOF
Björn Stenbergcd225732002-08-11 09:17:47 +0000360## Automaticly generated. http://rockbox.haxx.se
Daniel Stenberg67096582002-05-23 10:10:44 +0000361
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000362FIRMDIR=@FIRMDIR@
363APPSDIR=@APPSDIR@
364DEBUG=@DEBUG@
365TARGET=@TARGET@
Daniel Stenberge0c12af2002-05-23 09:39:31 +0000366THISDIR="@PWD@"
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000367LANGUAGE=@LANGUAGE@
Björn Stenberg6d55a712002-07-15 13:19:00 +0000368VERSION=\$(shell date +%y%m%d-%H%M)
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000369
Björn Stenbergcd225732002-08-11 09:17:47 +0000370EXTRA_DEFINES=@EXTRA_DEFINES@
Linus Nielsen Feltzinge53bdf02002-07-26 14:13:03 +0000371.PHONY: firmware apps
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000372
Daniel Stenberg45abe612002-05-31 08:38:35 +0000373all: firmware apps
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000374
375firmware:
Daniel Stenbergebe963d2002-09-20 06:38:38 +0000376 \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) \$(DEBUG) OBJDIR=\$(THISDIR) EXTRA_DEFINES="\$(EXTRA_DEFINES)"
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000377
378apps:
Daniel Stenbergf2d57ea2002-09-20 11:42:57 +0000379 \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) \$(DEBUG) OBJDIR=\$(THISDIR) VERSION=\$(VERSION) LANGUAGE=\$(LANGUAGE) EXTRA_DEFINES="\$(EXTRA_DEFINES)"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000380
Daniel Stenberg40c61292002-05-24 09:33:37 +0000381clean-firmware:
Daniel Stenberg23d0b5d2002-08-07 14:37:53 +0000382 \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) clean
Daniel Stenberg40c61292002-05-24 09:33:37 +0000383
384clean-apps:
Daniel Stenberg23d0b5d2002-08-07 14:37:53 +0000385 \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) clean
Daniel Stenberg40c61292002-05-24 09:33:37 +0000386
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000387clean:
Daniel Stenberg23d0b5d2002-08-07 14:37:53 +0000388 \$(MAKE) clean-firmware clean-apps
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000389
Daniel Stenbergbc35ae32002-08-15 09:32:59 +0000390tags-firmware:
391 \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) tags
392
393tags-apps:
394 \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) tags
395
396tags:
397 @rm -f TAGS
398 \$(MAKE) tags-firmware tags-apps
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000399EOF
Daniel Stenberge0c12af2002-05-23 09:39:31 +0000400
401echo "Created Makefile"
Robert Hakc3320ae2002-10-17 09:08:05 +0000402
403
404
405
406
407
408
409
410
411
412
413
414
415