With this patch the v2 build system will create a directory hierarchy

similar to what v3 does. This is required to have two source files with
the same name but in different directories. (As in, two different SuperIOs on
board, with a superio.c each)

Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Peter Stuge <peter@stuge.se>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3961 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Stefan Reinauer 2009-02-28 12:50:32 +00:00 committed by Stefan Reinauer
parent 3c7f46b422
commit 21c8b5ab5c
3 changed files with 35 additions and 6 deletions

View File

@ -45,8 +45,8 @@ end
makerule coreboot_ram.o
depends "$(DRIVER) coreboot.a $(LIBGCC_FILE_NAME)"
action "$(CC) $(DISTRO_LFLAGS) -nostdlib -r -o $@ c_start.o $(DRIVER) coreboot.a $(LIBGCC_FILE_NAME)"
depends "$(TOP)/src/arch/$(ARCH)/lib/c_start.o $(DRIVER) coreboot.a $(LIBGCC_FILE_NAME)"
action "$(CC) $(DISTRO_LFLAGS) -nostdlib -r -o $@ $^"
end
makerule coreboot_ram

View File

@ -27,8 +27,8 @@ if HAVE_SMI_HANDLER
smmobject smihandler.o
makerule smm.o
depends "$(SMM-OBJECTS) printk.o vtxprintf.o $(LIBGCC_FILE_NAME)"
action "$(CC) $(DISTRO_LFLAGS) -nostdlib -r -o $@ $(SMM-OBJECTS) printk.o vtxprintf.o $(LIBGCC_FILE_NAME)"
depends "$(SMM-OBJECTS) $(TOP)/src/console/printk.o $(TOP)/src/console/vtxprintf.o $(LIBGCC_FILE_NAME)"
action "$(CC) $(DISTRO_LFLAGS) -nostdlib -r -o $@ $^"
end
makerule smm

View File

@ -329,9 +329,14 @@ class romimage:
type = object_name[-1:]
if (object_name[0] == '.'):
source = base + suffix
object = base + '.o'
else:
source = os.path.join(dirstack.tos(), base + suffix)
object = base + '.o'
rel_base = re.sub(treetop, "", os.path.join(dirstack.tos(), base))
source = "$(TOP)/" + rel_base + suffix
if (rel_base[0] == '/'):
rel_base = re.sub("^/", "", rel_base)
object = rel_base + '.o'
debug.info(debug.object, "add object %s source %s" % (object_name, source))
l = getdict(dict, base)
if (l):
@ -2378,6 +2383,30 @@ if __name__=='__main__':
print "Creating directory %s" % img_dir
os.makedirs(img_dir)
for objrule, obj in image.getobjectrules().items():
sub_dir = img_dir + '/' + os.path.dirname(obj[0])
if not os.path.isdir(sub_dir):
print "Creating sub directory %s" % sub_dir
os.makedirs(sub_dir)
for driverrule, driver in image.getdriverrules().items():
sub_dir = img_dir + '/' + os.path.dirname(driver[0])
if not os.path.isdir(sub_dir):
print "Creating sub directory %s" % sub_dir
os.makedirs(sub_dir)
for srule, smm in image.getsmmobjectrules().items():
sub_dir = img_dir + '/' + os.path.dirname(smm[0])
if not os.path.isdir(sub_dir):
print "Creating sub directory %s" % sub_dir
os.makedirs(sub_dir)
for irule, init in image.getinitobjectrules().items():
sub_dir = img_dir + '/' + os.path.dirname(init[0])
if not os.path.isdir(sub_dir):
print "Creating sub directory %s" % sub_dir
os.makedirs(sub_dir)
if (debug.level(debug.dump)):
for i in image.getinitincludes():
debug.info(debug.dump, "crt0include file %s" % i)