This patch unifies the use of config options in v2 to all start with CONFIG_
[coreboot.git] / util / newconfig / config.g
index b8bd38c85747a9d679daaf03b61f9599495cd6db..81ce4290219f77ab76c791a3a5f2d2804bf75497 100644 (file)
@@ -323,6 +323,22 @@ class romimage:
                        return
                fatal("No such rule \"%s\" for addmakedepend" % id)
 
+       def addmakeobject(self, file, obj):
+               source = topify(obj[1])
+               type = obj[2]
+               if (type  == 'S'):
+                       # for .S, .o depends on .s
+                       file.write("%s: %s.s\n" % (obj[0], obj[3]))
+                       file.write("\t$(CC) -c $(CONFIG_CPU_OPT) -o $@ $<\n")
+                       # and .s depends on .S
+                       file.write("%s.s: %s\n" % (obj[3], source))
+                       # Note: next 2 lines are ONE output line!
+                       file.write("\t$(CPP) $(CPPFLAGS) $< ")
+                       file.write(">$@.new && mv $@.new $@\n")
+               else:
+                       file.write("%s: %s\n" % (obj[0], source))
+                       file.write("\t$(CC) -c $(CFLAGS) -o $@ $<\n")
+
        # this is called with an an object name. 
        # the easiest thing to do is add this object to the current 
        # component.
@@ -608,8 +624,12 @@ class option_value:
 class partobj:
        """A configuration part"""
        def __init__ (self, image, dir, parent, part, type_name, instance_name, chip_or_device):
-               debug.info(debug.object, "partobj dir %s parent %s part %s" \
-                               % (dir, parent, part))
+               if (parent):
+                       debug.info(debug.object, "partobj dir %s parent %s part %s" \
+                               % (dir, parent.instance_name, part))
+               else:
+                       debug.info(debug.object, "partobj dir %s part %s" \
+                               % (dir, part))
 
                # romimage that is configuring this part
                self.image = image
@@ -1366,7 +1386,7 @@ def endromimage():
        global curimage
        global bootblocksize
        mainboard()
-       imagesize = getoption("ROM_IMAGE_SIZE", curimage)
+       imagesize = getoption("CONFIG_ROM_IMAGE_SIZE", curimage)
        bootblocksize += imagesize
        print "End ROMIMAGE"
        curimage = 0
@@ -1379,9 +1399,9 @@ def mainboardsetup(path):
        full_mainboard_path = os.path.join(treetop, 'src', 'mainboard', path)
        vendor = re.sub("/.*", "", path)
         part_number = re.sub("[^/]*/", "", path)
-       setdefault('MAINBOARD', full_mainboard_path, 0)
-       setdefault('MAINBOARD_VENDOR', vendor, 0)
-       setdefault('MAINBOARD_PART_NUMBER', part_number, 0)
+       setdefault('CONFIG_MAINBOARD', full_mainboard_path, 0)
+       setdefault('CONFIG_MAINBOARD_VENDOR', vendor, 0)
+       setdefault('CONFIG_MAINBOARD_PART_NUMBER', part_number, 0)
 
 def mainboard():
        global curimage, dirstack, partstack
@@ -1551,9 +1571,9 @@ def adddep(id, str):
 def setarch(my_arch):
        """arch is 'different' ... darn it."""
        global curimage
-       print "SETTING ARCH %s\n" % my_arch
+       print "SETTING CONFIG_ARCH %s\n" % my_arch
        curimage.setarch(my_arch)
-       setdefault('ARCH', my_arch, 1)
+       setdefault('CONFIG_ARCH', my_arch, 1)
        part('arch', my_arch, 'Config.lb', 0)
 
 def doconfigfile(path, confdir, file, rule):
@@ -1627,7 +1647,7 @@ parser Config:
     token ACTION:              'action'
     token ADDACTION:           'addaction'
     token ALWAYS:              'always'
-    token ARCH:                        'arch'
+    token CONFIG_ARCH:                 'arch'
     token BUILDROM:            'buildrom'
     token COMMENT:             'comment'
     token CONFIG:              'config'
