summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/config/Config.lb4
-rw-r--r--src/cpu/x86/smm/Config.lb4
-rw-r--r--util/newconfig/config.g33
3 files changed, 35 insertions, 6 deletions
diff --git a/src/config/Config.lb b/src/config/Config.lb
index 85f1632b93..d341b1fbcc 100644
--- a/src/config/Config.lb
+++ b/src/config/Config.lb
@@ -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
diff --git a/src/cpu/x86/smm/Config.lb b/src/cpu/x86/smm/Config.lb
index 8edbabdf3d..652cb2de7f 100644
--- a/src/cpu/x86/smm/Config.lb
+++ b/src/cpu/x86/smm/Config.lb
@@ -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
diff --git a/util/newconfig/config.g b/util/newconfig/config.g
index 0e741836e7..75d46793f1 100644
--- a/util/newconfig/config.g
+++ b/util/newconfig/config.g
@@ -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)