From e86dddc77947ab7363c7dc7f97dd109654d5441a Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 23 Aug 2024 11:01:11 +0800 Subject: [PATCH 1/2] feat: add serialize for int&uint --- .gitignore | 3 ++- depend/bitcoin/src/serialize.h | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1c7eb663f5..7156e338fe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea target *.iml -Cargo.lock \ No newline at end of file +Cargo.lock +.vscode diff --git a/depend/bitcoin/src/serialize.h b/depend/bitcoin/src/serialize.h index 8b15178ec0..7eff565acd 100644 --- a/depend/bitcoin/src/serialize.h +++ b/depend/bitcoin/src/serialize.h @@ -269,6 +269,15 @@ const Out& AsBase(const In& x) BASE_SERIALIZE_METHODS(cls) \ FORMATTER_METHODS_PARAMS(cls, obj, paramcls, paramobj) +// clang-format off +#ifdef RISCZERO +template inline void Serialize(Stream& s, int a) { ser_writedata32(s, a); } +template inline void Serialize(Stream& s, unsigned int a) { ser_writedata32(s, a); } +template inline void Unserialize(Stream& s, int& a) { a = ser_readdata32(s); } +template inline void Unserialize(Stream& s, unsigned int& a) { a = ser_readdata32(s); } +#endif +// clang-format on + // clang-format off #ifndef CHAR_EQUALS_INT8 template void Serialize(Stream&, char) = delete; // char serialization forbidden. Use uint8_t or int8_t From 0fcec269c6c7fee11b163c6800c998eee9b64df6 Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 23 Aug 2024 15:02:23 +0800 Subject: [PATCH 2/2] update build.rs and add feature to fit risc0 paltform --- Cargo.toml | 1 + build.rs | 44 +++++++++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5a29533896..1c0d6962a0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,6 +37,7 @@ edition = "2018" default = ["std"] std = [] external-secp = [] +risczero-enable = [] [dependencies] diff --git a/build.rs b/build.rs index 70b4268239..fc3f75bdfa 100644 --- a/build.rs +++ b/build.rs @@ -70,24 +70,30 @@ fn main() { } else if tool.is_like_clang() || tool.is_like_gnu() { consensus_config.flag("-std=c++17").flag("-Wno-unused-parameter"); } + + consensus_config.cpp(true); + if cfg!(feature = "risczero-enable"){ + consensus_config.no_default_flags(true) + .flag_if_supported("-march=rv32i") + .flag_if_supported("mabi=ilp32"); + println!("compile after cpp=true: {:?}", consensus_config.get_compiler()); + } - consensus_config - .cpp(true) - .include("depend/bitcoin/src") - .include("depend/bitcoin/src/secp256k1/include") - .file("depend/bitcoin/src/util/strencodings.cpp") - .file("depend/bitcoin/src/uint256.cpp") - .file("depend/bitcoin/src/pubkey.cpp") - .file("depend/bitcoin/src/hash.cpp") - .file("depend/bitcoin/src/primitives/transaction.cpp") - .file("depend/bitcoin/src/crypto/ripemd160.cpp") - .file("depend/bitcoin/src/crypto/sha1.cpp") - .file("depend/bitcoin/src/crypto/sha256.cpp") - .file("depend/bitcoin/src/crypto/sha512.cpp") - .file("depend/bitcoin/src/crypto/hmac_sha512.cpp") - .file("depend/bitcoin/src/script/bitcoinconsensus.cpp") - .file("depend/bitcoin/src/script/interpreter.cpp") - .file("depend/bitcoin/src/script/script.cpp") - .file("depend/bitcoin/src/script/script_error.cpp") - .compile("libbitcoinconsensus.a"); + consensus_config.include("depend/bitcoin/src") + .include("depend/bitcoin/src/secp256k1/include") + .file("depend/bitcoin/src/util/strencodings.cpp") + .file("depend/bitcoin/src/uint256.cpp") + .file("depend/bitcoin/src/pubkey.cpp") + .file("depend/bitcoin/src/hash.cpp") + .file("depend/bitcoin/src/primitives/transaction.cpp") + .file("depend/bitcoin/src/crypto/ripemd160.cpp") + .file("depend/bitcoin/src/crypto/sha1.cpp") + .file("depend/bitcoin/src/crypto/sha256.cpp") + .file("depend/bitcoin/src/crypto/sha512.cpp") + .file("depend/bitcoin/src/crypto/hmac_sha512.cpp") + .file("depend/bitcoin/src/script/bitcoinconsensus.cpp") + .file("depend/bitcoin/src/script/interpreter.cpp") + .file("depend/bitcoin/src/script/script.cpp") + .file("depend/bitcoin/src/script/script_error.cpp") + .compile("libbitcoinconsensus.a"); }