@@ -1657,7 +1677,7 @@ parser Config:
     token IRQ:                 'irq'
     token LDSCRIPT:            'ldscript'
     token LOADOPTIONS:         'loadoptions'
-    token MAINBOARD:           'mainboard'
+    token CONFIG_MAINBOARD:            'mainboard'
     token MAINBOARDINIT:       'mainboardinit'
     token MAKEDEFINE:          'makedefine'
     token MAKERULE:            'makerule'
@@ -1690,7 +1710,7 @@ parser Config:
     # Dir's on the other hand are abitrary
     # this may all be stupid.
     token RULE:                        r'[-a-zA-Z0-9_$()./]+[-a-zA-Z0-9_ $()./]+[-a-zA-Z0-9_$()./]+'
-    token DIRPATH:             r'[-a-zA-Z0-9_$()./]+'
+    token DIRPATH:             r'[-a-zA-Z0-9_$()./,]+'
     token ID:                  r'[a-zA-Z_.]+[a-zA-Z0-9_.]*'
     token DELEXPR:             r'{([^}]+|\\.)*}'
     token STR:                 r'"([^\\"]+|\\.)*"'
@@ -1757,7 +1777,7 @@ parser Config:
                        ]                       {{ if (C): part(parttype, partid, 'Config.lb', name) }}
                        partend<<C>>            
 
-    rule arch<<C>>:    ARCH ID                 {{ if (C): setarch(ID) }}
+    rule arch<<C>>:    CONFIG_ARCH ID                  {{ if (C): setarch(ID) }}
                        partend<<C>>
     
     rule mainboardinit<<C>>:
@@ -1949,7 +1969,7 @@ parser Config:
     rule payload<<C>>: PAYLOAD DIRPATH         {{ if (C): payload(DIRPATH) }}
 
     rule mainboard:
-                       MAINBOARD PATH          {{ mainboardsetup(PATH) }}
+                       CONFIG_MAINBOARD PATH           {{ mainboardsetup(PATH) }}
 
     rule romif<<C>>:   IF ID                   {{ c = lookup(ID) }}
                        (romstmt<<C and c>>)* 
@@ -2098,7 +2118,7 @@ def writeimagemakefile(image):
        file.write("# Function to create an item like -Di586 or -DCONFIG_MAX_CPUS='1' or -Ui686\n")
        file.write("D_item = $(shell echo '$(if $(subst undefined,,$(origin $1)),\\#define $1$(if $($1), $($1),),\\#undef $1)' >> settings.h)\n\n")
        file.write("# Compute the value of CPUFLAGS here during make's first pass.\n")
-       file.write("CPUFLAGS := $(strip $(shell echo '/* autogenerated */' > settings.h)$(foreach _var_,$(VARIABLES),$(call D_item,$(_var_)))-include $(PWD)/settings.h)\n\n")
+       file.write("CPUFLAGS := $(strip $(shell echo '/* autogenerated */' > settings.h)$(foreach _var_,$(VARIABLES),$(call D_item,$(_var_)))-include $(CURDIR)/settings.h)\n\n")
 
        for i in image.getuserdefines():
                file.write("%s\n" %i)
@@ -2166,38 +2186,15 @@ def writeimagemakefile(image):
 
        file.write("\n# initobjectrules:\n")
        for irule, init in image.getinitobjectrules().items():
-               source = topify(init[1])
-               type = init[2]
-               if (type  == 'S'):
-                       # for .S, .o depends on .s
-                       file.write("%s: %s.s\n" % (init[0], init[3]))
-                       file.write("\t$(CC) -c $(CPU_OPT) -o $@ $<\n")
-                       # and .s depends on .S
-                       file.write("%s.s: %s\n" % (init[3], source))
-                       # Note: next 2 lines are ONE output line!
-                       file.write("\t$(CPP) $(CPPFLAGS) $< ")
-                       file.write(">$@.new && mv $@.new $@\n")
-               else:
-                       file.write("%s: %s\n" % (init[0], source))
-                       file.write("\t$(CC) -c $(CFLAGS) -o $@ $<\n")
+               image.addmakeobject(file, init);
 
-       file.write("\n# objectrules:\n")
+       file.write("\n# objectrules (don't duplicate initobjects):\n")
        for objrule, obj in image.getobjectrules().items():
-               source = topify(obj[1])
-               type = obj[2]
-               if (type  == 'S'):
-                       # for .S, .o depends on .s
-                       file.write("%s: %s.s\n" % (obj[0], obj[3]))
-                       file.write("\t$(CC) -c $(CPU_OPT) -o $@ $<\n")
-                       # and .s depends on .S
-                       file.write("%s.s: %s\n" % (obj[3], source))
-                       # Note: next 2 lines are ONE output line!
-                       file.write("\t$(CPP) $(CPPFLAGS) $< ")
-                       file.write(">$@.new && mv $@.new $@\n")
+
+               if (getdict(image.getinitobjectrules(), obj[3])):
+                       debug.info(debug.object, "skipping %s" % (obj[3]))
                else:
-                       file.write("%s: %s\n" % (obj[0], source))
-                       file.write("\t$(CC) -c $(CFLAGS) -o $@ $<\n")
-               #file.write("%s\n" % objrule[2])
+                       image.addmakeobject(file, obj);
 
        for driverrule, driver in image.getdriverrules().items():
                source = topify(driver[1])
@@ -2207,20 +2204,7 @@ def writeimagemakefile(image):
 
        file.write("\n# smmobjectrules:\n")
        for irule, smm in image.getsmmobjectrules().items():
-               source = topify(smm[1])
-               type = smm[2]
-               if (type  == 'S'):
-                       # for .S, .o depends on .s
-                       file.write("%s: %s.s\n" % (smm[0], smm[3]))
-                       file.write("\t$(CC) -c $(CPU_OPT) -o $@ $<\n")
-                       # and .s depends on .S
-                       file.write("%s.s: %s\n" % (smm[3], source))
-                       # Note: next 2 lines are ONE output line!
-                       file.write("\t$(CPP) $(CPPFLAGS) $< ")
-                       file.write(">$@.new && mv $@.new $@\n")
-               else:
-                       file.write("%s: %s\n" % (smm[0], source))
-                       file.write("\t$(CC) -c $(CFLAGS) -o $@ $<\n")
+               image.addmakeobject(file, smm);
 
        # special rule for chip_target.c
        file.write("static.o: static.c\n")
@@ -2267,20 +2251,14 @@ def writemakefile(path):
        file.write("include %s/Makefile.settings\n\n" % romimages.keys()[0])
 
        # main rule
-       file.write("ifeq \"$(CONFIG_CBFS)\" \"1\"\n")
-       file.write("\nall: ")
-       for i in buildroms:
-               file.write(" %sfs" % i.name)
-       file.write("\n")
-       file.write("else")
        file.write("\nall: ")
        for i in buildroms:
                file.write(" %s" % i.name)
        file.write("\n")
-       file.write("endif\n\n")
 
        # cbfstool rules
-       file.write("\ncbfstool:\n\tmkdir -p tools/lzma\n\t$(MAKE) -C $(TOP)/util/cbfstool obj=$(shell pwd)\n\n")
+       file.write("\ncbfstool:\n\tmkdir -p cbfs/tools/lzma\n\t$(MAKE) -C $(TOP)/util/cbfstool obj=$(shell pwd)/cbfs\n")
+       file.write("\ncbfstool-clean:\n\t$(MAKE) -C $(TOP)/util/cbfstool obj=$(shell pwd)/cbfs clean\n\n")
 
        file.write("include Makefile.settings\n\n")
        for i, o in romimages.items():
@@ -2299,35 +2277,51 @@ def writemakefile(path):
        file.write("base-clean:\n")
        file.write("\trm -f romcc*\n\n")
 
