From: Matt Corallo <649246+TheBlueMatt@users.noreply.github.com> Date: Fri, 13 Jan 2023 04:12:57 +0000 (+0000) Subject: Merge pull request #97 from TheBlueMatt/main X-Git-Tag: v0.0.113.1~1 X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-c-bindings;a=commitdiff_plain;h=6e34cb37125283ba1d84fb039adc033db887c864;hp=f87b75f30a64032b1d76a13fa45233bc4ceecf86 Merge pull request #97 from TheBlueMatt/main Fix LTO compilation with latest ld.lld on OSX --- diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9334288..6295268 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -70,14 +70,14 @@ jobs: 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: @@ -93,5 +93,5 @@ jobs: 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 diff --git a/genbindings.sh b/genbindings.sh index f26ea5d..234af29 100755 --- a/genbindings.sh +++ b/genbindings.sh @@ -338,7 +338,7 @@ if [ "$2" = "true" ]; then 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 @@ -492,7 +492,7 @@ fi 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 @@ -559,11 +559,12 @@ if [ "$CLANGPP" != "" -a "$LLD" != "" ]; then 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