FreeCalypso > hg > freecalypso-citrine
diff cfgmagic/processconf.sh @ 0:75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 09 Jun 2016 00:02:41 +0000 |
parents | |
children | 7155882cc49d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cfgmagic/processconf.sh Thu Jun 09 00:02:41 2016 +0000 @@ -0,0 +1,171 @@ +#!/bin/sh +# The top level Makefile invokes this Bourne shell script after ensuring +# that the build.conf file is present. The job of this script is to grok +# that configuration file and to produce include/config.{h,mk,m4} files +# corresponding to the selected configuration. +# +# The current directory is expected to be the top level of gsm-fw, i.e., +# all fragments are sourced as cfgmagic/blah. +# Don't run this script directly - let the Makefile do it for you. + +set -e +. cfgmagic/functions +TARGET= +c_export_list= +mk_export_list= +m4_export_list= +target_feature_list= + +# some defaults +FFS_IN_RAM=1 +RVTMUX_UART_port=IrDA +RVTMUX_UART_baud=115200 +FLASH_BOOT_VIA_BOOTROM=1 +FLASHIMAGE_BASE_ADDR=0x2000 +DWNLD=1 +L1_DYN_DSP_DWNLD=0 + +# We always export CONFIG_INCLUDE_xxx to config.h and config.mk, whether +# enabled or disabled. This way enabling any of these components is +# as simple as CONFIG_INCLUDE_xxx=1, without having to remember the +# export_to_{c,mk} magic. +CONFIG_INCLUDE_GPF=0 +export_to_c CONFIG_INCLUDE_GPF +export_to_mk CONFIG_INCLUDE_GPF +CONFIG_INCLUDE_L1=0 +export_to_c CONFIG_INCLUDE_L1 +export_to_mk CONFIG_INCLUDE_L1 +CONFIG_INCLUDE_PCM=0 +export_to_c CONFIG_INCLUDE_PCM +export_to_mk CONFIG_INCLUDE_PCM +CONFIG_INCLUDE_PS=0 +export_to_c CONFIG_INCLUDE_PS +export_to_mk CONFIG_INCLUDE_PS +CONFIG_INCLUDE_SIM=0 +export_to_c CONFIG_INCLUDE_SIM +export_to_mk CONFIG_INCLUDE_SIM + +. ./build.conf + +if [ -z "$TARGET" ] +then + echo "Error: target not set in build.conf" 1>&2 + exit 1 +fi + +# Serial configuration +case "$RVTMUX_UART_port" in + IrDA) + CONFIG_LLDBG_UART_BASE=0xFFFF5000 + ;; + MODEM) + CONFIG_LLDBG_UART_BASE=0xFFFF5800 + CONFIG_RVTMUX_ON_MODEM=1 + export_to_c CONFIG_RVTMUX_ON_MODEM + ;; + *) + echo "Error: unknown RVTMUX_UART_port=$RVTMUX_UART_port" 1>&2 + exit 1 + ;; +esac + +TR_BAUD_CONFIG=TR_BAUD_$RVTMUX_UART_baud +export_to_c TR_BAUD_CONFIG + +# FFS in RAM +export_to_c FFS_IN_RAM +export_to_m4 FFS_IN_RAM +if [ $FFS_IN_RAM = 1 ] +then + if [ -z "$RAMFFS_BLKSIZE_LOG2" -o -z "$RAMFFS_NBLOCKS" ] + then + echo \ + "Error: RAMFFS_BLKSIZE_LOG2 and RAMFFS_NBLOCKS need to be defined" 1>&2 + exit 1 + fi + export_to_c RAMFFS_BLKSIZE_LOG2 RAMFFS_NBLOCKS + export_to_m4 RAMFFS_BLKSIZE_LOG2 RAMFFS_NBLOCKS +fi + +# Sane vs. Compal target differences for flash boot +export_to_c FLASH_BOOT_VIA_BOOTROM +export_to_m4 FLASH_BOOT_VIA_BOOTROM FLASHIMAGE_BASE_ADDR + +# L1 configuration +if [ "$CONFIG_GSM" = 1 -a "$CONFIG_L1_STANDALONE" = 1 ] +then + echo "Error: feature gsm and feature l1stand are mutually exclusive" \ + 1>&2 + exit 1 +fi +if [ "$CONFIG_INCLUDE_L1" = 1 ] +then + export_to_c L1_DYN_DSP_DWNLD DWNLD + export_to_mk L1_DYN_DSP_DWNLD +fi + +# The list of build components: we have some invariants that are always +# included, and some others that are included depending on the configuration. + +BUILD_COMPONENTS="bsp libiram nucleus riviera serial services sprintf sysglue" + +if [ "$CONFIG_INCLUDE_GPF" = 1 ] +then + BUILD_COMPONENTS="$BUILD_COMPONENTS gpf" +fi +if [ "$CONFIG_INCLUDE_L1" = 1 ] +then + BUILD_COMPONENTS="$BUILD_COMPONENTS L1" +fi +if [ "$CONFIG_INCLUDE_PS" = 1 ] +then + BUILD_COMPONENTS="$BUILD_COMPONENTS ccd comlib" + BUILD_COMPONENTS="$BUILD_COMPONENTS g23m-aci g23m-glue g23m-gsm" +fi +if [ "$CONFIG_LLDBG" = 1 ] +then + BUILD_COMPONENTS="$BUILD_COMPONENTS lldbg" +fi + +export_to_mk BUILD_COMPONENTS + +# The default build image type depends on the target and features +if [ -f "cfgmagic/defimage.$TARGET" ] +then + . "cfgmagic/defimage.$TARGET" +else + BUILD_DEFAULT_IMAGE=ramImage +fi + +export_to_mk BUILD_DEFAULT_IMAGE + +# Now generate the output files! + +parse_export_list() { + for var in $1 + do + eval "value=\"\$$var\"" + emit_def "$var" "$value" + done +} + +# make config.h +emit_def() { + echo "#define $1 $2" >> include/config.h +} +: > include/config.h +parse_export_list "$c_export_list" + +# make config.mk +emit_def() { + echo "$1= $2" >> include/config.mk +} +: > include/config.mk +parse_export_list "$mk_export_list" + +# make config.m4 +emit_def() { + echo 'define(`'"$1'"',`'"$2')dnl" >> include/config.m4 +} +: > include/config.m4 +parse_export_list "$m4_export_list"