* upstream/develop: (518 commits)
Set version to 2.4.0-b1
fix: Add header for set_difference (5197)
fix: allow overlapping types in `Expected` (5218)
Add MPTIssue to STIssue (5200)
Antithesis instrumentation improvements (5213)
Enforce levelization in libxrpl with CMake (5111)
refactor: clean up `LedgerEntry.cpp` (5199)
test: Add more test cases for Base58 parser (5174)
test: Check for some unlikely null dereferences in tests (5004)
Add Antithesis intrumentation (5042)
Set version to 2.3.0
refactor(AMMClawback): move tfClawTwoAssets check (5201)
Add a new serialized type: STNumber (5121)
fix: check for valid ammID field in amm_info RPC (5188)
Set version to 2.3.0-rc2
fix: include `index` in `server_definitions` RPC (5190)
Fix ledger_entry crash on invalid credentials request (5189)
Set version to 2.3.0-rc1
Replace Uint192 with Hash192 in server_definitions response (5177)
Fix potential deadlock (5124)
...
Adds two CMake functions:
* add_module(library subdirectory): Declares an OBJECT "library" (a CMake abstraction for a collection of object files) with sources from the given subdirectory of the given library, representing a module. Isolates the module's headers by creating a subdirectory in the build directory, e.g. .build/tmp123, that contains just a symlink, e.g. .build/tmp123/basics, to the module's header directory, e.g. include/xrpl/basics, in the source directory, and putting .build/tmp123 (but not include/xrpl) on the include path of the module sources. This prevents the module sources from including headers not explicitly linked to the module in CMake with target_link_libraries.
* target_link_modules(library scope modules...): Links the library target to each of the module targets, and removes their sources from its source list (so they are not compiled and linked twice).
Uses these functions to separate and explicitly link modules in libxrpl:
Level 01: beast
Level 02: basics
Level 03: json, crypto
Level 04: protocol
Level 05: resource, server