+       file.write("ifeq \"$(CONFIG_CBFS)\" \"1\"\n\n")
+       file.write("CBFS_COMPRESS_FLAG:=\n")
+       file.write("ifeq \"$(CONFIG_COMPRESSED_PAYLOAD_LZMA)\" \"1\"\nCBFS_COMPRESS_FLAG:=l\nendif\n\n")
+
        for i in buildroms:
-               file.write("%s:" % i.name)
+               file.write("%s: cbfstool" %(i.name))
                for j in i.roms:
                        file.write(" %s/coreboot.rom " % j)
                file.write("\n")
-               file.write("\t cat ")
+
+               romsize = getoption("CONFIG_ROM_SIZE", image)
+
+               file.write("\n\trm -f %s\n" %(i.name))
+
+               # build the bootblock here.
+               file.write("\n\tcat")
                for j in i.roms:
                        file.write(" %s/coreboot.rom " % j)
-               file.write("> %s\n\n" %i.name)
-               # build the bootblock here as well. 
-               file.write("\n")
-               file.write("\t cat ")
-               for j in i.roms:
-                       file.write(" %s/coreboot.strip " % j)
                file.write("> %s.bootblock\n\n" %i.name)
-
-       romsize = getoption("ROM_SIZE", image)
-       # i.name? That can not be right, can it? 
-       file.write("%sfs: %s cbfstool\n" %(i.name,i.name));
-       file.write("\trm -f coreboot.cbfs\n");
-       file.write("\t./cbfstool %sfs create %s %s %s.bootblock\n" % (i.name, romsize, bootblocksize, i.name))
-       for i in pciroms:
-               file.write("\tif [ -f coreboot.romfs ]; then ./cbfstool coreboot.romfs add %s pci%04x,%04x.rom 48; fi\n" % (i.name, i.pci_vid, i.pci_did))
-       for i in buildroms:
+               file.write("\t./cbfs/cbfstool %s create %s %s %s.bootblock\n"
+                          %(i.name, romsize, bootblocksize, i.name))
+               for j in pciroms:
+                       file.write("\t./cbfs/cbfstool %s add %s pci%04x,%04x.rom optionrom\n" % (i.name, j.name, j.pci_vid, j.pci_did))
                for j in i.roms:
                        #failover is a hack that will go away soon. 
                        if (j != "failover") and (rommapping[j] != "/dev/null"):
-                               file.write("\tif [ -f %s/cbfs-support ]; then ./cbfstool %sfs add-payload %s %s/payload `cat %s/cbfs-support`; fi\n" % (j, i.name, rommapping[j], j, j))
-               file.write("\t ./cbfstool %sfs print\n" % i.name)
+                               file.write("\t./cbfs/cbfstool %s add-payload %s %s/payload $(CBFS_COMPRESS_FLAG)\n" % (i.name, rommapping[j], j,))
+                       if (j != "failover"):
+                               file.write("\t./cbfs/cbfstool %s add-stage %s/coreboot_ram %s/coreboot_ram $(CBFS_COMPRESS_FLAG)\n" % (i.name, j, j,))
+                       file.write("\tif [ -f %s/coreboot_apc ]; then ./cbfs/cbfstool %s add-stage %s/coreboot_apc %s/coreboot_apc $(CBFS_COMPRESS_FLAG); fi\n" % (j, i.name, j, j,))
+               file.write("\t./cbfs/cbfstool %s print\n" % i.name)
+               file.write("\n")
+       file.write("else\n\n")
+
+       for i in buildroms:
+               file.write("%s:" % i.name)
+               for j in i.roms:
+                       file.write(" %s/coreboot.rom " % j)
+               file.write("\n")
+               file.write("\t cat ")
+               for j in i.roms:
+                       file.write(" %s/coreboot.rom " % j)
+               file.write("> %s\n\n" %i.name)
+
+       file.write("endif\n\n")
 
        file.write(".PHONY: all clean cbfstool")
        for i in romimages.keys():