diff --git a/Builds/VisualStudio2013/RippleD.vcxproj b/Builds/VisualStudio2013/RippleD.vcxproj index 498ae6337..4b439dfbc 100644 --- a/Builds/VisualStudio2013/RippleD.vcxproj +++ b/Builds/VisualStudio2013/RippleD.vcxproj @@ -2137,6 +2137,9 @@ True + + True + True @@ -2698,9 +2701,6 @@ True - - True - True diff --git a/Builds/VisualStudio2013/RippleD.vcxproj.filters b/Builds/VisualStudio2013/RippleD.vcxproj.filters index 7cecff64c..3b7d9f302 100644 --- a/Builds/VisualStudio2013/RippleD.vcxproj.filters +++ b/Builds/VisualStudio2013/RippleD.vcxproj.filters @@ -3075,6 +3075,9 @@ ripple\basics\impl + + ripple\basics\impl + ripple\basics\impl @@ -3765,9 +3768,6 @@ ripple\protocol\impl - - ripple\protocol\impl - ripple\protocol\impl diff --git a/SConstruct b/SConstruct index c8d8974ec..16a396a90 100644 --- a/SConstruct +++ b/SConstruct @@ -507,6 +507,8 @@ else: default_toolchain = 'clang' else: raise ValueError("Don't understand toolchains in " + str(toolchains)) + +default_tu_style = 'unity' default_variant = 'release' default_target = None @@ -533,141 +535,168 @@ class ObjectBuilder(object): if kwds: env = env.Clone() env.Prepend(**kwds) - path = UNITY_BUILD_DIRECTORY + filename - o = env.Object(Beast.variantFile(path, self.variant_dirs)) + o = env.Object(Beast.variantFile(filename, self.variant_dirs)) self.objects.append(o) +def list_sources(base, suffixes): + def _iter(base): + for parent, dirs, files in os.walk(base): + files = [f for f in files if not f[0] == '.'] + dirs[:] = [d for d in dirs if not d[0] == '.'] + for path in files: + path = os.path.join(parent, path) + r = os.path.splitext(path) + if r[1] in suffixes: + yield os.path.normpath(path) + return list(_iter(base)) # Declare the targets aliases = collections.defaultdict(list) msvc_configs = [] -for toolchain in all_toolchains: - for variant in variants: - # Configure this variant's construction environment - env = base.Clone() - config_env(toolchain, variant, env) - variant_name = '%s.%s' % (toolchain, variant) - variant_dir = os.path.join(build_dir, variant_name) - variant_dirs = { - os.path.join(variant_dir, 'src') : - 'src', - os.path.join(variant_dir, 'proto') : - os.path.join (build_dir, 'proto'), - } - for dest, source in variant_dirs.iteritems(): - env.VariantDir(dest, source, duplicate=0) - 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', - 'core.cpp', - 'crypto.cpp', - 'json.cpp', - 'net.cpp', - 'overlay.cpp', - 'peerfinder.cpp', - 'protobuf.cpp', - 'protocol.cpp', - 'ripple.proto.cpp', - 'resource.cpp', - 'rpcx.cpp', - 'server.cpp', - 'validators.cpp', - 'websocket.cpp', - ) +for tu_style in ['classic', 'unity']: + for toolchain in all_toolchains: + for variant in variants: + # Configure this variant's construction environment + env = base.Clone() + config_env(toolchain, variant, env) + variant_name = '%s.%s' % (toolchain, variant) + if tu_style == 'classic': + variant_name += '.nounity' + variant_dir = os.path.join(build_dir, variant_name) + variant_dirs = { + os.path.join(variant_dir, 'src') : + 'src', + os.path.join(variant_dir, 'proto') : + os.path.join (build_dir, 'proto'), + } + for dest, source in variant_dirs.iteritems(): + env.VariantDir(dest, source, duplicate=0) - object_builder.add_source_files( - 'beastc.c', - CCFLAGS = ([] if toolchain == 'msvc' else ['-Wno-array-bounds'])) + object_builder = ObjectBuilder(env, variant_dirs) - object_builder.add_source_files( - 'nodestore.cpp', - CPPPATH=[ - 'src/leveldb/include', - #'src/hyperleveldb/include', # hyper - 'src/rocksdb2/include', - ] - ) + if tu_style == 'classic': + object_builder.add_source_files( + *list_sources('src/ripple/basics', '.cpp')) + object_builder.add_source_files( + *list_sources('src/ripple/protocol', '.cpp')) + else: + object_builder.add_source_files( + 'src/ripple/unity/basics.cpp', + 'src/ripple/unity/protocol.cpp', + ) - if 'gcc' in toolchain: - no_uninitialized_warning = {'CCFLAGS': ['-Wno-maybe-uninitialized']} - else: - no_uninitialized_warning = {} - - 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=([] if toolchain == 'msvc' else ['-Wno-unused-function']), - CPPPATH=[ - 'src/snappy/snappy', - 'src/snappy/config', - ] - ) - - if toolchain == "clang" and Beast.system.osx: - object_builder.add_source_files('beastobjc.mm') - - target = env.Program( - target=os.path.join(variant_dir, 'rippled'), - source=object_builder.objects + object_builder.add_source_files( + 'src/ripple/unity/app.cpp', + 'src/ripple/unity/app1.cpp', + 'src/ripple/unity/app2.cpp', + 'src/ripple/unity/app3.cpp', + 'src/ripple/unity/app4.cpp', + 'src/ripple/unity/app5.cpp', + 'src/ripple/unity/app6.cpp', + 'src/ripple/unity/app7.cpp', + 'src/ripple/unity/app8.cpp', + 'src/ripple/unity/app9.cpp', + 'src/ripple/unity/beast.cpp', + 'src/ripple/unity/core.cpp', + 'src/ripple/unity/crypto.cpp', + 'src/ripple/unity/json.cpp', + 'src/ripple/unity/net.cpp', + 'src/ripple/unity/overlay.cpp', + 'src/ripple/unity/peerfinder.cpp', + 'src/ripple/unity/protobuf.cpp', + 'src/ripple/unity/ripple.proto.cpp', + 'src/ripple/unity/resource.cpp', + 'src/ripple/unity/rpcx.cpp', + 'src/ripple/unity/server.cpp', + 'src/ripple/unity/validators.cpp', + 'src/ripple/unity/websocket.cpp' ) - if toolchain == default_toolchain and variant == default_variant: - default_target = target - install_target = env.Install (build_dir, source=default_target) - env.Alias ('install', install_target) - env.Default (install_target) - aliases['all'].extend(install_target) - if toolchain == 'msvc': - config = env.VSProjectConfig(variant, 'x64', target, env) - msvc_configs.append(config) - if toolchain in toolchains: - aliases['all'].extend(target) - aliases[variant].extend(target) - aliases[toolchain].extend(target) - env.Alias(variant_name, target) + object_builder.add_source_files( + 'src/ripple/unity/beastc.c', + CCFLAGS = ([] if toolchain == 'msvc' else ['-Wno-array-bounds'])) + + object_builder.add_source_files( + 'src/ripple/unity/nodestore.cpp', + CPPPATH=[ + 'src/leveldb/include', + #'src/hyperleveldb/include', # hyper + 'src/rocksdb2/include', + ] + ) + + if 'gcc' in toolchain: + no_uninitialized_warning = {'CCFLAGS': ['-Wno-maybe-uninitialized']} + else: + no_uninitialized_warning = {} + + object_builder.add_source_files( + 'src/ripple/unity/leveldb.cpp', + CPPPATH=[ + 'src/leveldb/', + 'src/leveldb/include', + 'src/snappy/snappy', + 'src/snappy/config', + ], + **no_uninitialized_warning + ) + + object_builder.add_source_files( + 'src/ripple/unity/hyperleveldb.cpp', + CPPPATH=[ + 'src/hyperleveldb', + 'src/snappy/snappy', + 'src/snappy/config', + ], + **no_uninitialized_warning + ) + + object_builder.add_source_files( + 'src/ripple/unity/rocksdb.cpp', + CPPPATH=[ + 'src/rocksdb2', + 'src/rocksdb2/include', + 'src/snappy/snappy', + 'src/snappy/config', + ], + **no_uninitialized_warning + ) + + object_builder.add_source_files( + 'src/ripple/unity/snappy.cpp', + CCFLAGS=([] if toolchain == 'msvc' else ['-Wno-unused-function']), + CPPPATH=[ + 'src/snappy/snappy', + 'src/snappy/config', + ] + ) + + if toolchain == "clang" and Beast.system.osx: + object_builder.add_source_files('src/ripple/unity/beastobjc.mm') + + target = env.Program( + target=os.path.join(variant_dir, 'rippled'), + source=object_builder.objects + ) + + if tu_style == default_tu_style: + if toolchain == default_toolchain and ( + variant == default_variant): + default_target = target + install_target = env.Install (build_dir, source=default_target) + env.Alias ('install', install_target) + env.Default (install_target) + aliases['all'].extend(install_target) + if toolchain == 'msvc': + config = env.VSProjectConfig(variant, 'x64', target, env) + msvc_configs.append(config) + if toolchain in toolchains: + aliases['all'].extend(target) + aliases[toolchain].extend(target) + if toolchain in toolchains: + aliases[variant].extend(target) + env.Alias(variant_name, target) for key, value in aliases.iteritems(): env.Alias(key, value) @@ -700,7 +729,6 @@ def do_count(target, source, env): if r[0].endswith('.test'): yield os.path.normpath(path) return list(_iter(base)) - testfiles = list_testfiles(os.path.join('src', 'ripple'), env.get('CPPSUFFIXES')) lines = 0 for f in testfiles: diff --git a/src/ripple/basics/StringUtilities.h b/src/ripple/basics/StringUtilities.h index 7abdc6be8..986afbbda 100644 --- a/src/ripple/basics/StringUtilities.h +++ b/src/ripple/basics/StringUtilities.h @@ -25,6 +25,7 @@ #include #include #include +#include #include namespace ripple { diff --git a/src/ripple/basics/Sustain.h b/src/ripple/basics/Sustain.h index 30ea9e868..17d80734a 100644 --- a/src/ripple/basics/Sustain.h +++ b/src/ripple/basics/Sustain.h @@ -20,6 +20,8 @@ #ifndef RIPPLE_BASICS_SUSTAIN_H_INCLUDED #define RIPPLE_BASICS_SUSTAIN_H_INCLUDED +#include + namespace ripple { // "Sustain" is a system for a buddy process that monitors the main process diff --git a/src/ripple/basics/Time.h b/src/ripple/basics/Time.h index d0474ef5a..20688d60d 100644 --- a/src/ripple/basics/Time.h +++ b/src/ripple/basics/Time.h @@ -20,6 +20,8 @@ #ifndef RIPPLE_BASICS_TIME_H_INCLUDED #define RIPPLE_BASICS_TIME_H_INCLUDED +#include + namespace ripple { // VFALCO TODO Roll this into some utilities header diff --git a/src/ripple/basics/impl/CheckLibraryVersionsImpl.h b/src/ripple/basics/impl/CheckLibraryVersionsImpl.h index b6aa8b2be..e2d3c0fd8 100644 --- a/src/ripple/basics/impl/CheckLibraryVersionsImpl.h +++ b/src/ripple/basics/impl/CheckLibraryVersionsImpl.h @@ -21,6 +21,8 @@ #define RIPPLE_BASICS_CHECKLIBRARYVERSIONS_IMPL_H_INCLUDED #include +#include +#include namespace ripple { namespace version { diff --git a/src/ripple/basics/impl/Log.cpp b/src/ripple/basics/impl/Log.cpp index e01a3c6f5..e4a7d3449 100644 --- a/src/ripple/basics/impl/Log.cpp +++ b/src/ripple/basics/impl/Log.cpp @@ -21,6 +21,7 @@ #include // VFALCO TODO Use std::chrono #include +#include #include namespace ripple { @@ -203,7 +204,7 @@ Logs::fromSeverity (beast::Journal::Severity level) case Journal::kError: return lsERROR; default: - bassertfalse; + assert(false); case Journal::kFatal: break; } @@ -223,7 +224,7 @@ Logs::toSeverity (LogSeverity level) case lsWARNING: return Journal::kWarning; case lsERROR: return Journal::kError; default: - bassertfalse; + assert(false); case lsFATAL: break; } @@ -313,7 +314,7 @@ Logs::format (std::string& output, std::string const& message, case beast::Journal::kWarning: output += "WRN "; break; case beast::Journal::kError: output += "ERR "; break; default: - bassertfalse; + assert(false); case beast::Journal::kFatal: output += "FTL "; break; } diff --git a/src/ripple/basics/impl/StringUtilities.cpp b/src/ripple/basics/impl/StringUtilities.cpp index a39a52ab4..af415a43d 100644 --- a/src/ripple/basics/impl/StringUtilities.cpp +++ b/src/ripple/basics/impl/StringUtilities.cpp @@ -18,14 +18,15 @@ //============================================================================== #include +#include #include #include +#include #include #include +#include #include -#include - namespace ripple { // NIKB NOTE: This function is only used by strUnHex (std::string const& strSrc) diff --git a/src/ripple/basics/impl/Sustain.cpp b/src/ripple/basics/impl/Sustain.cpp index a147624ec..5ac79444e 100644 --- a/src/ripple/basics/impl/Sustain.cpp +++ b/src/ripple/basics/impl/Sustain.cpp @@ -17,14 +17,17 @@ */ //============================================================================== +#include #include - +#include + // For Sustain Linux variants // VFALCO TODO Rewrite Sustain to use beast::Process #ifdef __linux__ #include #include #include +#include #endif #ifdef __FreeBSD__ #include diff --git a/src/ripple/basics/impl/Time.cpp b/src/ripple/basics/impl/Time.cpp index e59b3dcb1..49c2c5608 100644 --- a/src/ripple/basics/impl/Time.cpp +++ b/src/ripple/basics/impl/Time.cpp @@ -17,6 +17,8 @@ */ //============================================================================== +#include + namespace ripple { // VFALCO TODO Tidy this up into a RippleTime object diff --git a/src/ripple/basics/impl/UptimeTimer.cpp b/src/ripple/basics/impl/UptimeTimer.cpp index b7e3517f8..1385f9e72 100644 --- a/src/ripple/basics/impl/UptimeTimer.cpp +++ b/src/ripple/basics/impl/UptimeTimer.cpp @@ -18,6 +18,7 @@ //============================================================================== #include +#include #include diff --git a/src/ripple/protocol/impl/strHex.cpp b/src/ripple/basics/impl/strHex.cpp similarity index 98% rename from src/ripple/protocol/impl/strHex.cpp rename to src/ripple/basics/impl/strHex.cpp index 3e09fdb44..25e855b0d 100644 --- a/src/ripple/protocol/impl/strHex.cpp +++ b/src/ripple/basics/impl/strHex.cpp @@ -17,6 +17,8 @@ */ //============================================================================== +#include + namespace ripple { char charHex (int iDigit) diff --git a/src/ripple/basics/strHex.h b/src/ripple/basics/strHex.h index a8d477682..ec0068d25 100644 --- a/src/ripple/basics/strHex.h +++ b/src/ripple/basics/strHex.h @@ -25,6 +25,8 @@ #ifndef RIPPLE_BASICS_STRHEX_H_INCLUDED #define RIPPLE_BASICS_STRHEX_H_INCLUDED +#include + namespace ripple { /** Converts an integer to the corresponding hex digit diff --git a/src/ripple/basics/tests/StringUtilities.test.cpp b/src/ripple/basics/tests/StringUtilities.test.cpp index c960eeb0e..00176ea5e 100644 --- a/src/ripple/basics/tests/StringUtilities.test.cpp +++ b/src/ripple/basics/tests/StringUtilities.test.cpp @@ -18,6 +18,7 @@ //============================================================================== #include +#include #include namespace ripple { diff --git a/src/ripple/protocol/STAccount.h b/src/ripple/protocol/STAccount.h index 056c0c08c..ce5fabbcd 100644 --- a/src/ripple/protocol/STAccount.h +++ b/src/ripple/protocol/STAccount.h @@ -20,7 +20,9 @@ #ifndef RIPPLE_PROTOCOL_STACCOUNT_H_INCLUDED #define RIPPLE_PROTOCOL_STACCOUNT_H_INCLUDED +#include #include +#include namespace ripple { diff --git a/src/ripple/protocol/STPathSet.h b/src/ripple/protocol/STPathSet.h index 93c72d7e1..931eeef18 100644 --- a/src/ripple/protocol/STPathSet.h +++ b/src/ripple/protocol/STPathSet.h @@ -20,6 +20,10 @@ #ifndef RIPPLE_PROTOCOL_STPATHELEMENT_H_INCLUDED #define RIPPLE_PROTOCOL_STPATHELEMENT_H_INCLUDED +#include +#include +#include +#include #include namespace ripple { diff --git a/src/ripple/protocol/SystemParameters.h b/src/ripple/protocol/SystemParameters.h index 16340ff8e..036046214 100644 --- a/src/ripple/protocol/SystemParameters.h +++ b/src/ripple/protocol/SystemParameters.h @@ -21,10 +21,11 @@ #define RIPPLE_CORE_SYSTEMPARAMETERS_H_INCLUDED #include +#include namespace ripple { -/** Various protocol and system specific constant globals. */ +// Various protocol and system specific constant globals. /* The name of the system. */ static inline diff --git a/src/ripple/protocol/impl/STLedgerEntry.cpp b/src/ripple/protocol/impl/STLedgerEntry.cpp index f03eba61b..ab9c9d230 100644 --- a/src/ripple/protocol/impl/STLedgerEntry.cpp +++ b/src/ripple/protocol/impl/STLedgerEntry.cpp @@ -17,8 +17,12 @@ */ //============================================================================== +#include +#include #include +#include #include +#include namespace ripple { diff --git a/src/ripple/protocol/impl/STParsedJSON.cpp b/src/ripple/protocol/impl/STParsedJSON.cpp index 2595afc8d..933f4f0a0 100644 --- a/src/ripple/protocol/impl/STParsedJSON.cpp +++ b/src/ripple/protocol/impl/STParsedJSON.cpp @@ -20,8 +20,19 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include // namespace ripple { diff --git a/src/ripple/protocol/impl/STPathSet.cpp b/src/ripple/protocol/impl/STPathSet.cpp index ef9ab14bf..8f5026dad 100644 --- a/src/ripple/protocol/impl/STPathSet.cpp +++ b/src/ripple/protocol/impl/STPathSet.cpp @@ -18,6 +18,10 @@ //============================================================================== #include +#include +#include +#include +#include namespace ripple { diff --git a/src/ripple/protocol/impl/STTx.cpp b/src/ripple/protocol/impl/STTx.cpp index d2893e341..6cbf438e1 100644 --- a/src/ripple/protocol/impl/STTx.cpp +++ b/src/ripple/protocol/impl/STTx.cpp @@ -17,13 +17,18 @@ */ //============================================================================== -#include +#include #include #include +#include +#include #include #include #include +#include +#include #include +#include namespace ripple { diff --git a/src/ripple/protocol/impl/STValidation.cpp b/src/ripple/protocol/impl/STValidation.cpp index d11728615..683d1693a 100644 --- a/src/ripple/protocol/impl/STValidation.cpp +++ b/src/ripple/protocol/impl/STValidation.cpp @@ -19,6 +19,8 @@ #include #include +#include +#include namespace ripple { diff --git a/src/ripple/protocol/impl/UintTypes.cpp b/src/ripple/protocol/impl/UintTypes.cpp index 8c3bb456a..7ab564530 100644 --- a/src/ripple/protocol/impl/UintTypes.cpp +++ b/src/ripple/protocol/impl/UintTypes.cpp @@ -17,6 +17,7 @@ */ //============================================================================== +#include #include #include #include diff --git a/src/ripple/protocol/tests/BuildInfo.test.cpp b/src/ripple/protocol/tests/BuildInfo.test.cpp index 510d52ea0..e5f489354 100644 --- a/src/ripple/protocol/tests/BuildInfo.test.cpp +++ b/src/ripple/protocol/tests/BuildInfo.test.cpp @@ -18,6 +18,7 @@ //============================================================================== #include +#include #include namespace ripple { diff --git a/src/ripple/protocol/tests/RippleAddress.test.cpp b/src/ripple/protocol/tests/RippleAddress.test.cpp index 73792dcf9..5b8dc9050 100644 --- a/src/ripple/protocol/tests/RippleAddress.test.cpp +++ b/src/ripple/protocol/tests/RippleAddress.test.cpp @@ -19,6 +19,8 @@ #include #include +#include +#include #include namespace ripple { diff --git a/src/ripple/protocol/tests/STObject.test.cpp b/src/ripple/protocol/tests/STObject.test.cpp index 03cb6b3a8..f18385602 100644 --- a/src/ripple/protocol/tests/STObject.test.cpp +++ b/src/ripple/protocol/tests/STObject.test.cpp @@ -17,11 +17,14 @@ */ //============================================================================== +#include #include #include #include #include #include +#include +#include #include #include // diff --git a/src/ripple/protocol/tests/STTx.test.cpp b/src/ripple/protocol/tests/STTx.test.cpp index 3513ab8df..705a789ce 100644 --- a/src/ripple/protocol/tests/STTx.test.cpp +++ b/src/ripple/protocol/tests/STTx.test.cpp @@ -18,6 +18,8 @@ //============================================================================== #include +#include +#include #include namespace ripple { diff --git a/src/ripple/unity/basics.cpp b/src/ripple/unity/basics.cpp index 3c2658905..98c58cfcc 100644 --- a/src/ripple/unity/basics.cpp +++ b/src/ripple/unity/basics.cpp @@ -27,15 +27,16 @@ #include #include #include -#include +#include #include +#include +#include +#include #include #include #include #include #include -#include -#include #include #include diff --git a/src/ripple/unity/protocol.cpp b/src/ripple/unity/protocol.cpp index 2bd934c3c..e4464dc88 100644 --- a/src/ripple/unity/protocol.cpp +++ b/src/ripple/unity/protocol.cpp @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include