X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=SConstruct;h=a8ffb208c7fe7c9cfdc4333f1c87a792b0363545;hb=a706b6259a3cab71700078c4e2b91860cc2219c0;hp=d229960c2a293a171411b65f48da0b7e254623b4;hpb=7c4eb3b4d88480003f8c227731f7a31bd55cb819;p=gem5.git diff --git a/SConstruct b/SConstruct index d229960c2..a8ffb208c 100755 --- a/SConstruct +++ b/SConstruct @@ -556,9 +556,8 @@ if main['GCC'] or main['CLANG']: # Enable -Wall and then disable the few warnings that we # consistently violate main.Append(CCFLAGS=['-Wall', '-Wno-sign-compare', '-Wundef']) - # We always compile using C++11, but only gcc >= 4.7 and clang 3.1 - # actually use that name, so we stick with c++0x - main.Append(CXXFLAGS=['-std=c++0x']) + # We always compile using C++11 + main.Append(CXXFLAGS=['-std=c++11']) # Add selected sanity checks from -Wextra main.Append(CXXFLAGS=['-Wmissing-field-initializers', '-Woverloaded-virtual']) @@ -582,13 +581,12 @@ else: Exit(1) if main['GCC']: - # Check for a supported version of gcc. >= 4.6 is chosen for its + # Check for a supported version of gcc. >= 4.7 is chosen for its # level of c++11 support. See - # http://gcc.gnu.org/projects/cxx0x.html for details. 4.6 is also - # the first version with proper LTO support. + # http://gcc.gnu.org/projects/cxx0x.html for details. gcc_version = readCommand([main['CXX'], '-dumpversion'], exception=False) - if compareVersions(gcc_version, "4.6") < 0: - print 'Error: gcc version 4.6 or newer required.' + if compareVersions(gcc_version, "4.7") < 0: + print 'Error: gcc version 4.7 or newer required.' print ' Installed version:', gcc_version Exit(1) @@ -599,10 +597,16 @@ if main['GCC']: # assemblers detect this as an error, "Error: expecting string # instruction after `rep'" if compareVersions(gcc_version, "4.8") > 0: - as_version = readCommand([main['AS'], '-v', '/dev/null'], - exception=False).split() + as_version_raw = readCommand([main['AS'], '-v', '/dev/null'], + exception=False).split() - if not as_version or compareVersions(as_version[-1], "2.23") < 0: + # version strings may contain extra distro-specific + # qualifiers, so play it safe and keep only what comes before + # the first hyphen + as_version = as_version_raw[-1].split('-')[0] if as_version_raw \ + else None + + if not as_version or compareVersions(as_version, "2.23") < 0: print termcap.Yellow + termcap.Bold + \ 'Warning: This combination of gcc and binutils have' + \ ' known incompatibilities.\n' + \ @@ -636,15 +640,15 @@ if main['GCC']: '-fno-builtin-realloc', '-fno-builtin-free']) elif main['CLANG']: - # Check for a supported version of clang, >= 3.0 is needed to - # support similar features as gcc 4.6. See + # Check for a supported version of clang, >= 3.1 is needed to + # support similar features as gcc 4.7. See # http://clang.llvm.org/cxx_status.html for details clang_version_re = re.compile(".* version (\d+\.\d+)") clang_version_match = clang_version_re.search(CXX_version) if (clang_version_match): clang_version = clang_version_match.groups()[0] - if compareVersions(clang_version, "3.0") < 0: - print 'Error: clang version 3.0 or newer required.' + if compareVersions(clang_version, "3.1") < 0: + print 'Error: clang version 3.1 or newer required.' print ' Installed version:', clang_version Exit(1) else: @@ -815,32 +819,6 @@ scanners.append(CPPScanner("SwigScan", [ ".i" ], "CPPPATH", swig_inc_re)) # replace the scanners list that has what we want main['SCANNERS'] = scanners -# Add a custom Check function to the Configure context so that we can -# figure out if the compiler adds leading underscores to global -# variables. This is needed for the autogenerated asm files that we -# use for embedding the python code. -def CheckLeading(context): - context.Message("Checking for leading underscore in global variables...") - # 1) Define a global variable called x from asm so the C compiler - # won't change the symbol at all. - # 2) Declare that variable. - # 3) Use the variable - # - # If the compiler prepends an underscore, this will successfully - # link because the external symbol 'x' will be called '_x' which - # was defined by the asm statement. If the compiler does not - # prepend an underscore, this will not successfully link because - # '_x' will have been defined by assembly, while the C portion of - # the code will be trying to use 'x' - ret = context.TryLink(''' - asm(".globl _x; _x: .byte 0"); - extern int x; - int main() { return x; } - ''', extension=".c") - context.env.Append(LEADING_UNDERSCORE=ret) - context.Result(ret) - return ret - # Add a custom Check function to test for structure members. def CheckMember(context, include, decl, member, include_quotes="<>"): context.Message("Checking for member %s in %s..." % @@ -867,14 +845,9 @@ conf = Configure(main, conf_dir = joinpath(build_root, '.scons_config'), log_file = joinpath(build_root, 'scons_config.log'), custom_tests = { - 'CheckLeading' : CheckLeading, 'CheckMember' : CheckMember, }) -# Check for leading underscores. Don't really need to worry either -# way so don't need to check the return code. -conf.CheckLeading() - # Check if we should compile a 64 bit binary on Mac OS X/Darwin try: import platform @@ -1229,6 +1202,10 @@ main.SConscript('ext/dramsim2/SConscript', main.SConscript('ext/drampower/SConscript', variant_dir = joinpath(build_root, 'drampower')) +# nomali build is shared across all configs in the build root. +main.SConscript('ext/nomali/SConscript', + variant_dir = joinpath(build_root, 'nomali')) + ################################################### # # This function is used to set up a directory with switching headers