hyperledger / besu-native

Apache License 2.0
14 stars 36 forks source link

enable builds native M1/arm64 crypto libs #41

Closed garyschulte closed 3 years ago

garyschulte commented 3 years ago

Build darwin-arm64 native crypto libraries

Fixes #40

darwin artifacts prior (from arm64):

besu-native git:(master) ✗ file secp256k1/build/lib/libsecp256k1.0.dylib
secp256k1/build/lib/libsecp256k1.0.dylib: Mach-O 64-bit dynamically linked shared library arm64

darwin artifacts new (from arm64):

➜  besu-native git:(darwin-arm64) find . -name '*dylib' |grep "build/lib" |xargs file
./secp256k1/build/lib/libsecp256k1.dylib:    Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64:Mach-O 64-bit dynamically linked shared library arm64]
./secp256k1/build/lib/libsecp256k1.dylib (for architecture x86_64):     Mach-O 64-bit dynamically linked shared library x86_64
./secp256k1/build/lib/libsecp256k1.dylib (for architecture arm64):      Mach-O 64-bit dynamically linked shared library arm64

./secp256k1/build/lib/libsecp256k1.0.dylib:  Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64:Mach-O 64-bit dynamically linked shared library arm64]
./secp256k1/build/lib/libsecp256k1.0.dylib (for architecture x86_64):   Mach-O 64-bit dynamically linked shared library x86_64
./secp256k1/build/lib/libsecp256k1.0.dylib (for architecture arm64):    Mach-O 64-bit dynamically linked shared library arm64

./altbn128/build/lib/libeth_altbn128.dylib:  Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64:Mach-O 64-bit dynamically linked shared library arm64]
./altbn128/build/lib/libeth_altbn128.dylib (for architecture x86_64):   Mach-O 64-bit dynamically linked shared library x86_64
./altbn128/build/lib/libeth_altbn128.dylib (for architecture arm64):    Mach-O 64-bit dynamically linked shared library arm64

./bls12-381/build/lib/libeth_pairings.dylib: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64:Mach-O 64-bit dynamically linked shared library arm64]
./bls12-381/build/lib/libeth_pairings.dylib (for architecture x86_64):  Mach-O 64-bit dynamically linked shared library x86_64
./bls12-381/build/lib/libeth_pairings.dylib (for architecture arm64):   Mach-O 64-bit dynamically linked shared library arm64

depends on https://github.com/matter-labs/eip1962/pull/18

garyschulte commented 3 years ago

Our last holdout for arm64 darwin support is the rocksdb jni lib: https://github.com/facebook/rocksdb/issues/7720