scons: Fix libelf linking errors when using clang/llvm
authorAndreas Hansson <andreas.hansson@arm.com>
Mon, 7 Jan 2013 18:05:35 +0000 (13:05 -0500)
committerAndreas Hansson <andreas.hansson@arm.com>
Mon, 7 Jan 2013 18:05:35 +0000 (13:05 -0500)
This patch fixes a linking error that occurs when using clang/llvm in
combination with older versions of glibc. The fix involves adding
-std=gnu89 to the command line when compiling libelf as clang defaults
to c99, causing issues with the symbols in sysmacros.h being defined
multiple times.

ext/libelf/SConscript

index 56983d12fb022aefb12d42e71b0fff91ed46bef2..ac91a30256a50e9aee8339e9fcdb3b9dfbdd9e41 100644 (file)
@@ -100,6 +100,11 @@ if m4env['GCC']:
                               '-Wno-implicit-function-declaration'])
 if m4env['CLANG']:
     m4env.Append(CCFLAGS=['-Wno-initializer-overrides', '-Wno-pointer-sign'])
+    # clang defaults to c99 (while gcc defaults to gnu89) and there is a
+    # difference in the handling of inlining functions which causes
+    # linking problems with multiple definitions of the symbols in
+    # sysmacros.h for older versions of glibc
+    m4env.Append(CCFLAGS=['-std=gnu89'])
 m4env.Append(CCFLAGS=['-Wno-implicit'])
 del m4env['CPPPATH']