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
This commit is contained in:
fanquake 2020-07-31 08:24:14 +08:00 committed by Pasta
parent 6d48f06071
commit 1aa025f402
No known key found for this signature in database
GPG Key ID: 52527BEDABE87984

View File

@ -76,9 +76,9 @@ The following can be set when running make: `make FOO=bar`
<dt>BUILD_ID_SALT</dt> <dt>BUILD_ID_SALT</dt>
<dd>Optional salt to use when generating build package ids</dd> <dd>Optional salt to use when generating build package ids</dd>
<dt>FORCE_USE_SYSTEM_CLANG</dt> <dt>FORCE_USE_SYSTEM_CLANG</dt>
<dd>(EXPERTS ONLY) When cross-compiling for macOS, use clang found in the <dd>(EXPERTS ONLY) When cross-compiling for macOS, use Clang found in the
system's <code>$PATH</code> rather than the default prebuilt release of clang system's <code>$PATH</code> rather than the default prebuilt release of Clang
from llvm.org</dd> from llvm.org. Clang 8 or later is required.</dd>
</dl> </dl>
If some packages are not built, for example `make NO_WALLET=1`, the appropriate 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`. options will be passed to Dash Core's configure. In this case, `--disable-wallet`.