Author: myles
Date: 2009-04-17 19:58:34 +0200 (Fri, 17 Apr 2009)
New Revision: 4131
Modified:
trunk/coreboot-v2/util/newconfig/config.g
Log:
Add include to config.g
Usage:
include path
path can be relative to the current directory or absolute starting at /src.
I tested it with:
include /config/absolute.lb
include relative.lb
in /src/northbridge/amd/amdk8/Config.lb
which included
/src/northbridge/amd/amdk8/relatvie.lb
/src/config/absolute.lb
Signed-off-by: Myles Watson <mylesgw(a)gmail.com>
Acked-by: Ronald G. Minnich <rminnich(a)gmail.com>
Modified: trunk/coreboot-v2/util/newconfig/config.g
===================================================================
--- trunk/coreboot-v2/util/newconfig/config.g 2009-04-17 17:11:39 UTC (rev 4130)
+++ trunk/coreboot-v2/util/newconfig/config.g 2009-04-17 17:58:34 UTC (rev 4131)
@@ -1514,6 +1514,20 @@
doconfigfile(fullpath, path, file, 'cfgfile')
dirstack.pop()
+def dofile(path):
+ """dofile is a simple include for single files"""
+ # if the first char is '/', it is relative to treetop,
+ # else relative to curdir
+ # os.path.join screws up if the name starts with '/', sigh.
+ if (path[0] == '/'):
+ fullpath = os.path.join(treetop, 'src')
+ path = re.sub('^/*', '', path)
+ else:
+ fullpath = dirstack.tos()
+ print "INCLUDE %s" %path
+ debug.info(debug.statement, "DOFILE: path %s, fullpath %s" % (path, fullpath))
+ doconfigfile(fullpath, '', path, 'cfgfile')
+
def lookup(name):
global curimage
return getoption(name, curimage)
@@ -1638,6 +1652,7 @@
token INIT: 'init'
token INITOBJECT: 'initobject'
token INITINCLUDE: 'initinclude'
+ token INCLUDE: 'include'
token IO: 'io'
token IRQ: 'irq'
token LDSCRIPT: 'ldscript'
@@ -1841,6 +1856,8 @@
HEX_NUM {{ cluster = int(HEX_NUM, 16) }}
{{ if (C): partstack.tos().addapic_clusterpath(cluster) }}
+ rule include<<C>>: INCLUDE DIRPATH {{ dofile(DIRPATH) }}
+
rule cpu<<C>>: CPU {{ if (C): devicepart('cpu') }}
HEX_NUM {{ id = int(HEX_NUM, 16) }}
{{ if (C): partstack.tos().addcpupath(id) }}
@@ -1886,6 +1903,7 @@
| iif<<C>> {{ return iif }}
| init<<C>> {{ return init }}
| initinclude<<C>> {{ return initinclude }}
+ | include<<C>> {{ return include }}
| initobject<<C>> {{ return initobject }}
| ldscript<<C>> {{ return ldscript}}
| mainboardinit<<C>> {{ return mainboardinit }}