view 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 source

#!/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"