cloudflare / quiche

🥧 Savoury implementation of the QUIC transport protocol and HTTP/3
https://docs.quic.tech/quiche/
BSD 2-Clause "Simplified" License
9.39k stars 707 forks source link

quiche fails to build for target aarch64-apple-ios-sim #1514

Open nathanejohnson opened 1 year ago

nathanejohnson commented 1 year ago
(nathanjohnson@workwifi:~/jetbrains/quiche/quiche)% cargo build --release --target aarch64-apple-ios-sim

    Updating crates.io index
   Compiling quiche v0.17.2 (/Users/nathanjohnson/jetbrains/quiche/quiche)
error: linking with `cc` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/nathanjohnson/bin:/Users/nathanjohnson/go/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Users/nathanjohnson/.cargo/bin:/Users/nathanjohnson/Library/Application Support/JetBrains/Toolbox/scripts" VSLANG="1033" ZERO_AR_DATE="1" "cc" "-Wl,-exported_symbols_list,/var/folders/_3/pt46jpjn6f965hbdts7lt7480000gs/T/rustcE3Oah5/list" "-arch" "arm64" "/var/folders/_3/pt46jpjn6f965hbdts7lt7480000gs/T/rustcE3Oah5/symbols.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.0.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.1.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.10.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.11.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.12.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.13.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.14.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.15.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.2.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.3.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.4.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.5.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.6.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.7.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.8.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.quiche.31207120-cgu.9.rcgu.o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/quiche.2rbvmzm9993wphae.rcgu.o" "-L" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps" "-L" "/Users/nathanjohnson/jetbrains/quiche/target/release/deps" "-L" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/build/quiche-9358fc2ec6aba0da/out/build/" "-L" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/build/ring-67c984e2d69dacba/out" "-L" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib" "-lssl" "-lcrypto" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/liblibm-4e96fec2b1367821.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/liboctets-86ad3db5b5730d11.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/liblazy_static-ca900b78bda30a2e.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/libslab-6929109d50d61370.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/liblibc-5c599b540594f0bb.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/libring-a5050ebe42f97841.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/libuntrusted-9a9495af1665b40f.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/libsmallvec-6dd8cc1bf5e8e3d4.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/libserde-7440994716490b35.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/liblog-482c8c35463f4ab6.rlib" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/libcfg_if-ae9038095c195521.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libstd-7a28c862204af3f4.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libpanic_unwind-52bd3460d2fc395f.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libobject-2a6ad915e047553d.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libmemchr-461a01c14a6e3713.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libaddr2line-22f6282ea465bfba.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libgimli-b2b40cd5687422ca.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/librustc_demangle-ebb055b5fff64557.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libstd_detect-9a3cefeef5c796a8.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libhashbrown-07a3a17f4dab30ec.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libminiz_oxide-a013a38dc1ee1a7c.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libadler-0990070057275c45.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/librustc_std_workspace_alloc-5c1476f3d1a6628a.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libunwind-b2cbe55143cb02d5.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libcfg_if-49fb1edb5f6a9677.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/liblibc-ef394d7a6dc51db4.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/liballoc-42625ce966e27825.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/librustc_std_workspace_core-b3a57cd2e463e32e.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libcore-a7d68b619d039a5e.rlib" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib/libcompiler_builtins-aac6cfff17caa241.rlib" "-liconv" "-framework" "Security" "-lSystem" "-lobjc" "-framework" "Security" "-framework" "Foundation" "-lc" "-lm" "-isysroot" "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.4.sdk" "-Wl,-syslibroot" "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator16.4.sdk" "-L" "/Users/nathanjohnson/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-ios-sim/lib" "-o" "/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/deps/libquiche.dylib" "-Wl,-dead_strip" "-dynamiclib" "-Wl,-dylib" "-nodefaultlibs"
  = note: ld: in /Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/build/quiche-9358fc2ec6aba0da/out/build//libcrypto.a(chacha-armv8.S.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/build/quiche-9358fc2ec6aba0da/out/build//libcrypto.a' for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

error: could not compile `quiche` due to previous error
(nathanjohnson@workwifi:~/jetbrains/quiche/quiche)% 

It appears to be a problem with the vendored boringssl, but I'm not sure how to work around this issue.

this line seems to be particularly interesting:

building for iOS Simulator, but linking in object file built for iOS, file '/Users/nathanjohnson/jetbrains/quiche/target/aarch64-apple-ios-sim/release/build/quiche-9358fc2ec6aba0da/out/build//libcrypto.a' for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

nathanejohnson commented 1 year ago

As a followup, using the crate version of boringssl gets it to compile for this target. So followup question:

What is the down side of using the crate version of boringssl? Why is it vendored in the first place?