New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix a build error on macOS when set MACOSX_DEPLOYMENT_TARGET
#10549
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"clockid_t" is redefined when set "MACOSX_DEPLOYMENT_TARGET" to former than 10.12
Codecov Report
@@ Coverage Diff @@
## master #10549 +/- ##
==========================================
- Coverage 81.67% 81.67% -0.01%
==========================================
Files 158 158
Lines 185328 185328
Branches 41912 41912
==========================================
- Hits 151375 151374 -1
- Misses 21499 21504 +5
+ Partials 12454 12450 -4
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
ychin
added a commit
to ychin/macvim
that referenced
this pull request
Feb 26, 2023
This fixes build breaks on older Xcode versions (e.g. Xcode 8, on macOS 10.11). Fixes a couple issues: - Vim's os_mac.h has an improperly specified backwards compatibility ifdef (vim/vim#10549). It's just checking for existence of `MAC_OS_X_VERSION_10_12` instead of actually comparing it against `MAC_OS_X_VERSION_MAX_ALLOWED`. The previous code that it was fixing was comparing it against `MAC_OS_X_VERSION_MIN_REQUIRED` which was also wrong as the "min" just means the deploy target, whereas the "max" indicates the SDK you are compiling against. - Unfortunately, the `@available` syntax for checking runtime version was only introduced in Xcode 9. To make the code compilable in earlier Xcode versions, introduce a new macro `AVAILABLE_MAC_OS` which will use `@available` if compiling on Xcode 9+ (which is the vast majority of cases), and use NSAppKitVersion checks on Xcode 8 or below. We would like to still use `@available` checks if possible because the compiler can optimize that out if it detects that you are deploying to a higher target than what you are checking. - Some typedefs in MacVim are also introduced in 10.13+. Add those typedefs to MacVim.h
ychin
added a commit
to ychin/macvim
that referenced
this pull request
Feb 26, 2023
This fixes build breaks on older Xcode versions (e.g. Xcode 8, on macOS 10.11). Fixes a couple issues: - Vim's os_mac.h has an improperly specified backwards compatibility ifdef (vim/vim#10549). It's just checking for existence of `MAC_OS_X_VERSION_10_12` instead of actually comparing it against `MAC_OS_X_VERSION_MAX_ALLOWED`. The previous code that it was fixing was comparing it against `MAC_OS_X_VERSION_MIN_REQUIRED` which was also wrong as the "min" just means the deploy target, whereas the "max" indicates the SDK you are compiling against. - Unfortunately, the `@available` syntax for checking runtime version was only introduced in Xcode 9. To make the code compilable in earlier Xcode versions, introduce a new macro `AVAILABLE_MAC_OS` which will use `@available` if compiling on Xcode 9+ (which is the vast majority of cases), and use NSAppKitVersion checks on Xcode 8 or below. We would like to still use `@available` checks if possible because the compiler can optimize that out if it detects that you are deploying to a higher target than what you are checking. - Some typedefs in MacVim are also introduced in 10.13+. Add those typedefs to MacVim.h
ychin
added a commit
to ychin/macvim
that referenced
this pull request
Feb 26, 2023
This fixes build breaks on older Xcode versions (e.g. Xcode 8, on macOS 10.11). Fixes a couple issues: - Vim's os_mac.h has an improperly specified backwards compatibility ifdef (vim/vim#10549). It's just checking for existence of `MAC_OS_X_VERSION_10_12` instead of actually comparing it against `MAC_OS_X_VERSION_MAX_ALLOWED`. The previous code that it was fixing was comparing it against `MAC_OS_X_VERSION_MIN_REQUIRED` which was also wrong as the "min" just means the deploy target, whereas the "max" indicates the SDK you are compiling against. - Unfortunately, the `@available` syntax for checking runtime version was only introduced in Xcode 9. To make the code compilable in earlier Xcode versions, introduce a new macro `AVAILABLE_MAC_OS` which will use `@available` if compiling on Xcode 9+ (which is the vast majority of cases), and use NSAppKitVersion checks on Xcode 8 or below. We would like to still use `@available` checks if possible because the compiler can optimize that out if it detects that you are deploying to a higher target than what you are checking. - Some typedefs in MacVim are also introduced in 10.13+. Add those typedefs to MacVim.h
ychin
added a commit
to ychin/macvim
that referenced
this pull request
Feb 26, 2023
This fixes build breaks on older Xcode versions (e.g. Xcode 8, on macOS 10.11). Fixes a couple issues: - Vim's os_mac.h has an improperly specified backwards compatibility ifdef (vim/vim#10549). It's just checking for existence of `MAC_OS_X_VERSION_10_12` instead of actually comparing it against `MAC_OS_X_VERSION_MAX_ALLOWED`. The previous code that it was fixing was comparing it against `MAC_OS_X_VERSION_MIN_REQUIRED` which was also wrong as the "min" just means the deploy target, whereas the "max" indicates the SDK you are compiling against. - Unfortunately, the `@available` syntax for checking runtime version was only introduced in Xcode 9. To make the code compilable in earlier Xcode versions, introduce a new macro `AVAILABLE_MAC_OS` which will use `@available` if compiling on Xcode 9+ (which is the vast majority of cases), and use NSAppKitVersion checks on Xcode 8 or below. We would like to still use `@available` checks if possible because the compiler can optimize that out if it detects that you are deploying to a higher target than what you are checking. - Some typedefs in MacVim are also introduced in 10.13+. Add those typedefs to MacVim.h
ychin
added a commit
to ychin/macvim
that referenced
this pull request
Feb 26, 2023
This fixes build breaks on older Xcode versions (e.g. Xcode 8, on macOS 10.11). Fixes a couple issues: - Vim's os_mac.h has an improperly specified backwards compatibility ifdef (vim/vim#10549). It's just checking for existence of `MAC_OS_X_VERSION_10_12` instead of actually comparing it against `MAC_OS_X_VERSION_MAX_ALLOWED`. The previous code that it was fixing was comparing it against `MAC_OS_X_VERSION_MIN_REQUIRED` which was also wrong as the "min" just means the deploy target, whereas the "max" indicates the SDK you are compiling against. - Unfortunately, the `@available` syntax for checking runtime version was only introduced in Xcode 9. To make the code compilable in earlier Xcode versions, introduce a new macro `AVAILABLE_MAC_OS` which will use `@available` if compiling on Xcode 9+ (which is the vast majority of cases), and use NSAppKitVersion checks on Xcode 8 or below. We would like to still use `@available` checks if possible because the compiler can optimize that out if it detects that you are deploying to a higher target than what you are checking. - Some typedefs in MacVim are also introduced in 10.13+. Add those typedefs to MacVim.h Fix macvim-dev#1342
ychin
added a commit
to ychin/macvim
that referenced
this pull request
Feb 26, 2023
This fixes build breaks on older Xcode versions (e.g. Xcode 8, on macOS 10.11). Fixes a couple issues: - Vim's os_mac.h has an improperly specified backwards compatibility ifdef (vim/vim#10549). It's just checking for existence of `MAC_OS_X_VERSION_10_12` instead of actually comparing it against `MAC_OS_X_VERSION_MAX_ALLOWED`. The previous code that it was fixing was comparing it against `MAC_OS_X_VERSION_MIN_REQUIRED` which was also wrong as the "min" just means the deploy target, whereas the "max" indicates the SDK you are compiling against. - Unfortunately, the `@available` syntax for checking runtime version was only introduced in Xcode 9. To make the code compilable in earlier Xcode versions, introduce a new macro `AVAILABLE_MAC_OS` which will use `@available` if compiling on Xcode 9+ (which is the vast majority of cases), and use NSAppKitVersion checks on Xcode 8 or below. We would like to still use `@available` checks if possible because the compiler can optimize that out if it detects that you are deploying to a higher target than what you are checking. - Some typedefs in MacVim are also introduced in 10.13+. Add those typedefs to MacVim.h Fix macvim-dev#1342
ychin
added a commit
to ychin/vim
that referenced
this pull request
Feb 26, 2023
PR vim#10549 attempted to fix a build break on older Xcode versions (Xcode 8 / macOS 10.11 SDK), but it did it in a way that's not very reliable. In particular, it did it just by checking whether `MAC_OS_X_VERSION_10_12` exists, but that macro is just the version number for 10.12 SDK. In MacVim, we manually define it to allow us to do version check and would fail the build because of that. Instead, the proper fix is to check `MAC_OS_X_VERSION_MAX_ALLOWED` against `MAC_OS_X_VERSION_10_12`. The "max allowed" value is the version of the SDK we are building with and it will be properly defined. The previous bug that the PR was trying to fix was that it was using `MAC_OS_X_VERSION_MIN_REQUIRED` instead, which is the "deployment target" of the build and wasn't the right value to use. See macvim-dev/macvim#1372
ychin
added a commit
to ychin/vim
that referenced
this pull request
Feb 26, 2023
PR vim#10549 attempted to fix a build break on older Xcode versions (Xcode 8 / macOS 10.11 SDK), but it did it in a way that's not very reliable. In particular, it did it just by checking whether `MAC_OS_X_VERSION_10_12` exists, but that macro is just the version number for 10.12 SDK. In MacVim, we manually define it to allow us to do version checks. As a result, MacVim builds would fail on macOS 10.11 SDKs (or below). Instead, the proper fix is to check `MAC_OS_X_VERSION_MAX_ALLOWED` against `MAC_OS_X_VERSION_10_12`. The "max allowed" value is the version of the SDK we are building with and it will be properly defined. The previous bug that the PR was trying to fix was that it was using `MAC_OS_X_VERSION_MIN_REQUIRED` instead, which is the "deployment target" of the build and wasn't the right value to use. See macvim-dev/macvim#1372
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Setting
MACOSX_DEPLOYMENT_TARGET
environment variable to former than 10.12 causes a build error thatclockid_t
is redefined.NOTE: Compiler sets
MAC_OS_X_VERSION_MIN_REQUIRED
fromMACOSX_DEPLOYMENT_TARGET
.