diff --git a/.gitignore b/.gitignore index eebccaf3a..ed51a8636 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,6 @@ Config/EosConfig.ini *.lai *.la *.a -*.lib # Executables *.exe diff --git a/Plugins/SequencePlugin/Source/SequencePlugin/Private/Sequence/SequencePay.cpp b/Plugins/SequencePlugin/Source/SequencePlugin/Private/Sequence/SequencePay.cpp index 48913ffa1..623925634 100644 --- a/Plugins/SequencePlugin/Source/SequencePlugin/Private/Sequence/SequencePay.cpp +++ b/Plugins/SequencePlugin/Source/SequencePlugin/Private/Sequence/SequencePay.cpp @@ -97,7 +97,7 @@ void USequencePay::GetSwapPrice(const int64 ChainID, const FString& WalletAddres { this->GetSwapPrices(ChainID, WalletAddress, BuyCurrency, BuyAmount, [SellCurrency, OnSuccess, OnFailure](TArray Prices) { - for (const FSeqSwapPrice Price : Prices) + for (const FSeqSwapPrice& Price : Prices) { if (Price.CurrencyAddress == SellCurrency) { @@ -139,7 +139,10 @@ void USequencePay::GetSwapPrices(const int64 ChainID, const FString& WalletAddre for (const FSeqSwapToken& FromToken : Route.FromTokens) { - SwapPrices.Add(FSeqSwapPrice(FromToken.Address, FromToken.Price)); + SwapPrices.Add(FSeqSwapPrice { + FromToken.Address, + FromToken.Price + }); } } diff --git a/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/README.md b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/README.md index 5420ac16d..f350252c3 100644 --- a/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/README.md +++ b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/README.md @@ -12,7 +12,7 @@ Run the installation steps from the official website: https://doc.rust-lang.org/cargo/getting-started/installation.html -## Updating Library +## Compiling Library Navigate to the `SequencePlugin/Source/SequencePlugin/Public/EthAbi/` directory in your terminal and run the following code to compile: @@ -22,6 +22,52 @@ cargo build --release Now, take the `libethabi_bridge.a` file from the `./target/release/` directory and move it to `EthAbi/` +## Platforms Builds + +MacOS, iOS and Android files can be build on MacOS and Windows. Windows' .lib file can only be installed on a Windows machine. + +### MacOS + +```shell +cargo build --release --target x86_64-apple-darwin +cargo build --release --target aarch64-apple-darwin +``` + +```shell +lipo -create \ + ./target/x86_64-apple-darwin/release/libethabi_bridge.a \ + ./target/aarch64-apple-darwin/release/libethabi_bridge.a \ + -output ./macos/libethabi_bridge.a +``` + +### Android + +```shell +cargo ndk -t arm64-v8a -t armeabi-v7a -t x86_64 build --release +``` + +### iOS + +```shell +cargo lipo --release +``` + +### Windows + +Building .lib files only works on Windows machines. +Run the following install commands on Windows. + +```shell +winget install --id Rustlang.Rustup -e --source winget +rustup default stable-x86_64-pc-windows-msvc +``` + +Build command: + +```shell +cargo build --release --target x86_64-pc-windows-msvc +``` + ## Decoding: Returns JSON array as a string of unnamed values. This array mirrors the ABI's output array. E.g. [5000] or [[0,10000,1747809900,1905662700,"0x0000000000000000000000000000000000000000000000000000000000000000"]] diff --git a/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/android/arm64/libethabi_bridge.a b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/android/arm64/libethabi_bridge.a new file mode 100644 index 000000000..3fddf074b Binary files /dev/null and b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/android/arm64/libethabi_bridge.a differ diff --git a/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/android/x86/libethabi_bridge.a b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/android/x86/libethabi_bridge.a new file mode 100644 index 000000000..ccc7abef5 Binary files /dev/null and b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/android/x86/libethabi_bridge.a differ diff --git a/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/ios/libethabi_bridge.a b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/ios/libethabi_bridge.a new file mode 100644 index 000000000..09016f4c3 Binary files /dev/null and b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/ios/libethabi_bridge.a differ diff --git a/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/macos/libethabi_bridge.a b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/macos/libethabi_bridge.a new file mode 100644 index 000000000..572e51b63 Binary files /dev/null and b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/macos/libethabi_bridge.a differ diff --git a/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/windows/ethabi_bridge.lib b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/windows/ethabi_bridge.lib new file mode 100644 index 000000000..6404dfeb9 Binary files /dev/null and b/Plugins/SequencePlugin/Source/SequencePlugin/Public/EthAbi/windows/ethabi_bridge.lib differ diff --git a/Plugins/SequencePlugin/Source/SequencePlugin/SequencePlugin.Build.cs b/Plugins/SequencePlugin/Source/SequencePlugin/SequencePlugin.Build.cs index 873abe1d9..705e46e87 100644 --- a/Plugins/SequencePlugin/Source/SequencePlugin/SequencePlugin.Build.cs +++ b/Plugins/SequencePlugin/Source/SequencePlugin/SequencePlugin.Build.cs @@ -9,13 +9,9 @@ public SequencePlugin(ReadOnlyTargetRules Target) : base(Target) { bUseUnity = false; PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; - - string lib = Path.Combine(PluginDirectory, "Source/SequencePlugin/Public/EthAbi/libethabi_bridge.a"); - string includes = Path.Combine(ModuleDirectory, "Public/EthAbi/"); - PublicSystemLibraryPaths.Add(includes); - PublicAdditionalLibraries.Add(lib); - + AddEthAbiLibraries(); + PublicIncludePaths.AddRange( new string[] { // ... add public include paths required here ... @@ -141,4 +137,35 @@ public SequencePlugin(ReadOnlyTargetRules Target) : base(Target) );//Public Frameworks }//IOS Frameworks }//SequencePlugin + + public void AddEthAbiLibraries() + { + string EthAbiDirectory = Path.Combine(PluginDirectory, "Source/SequencePlugin/Public/EthAbi/"); + + PublicSystemLibraryPaths.Add(EthAbiDirectory); + + if (Target.Platform == UnrealTargetPlatform.Win64) + { + string libDir = Path.Combine(EthAbiDirectory, "windows"); + PublicAdditionalLibraries.Add(Path.Combine(libDir, "libethabi_bridge.lib")); + + // Add extra MSVC libs here + // PublicSystemLibraries.AddRange(new string[] { "advapi32", "bcrypt" }); + } + else if (Target.Platform == UnrealTargetPlatform.Mac) + { + string libDir = Path.Combine(EthAbiDirectory, "macos"); + PublicAdditionalLibraries.Add(Path.Combine(libDir, "libethabi_bridge.a")); + } + else if (Target.Platform == UnrealTargetPlatform.IOS) + { + PublicAdditionalLibraries.Add(Path.Combine(EthAbiDirectory, "ios", "libethabi_bridge.a")); + } + else if (Target.Platform == UnrealTargetPlatform.Android) + { + string libDir = Path.Combine(EthAbiDirectory, "android"); + PublicAdditionalLibraries.Add(Path.Combine(libDir, "arm64", "libethabi_bridge.a")); + PublicAdditionalLibraries.Add(Path.Combine(libDir, "x86", "libethabi_bridge.a")); + } + } }//namespace \ No newline at end of file