[Mesa-dev] [PATCH] scons: do not include headers when parsing the sources lists

Emil Velikov emil.l.velikov at gmail.com
Wed Aug 13 07:16:05 PDT 2014


On 13/08/14 14:08, Jose Fonseca wrote:
> On 13/08/14 13:38, Emil Velikov wrote:
>> Modify oour custom function/method SourceListParser to avoid including
>> headers to the sources list. The SCons documentation is not explicit on
>> the topic yet building mesa with SCons and MSVC is known to have
>> problems when headers are listed. So be safe just drop them for now.
>>
>> Bugzilla:
>> https://urldefense.proofpoint.com/v1/url?u=https://bugs.freedesktop.org/show_bug.cgi?id%3D82534&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=NMr9uy2iTjWVixC0wOcYCWEIYhfo80qKwRgdodpoDzA%3D%0A&m=bSAxUvr%2BkZFQrdOVPzHXFpuKRlYsjbOdppwDtQwMYV4%3D%0A&s=eafc5db76341cca1e444f46c18e5d3a29e51cac22ff52f018621406a72291954
>>
>> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
>> ---
>>   scons/source_list.py | 9 ++++++++-
>>   1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/scons/source_list.py b/scons/source_list.py
>> index e16d1f9..5a1bd96 100644
>> --- a/scons/source_list.py
>> +++ b/scons/source_list.py
>> @@ -85,6 +85,9 @@ class SourceListParser(object):
>>           """Parse a source list line."""
>>           # more lines to come
>>           if line and line[-1] == '\\':
>> +            # do not include any headers
>> +            if line[:-1].rstrip().endswith('.h'):
>> +                return 0;
>>               # spaces around "\\\n" are replaced by a single space
>>               if self.line_cont:
>>                   self.line_cont += line[:-1].strip() + ' '
>> @@ -94,7 +97,11 @@ class SourceListParser(object):
>>
>>           # combine with previous lines
>>           if self.line_cont:
>> -            line = self.line_cont + line.lstrip()
>> +            # do not include any headers
>> +            if line and line.rstrip().endswith('.h'):
>> +                line = self.line_cont
>> +            else:
>> +                line = self.line_cont + line.lstrip()
>>               self.line_cont = ''
>>
>>           if line:
>>
> 
> I think that scons/custom.py is a better place for this manipulation. There
> are a bunch of similarly natured maniuplations there already:
> 
AFAICT this one might have a slightly greater overhead as we're adding the
headers to the sym_table first and then dropping the headers as we iterate
(construct the proper sources list).

Either one is fine with me, as long as it makes SCons+MSVC happy :)

-Emil
> 
> diff --git a/scons/custom.py b/scons/custom.py
> index 09c937e..88a0d34 100644
> --- a/scons/custom.py
> +++ b/scons/custom.py
> @@ -276,6 +276,9 @@ def parse_source_list(env, filename, names=None):
>                      # Prefer relative source paths, as absolute files tend to
>                      # cause duplicate actions.
>                      f = f[len(cur_srcdir + '/'):]
> +                # do not include any headers
> +                if f.endswith('.h'):
> +                    continue
>                  srcs.append(f)
> 
>          src_lists[sym] = srcs
> 
> 
> Jose



More information about the mesa-dev mailing list