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"