run: rustup target install aarch64-apple-darwin
- name: Fetch upstream LLVM/clang snapshot
run: |
- wget -O clang+llvm-12.0.0-x86_64-apple-darwin.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0/clang+llvm-12.0.0-x86_64-apple-darwin.tar.xz
- if [ "$(shasum -a 256 clang+llvm-12.0.0-x86_64-apple-darwin.tar.xz | awk '{ print $1 }')" != "7bc2259bf75c003f644882460fc8e844ddb23b27236fe43a2787870a4cd8ab50" ]; then
+ wget -O clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.3/clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz
+ if [ "$(shasum -a 256 clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz | awk '{ print $1 }')" != "ac668586b2b3d068f1e43520a3ef0b1592e5dc3eff1a4a4b772e29803b428a69" ]; then
echo "Bad hash"
exit 1
fi
- name: Unpack upstream LLVM+clang and use it by default
run: |
- tar xvvf clang+llvm-12.0.0-x86_64-apple-darwin.tar.xz
+ tar xvvf clang+llvm-15.0.3-x86_64-apple-darwin.tar.xz
- name: Checkout source code
uses: actions/checkout@v2
with:
run: ./genbindings.sh ./rust-lightning true
- name: Rebuild bindings using upstream clang, and check the sample app builds + links
run: |
- export PATH=`pwd`/clang+llvm-12.0.0-x86_64-apple-darwin/bin:$PATH
+ export PATH=`pwd`/clang+llvm-15.0.3-x86_64-apple-darwin/bin:$PATH
CC=clang ./genbindings.sh ./rust-lightning true
strip ./a.out
echo " C++ Bin size and runtime w/o optimization:"
ls -lha a.out
- time ./a.out > /dev/null
+ ./a.out > /dev/null
fi
# Then, check with memory sanitizer, if we're on Linux and have rustc nightly
strip ./a.out
echo "C++ Bin size and runtime with only RL (LTO) optimized:"
ls -lha a.out
-time ./a.out > /dev/null
+./a.out > /dev/null
if [ "$CLANGPP" != "" ]; then
# If we can use cross-language LTO, use it for building C dependencies (i.e. libsecp256k1) as well
CARGO_PROFILE_RELEASE_LTO=true RUSTFLAGS="$RUSTFLAGS -C embed-bitcode=yes -C linker-plugin-lto -C lto -C linker=$CLANG $LINK_ARG_FLAGS -C link-arg=-march=sandybridge -C link-arg=-mcpu=sandybridge -C link-arg=-mtune=sandybridge" cargo build $CARGO_BUILD_ARGS -v --release
if [ "$2" = "true" ]; then
- $CLANGPP $LOCAL_CFLAGS -flto -fuse-ld=$LLD -O2 demo.cpp target/release/libldk.a -ldl
+ $CLANGPP $LOCAL_CFLAGS -flto -fuse-ld=$LLD -O2 -c demo.cpp -o demo.o
+ $CLANGPP $LOCAL_CFLAGS -flto -fuse-ld=$LLD -Wl,--lto-O2 -Wl,-O2 -O2 demo.o target/release/libldk.a -ldl
strip ./a.out
echo "C++ Bin size and runtime with cross-language LTO:"
ls -lha a.out
- time ./a.out > /dev/null
+ ./a.out > /dev/null
fi
fi
else