mirror of
https://github.com/logos-messaging/go-rln.git
synced 2026-01-05 22:43:13 +00:00
chore: add more architectures
This commit is contained in:
parent
134f023897
commit
7ffa648d9b
4
Makefile
4
Makefile
@ -4,6 +4,10 @@ SHELL := bash # the shell used internally by Make
|
|||||||
|
|
||||||
GOBIN ?= $(shell which go)
|
GOBIN ?= $(shell which go)
|
||||||
|
|
||||||
|
rlnlib-cross:
|
||||||
|
scripts/build-cross.sh
|
||||||
|
cd lib/rln && cbindgen --config ../cbindgen.toml --crate rln --output ../../rln/librln.h --lang c
|
||||||
|
|
||||||
rlnlib:
|
rlnlib:
|
||||||
scripts/build.sh
|
scripts/build.sh
|
||||||
cd lib/rln && cbindgen --config ../cbindgen.toml --crate rln --output ../../rln/librln.h --lang c
|
cd lib/rln && cbindgen --config ../cbindgen.toml --crate rln --output ../../rln/librln.h --lang c
|
||||||
|
|||||||
36
README.md
36
README.md
@ -12,12 +12,34 @@ The goal of this is to create a rate-limiter for blockchains where block product
|
|||||||
after talking to the team at [Celestia](https://celestia.org/).
|
after talking to the team at [Celestia](https://celestia.org/).
|
||||||
|
|
||||||
|
|
||||||
###
|
### Building this library
|
||||||
The following architectures require newer versions of glibc.
|
|
||||||
|
|
||||||
- `x86_64-pc-windows-gnu`
|
#### Using [cross](https://github.com/cross-rs)
|
||||||
- `aarch64-unknown-linux-gnu`
|
|
||||||
- `x86_64-unknown-linux-gnu`
|
|
||||||
- `arm-unknown-linux-gnueabi`
|
|
||||||
|
|
||||||
This [PR](https://github.com/cross-rs/cross/pull/591) will update ubuntu base version on cross. But while it's merged, follow the instructions from [here](https://github.com/cross-rs/cross/wiki/FAQ#newer-linux-versions) to locally build docker images for those architectures.
|
```
|
||||||
|
make rlnlibs-cross
|
||||||
|
```
|
||||||
|
|
||||||
|
Some architectures are not available in cross unless they're locally build. This [PR](https://github.com/cross-rs/cross/pull/591) will update ubuntu base version on cross. But while it's merged, build them locally. To build them locally execute the following instructions (adapted from [here](https://github.com/cross-rs/cross/wiki/FAQ#newer-linux-versions)):
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone --single-branch --depth 1 --branch increment_versions https://github.com/Alexhuszagh/cross
|
||||||
|
cd cross
|
||||||
|
cargo build-docker-image x86_64-pc-windows-gnu
|
||||||
|
cargo build-docker-image aarch64-unknown-linux-gnu
|
||||||
|
cargo build-docker-image x86_64-unknown-linux-gnu
|
||||||
|
cargo build-docker-image arm-unknown-linux-gnueabi
|
||||||
|
cargo build-docker-image i686-pc-windows-gnu
|
||||||
|
cargo build-docker-image i686-unknown-linux-gnu
|
||||||
|
cargo build-docker-image arm-unknown-linux-gnueabihf
|
||||||
|
cargo build-docker-image mips-unknown-linux-gnu
|
||||||
|
cargo build-docker-image mips64-unknown-linux-gnuabi64
|
||||||
|
cargo build-docker-image mips64el-unknown-linux-gnuabi64
|
||||||
|
cargo build-docker-image mipsel-unknown-linux-gnu
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Using [rustup](https://rust-lang.github.io/rustup/cross-compilation.html)
|
||||||
|
|
||||||
|
```
|
||||||
|
make rlnlibs-cross
|
||||||
|
```
|
||||||
1
libs/arm-unknown-linux-gnueabihf/librln.d
Normal file
1
libs/arm-unknown-linux-gnueabihf/librln.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target/arm-unknown-linux-gnueabihf/release/librln.so: /project/src/circuit/mod.rs /project/src/circuit/polynomial.rs /project/src/circuit/poseidon.rs /project/src/circuit/rln.rs /project/src/ffi.rs /project/src/hash_to_field.rs /project/src/lib.rs /project/src/merkle.rs /project/src/poseidon.rs /project/src/public.rs /project/src/utils.rs /target/arm-unknown-linux-gnueabihf/release/build/num-bigint-c5d4eab0df01f46f/out/radix_bases.rs build.rs
|
||||||
BIN
libs/arm-unknown-linux-gnueabihf/librln.rlib
Normal file
BIN
libs/arm-unknown-linux-gnueabihf/librln.rlib
Normal file
Binary file not shown.
1
libs/i686-pc-windows-gnu/librln.d
Normal file
1
libs/i686-pc-windows-gnu/librln.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target/i686-pc-windows-gnu/release/librln.rlib: /project/src/circuit/mod.rs /project/src/circuit/polynomial.rs /project/src/circuit/poseidon.rs /project/src/circuit/rln.rs /project/src/ffi.rs /project/src/hash_to_field.rs /project/src/lib.rs /project/src/merkle.rs /project/src/poseidon.rs /project/src/public.rs /project/src/utils.rs /target/i686-pc-windows-gnu/release/build/num-bigint-cab2a6b70097bfc3/out/radix_bases.rs build.rs
|
||||||
BIN
libs/i686-pc-windows-gnu/librln.dll.a
Normal file
BIN
libs/i686-pc-windows-gnu/librln.dll.a
Normal file
Binary file not shown.
BIN
libs/i686-pc-windows-gnu/librln.rlib
Normal file
BIN
libs/i686-pc-windows-gnu/librln.rlib
Normal file
Binary file not shown.
1
libs/i686-unknown-linux-gnu/librln.d
Normal file
1
libs/i686-unknown-linux-gnu/librln.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target/i686-unknown-linux-gnu/release/librln.so: /project/src/circuit/mod.rs /project/src/circuit/polynomial.rs /project/src/circuit/poseidon.rs /project/src/circuit/rln.rs /project/src/ffi.rs /project/src/hash_to_field.rs /project/src/lib.rs /project/src/merkle.rs /project/src/poseidon.rs /project/src/public.rs /project/src/utils.rs /target/i686-unknown-linux-gnu/release/build/num-bigint-b0e1c075ff9f6d68/out/radix_bases.rs build.rs
|
||||||
BIN
libs/i686-unknown-linux-gnu/librln.rlib
Normal file
BIN
libs/i686-unknown-linux-gnu/librln.rlib
Normal file
Binary file not shown.
1
libs/mips-unknown-linux-gnu/librln.d
Normal file
1
libs/mips-unknown-linux-gnu/librln.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target/mips-unknown-linux-gnu/release/librln.so: /project/src/circuit/mod.rs /project/src/circuit/polynomial.rs /project/src/circuit/poseidon.rs /project/src/circuit/rln.rs /project/src/ffi.rs /project/src/hash_to_field.rs /project/src/lib.rs /project/src/merkle.rs /project/src/poseidon.rs /project/src/public.rs /project/src/utils.rs /target/mips-unknown-linux-gnu/release/build/num-bigint-2a58e28365905d0a/out/radix_bases.rs build.rs
|
||||||
BIN
libs/mips-unknown-linux-gnu/librln.rlib
Normal file
BIN
libs/mips-unknown-linux-gnu/librln.rlib
Normal file
Binary file not shown.
1
libs/mips64-unknown-linux-gnuabi64/librln.d
Normal file
1
libs/mips64-unknown-linux-gnuabi64/librln.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target/mips64-unknown-linux-gnuabi64/release/librln.so: /project/src/circuit/mod.rs /project/src/circuit/polynomial.rs /project/src/circuit/poseidon.rs /project/src/circuit/rln.rs /project/src/ffi.rs /project/src/hash_to_field.rs /project/src/lib.rs /project/src/merkle.rs /project/src/poseidon.rs /project/src/public.rs /project/src/utils.rs /target/mips64-unknown-linux-gnuabi64/release/build/num-bigint-a70850dcc99c7fb1/out/radix_bases.rs build.rs
|
||||||
BIN
libs/mips64-unknown-linux-gnuabi64/librln.rlib
Normal file
BIN
libs/mips64-unknown-linux-gnuabi64/librln.rlib
Normal file
Binary file not shown.
1
libs/mips64el-unknown-linux-gnuabi64/librln.d
Normal file
1
libs/mips64el-unknown-linux-gnuabi64/librln.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target/mips64el-unknown-linux-gnuabi64/release/librln.so: /project/src/circuit/mod.rs /project/src/circuit/polynomial.rs /project/src/circuit/poseidon.rs /project/src/circuit/rln.rs /project/src/ffi.rs /project/src/hash_to_field.rs /project/src/lib.rs /project/src/merkle.rs /project/src/poseidon.rs /project/src/public.rs /project/src/utils.rs /target/mips64el-unknown-linux-gnuabi64/release/build/num-bigint-0b729d8fe959893e/out/radix_bases.rs build.rs
|
||||||
BIN
libs/mips64el-unknown-linux-gnuabi64/librln.rlib
Normal file
BIN
libs/mips64el-unknown-linux-gnuabi64/librln.rlib
Normal file
Binary file not shown.
1
libs/mipsel-unknown-linux-gnu/librln.d
Normal file
1
libs/mipsel-unknown-linux-gnu/librln.d
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target/mipsel-unknown-linux-gnu/release/librln.so: /project/src/circuit/mod.rs /project/src/circuit/polynomial.rs /project/src/circuit/poseidon.rs /project/src/circuit/rln.rs /project/src/ffi.rs /project/src/hash_to_field.rs /project/src/lib.rs /project/src/merkle.rs /project/src/poseidon.rs /project/src/public.rs /project/src/utils.rs /target/mipsel-unknown-linux-gnu/release/build/num-bigint-23ad468891d1fc36/out/radix_bases.rs build.rs
|
||||||
BIN
libs/mipsel-unknown-linux-gnu/librln.rlib
Normal file
BIN
libs/mipsel-unknown-linux-gnu/librln.rlib
Normal file
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
/Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/target/x86_64-apple-darwin/release/librln.dylib: /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/mod.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/polynomial.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/poseidon.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/circuit/rln.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/ffi.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/lib.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/merkle.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/poseidon.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/public.rs /Users/deaneigenmann/go/src/github.com/decanus/go-rln/lib/rln/src/utils.rs
|
|
||||||
Binary file not shown.
@ -9,3 +9,24 @@ image = "ghcr.io/cross-rs/x86_64-unknown-linux-gnu:local"
|
|||||||
|
|
||||||
[target.arm-unknown-linux-gnueabi]
|
[target.arm-unknown-linux-gnueabi]
|
||||||
image = "ghcr.io/cross-rs/arm-unknown-linux-gnueabi:local"
|
image = "ghcr.io/cross-rs/arm-unknown-linux-gnueabi:local"
|
||||||
|
|
||||||
|
[target.i686-pc-windows-gnu]
|
||||||
|
image = "ghcr.io/cross-rs/i686-pc-windows-gnu:local"
|
||||||
|
|
||||||
|
[target.i686-unknown-linux-gnu]
|
||||||
|
image = "ghcr.io/cross-rs/i686-unknown-linux-gnu:local"
|
||||||
|
|
||||||
|
[target.arm-unknown-linux-gnueabihf]
|
||||||
|
image = "ghcr.io/cross-rs/arm-unknown-linux-gnueabihf:local"
|
||||||
|
|
||||||
|
[target.mips-unknown-linux-gnu]
|
||||||
|
image = "ghcr.io/cross-rs/mips-unknown-linux-gnu:local"
|
||||||
|
|
||||||
|
[target.mips64-unknown-linux-gnuabi64]
|
||||||
|
image = "ghcr.io/cross-rs/mips64-unknown-linux-gnuabi64:local"
|
||||||
|
|
||||||
|
[target.mips64el-unknown-linux-gnuabi64]
|
||||||
|
image = "ghcr.io/cross-rs/mips64el-unknown-linux-gnuabi64:local"
|
||||||
|
|
||||||
|
[target.mipsel-unknown-linux-gnu]
|
||||||
|
image = "ghcr.io/cross-rs/mipsel-unknown-linux-gnu:local"
|
||||||
|
|||||||
63
scripts/build-cross.sh
Executable file
63
scripts/build-cross.sh
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DIRECTORY=./libs
|
||||||
|
if [[ -d "$DIRECTORY" ]]
|
||||||
|
then
|
||||||
|
echo "$DIRECTORY exists on your filesystem. Delete it and run the script again."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
export RUSTFLAGS="-Ccodegen-units=1"
|
||||||
|
export CROSS_CONFIG="$PWD/scripts/Cross.toml"
|
||||||
|
|
||||||
|
rustup default stable
|
||||||
|
|
||||||
|
cargo install cross --git https://github.com/cross-rs/cross --branch main
|
||||||
|
cargo install cargo-lipo
|
||||||
|
# cargo install cargo-strip
|
||||||
|
|
||||||
|
pushd lib/rln
|
||||||
|
|
||||||
|
cargo clean
|
||||||
|
|
||||||
|
cross build --release --lib --target=aarch64-linux-android
|
||||||
|
cross build --release --lib --target=armv7-linux-androideabi
|
||||||
|
cross build --release --lib --target=i686-linux-android
|
||||||
|
cross build --release --lib --target=x86_64-linux-android
|
||||||
|
cross build --release --lib --target=x86_64-unknown-linux-musl
|
||||||
|
|
||||||
|
# These depend on https://github.com/cross-rs/cross/pull/591 being merged
|
||||||
|
# In the meantime, we can follow the instructions from here
|
||||||
|
# https://github.com/cross-rs/cross/wiki/FAQ#newer-linux-versions
|
||||||
|
# to build the docker images locally. Once that PR is merged,
|
||||||
|
# remove the CROSS_CONFIG variable and Cross.toml file
|
||||||
|
|
||||||
|
cross build --release --lib --target=x86_64-pc-windows-gnu
|
||||||
|
cross build --release --lib --target=aarch64-unknown-linux-gnu
|
||||||
|
cross build --release --lib --target=x86_64-unknown-linux-gnu
|
||||||
|
cross build --release --lib --target=arm-unknown-linux-gnueabi
|
||||||
|
cross build --release --lib --target=i686-pc-windows-gnu
|
||||||
|
cross build --release --lib --target=i686-unknown-linux-gnu
|
||||||
|
cross build --release --lib --target=arm-unknown-linux-gnueabihf
|
||||||
|
cross build --release --lib --target=mips-unknown-linux-gnu
|
||||||
|
cross build --release --lib --target=mips64-unknown-linux-gnuabi64
|
||||||
|
cross build --release --lib --target=mips64el-unknown-linux-gnuabi64
|
||||||
|
cross build --release --lib --target=mipsel-unknown-linux-gnu
|
||||||
|
|
||||||
|
# TODO: these work only on iOS
|
||||||
|
rustup target add aarch64-apple-ios x86_64-apple-ios
|
||||||
|
cross build --release --target=x86_64-apple-darwin --lib
|
||||||
|
cross build --release --target=aarch64-apple-darwin --lib
|
||||||
|
cargo lipo --release --targets=aarch64-apple-ios,x86_64-apple-ios
|
||||||
|
|
||||||
|
popd
|
||||||
|
|
||||||
|
TOOLS_DIR=`dirname $0`
|
||||||
|
COMPILE_DIR=${TOOLS_DIR}/../lib/rln/target
|
||||||
|
rm -rf $COMPILE_DIR/x86_64-apple-ios $COMPILE_DIR/aarch64-apple-ios
|
||||||
|
for platform in `ls ${COMPILE_DIR} | grep -v release | grep -v debug`
|
||||||
|
do
|
||||||
|
PLATFORM_DIR=${DIRECTORY}/$platform
|
||||||
|
mkdir -p ${PLATFORM_DIR}
|
||||||
|
cp ${COMPILE_DIR}/$platform/release/librln.* ${PLATFORM_DIR}
|
||||||
|
done
|
||||||
@ -7,48 +7,46 @@ then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export RUSTFLAGS="-Ccodegen-units=1"
|
|
||||||
export CROSS_CONFIG="$PWD/scripts/Cross.toml"
|
|
||||||
|
|
||||||
pushd lib/rln
|
pushd lib/rln
|
||||||
|
|
||||||
rustup default stable
|
export RUSTFLAGS="-Ccodegen-units=1"
|
||||||
|
rustup default 1.52.1
|
||||||
|
cargo install cargo-lipo -f
|
||||||
|
cargo install cargo-strip -f
|
||||||
|
|
||||||
cargo install cross --git https://github.com/cross-rs/cross --branch main
|
rustup target add x86_64-unknown-linux-gnu
|
||||||
cargo install cargo-lipo
|
rustup target add aarch64-unknown-linux-gnu
|
||||||
# cargo install cargo-strip
|
rustup target add x86_64-apple-darwin
|
||||||
|
rustup target add aarch64-apple-darwin
|
||||||
cross build --release --lib --target=aarch64-linux-android
|
rustup target add x86_64-pc-windows-gnu
|
||||||
cross build --release --lib --target=armv7-linux-androideabi
|
rustup target add aarch64-linux-android
|
||||||
cross build --release --lib --target=i686-linux-android
|
rustup target add armv7-linux-androideabi
|
||||||
cross build --release --lib --target=x86_64-linux-android
|
rustup target add i686-linux-android
|
||||||
cross build --release --lib --target=x86_64-unknown-linux-musl
|
rustup target add x86_64-linux-android
|
||||||
|
rustup target add x86_64-unknown-linux-musl
|
||||||
#cross build --release --lib --target=arm-unknown-linux-gnueabihf
|
rustup target add aarch64-apple-ios x86_64-apple-ios
|
||||||
#cross build --release --lib --target=i686-unknown-linux-gnu
|
|
||||||
#cross build --release --lib --target=mips-unknown-linux-gnu
|
|
||||||
#cross build --release --lib --target=mips64-unknown-linux-gnuabi64
|
|
||||||
#cross build --release --lib --target=mips64el-unknown-linux-gnuabi64
|
|
||||||
#cross build --release --lib --target=mipsel-unknown-linux-gnu
|
|
||||||
#cross build --release --lib --target=i686-pc-windows-gnu
|
|
||||||
|
|
||||||
# These depend on https://github.com/cross-rs/cross/pull/591 being merged
|
|
||||||
# In the meantime, we can follow the instructions from here
|
|
||||||
# https://github.com/cross-rs/cross/wiki/FAQ#newer-linux-versions
|
|
||||||
# to build the docker images locally. Once that PR is merged,
|
|
||||||
# remove the CROSS_CONFIG variable and Cross.toml file
|
|
||||||
|
|
||||||
cross build --release --lib --target=x86_64-pc-windows-gnu
|
|
||||||
cross build --release --lib --target=aarch64-unknown-linux-gnu
|
|
||||||
cross build --release --lib --target=x86_64-unknown-linux-gnu
|
|
||||||
cross build --release --lib --target=arm-unknown-linux-gnueabi
|
|
||||||
|
|
||||||
|
|
||||||
#rustup target add aarch64-apple-ios x86_64-apple-ios
|
|
||||||
#cross build --release --target=x86_64-apple-darwin --lib
|
|
||||||
#cross build --release --target=aarch64-apple-darwin --lib
|
|
||||||
#cargo lipo --release --targets=aarch64-apple-ios,x86_64-apple-ios
|
|
||||||
|
|
||||||
|
cargo build --release --target=aarch64-linux-android --lib
|
||||||
|
cargo strip --target aarch64-linux-android
|
||||||
|
cargo build --release --target=armv7-linux-androideabi --lib
|
||||||
|
cargo strip --target armv7-linux-androideabi
|
||||||
|
cargo build --release --target=i686-linux-android --lib
|
||||||
|
cargo strip --target i686-linux-android
|
||||||
|
cargo build --release --target=x86_64-linux-android --lib
|
||||||
|
cargo strip --target x86_64-linux-android
|
||||||
|
cargo build --target=x86_64-unknown-linux-gnu --release
|
||||||
|
cargo strip --target x86_64-unknown-linux-gnu
|
||||||
|
cargo build --target=aarch64-unknown-linux-gnu --release
|
||||||
|
cargo strip --target aarch64-unknown-linux-gnu
|
||||||
|
cargo build --target=x86_64-apple-darwin --release
|
||||||
|
cargo strip --target x86_64-apple-darwin
|
||||||
|
cargo build --target=aarch64-apple-darwin --release
|
||||||
|
cargo strip --target aarch64-apple-darwin
|
||||||
|
cargo build --target=x86_64-pc-windows-gnu --release
|
||||||
|
cargo strip --target x86_64-pc-windows-gnu
|
||||||
|
cargo build --target=x86_64-unknown-linux-musl --release
|
||||||
|
cargo strip --target x86_64-unknown-linux-musl
|
||||||
|
cargo lipo --release --targets=aarch64-apple-ios,x86_64-apple-ios
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
@ -60,4 +58,4 @@ do
|
|||||||
PLATFORM_DIR=${DIRECTORY}/$platform
|
PLATFORM_DIR=${DIRECTORY}/$platform
|
||||||
mkdir -p ${PLATFORM_DIR}
|
mkdir -p ${PLATFORM_DIR}
|
||||||
cp ${COMPILE_DIR}/$platform/release/librln.* ${PLATFORM_DIR}
|
cp ${COMPILE_DIR}/$platform/release/librln.* ${PLATFORM_DIR}
|
||||||
done
|
done
|
||||||
Loading…
x
Reference in New Issue
Block a user