From: Richard Purdie Date: Thu, 6 Oct 2011 22:06:32 +0000 (+0100) Subject: base.bbclass: Implement PACKAGECONFIG X-Git-Tag: 2015-4~13204 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=7a58911f6951abd56db9ebb37f8d6284d91fa514;p=openembedded-core.git base.bbclass: Implement PACKAGECONFIG These enabled options to be specified in the form: PACKAGECONFIG ?? = "" PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends" So that DEPENDS, RDEPENDS_${PN} and EXTRA_OECONF can be automatically built from specific options. Those options can easily be customised by the distro config or the user. Based on some ideas from Chris Elston but with an improved easier to use one line interface. Signed-off-by: Richard Purdie --- diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 7cd6efad1d..f5397446dd 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -291,6 +291,44 @@ do_build () { python () { import exceptions, string, re + # Handle PACKAGECONFIG + # + # These take the form: + # + # PACKAGECONFIG ?? = "" + # PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends" + pkgconfig = (d.getVar('PACKAGECONFIG', True) or "").split() + if pkgconfig: + def appendVar(varname, appends): + if not appends: + return + varname = bb.data.expand(varname, d) + content = d.getVar(varname, False) or "" + content = content + " " + " ".join(appends) + d.setVar(varname, content) + + extradeps = [] + extrardeps = [] + extraconf = [] + for flag, flagval in (d.getVarFlags("PACKAGECONFIG") or {}).items(): + if flag == "defaultval": + continue + items = flagval.split(",") + if len(items) == 3: + enable, disable, depend = items + rdepend = "" + elif len(items) == 4: + enable, disable, depend, rdepend = items + if flag in pkgconfig: + extradeps.append(depend) + extrardeps.append(rdepend) + extraconf.append(enable) + else: + extraconf.append(disable) + appendVar('DEPENDS', extradeps) + appendVar('RDEPENDS_${PN}', extrardeps) + appendVar('EXTRA_OECONF', extraconf) + # If PRINC is set, try and increase the PR value by the amount specified princ = bb.data.getVar('PRINC', d, True) if princ: