diff options
| author | Alexandru-Cezar Sardan <alexandru.sardan@freescale.com> | 2014-03-31 16:16:13 +0300 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-04-01 23:37:01 +0100 |
| commit | 7f1495092742a4df74047667a1c61f03169937ec (patch) | |
| tree | 6bf9b5b8acc5b6eeafd42bf5bf86c6fa69cf1677 /meta/recipes-devtools/gcc | |
| parent | f688f6b566f455eb55d6e5491c80b88c493e158b (diff) | |
| download | poky-7f1495092742a4df74047667a1c61f03169937ec.tar.gz | |
gcc: changed multilib options handling
Duplicate parameters in the tune args are repeated in the
MULTILIB_OPTIONS variable. This leads to incorrect configurations
if the order of the parameters is bad.
(Eg. "mhard-float m32/mhard-float m64" leads to an incorrect config)
This patch finds the common parameters and removes the duplicates.
(From OE-Core rev: 90dc31c24adfa8e916a9c475ae1afc58ad179dfb)
Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/gcc')
| -rw-r--r-- | meta/recipes-devtools/gcc/gcc-multilib-config.inc | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-multilib-config.inc b/meta/recipes-devtools/gcc/gcc-multilib-config.inc index 005aa6b814..30745a65e0 100644 --- a/meta/recipes-devtools/gcc/gcc-multilib-config.inc +++ b/meta/recipes-devtools/gcc/gcc-multilib-config.inc | |||
| @@ -148,6 +148,7 @@ python gcc_multilib_setup() { | |||
| 148 | options = [] | 148 | options = [] |
| 149 | dirnames = [] | 149 | dirnames = [] |
| 150 | osdirnames = [] | 150 | osdirnames = [] |
| 151 | optsets = [] | ||
| 151 | 152 | ||
| 152 | for ml in ml_list: | 153 | for ml in ml_list: |
| 153 | tune = d.getVar(ml, True) | 154 | tune = d.getVar(ml, True) |
| @@ -172,16 +173,31 @@ python gcc_multilib_setup() { | |||
| 172 | else: | 173 | else: |
| 173 | bb.error('Unknown libdir (%s) of the tune : %s' % (tune_baselib, tune)) | 174 | bb.error('Unknown libdir (%s) of the tune : %s' % (tune_baselib, tune)) |
| 174 | 175 | ||
| 175 | # take out '-' and march='s from parameters | 176 | # take out '-' mcpu='s and march='s from parameters |
| 176 | options.append(re.sub(r'march=[^ ]+ *', '', | 177 | options.append(re.sub(r'mcpu=[^ ]+ *', '', |
| 177 | re.sub(r' +\-+', ' ', | 178 | re.sub(r'march=[^ ]+ *', '', |
| 178 | re.sub(r'^ *\-+', '', tune_parameters['ccargs'])))) | 179 | re.sub(r' +\-+', ' ', |
| 180 | re.sub(r'^ *\-+', '', tune_parameters['ccargs']))))) | ||
| 179 | if tune_baselib == 'lib': | 181 | if tune_baselib == 'lib': |
| 180 | dirnames.append('32') # /lib => 32bit lib | 182 | dirnames.append('32') # /lib => 32bit lib |
| 181 | else: | 183 | else: |
| 182 | dirnames.append(tune_baselib.replace('lib', '')) | 184 | dirnames.append(tune_baselib.replace('lib', '')) |
| 183 | osdirnames.append('../' + tune_baselib) | 185 | osdirnames.append('../' + tune_baselib) |
| 184 | 186 | ||
| 187 | if len(options) > 1: | ||
| 188 | for optstr in options: | ||
| 189 | optsets.append(optstr.split()) | ||
| 190 | |||
| 191 | #get common options present in all the tune parameters | ||
| 192 | common_opt_set = set.intersection(*map(set, optsets)) | ||
| 193 | |||
| 194 | #common options will be added at the end of the options string only once | ||
| 195 | if (len(common_opt_set) > 0): | ||
| 196 | rex = re.compile(''.join(['\\b(', '|'.join(common_opt_set), ')\\W']), re.I) | ||
| 197 | options = [rex.sub("", optstr) for optstr in options] | ||
| 198 | options = [optstr.strip() for optstr in options] | ||
| 199 | options[len(options)-1] = ' '.join((options[len(options)-1], ' '.join(common_opt_set))) | ||
| 200 | |||
| 185 | write_config(builddir, target_config_files, options, dirnames, osdirnames) | 201 | write_config(builddir, target_config_files, options, dirnames, osdirnames) |
| 186 | write_headers(builddir, header_config_files, libdir32, libdir64, libdirx32, libdirn32) | 202 | write_headers(builddir, header_config_files, libdir32, libdir64, libdirx32, libdirn32) |
| 187 | } | 203 | } |
