1. Added variable MULTILIB_VARIANTS to store all the instance variants
for multilib extend.

2. Added function all_multilib_tune_values to collect the variable
values for all multilib instance.

Signed-off-by: Lianhao Lu <lianhao...@intel.com>
---
 meta/classes/utils.bbclass |   35 +++++++++++++++++++++++++++++++++++
 meta/conf/bitbake.conf     |    1 +
 meta/conf/multilib.conf    |    6 +++++-
 3 files changed, 41 insertions(+), 1 deletions(-)

diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
index 8c3a9b8..f8adaea 100644
--- a/meta/classes/utils.bbclass
+++ b/meta/classes/utils.bbclass
@@ -341,3 +341,38 @@ def base_set_filespath(path, d):
                for o in overrides.split(":"):
                        filespath.append(os.path.join(p, o))
        return ":".join(filespath)
+
+def extend_variants(d, var, extend, delim=':'):
+       """Return a string of all bb class extend variants for the given 
extend"""
+       variants = []
+       whole = d.getVar(var, True) or ""
+       for ext in whole.split():
+               eext = ext.split(delim)
+               if len(eext) > 1 and eext[0] == extend:
+                       variants.append(eext[1])
+       return " ".join(variants)
+
+def all_multilib_tune_values(d, var, unique=True):
+       """Return a string of all ${var} in all multilib tune configuration"""
+       values = []
+       value = d.getVar(var, True) or ""
+       if value != "":
+               values.append(value)
+       variants = d.getVar("MULTILIB_VARIANTS", True) or ""
+       for item in variants.split():
+               localdata = bb.data.createCopy(d)
+               #Fix ME. OVERRIDES not work, we have to set DEFAULTTUNE to 
TUNENAME
+               #overrides = localdata.getVar("OVERRIDES", False) + 
":virtclass-multilib-" + item
+               #localdata.setVar("OVERRIDES", overrides)
+               if localdata.getVar("BBEXTENDVARIANT", True) == item:
+                       tunename=localdata.getVar("TUNENAME", False) or ""
+               else:
+                       
tunename=localdata.getVar("TUNENAME_virtclass-multilib-" + item, False) or ""
+               if tunename != "":
+                       localdata.setVar("DEFAULTTUNE", tunename)
+               value = localdata.getVar(var, True) or ""
+               if value != "":
+                       values.append(value)
+       if unique:
+               values = set(values)
+       return " ".join(values)
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 6e109ec..bcff50e 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -736,3 +736,4 @@ BB_HASHTASK_WHITELIST ?= 
"(.*-cross$|.*-native$|.*-cross-initial$|.*-cross-inter
 BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR 
SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM USER 
FILESPATH USERNAME STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE"
 
 MLPREFIX ??= ""
+MULTILIB_VARIANTS ??= ""
diff --git a/meta/conf/multilib.conf b/meta/conf/multilib.conf
index 894b7a5..60760df 100644
--- a/meta/conf/multilib.conf
+++ b/meta/conf/multilib.conf
@@ -1,6 +1,11 @@
 
 baselib = "${@d.getVar('BASE_LIB_tune-' + (d.getVar('DEFAULTTUNE', True) or 
'INVALID'), True) or 'lib'}"
 
+MULTILIB_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
+
+TUNENAME_virtclass-multilib-lib64 ?= "x86-64"
+TUNENAME_virtclass-multilib-lib32 ?= "x86"
+
 MULTILIBS ??= "multilib:lib32"
 BBCLASSEXTEND_append_pn-linux-libc-headers = " ${MULTILIBS}"
 BBCLASSEXTEND_append_pn-eglibc-initial = " ${MULTILIBS}"
@@ -21,4 +26,3 @@ BBCLASSEXTEND_append_pn-bash = " ${MULTILIBS}"
 BBCLASSEXTEND_append_pn-ncurses = " ${MULTILIBS}"
 BBCLASSEXTEND_append_pn-expat = " ${MULTILIBS}"
 BBCLASSEXTEND_append_pn-eglibc-locale = " ${MULTILIBS}"
-
-- 
1.7.0.4


_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to