From 70acc4f45f53a0f163b0301576e576c62dd877f8 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 6 Oct 2011 23:06:32 +0100 Subject: 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. (From OE-Core rev: 7a58911f6951abd56db9ebb37f8d6284d91fa514) Signed-off-by: Richard Purdie --- meta/classes/base.bbclass | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'meta/classes/base.bbclass') 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: -- cgit v1.2.3-54-g00ecf