FreeCalypso > hg > freecalypso-sw
diff nuc-fw/cfgmagic/processconf.sh @ 88:ccde45a06737
nuc-fw: beginning of the configuration mechanism
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Fri, 23 Aug 2013 02:02:59 +0000 |
parents | |
children | 28f967578233 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nuc-fw/cfgmagic/processconf.sh Fri Aug 23 02:02:59 2013 +0000 @@ -0,0 +1,65 @@ +#!/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 nuc-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= + +. ./build.conf + +if [ -z "$TARGET" ] +then + echo "Error: target not set in build.conf" 1>&2 + exit 1 +fi + +# Once we get some actual functionality, the following definitions +# will likely depend on the target and feature configuration, +# but for now all we have is a FreeNucleus RTOS demo. + +BUILD_COMPONENTS="nucdemo nucleus sprintf sysglue" +export_to_mk BUILD_COMPONENTS + +BUILD_DEFAULT_IMAGE=ramImage +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"