diff --git a/BUILD.md b/BUILD.md index 60ee31d42d1..6ae5fc1f6f1 100644 --- a/BUILD.md +++ b/BUILD.md @@ -36,7 +36,7 @@ See [System Requirements](https://xrpl.org/system-requirements.html). Building rippled generally requires git, Python, Conan, CMake, and a C++ compiler. Some guidance on setting up such a [C++ development environment can be found here](./docs/build/environment.md). - [Python 3.7](https://www.python.org/downloads/) -- [Conan 1.55](https://conan.io/downloads.html) +- [Conan 1.60](https://conan.io/downloads.html) - [CMake 3.16](https://cmake.org/download/) `rippled` is written in the C++20 dialect and includes the `` header. @@ -67,9 +67,6 @@ Here are [sample instructions for setting up a C++ development environment on ma Windows is not recommended for production use at this time. - Additionally, 32-bit Windows development is not supported. -- Visual Studio 2022 is not yet supported. - - rippled generally requires [Boost][] 1.77, which Conan cannot build with VS 2022. - - Until rippled is updated for compatibility with later versions of Boost, Windows developers may need to use Visual Studio 2019. [Boost]: https://www.boost.org/ @@ -144,21 +141,30 @@ It does not explicitly link the C++ standard library, which allows you to statically link it with GCC, if you want. ``` + # Conan 1.x conan export external/snappy snappy/1.1.10@ + # Conan 2.x + conan export --version 1.1.10 external/snappy ``` Export our [Conan recipe for RocksDB](./external/rocksdb). It does not override paths to dependencies when building with Visual Studio. ``` + # Conan 1.x conan export external/rocksdb rocksdb/6.29.5@ + # Conan 2.x + conan export --version 6.29.5 external/rocksdb ``` Export our [Conan recipe for SOCI](./external/soci). It patches their CMake to correctly import its dependencies. ``` + # Conan 1.x conan export external/soci soci/4.0.3@ + # Conan 2.x + conan export --version 4.0.3 external/soci ``` ### Build and Test @@ -196,13 +202,13 @@ It patches their CMake to correctly import its dependencies. generated by the first. You can pass the build type on the command line with `--settings build_type=$BUILD_TYPE` or in the profile itself, under the section `[settings]` with the key `build_type`. - + If you are using a Microsoft Visual C++ compiler, then you will need to ensure consistency between the `build_type` setting and the `compiler.runtime` setting. - + When `build_type` is `Release`, `compiler.runtime` should be `MT`. - + When `build_type` is `Debug`, `compiler.runtime` should be `MTd`. ``` diff --git a/conanfile.py b/conanfile.py index 1d4259777cf..d722f6ebd71 100644 --- a/conanfile.py +++ b/conanfile.py @@ -24,17 +24,13 @@ class Xrpl(ConanFile): } requires = [ - 'boost/1.82.0', 'date/3.0.1', 'grpc/1.50.1', 'libarchive/3.6.2', - 'lz4/1.9.3', 'nudb/2.0.8', 'openssl/1.1.1u', - 'protobuf/3.21.9', 'snappy/1.1.10', 'soci/4.0.3', - 'sqlite3/3.42.0', 'zlib/1.2.13', 'xxhash/0.8.2', ] @@ -55,43 +51,43 @@ class Xrpl(ConanFile): 'tests': True, 'unity': False, - 'cassandra-cpp-driver:shared': False, - 'cassandra-cpp-driver:use_atomic': None, - 'date:header_only': True, - 'grpc:shared': False, - 'grpc:secure': True, - 'libarchive:shared': False, - 'libarchive:with_acl': False, - 'libarchive:with_bzip2': False, - 'libarchive:with_cng': False, - 'libarchive:with_expat': False, - 'libarchive:with_iconv': False, - 'libarchive:with_libxml2': False, - 'libarchive:with_lz4': True, - 'libarchive:with_lzma': False, - 'libarchive:with_lzo': False, - 'libarchive:with_nettle': False, - 'libarchive:with_openssl': False, - 'libarchive:with_pcreposix': False, - 'libarchive:with_xattr': False, - 'libarchive:with_zlib': False, - 'libpq:shared': False, - 'lz4:shared': False, - 'openssl:shared': False, - 'protobuf:shared': False, - 'protobuf:with_zlib': True, - 'rocksdb:enable_sse': False, - 'rocksdb:lite': False, - 'rocksdb:shared': False, - 'rocksdb:use_rtti': True, - 'rocksdb:with_jemalloc': False, - 'rocksdb:with_lz4': True, - 'rocksdb:with_snappy': True, - 'snappy:shared': False, - 'soci:shared': False, - 'soci:with_sqlite3': True, - 'soci:with_boost': True, - 'xxhash:shared': False, + 'cassandra-cpp-driver/*:shared': False, + 'cassandra-cpp-driver/*:use_atomic': None, + 'date/*:header_only': True, + 'grpc/*:shared': False, + 'grpc/*:secure': True, + 'libarchive/*:shared': False, + 'libarchive/*:with_acl': False, + 'libarchive/*:with_bzip2': False, + 'libarchive/*:with_cng': False, + 'libarchive/*:with_expat': False, + 'libarchive/*:with_iconv': False, + 'libarchive/*:with_libxml2': False, + 'libarchive/*:with_lz4': True, + 'libarchive/*:with_lzma': False, + 'libarchive/*:with_lzo': False, + 'libarchive/*:with_nettle': False, + 'libarchive/*:with_openssl': False, + 'libarchive/*:with_pcreposix': False, + 'libarchive/*:with_xattr': False, + 'libarchive/*:with_zlib': False, + 'libpq/*:shared': False, + 'lz4/*:shared': False, + 'openssl/*:shared': False, + 'protobuf/*:shared': False, + 'protobuf/*:with_zlib': True, + 'rocksdb/*:enable_sse': False, + 'rocksdb/*:lite': False, + 'rocksdb/*:shared': False, + 'rocksdb/*:use_rtti': True, + 'rocksdb/*:with_jemalloc': False, + 'rocksdb/*:with_lz4': True, + 'rocksdb/*:with_snappy': True, + 'snappy/*:shared': False, + 'soci/*:shared': False, + 'soci/*:with_sqlite3': True, + 'soci/*:with_boost': True, + 'xxhash/*:shared': False, } def set_version(self): @@ -107,6 +103,10 @@ def configure(self): self.options['boost'].visibility = 'global' def requirements(self): + self.requires('boost/1.82.0', force=True) + self.requires('lz4/1.9.3', force=True) + self.requires('protobuf/3.21.9', force=True) + self.requires('sqlite3/3.42.0', force=True) if self.options.jemalloc: self.requires('jemalloc/5.3.0') if self.options.reporting: