o3: correct the number of cc registers in rename map
[gem5.git] / ext / libelf / SConscript
index 18d1100a49c60738eeec35b10dff62de97f0174a..a110602ccf8a70dfec9e8b4d3d2830df4e83cfe6 100644 (file)
@@ -30,7 +30,9 @@
 
 import os, subprocess
 
-Import('env')
+Import('main')
+
+from m5.util import compareVersions
 
 elf_files = []
 def ElfFile(filename):
@@ -40,6 +42,8 @@ ElfFile('elf_begin.c')
 ElfFile('elf_cntl.c')
 ElfFile('elf_data.c')
 ElfFile('elf_end.c')
+ElfFile('elf_errmsg.c')
+ElfFile('elf_errno.c')
 ElfFile('elf_fill.c')
 ElfFile('elf_flag.c')
 ElfFile('elf_getarhdr.c')
@@ -87,11 +91,19 @@ ElfFile('libelf_convert.c')
 ElfFile('libelf_fsize.c')
 ElfFile('libelf_msize.c')
 
-m4env = env.Copy()
-if env['GCC']:
-    major,minor,dot = [ int(x) for x in env['CXXVERSION'].split('.')]
-    if major >= 4:
-        m4env.Append(CCFLAGS=['-Wno-pointer-sign'])
+m4env = main.Clone()
+if m4env['GCC']:
+    m4env.Append(CCFLAGS=['-Wno-pointer-sign'])
+    if compareVersions(m4env['GCC_VERSION'], '4.6') >= 0:
+        m4env.Append(CCFLAGS=['-Wno-unused-but-set-variable',
+                              '-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']
 
@@ -106,7 +118,7 @@ if not SCons.Tool.m4.exists(m4env):
          "Please install M4 and try again."
    Exit(1)
 
-m4env.Append(M4FLAGS='-DSRCDIR=%s' % Dir('.').path)
+m4env.Append(M4FLAGS=['-DSRCDIR=%s' % Dir('.').path])
 m4env['M4COM'] = '$M4 $M4FLAGS $SOURCES > $TARGET'
 m4env.M4(target=File('libelf_convert.c'),
          source=[File('elf_types.m4'), File('libelf_convert.m4')])
@@ -119,7 +131,7 @@ m4env.M4(target=File('libelf_msize.c'),
 # into either m5 or the library
 m4env.Library('elf', [m4env.SharedObject(f) for f in elf_files])
 
-env.Append(CPPPATH=Dir('.'))
-env.Append(LIBS=['elf'])
-env.Append(LIBPATH=[Dir('.')])
+main.Prepend(CPPPATH=Dir('.'))
+main.Append(LIBS=['elf'])
+main.Prepend(LIBPATH=[Dir('.')])