diff --git a/SConstruct b/SConstruct index 1d656a70d8..e5cae3daa8 100644 --- a/SConstruct +++ b/SConstruct @@ -67,6 +67,7 @@ CHECK_LINE = 'built on: ' BUILD_TIME = 'Mon Apr 7 20:33:19 UTC 2014' OPENSSL_ERROR = ('Your openSSL was built on %s; ' 'rippled needs a version built on or after %s.') +UNITY_BUILD_DIRECTORY = 'src/ripple/unity/' def check_openssl(): if Beast.system.platform in CHECK_PLATFORMS: @@ -462,14 +463,6 @@ def config_env(toolchain, variant, env): #------------------------------------------------------------------------------- -def addSource(path, env, variant_dirs, CPPPATH=[]): - if CPPPATH: - env = env.Clone() - env.Prepend(CPPPATH=CPPPATH) - return env.Object(Beast.variantFile(path, variant_dirs)) - -#------------------------------------------------------------------------------- - # Configure the base construction environment root_dir = Dir('#').srcnode().get_abspath() # Path to this SConstruct file build_dir = os.path.join('build') @@ -520,6 +513,25 @@ for source in [ PROTOCOUTDIR=os.path.join(build_dir, 'proto'), PROTOCPYTHONOUTDIR=None) +#------------------------------------------------------------------------------- + +class ObjectBuilder(object): + def __init__(self, env, variant_dirs): + self.env = env + self.variant_dirs = variant_dirs + self.objects = [] + + def add_source_files(self, *filenames, **kwds): + for filename in filenames: + env = self.env + if kwds: + env = env.Clone() + env.Prepend(**kwds) + path = UNITY_BUILD_DIRECTORY + filename + o = env.Object(Beast.variantFile(path, self.variant_dirs)) + self.objects.append(o) + + # Declare the targets aliases = collections.defaultdict(list) msvc_configs = [] @@ -538,80 +550,110 @@ for toolchain in all_toolchains: } for dest, source in variant_dirs.iteritems(): env.VariantDir(dest, source, duplicate=0) - objects = [] - objects.append(addSource('src/ripple/unity/app.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/app1.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/app2.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/app3.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/app4.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/app5.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/app6.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/app7.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/app8.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/app9.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/basics.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/beast.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/beastc.c', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/common.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/core.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/data.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/http.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/json.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/net.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/overlay.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/peerfinder.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/protobuf.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/ripple.proto.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/resource.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/rpcx.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/sitefiles.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/sslutil.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/types.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/validators.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/websocket.cpp', env, variant_dirs)) - objects.append(addSource('src/ripple/unity/nodestore.cpp', env, variant_dirs, [ - 'src/leveldb/include', - #'src/hyperleveldb/include', # hyper - 'src/rocksdb2/include', - ])) + object_builder = ObjectBuilder(env, variant_dirs) + object_builder.add_source_files( + 'app.cpp', + 'app1.cpp', + 'app2.cpp', + 'app3.cpp', + 'app4.cpp', + 'app5.cpp', + 'app6.cpp', + 'app7.cpp', + 'app8.cpp', + 'app9.cpp', + 'basics.cpp', + 'beast.cpp', + 'common.cpp', + 'core.cpp', + 'data.cpp', + 'http.cpp', + 'json.cpp', + 'net.cpp', + 'overlay.cpp', + 'peerfinder.cpp', + 'protobuf.cpp', + 'ripple.proto.cpp', + 'resource.cpp', + 'rpcx.cpp', + 'sitefiles.cpp', + 'sslutil.cpp', + 'types.cpp', + 'validators.cpp', + 'websocket.cpp', + ) - objects.append(addSource('src/ripple/unity/leveldb.cpp', env, variant_dirs, [ - 'src/leveldb/', - 'src/leveldb/include', - 'src/snappy/snappy', - 'src/snappy/config', - ])) + object_builder.add_source_files( + 'beastc.c', + CCFLAGS=['-Wno-array-bounds']) - objects.append(addSource('src/ripple/unity/hyperleveldb.cpp', env, variant_dirs, [ - 'src/hyperleveldb', - 'src/snappy/snappy', - 'src/snappy/config', - ])) + object_builder.add_source_files( + 'nodestore.cpp', + CPPPATH=[ + 'src/leveldb/include', + #'src/hyperleveldb/include', # hyper + 'src/rocksdb2/include', + ] + ) - objects.append(addSource('src/ripple/unity/rocksdb.cpp', env, variant_dirs, [ - 'src/rocksdb2', - 'src/rocksdb2/include', - 'src/snappy/snappy', - 'src/snappy/config', - ])) + if 'gcc' in toolchain: + no_uninitialized_warning = {'CCFLAGS': ['-Wno-maybe-uninitialized']} + else: + no_uninitialized_warning = {} - objects.append(addSource('src/ripple/unity/snappy.cpp', env, variant_dirs, [ - 'src/snappy/snappy', - 'src/snappy/config', - ])) + object_builder.add_source_files( + 'leveldb.cpp', + CPPPATH=[ + 'src/leveldb/', + 'src/leveldb/include', + 'src/snappy/snappy', + 'src/snappy/config', + ], + **no_uninitialized_warning + ) + + object_builder.add_source_files( + 'hyperleveldb.cpp', + CPPPATH=[ + 'src/hyperleveldb', + 'src/snappy/snappy', + 'src/snappy/config', + ], + **no_uninitialized_warning + ) + + object_builder.add_source_files( + 'rocksdb.cpp', + CPPPATH=[ + 'src/rocksdb2', + 'src/rocksdb2/include', + 'src/snappy/snappy', + 'src/snappy/config', + ], + **no_uninitialized_warning + ) + + object_builder.add_source_files( + 'snappy.cpp', + CCFLAGS=['-Wno-unused-function'], + CPPPATH=[ + 'src/snappy/snappy', + 'src/snappy/config', + ] + ) if toolchain == "clang" and Beast.system.osx: - objects.append(addSource('src/ripple/unity/beastobjc.mm', env, variant_dirs)) + object_builder.add_source_files('beastobjc.mm') target = env.Program( - target = os.path.join(variant_dir, 'rippled'), - source = objects + target=os.path.join(variant_dir, 'rippled'), + source=object_builder.objects ) if toolchain == default_toolchain and variant == default_variant: default_target = target - install_target = env.Install (build_dir, source = default_target) + install_target = env.Install (build_dir, source=default_target) env.Alias ('install', install_target) env.Default (install_target) aliases['all'].extend(install_target) diff --git a/src/ripple/data/protocol/STParsedJSON.cpp b/src/ripple/data/protocol/STParsedJSON.cpp index 5c42002f25..fb5c749401 100644 --- a/src/ripple/data/protocol/STParsedJSON.cpp +++ b/src/ripple/data/protocol/STParsedJSON.cpp @@ -682,8 +682,6 @@ static bool parseObject ( boost::ptr_vector data; Json::Value::Members members (json.getMemberNames ()); - int itrCount = 0; - for (Json::Value::Members::iterator it (members.begin ()); it != members.end (); ++it) { diff --git a/src/ripple/peerfinder/impl/Logic.h b/src/ripple/peerfinder/impl/Logic.h index a9b35f4e3e..d14b96bc9d 100644 --- a/src/ripple/peerfinder/impl/Logic.h +++ b/src/ripple/peerfinder/impl/Logic.h @@ -438,6 +438,7 @@ public: state->keys.insert (key)); // Public key must not already exist assert (result.second); + (void) result.second; // Change state and update counts state->counts.remove (*slot);