Skip to content

Commit bb11a98

Browse files
committed
Merge bitcoin/bitcoin#21793: build: use -isysroot over --sysroot on macOS
cf971c9 build: use -isysroot over --sysroot on macOS (fanquake) Pull request description: Not only does this seem to be the more correct behaviour when targeting Darwin, but if you use `-isysroot`, Clangs Darwin driver will [infer the deployment target](https://github.com/llvm/llvm-project/blob/3e037f8f0e26acab8cc784ea4c7d05da79f7c22e/clang/lib/Driver/ToolChains/Darwin.cpp#L1652) from the SDK and use other SDK info when parsing arguments to the linker. In the case of [`-platform_version`](https://github.com/llvm/llvm-project/blob/3e037f8f0e26acab8cc784ea4c7d05da79f7c22e/clang/lib/Driver/ToolChains/Darwin.cpp#L2656), which is added if the linker is [new enough](https://github.com/llvm/llvm-project/blob/3e037f8f0e26acab8cc784ea4c7d05da79f7c22e/clang/lib/Driver/ToolChains/Darwin.cpp#L342), the version tuple is constructed from the SDKInfo, and SDKInfo, as far as I can tell, only exists when `-isysroot` has been passed, see [parseSDKSettings](https://github.com/llvm/llvm-project/blob/3e037f8f0e26acab8cc784ea4c7d05da79f7c22e/clang/lib/Driver/ToolChains/Darwin.cpp#L1785) As a result, the SDK version field in the `LC_BUILD_VERSION` command is filled out. i.e when building master: ```bash cmd LC_BUILD_VERSION cmdsize 32 platform 1 minos 10.14 sdk n/a ntools 1 tool 3 version 650.9 ``` vs this PR: ```bash cmd LC_BUILD_VERSION cmdsize 32 platform 1 minos 10.14 sdk 11.3 ntools 1 tool 3 version 650.9 ``` This, from what I understand, will fix the issue we are having with Qt deciding wether or not to enable features like "Dark mode" on macOS, see #21771, however I have not tested that. Thus this is an alternative to #21782. Our usage of `--sysroot` was added in #17118. ```bash -isysroot <dir> Set the system root directory (usually /) ``` ACKs for top commit: Sjors: tACK cf971c9 hebasto: re-ACK cf971c9, only rebased and addressed comments since my [previous](bitcoin/bitcoin#21793 (review)) review. Tree-SHA512: f01138179fb85083b5505bbaa48810451098ffa4da5d3c9b673785448790aa76f2e64b2aab6e698f6ee378a21f70626445a3fabee7c61dbfc44e96f3e3964656
2 parents 13f24d1 + cf971c9 commit bb11a98

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

contrib/macdeploy/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ Working macOS DMGs are created in Linux by combining a recent `clang`, the Apple
5656

5757
Apple uses `clang` extensively for development and has upstreamed the necessary
5858
functionality so that a vanilla clang can take advantage. It supports the use of `-F`,
59-
`-target`, `-mmacosx-version-min`, and `--sysroot`, which are all necessary when
59+
`-target`, `-mmacosx-version-min`, and `-isysroot`, which are all necessary when
6060
building for macOS.
6161

6262
Apple's version of `binutils` (called `cctools`) contains lots of functionality missing in the

depends/builders/darwin.mk

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
build_darwin_CC:=$(shell xcrun -f clang) --sysroot $(shell xcrun --show-sdk-path)
2-
build_darwin_CXX:=$(shell xcrun -f clang++) --sysroot $(shell xcrun --show-sdk-path)
1+
build_darwin_CC:=$(shell xcrun -f clang) -isysroot$(shell xcrun --show-sdk-path)
2+
build_darwin_CXX:=$(shell xcrun -f clang++) -isysroot$(shell xcrun --show-sdk-path)
33
build_darwin_AR:=$(shell xcrun -f ar)
44
build_darwin_RANLIB:=$(shell xcrun -f ranlib)
55
build_darwin_STRIP:=$(shell xcrun -f strip)
@@ -10,8 +10,8 @@ build_darwin_SHA256SUM=shasum -a 256
1010
build_darwin_DOWNLOAD=curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o
1111

1212
#darwin host on darwin builder. overrides darwin host preferences.
13-
darwin_CC=$(shell xcrun -f clang) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(shell xcrun --show-sdk-path)
14-
darwin_CXX:=$(shell xcrun -f clang++) -mmacosx-version-min=$(OSX_MIN_VERSION) -stdlib=libc++ --sysroot $(shell xcrun --show-sdk-path)
13+
darwin_CC=$(shell xcrun -f clang) -mmacosx-version-min=$(OSX_MIN_VERSION) -isysroot$(shell xcrun --show-sdk-path)
14+
darwin_CXX:=$(shell xcrun -f clang++) -mmacosx-version-min=$(OSX_MIN_VERSION) -stdlib=libc++ -isysroot$(shell xcrun --show-sdk-path)
1515
darwin_AR:=$(shell xcrun -f ar)
1616
darwin_RANLIB:=$(shell xcrun -f ranlib)
1717
darwin_STRIP:=$(shell xcrun -f strip)

depends/hosts/darwin.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,15 @@ darwin_CC=env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH \
100100
-u LIBRARY_PATH \
101101
$(clang_prog) --target=$(host) -mmacosx-version-min=$(OSX_MIN_VERSION) \
102102
-B$(build_prefix)/bin -mlinker-version=$(LD64_VERSION) \
103-
--sysroot=$(OSX_SDK) \
103+
-isysroot$(OSX_SDK) \
104104
-Xclang -internal-externc-isystem$(clang_resource_dir)/include \
105105
-Xclang -internal-externc-isystem$(OSX_SDK)/usr/include
106106
darwin_CXX=env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH \
107107
-u OBJC_INCLUDE_PATH -u OBJCPLUS_INCLUDE_PATH -u CPATH \
108108
-u LIBRARY_PATH \
109109
$(clangxx_prog) --target=$(host) -mmacosx-version-min=$(OSX_MIN_VERSION) \
110110
-B$(build_prefix)/bin -mlinker-version=$(LD64_VERSION) \
111-
--sysroot=$(OSX_SDK) \
111+
-isysroot$(OSX_SDK) \
112112
-stdlib=libc++ -nostdinc++ \
113113
-Xclang -cxx-isystem$(OSX_SDK)/usr/include/c++/v1 \
114114
-Xclang -internal-externc-isystem$(clang_resource_dir)/include \

0 commit comments

Comments
 (0)