Merge pull request #97 from TheBlueMatt/main
authorMatt Corallo <649246+TheBlueMatt@users.noreply.github.com>
Fri, 13 Jan 2023 04:12:57 +0000 (04:12 +0000)
committerGitHub <noreply@github.com>
Fri, 13 Jan 2023 04:12:57 +0000 (04:12 +0000)
Fix LTO compilation with latest ld.lld on OSX

.github/workflows/build.yml
genbindings.sh

index 93342881e8ebebccb2634f57b7aedc136079a8f8..62952682922d8bea744f259e4947edb66c176155 100644 (file)
@@ -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
index f26ea5d38057ca2c81813a9ef3f2cf8da954d50f..234af2946fdc99630c78065464a8072dc02fe7ba 100755 (executable)
@@ -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