# 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'])
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)
'-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:
# 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..." %
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
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