Skip to content
  • Matthias Schiffer's avatar
    build: rework config generation · 9e23534e
    Matthias Schiffer authored
    So far, we were using a sort operation on the generated .config to
    implement precedence of =y packages over =m, and =m over unset.
    Unfortunately, this sort not only used for packages, but for all config
    lines. This made it impossible to override settings from targets/generic
    in a target config when the new setting was sorted before the generic
    setting.
    
    To fix this, track configurations by their keys, so we can properly
    override config keys that were set before. Value-based precedence is
    only preserved for package configuration.
    
    The config() and try_config() calls always take key and value as
    separate arguments now. Strings are quoted automatically; the values
    true, nil and false map to y, m and unset for tristate options. config()
    can take an optional third argument to override the error message to
    display when the setting fails to apply.
    
    All existing target configs generate the same .config with the old and the
    new code. The new code is also a bit faster on targets with many devices.
    9e23534e