Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Richard Purdie <richard.purdie@linuxfoundation.org>
To: openembedded-core <openembedded-core@lists.openembedded.org>
Subject: [PATCH] gcc-multilib: Simply/fix MULTILIB_OPTIONS handling
Date: Thu, 24 Jul 2014 22:10:49 +0100	[thread overview]
Message-ID: <1406236249.27697.19.camel@ted> (raw)

MULTILIB_OPTIONS takes the parameters which trigger a given multilib to be
selected. It supports *one* option per multilib, '/' separated. Spaces
separate options used to generate additional multilib combinations.

Adding in all of CFLAGS to this is therefore clearly a really bad idea
but how do we fix things?

The best option I've come up with so far is a list of whitelist variables
to use to trigger the multilibs. Its populated with the standard multilibs
we support, anyone setting up an advanced multilib can populate the variable
with the correct trigger parameters.

This has the advantage of simplifying the code and allowing us to remove
the code filtering blocks since there is no longer option duplication. Testing
after this change shows a much improved sdk toolchain functionality.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

diff --git a/meta/recipes-devtools/gcc/gcc-multilib-config.inc b/meta/recipes-devtools/gcc/gcc-multilib-config.inc
index acea6d8..b8c705a 100644
--- a/meta/recipes-devtools/gcc/gcc-multilib-config.inc
+++ b/meta/recipes-devtools/gcc/gcc-multilib-config.inc
@@ -14,6 +14,8 @@
 #    gcc/config/mips/linux64.h
 #    gcc/config/rs6000/linux64.h
 
+MULTILIB_OPTION_WHITELIST ??= "-m32 -m64 -mx32 -mabi=n32 -mabi=32 -mabi=64" 
+
 python gcc_multilib_setup() {
     import re
     import shutil
@@ -187,30 +189,19 @@ python gcc_multilib_setup() {
             bb.error('Unknown libdir (%s) of the tune : %s' % (tune_baselib, tune))
 
         # take out '-' mcpu='s and march='s from parameters
-        options.append(re.sub(r'mcpu=[^ ]+ *', '',
-                         re.sub(r'march=[^ ]+ *', '',
-                           re.sub(r' +\-+', ' ',
-                             re.sub(r'^ *\-+', '', tune_parameters['ccargs'])))))
+        opts = []
+        whitelist = (d.getVar("MULTILIB_OPTION_WHITELIST", True) or "").split()
+        for i in tune_parameters['ccargs'].split():
+            if i in whitelist:
+                opts.append(i)
+        options.append(" ".join(opts))
+
         if tune_baselib == 'lib':
             dirnames.append('32')  # /lib => 32bit lib
         else:
             dirnames.append(tune_baselib.replace('lib', ''))
         osdirnames.append('../' + tune_baselib)
 
-    if len(options) > 1:
-        for optstr in options:
-            optsets.append(optstr.split())
-
-    #get common options present in all the tune parameters
-        common_opt_set = set.intersection(*map(set, optsets))
-
-    #common options will be added at the end of the options string only once
-        if (len(common_opt_set) > 0):
-            rex = re.compile(''.join(['\\b(', '|'.join(common_opt_set), ')\\W']), re.I)
-            options = [rex.sub("", optstr) for optstr in options]
-            options = [optstr.strip() for optstr in options]
-            options[len(options)-1] = ' '.join((options[len(options)-1], ' '.join(common_opt_set)))
-
     write_config(builddir, target_config_files, options, dirnames, osdirnames)
     write_headers(builddir, header_config_files, libdir32, libdir64, libdirx32, libdirn32)
 }




                 reply	other threads:[~2014-07-24 21:11 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1406236249.27697.19.camel@ted \
    --to=richard.purdie@linuxfoundation.org \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox