blob: e2c3bd53f911c9bcc89a35f8cbdd2ec9c571e6eb [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
11target=$1
Daniel Stenberg67096582002-05-23 10:10:44 +000012debug=$2
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +000013
Björn Stenbergcd225732002-08-11 09:17:47 +000014extra_defines="-"
15
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +000016input() {
17 read response
18 echo $response
19}
20
Daniel Stenberge45a8f52002-06-06 13:33:38 +000021simul () {
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000022
23if [ -z "$simver" ]; then
24
25 ##################################################################
26 # Figure out win32/x11 GUI
27 #
28 echo ""
29 echo "Build (W)in32 or (X)11 GUI version? (X)"
30
31 option=`input`;
32
33 case $option in
34 [Ww])
35 simver="win32"
36 ;;
37 *)
38 simver="x11"
39 ;;
40 esac
41fi
42
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000043 ##################################################################
44 # Figure out where the firmware code is!
45 #
46
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000047 simfile="$simver/lcd-$simver.c" # a file to check for in the uisimulator root dir
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000048
49 for dir in uisimulator . .. ../uisimulator ../../uisimulator; do
50 if [ -f "$dir/$simfile" ]; then
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000051 simdir="$dir/$simver"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000052 break
53 fi
54 done
55
56 if [ -z "$simdir" ]; then
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000057 echo "This script couldn't find your uisimulator/$simver directory. Please enter the"
58 echo "full path to your uisimulator/$simver directory here:"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000059
60 simdir=`input`
61 fi
62
63sed > Makefile \
64 -e "s,@SIMDIR@,${simdir},g" \
65 -e "s,@TARGET@,${target},g" \
66 -e "s,@DEBUG@,${debug},g" \
67 -e "s,@DISPLAY@,${display},g" \
68 -e "s,@KEYPAD@,${keypad},g" \
69 -e "s,@PWD@,${pwd},g" \
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000070 -e "s,@SIMVER@,${simver},g" \
Björn Stenbergcd225732002-08-11 09:17:47 +000071 -e "s,@EXTRA_DEFINES@,${extra_defines},g" \
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000072<<EOF
Björn Stenbergcd225732002-08-11 09:17:47 +000073## Automaticly generated. http://rockbox.haxx.se
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000074
75SIMDIR=@SIMDIR@
76DEBUG=@DEBUG@
77TARGET=@TARGET@
78DISPLAY=@DISPLAY@
79KEYPAD=@KEYPAD@
80THISDIR="@PWD@"
Daniel Stenberg60fe9df2002-08-02 12:06:07 +000081SIMVER=@SIMVER@
Björn Stenberg6d55a712002-07-15 13:19:00 +000082VERSION=\$(shell date +%y%m%d-%H%M)
Björn Stenbergcd225732002-08-11 09:17:47 +000083EXTRA_DEFINES=@EXTRA_DEFINES@
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000084
Linus Nielsen Feltzinge53bdf02002-07-26 14:13:03 +000085.PHONY:
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000086
87all: sim
88
89sim:
Björn Stenbergcd225732002-08-11 09:17:47 +000090 \$(MAKE) -C \$(SIMDIR) DISPLAY=\$(DISPLAY) KEYPAD=\$(KEYPAD) OBJDIR=\$(THISDIR) VERSION=\$(VERSION) EXTRA_DEFINES=\$(EXTRA_DEFINES)
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000091
Daniel Stenberg6246ce52002-08-15 10:07:27 +000092clean:
Daniel Stenberg23d0b5d2002-08-07 14:37:53 +000093 \$(MAKE) -C \$(SIMDIR) DISPLAY=\$(DISPLAY) KEYPAD=\$(KEYPAD) OBJDIR=\$(THISDIR) clean
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000094
Daniel Stenberg6246ce52002-08-15 10:07:27 +000095tags:
96 @rm -f TAGS
97 make -C \$(SIMDIR) DISPLAY=\$(DISPLAY) KEYPAD=\$(KEYPAD) OBJDIR=\$(THISDIR) tags
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +000098
99EOF
100
Daniel Stenberge45a8f52002-06-06 13:33:38 +0000101 echo "Created Makefile"
Daniel Stenberg45abe612002-05-31 08:38:35 +0000102
Daniel Stenberge45a8f52002-06-06 13:33:38 +0000103 if [ -d "archos" ]; then
104 echo "sub directory archos already present"
105 else
106 mkdir archos
107 echo "created an archos subdirectory for simulating the hard disk"
108 fi
Daniel Stenberg45abe612002-05-31 08:38:35 +0000109
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000110}
111
Daniel Stenbergc38ccba2002-05-31 08:21:20 +0000112if [ "$target" = "--help" -o \
113 "$target" = "-h" ]; then
114 echo "Just invoke the script and answer the questions."
115 echo "This script will write a Makefile for you"
116 exit
117fi
118
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000119# get our current directory
120pwd=`pwd`;
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000121
Daniel Stenberg67096582002-05-23 10:10:44 +0000122if [ "$target" = "update" ]; then
123 target=""
124 if [ -f Makefile ]; then
125 if { grep "^## Auto" Makefile >/dev/null 2>&1 ; } then
126 echo "Existing generated Makefile found. Getting defaults from it."
127 target=`grep "^TARGET=" Makefile | cut -d= -f2-`
128 debug=`grep "^DEBUG=" Makefile | cut -d= -f2-`
Björn Stenbergcd225732002-08-11 09:17:47 +0000129 extra_defines=`grep "^EXTRA_DEFINES=" Makefile | cut -d= -f2-`
Daniel Stenberg63787df2002-06-03 21:56:48 +0000130
131 if [ "$debug" = "SIMULATOR=1" ]; then
132 simulator="yes"
Daniel Stenbergd86da202002-06-03 22:26:56 +0000133 display=`grep "^DISPLAY=" Makefile | cut -d= -f2-`
134 keypad=`grep "^KEYPAD=" Makefile | cut -d= -f2-`
Daniel Stenberg60fe9df2002-08-02 12:06:07 +0000135 simver=`grep "^SIMVER=" Makefile | cut -d= -f2-`
Daniel Stenberg63787df2002-06-03 21:56:48 +0000136 fi
Daniel Stenberg67096582002-05-23 10:10:44 +0000137 fi
138 fi
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000139else
140
141echo "Setup your Rockbox build environment."
Björn Stenbergcd225732002-08-11 09:17:47 +0000142echo "http://rockbox.haxx.se/"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000143echo ""
144
Daniel Stenberg67096582002-05-23 10:10:44 +0000145fi
146
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000147if [ -z "$target" ]; then
148
149##################################################################
150# Figure out target platform
151#
152
153 echo "Enter target platform: (defaults to Recorder)"
154
155 echo "1 - Archos Player old LCD"
156 echo "2 - Archos Player/Studio new LCD"
157 echo "3 - Archos Recorder"
158
159 getit=`input`;
160
161 case $getit in
162
163 1)
164 target="-DARCHOS_PLAYER_OLD"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000165 display="-DHAVE_LCD_CHARCELLS"
166 keypad="-DHAVE_PLAYER_KEYPAD"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000167 ;;
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000168
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000169 2)
170 target="-DARCHOS_PLAYER"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000171 display="-DHAVE_LCD_CHARCELLS"
172 keypad="-DHAVE_PLAYER_KEYPAD"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000173 ;;
174
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000175 *|3)
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000176 target="-DARCHOS_RECORDER"
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000177 display="-DHAVE_LCD_BITMAP"
178 keypad="-DHAVE_RECORDER_KEYPAD"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000179 ;;
180
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000181 esac
182fi
183
Robert Hakf29f6fa2002-08-11 14:19:18 +0000184if [ "-" = "$extra_defines" ]; then
Björn Stenbergcd225732002-08-11 09:17:47 +0000185 if [ "-DARCHOS_RECORDER" = "$target" ] ; then
186
187 echo "Loadable fonts support? (N)"
188 getit=`input`;
Robert Hak72f54332002-08-13 08:40:40 +0000189 if [ "y" = "$getit" -o "Y" = "$getit" ] ; then
Björn Stenbergcd225732002-08-11 09:17:47 +0000190 extra_defines="-DLOADABLE_FONTS"
Björn Stenberg62625732002-08-15 11:51:49 +0000191 echo "*** Remember to copy the 'system.ajf' file to the root of your Archos!"
Björn Stenbergcd225732002-08-11 09:17:47 +0000192 else
193 echo "Proportional font support? (N)"
194 getit=`input`;
Robert Hak72f54332002-08-13 08:40:40 +0000195 if [ "y" = "$getit" -o "Y" = "$getit" ] ; then
Björn Stenbergcd225732002-08-11 09:17:47 +0000196 extra_defines="-DLCD_PROPFONTS"
197 else
198 extra_defines=""
199 fi
200 fi
Björn Stenberg7a8f3982002-08-11 20:22:53 +0000201 else
202 extra_defines=""
Björn Stenbergcd225732002-08-11 09:17:47 +0000203 fi
204fi
205
Daniel Stenberg67096582002-05-23 10:10:44 +0000206if [ -z "$debug" ]; then
207 ##################################################################
208 # Figure out debug on/off
209 #
210 echo ""
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000211 echo "Build (N)ormal, (D)ebug or (S)imulated version? (N)"
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000212
Daniel Stenberg67096582002-05-23 10:10:44 +0000213 option=`input`;
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000214
Daniel Stenberg67096582002-05-23 10:10:44 +0000215 case $option in
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000216 [Ss])
217 debug="SIMULATOR=1"
218 simulator="yes"
219 ;;
220 [Dd])
Daniel Stenberg67096582002-05-23 10:10:44 +0000221 debug="DEBUG=1"
222 ;;
223 *)
Daniel Stenberg44d76bc2002-05-24 10:14:10 +0000224 debug="NODEBUG=1"
Daniel Stenberg67096582002-05-23 10:10:44 +0000225 ;;
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000226
Daniel Stenberg67096582002-05-23 10:10:44 +0000227 esac
228fi
229
Daniel Stenberge45a8f52002-06-06 13:33:38 +0000230if [ "yes" = "$simulator" ]; then
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000231 # we deal with the simulator Makefile separately
Daniel Stenberge45a8f52002-06-06 13:33:38 +0000232 simul
Daniel Stenberg58f4d0d2002-05-31 07:22:38 +0000233 exit
234fi
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000235
236##################################################################
237# Figure out where the firmware code is!
238#
239
Daniel Stenbergc7036f12002-05-27 12:33:30 +0000240firmfile="crt0.S" # a file to check for in the firmware root dir
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000241
Daniel Stenberg82e6a072002-05-23 09:18:14 +0000242for dir in firmware . .. ../firmware ../../firmware; do
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000243 if [ -f $dir/$firmfile ]; then
244 firmdir=$dir
Daniel Stenberg82e6a072002-05-23 09:18:14 +0000245 break
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000246 fi
247done
248
249if [ -z "$firmdir" ]; then
250 echo "This script couldn't find your firmware directory. Please enter the"
251 echo "full path to the firmware directory here:"
252
253 firmdir=`input`
254fi
255
256##################################################################
257# Figure out where the apps code is!
258#
259
260appsfile="credits.c" # a file to check for in the apps root dir
261
Daniel Stenbergf8a59f22002-05-23 12:48:04 +0000262for dir in apps . .. ../apps ../../apps $firmdir/apps $firmdir/../apps; do
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000263 if [ -f $dir/$appsfile ]; then
264 appsdir=$dir
Daniel Stenberg82e6a072002-05-23 09:18:14 +0000265 break
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000266 fi
267done
268
269if [ -z "$appsdir" ]; then
270 echo "This script couldn't find your apps directory. Please enter the"
271 echo "full path to the apps directory here:"
272
273 appsdir=`input`
274fi
275
Daniel Stenberge0c12af2002-05-23 09:39:31 +0000276sed > Makefile \
277 -e "s,@FIRMDIR@,${firmdir},g" \
278 -e "s,@APPSDIR@,${appsdir},g" \
279 -e "s,@DEBUG@,${debug},g" \
280 -e "s,@TARGET@,${target},g" \
Björn Stenbergcd225732002-08-11 09:17:47 +0000281 -e "s,@EXTRA_DEFINES@,${extra_defines},g" \
Daniel Stenberge0c12af2002-05-23 09:39:31 +0000282 -e "s,@PWD@,${pwd},g" \
283<<EOF
Björn Stenbergcd225732002-08-11 09:17:47 +0000284## Automaticly generated. http://rockbox.haxx.se
Daniel Stenberg67096582002-05-23 10:10:44 +0000285
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000286FIRMDIR=@FIRMDIR@
287APPSDIR=@APPSDIR@
288DEBUG=@DEBUG@
289TARGET=@TARGET@
Daniel Stenberge0c12af2002-05-23 09:39:31 +0000290THISDIR="@PWD@"
Björn Stenberg6d55a712002-07-15 13:19:00 +0000291VERSION=\$(shell date +%y%m%d-%H%M)
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000292
Björn Stenbergcd225732002-08-11 09:17:47 +0000293EXTRA_DEFINES=@EXTRA_DEFINES@
Linus Nielsen Feltzinge53bdf02002-07-26 14:13:03 +0000294.PHONY: firmware apps
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000295
Daniel Stenberg45abe612002-05-31 08:38:35 +0000296all: firmware apps
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000297
298firmware:
Björn Stenbergcd225732002-08-11 09:17:47 +0000299 \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) \$(DEBUG) OBJDIR=\$(THISDIR) EXTRA_DEFINES=\$(EXTRA_DEFINES)
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000300
301apps:
Björn Stenbergcd225732002-08-11 09:17:47 +0000302 \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) \$(DEBUG) OBJDIR=\$(THISDIR) VERSION=\$(VERSION) EXTRA_DEFINES=\$(EXTRA_DEFINES)
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000303
Daniel Stenberg40c61292002-05-24 09:33:37 +0000304clean-firmware:
Daniel Stenberg23d0b5d2002-08-07 14:37:53 +0000305 \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) clean
Daniel Stenberg40c61292002-05-24 09:33:37 +0000306
307clean-apps:
Daniel Stenberg23d0b5d2002-08-07 14:37:53 +0000308 \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) clean
Daniel Stenberg40c61292002-05-24 09:33:37 +0000309
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000310clean:
Daniel Stenberg23d0b5d2002-08-07 14:37:53 +0000311 \$(MAKE) clean-firmware clean-apps
Daniel Stenberg3c286ec2002-05-23 13:55:26 +0000312
Daniel Stenbergbc35ae32002-08-15 09:32:59 +0000313tags-firmware:
314 \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) tags
315
316tags-apps:
317 \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) tags
318
319tags:
320 @rm -f TAGS
321 \$(MAKE) tags-firmware tags-apps
Daniel Stenberg3aacd2e2002-05-23 09:11:35 +0000322EOF
Daniel Stenberge0c12af2002-05-23 09:39:31 +0000323
324echo "Created Makefile"