From 1aa025f402b78eff45cfed758411f5b250bcd09e Mon Sep 17 00:00:00 2001 From: fanquake Date: Fri, 31 Jul 2020 08:24:14 +0800 Subject: [PATCH] Merge #19617: doc: Clang 8 or later is required with FORCE_USE_SYSTEM_CLANG e60ef21b8a0f62ebc2e0bdbb5943fa80cc4d98b2 doc: Clang 8 or later is required with FORCE_USE_SYSTEM_CLANG (fanquake) Pull request description: The usage of pragmas within the macOS SDK requires LLVM Clang 8. This is the same version as our prebuilt Clang, however the minimum is worth noting here as they may diverge and/or expert users might expect they could use an earlier version. If you compile depends using `FORCE_USE_SYSTEM_CLANG=1` and Clang 7 you'll see output like: ```bash In file included from kernel/qcore_mac_objc.mm:44: In file included from /bitcoin/depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers/System/Library/Frameworks/AppKit.framework/Headers/NSText.h:9: In file included from /bitcoin/depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:19: In file included from /bitcoin/depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers/System/Library/Frameworks/AppKit.framework/Headers/NSResponder.h:10: /bitcoin/depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers/System/Library/Frameworks/AppKit.framework/Headers/NSEvent.h:19:1: error: expected 'push' or 'pop' after '#pragma clang attribute' /bitcoin/depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers/usr/include/os/availability.h:104:273: note: expanded from macro 'API_UNAVAILABLE_BEGIN' ...__API_UNAVAILABLE_BEGIN5, __API_UNAVAILABLE_BEGIN4, __API_UNAVAILABLE_BEGIN3, __API_UNAVAILABLE_BEGIN2, __API_UNAVAILABLE_BEGIN1, 0)(__VA_A... ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. ``` I've got a [godbolt here](https://godbolt.org/z/j6r987) that contains a demo of the issue (based off the macOS SDK). It will compile with Clang 8 but not with Clang 7. ACKs for top commit: laanwj: ACK e60ef21b8a0f62ebc2e0bdbb5943fa80cc4d98b2 Tree-SHA512: affc082a4b28d9cd102a844e10f63f55f0f20a9f840e5d8037a41470ad1ea83edc3075ce262b1d618c59c9b75445e52ddd9ba9f84c5ac3da9ce20681473c47b1 --- depends/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/depends/README.md b/depends/README.md index f1f2ade8c8..afe3c291bd 100644 --- a/depends/README.md +++ b/depends/README.md @@ -76,9 +76,9 @@ The following can be set when running make: `make FOO=bar`
BUILD_ID_SALT
Optional salt to use when generating build package ids
FORCE_USE_SYSTEM_CLANG
-
(EXPERTS ONLY) When cross-compiling for macOS, use clang found in the -system's $PATH rather than the default prebuilt release of clang -from llvm.org
+
(EXPERTS ONLY) When cross-compiling for macOS, use Clang found in the +system's $PATH rather than the default prebuilt release of Clang +from llvm.org. Clang 8 or later is required.
If some packages are not built, for example `make NO_WALLET=1`, the appropriate options will be passed to Dash Core's configure. In this case, `--disable-wallet`.