scons: fix unused auto-generated blob variable in clang
authorCiro Santilli <ciro.santilli@arm.com>
Sat, 26 Jan 2019 13:16:17 +0000 (13:16 +0000)
committerCiro Santilli <ciro.santilli@arm.com>
Wed, 6 Feb 2019 16:11:24 +0000 (16:11 +0000)
Since f2bda876f73af4ecc38406f3562a3d16fd28a5a9, the build system started
adding a length for generated blobs as in:

const std::size_t variable_len = 123;

There were two types of blob files, ones with a header and the ones
without.

The ones with the header, also include the header in the .cc of the blob,
which contains a declaration:

extern const std::size_t variable_len;

Therefore, the ones without header, don't have that extern declaration,
which makes them static according to the C++ standard.

clang then correctly interprets that as problematic due to
-Wunused-const-variable, while GCC does not notice this.

This patch removes the length declaration from the blob files that don't
have the header. Those files currently don't use the length.

Change-Id: I3fc61b28f887fc1015288857328ead2f3b34c6e6
Reviewed-on: https://gem5-review.googlesource.com/c/15955
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

src/SConscript

index 74adf3c88c9031c65f8a0de77f83d297aa834fdb..0b66d6a62aeddf9f6da4a88b561ac82181954bd0 100644 (file)
@@ -255,7 +255,8 @@ def blobToCpp(data, symbol, cpp_code, hpp_code=None, namespace=None):
             hpp_code('}')
     if namespace is not None:
         cpp_code('namespace {} {{'.format(namespace))
-    cpp_code(symbol_len_declaration + ' = {};'.format(len(data)))
+    if hpp_code is not None:
+        cpp_code(symbol_len_declaration + ' = {};'.format(len(data)))
     cpp_code(symbol_declaration + ' = {')
     cpp_code.indent()
     step = 16