comparison configure.sh @ 34:32a6a9833bd6

configure.sh: putting it all together
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 17 Oct 2020 03:26:12 +0000
parents
children e58a5bb12de4
comparison
equal deleted inserted replaced
33:94ee95dad595 34:32a6a9833bd6
1 #!/bin/sh
2
3 set -e
4
5 if [ ! -f configure.sh ]
6 then
7 echo "This script needs to be run from the top of the source tree" 1>&2
8 exit 1
9 fi
10
11 if [ ! -f helpers/makeline ]
12 then
13 echo "Please run make in the helpers directory first" 1>&2
14 exit 1
15 fi
16
17 # start looking at our invokation line
18
19 if [ "$1" = --clean ]
20 then
21 clean_flag=1
22 shift
23 else
24 clean_flag=0
25 fi
26
27 if [ $# -lt 2 ]
28 then
29 echo "usage: $0 [--clean] target config [vars]" 1>&2
30 exit 1
31 fi
32
33 TARGET="$1"
34 CONFIG="$2"
35
36 if [ ! -f "targets/$TARGET.conf" -o ! -f "targets/$TARGET.h" ]
37 then
38 echo "Error: target $TARGET not known" 1>&2
39 exit 1
40 fi
41
42 if [ ! -f "configs/$CONFIG" ]
43 then
44 echo "Error: configuration $CONFIG not known" 1>&2
45 exit 1
46 fi
47
48 # target defaults that can be overridden by $TARGET.conf
49
50 CHIPSET=10
51 DSP=36
52 RF=12
53 DISABLE_SLEEP=0
54 FCHG_STATE=0
55 RVTMUX_ON_MODEM=0
56
57 . "targets/$TARGET.conf"
58
59 # settings derived from the target-defined DSP version
60
61 case "$DSP" in
62 33)
63 AMR=0
64 L1_DYN_DSP_DWNLD=0
65 L1_VOICE_MEMO_AMR=0
66 MELODY_E2=0
67 SPEECH_RECO=0
68 ;;
69 34)
70 AMR=1
71 L1_DYN_DSP_DWNLD=0
72 L1_VOICE_MEMO_AMR=0
73 MELODY_E2=0
74 SPEECH_RECO=0
75 ;;
76 36)
77 AMR=1
78 L1_DYN_DSP_DWNLD=1
79 L1_VOICE_MEMO_AMR=1
80 MELODY_E2=1
81 SPEECH_RECO=1
82 ;;
83 *)
84 echo "Error: DSP=$DSP setting not understood" 1>&2
85 exit 1
86 esac
87
88 # functional configuration part
89
90 # these vars MUST be set by the functional config
91 GPRS=
92 MMI=
93 R2D_STATE=
94 SRVC=
95
96 # dummy defaults for sans-UI configs
97 R2D_EMBEDDED_LCD=7
98 UI_CONFIG=bigcolor
99
100 # apply functional config
101
102 . "configs/$CONFIG"
103
104 # verify it
105
106 if [ -z "$GPRS" ]
107 then
108 echo "Error: configs/$CONFIG must set GPRS=" 1>&2
109 exit 1
110 fi
111
112 if [ -z "$MMI" ]
113 then
114 echo "Error: configs/$CONFIG must set MMI=" 1>&2
115 exit 1
116 fi
117
118 if [ -z "$R2D_STATE" ]
119 then
120 echo "Error: configs/$CONFIG must set R2D_STATE=" 1>&2
121 exit 1
122 fi
123
124 if [ -z "$SRVC" ]
125 then
126 echo "Error: configs/$CONFIG must set SRVC=" 1>&2
127 exit 1
128 fi
129
130 if [ "$MMI" != 0 ]
131 then
132 FCHG_STATE=1
133 fi
134
135 # miscellaneous configurable feature settings
136
137 ALLOW_CSIM_GSM=1
138 OSL=0
139 OSX=0
140 SERIAL_DYNAMIC_SWITCH=0
141 TI_PROFILER=0
142 TRACEMASK_IN_FFS=0
143 TR_BAUD_CONFIG=TR_BAUD_115200
144 USE_STR2IND=0
145
146 SUFFIX=
147
148 # allow the user to override these defaults
149
150 shift
151 shift
152 while [ $# != 0 ]
153 do
154 eval "$1"
155 shift
156 done
157
158 BUILD_DIR="build-$TARGET-$CONFIG$SUFFIX"
159
160 echo "Building configuration $CONFIG for target $TARGET in $BUILD_DIR"
161
162 if [ "$clean_flag" = 1 ]
163 then
164 rm -rf $BUILD_DIR
165 fi
166 mkdir -p $BUILD_DIR
167
168 : > $BUILD_DIR/lcfgen
169
170 # shell functions to be used in the configuration recipe
171
172 build_lib() {
173 if [ $# != 1 ]
174 then
175 echo "Error: build_lib takes 1 argument" 1>&2
176 exit 1
177 fi
178 scripts/mk-component.sh "$1"
179 SUBDIR="$SUBDIR $1"
180 current_lib=$1/$1.lib
181 LIBS="$LIBS $current_lib"
182 }
183
184 blob_lib() {
185 if [ $# != 1 ]
186 then
187 echo "Error: blob_lib takes 1 argument" 1>&2
188 exit 1
189 fi
190 current_lib="../blobs/$1.lib"
191 LIBS="$LIBS $current_lib"
192 }
193
194 lib_link_magic() {
195 if [ $# != 1 ]
196 then
197 echo "Error: lib_link_magic takes 1 argument" 1>&2
198 exit 1
199 fi
200 if [ -z "$current_lib" ]
201 then
202 echo "Error: lib_link_magic called before build_lib or blob_lib" 1>&2
203 exit 1
204 fi
205 SPECIAL_LINK_LIBS="$SPECIAL_LINK_LIBS $current_lib"
206 echo "$1" >> $BUILD_DIR/lcfgen
207 }
208
209 # invoke the configuration recipe
210
211 export BUILD_DIR TARGET USE_STR2IND
212 export CHIPSET DSP RF
213 export AMR L1_DYN_DSP_DWNLD L1_VOICE_MEMO_AMR MELODY_E2 SPEECH_RECO
214 export DISABLE_SLEEP
215 export FCHG_STATE R2D_STATE
216 export GPRS MMI SRVC RVTMUX_ON_MODEM
217 export R2D_EMBEDDED_LCD UI_CONFIG
218 export ALLOW_CSIM_GSM SERIAL_DYNAMIC_SWITCH TR_BAUD_CONFIG
219 export TI_PROFILER TRACEMASK_IN_FFS
220 export OSL
221
222 scripts/config-headers.sh
223
224 SUBDIR=
225 LIBS=
226 SPECIAL_LINK_LIBS=
227 current_lib=
228
229 build_lib ccddata
230
231 # ACI libs
232 build_lib aci
233 build_lib aciext
234 build_lib aci_dti_mng
235 build_lib atiext
236 build_lib comlib
237
238 if [ "$GPRS" = 1 ]
239 then
240 build_lib config_gprs_fl
241 build_lib config_gprs_ir
242 else
243 build_lib config_gsm_fl
244 build_lib config_gsm_ir
245 fi
246 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
247
248 # UI layers
249 if [ "$MMI" = 2 ]
250 then
251 build_lib bmi
252 build_lib icn
253 build_lib mfw
254 fi
255
256 # G23M protocol stack libs
257 build_lib alr
258 build_lib cc
259 build_lib dl
260 build_lib dti
261 build_lib l1_pei
262 build_lib mm
263 build_lib rr
264 build_lib sim_b_lib
265 build_lib sms
266 build_lib ss
267 build_lib uart_b_lib
268
269 # fax and data
270 if [ "$SRVC" != 0 ]
271 then
272 build_lib l2r
273 build_lib ra
274 build_lib rlp
275 fi
276
277 # fax specific
278 if [ "$SRVC" = 1 ]
279 then
280 build_lib fad
281 build_lib t30
282 fi
283
284 # GPRS specific
285 if [ "$GPRS" = 1 ]
286 then
287 build_lib cci
288 build_lib cci_ir
289 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
290 build_lib cl
291 build_lib gmm
292 build_lib grlc
293 build_lib grlc_ir
294 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
295 build_lib grr
296 build_lib llc
297 build_lib sm
298 build_lib sndcp
299 build_lib ppp
300 build_lib ppp_ir
301 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
302 build_lib upm
303 fi
304
305 # Condat drivers
306 build_lib gdi
307
308 # GPF
309 build_lib ccd
310 build_lib frame_fl
311 build_lib frame_ir
312 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
313
314 build_lib misc_fl
315 build_lib misc_ir
316 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
317
318 if [ "$OSX" = 1 ]
319 then
320 build_lib osx
321 else
322 blob_lib osx_na7_db
323 fi
324 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
325
326 build_lib tif_fl
327 build_lib tif_ir
328 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
329
330 # core drivers
331 build_lib drivers_flash
332
333 # Layer 1
334 build_lib tpudrv
335 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
336 build_lib l1_ext
337 lib_link_magic '(BSS_LIBS (.l1s_global))'
338 build_lib l1_int
339 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
340 build_lib l1_custom_ext
341 build_lib l1_custom_int
342 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
343
344 build_lib riviera_core_flash
345 build_lib riviera_cust_flash
346
347 # services
348 build_lib audio
349 build_lib audio_bgd
350 build_lib cst
351 build_lib dar
352 build_lib dar_gbl_var
353 lib_link_magic '(BSS_DAR_LIB (.bss))'
354 build_lib etm
355 build_lib lls
356
357 # app drivers
358 build_lib abb
359 build_lib buzzer
360 if [ "$FCHG_STATE" = 1 ]
361 then
362 build_lib fchg
363 fi
364 build_lib ffs
365 build_lib ffs_drv
366 build_lib ffs_pcm
367 build_lib kpd
368 build_lib power
369 if [ "$R2D_STATE" = 1 ]
370 then
371 build_lib r2d_drv_custom_flash
372 build_lib r2d_drv_flash
373 build_lib r2d_drv_int_ram
374 lib_link_magic '(CONST_LIBS (.text, .r2dlcd))'
375 fi
376 build_lib rtc_drv
377 build_lib sim_drv
378 build_lib spi_drv
379 build_lib uart_drv
380
381 # system glue
382 build_lib main
383 build_lib bootloader
384 lib_link_magic '(CONST_BOOT_LIB (.const, .text, .text:v$3) BSS_BOOT_LIB (.bss))'
385
386 # Nucleus
387 build_lib nucleus_flash
388 build_lib nucleus_intram
389 lib_link_magic '(BSS_LIBS (.bss) CONST_LIBS (.text, .const))'
390
391 # TI's libc/libgcc equivalent
392 blob_lib rts16le_flash
393 blob_lib rts16le_int_ram
394 lib_link_magic '(BSS_LIBS (.bss))'
395
396 # generate the top level Makefile!
397
398 helpers/makeline def CONFIG_NAME "$CONFIG$SUFFIX" > $BUILD_DIR/Makefile
399 echo >> $BUILD_DIR/Makefile
400 helpers/makeline def TARGET $TARGET >> $BUILD_DIR/Makefile
401 echo >> $BUILD_DIR/Makefile
402 helpers/makeline def SUBDIR $SUBDIR >> $BUILD_DIR/Makefile
403 echo >> $BUILD_DIR/Makefile
404 helpers/makeline def LIBS $LIBS >> $BUILD_DIR/Makefile
405 echo >> $BUILD_DIR/Makefile
406 helpers/makeline def SPECIAL_LINK_LIBS $SPECIAL_LINK_LIBS >> $BUILD_DIR/Makefile
407 echo >> $BUILD_DIR/Makefile
408 helpers/makeline def LINK_SCRIPT_SRC ../$LINK_SCRIPT_SRC >> $BUILD_DIR/Makefile
409 echo >> $BUILD_DIR/Makefile
410
411 if [ -n "$RAM_LINK_SCRIPT_SRC" ]
412 then
413 helpers/makeline def RAM_LINK_SCRIPT_SRC ../$RAM_LINK_SCRIPT_SRC \
414 >> $BUILD_DIR/Makefile
415 echo >> $BUILD_DIR/Makefile
416 fi
417
418 helpers/makeline def FLASH_BASE_ADDR $FLASH_BASE_ADDR >> $BUILD_DIR/Makefile
419 helpers/makeline def FLASH_SECTOR_SIZE $FLASH_SECTOR_SIZE >> $BUILD_DIR/Makefile
420 echo >> $BUILD_DIR/Makefile
421
422 if [ "$USE_STR2IND" = 1 ]
423 then
424 helpers/makeline def STR2IND_OBJ str2ind.obj >> $BUILD_DIR/Makefile
425 else
426 echo 'STR2IND_OBJ=' >> $BUILD_DIR/Makefile
427 fi
428 echo >> $BUILD_DIR/Makefile
429
430 cat makefile-frags/first-part >> $BUILD_DIR/Makefile
431
432 if [ "$USE_STR2IND" = 1 ]
433 then
434 cat makefile-frags/str2ind >> $BUILD_DIR/Makefile
435 fi
436
437 cat makefile-frags/link-steps >> $BUILD_DIR/Makefile
438
439 case "$TARGET" in
440 c11x|c139|j100)
441 cat makefile-frags/m0-to-bin-c139 >> $BUILD_DIR/Makefile
442 ;;
443 c155)
444 cat makefile-frags/m0-to-bin-c155 >> $BUILD_DIR/Makefile
445 ;;
446 *)
447 cat makefile-frags/m0-to-bin-std >> $BUILD_DIR/Makefile
448 ;;
449 esac
450
451 cat makefile-frags/flash-script-gen >> $BUILD_DIR/Makefile
452
453 if [ -n "$RAM_LINK_SCRIPT_SRC" ]
454 then
455 cat makefile-frags/ram-link-steps >> $BUILD_DIR/Makefile
456 fi
457
458 cat makefile-frags/clean-always >> $BUILD_DIR/Makefile
459 echo >> $BUILD_DIR/Makefile
460 echo 'FRC:' >> $BUILD_DIR/Makefile
461
462 # All done!
463
464 echo "Run make in $BUILD_DIR to compile the firmware"