Merged
Conversation
7 tasks
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
65297e4 to
70f49b9
Compare
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
This file contains hidden or 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
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.
This fixes build breaks on older Xcode versions (e.g. Xcode 8, on macOS 10.11). Fixes a couple issues:
MACOSX_DEPLOYMENT_TARGETvim/vim#10549). It's just checking for existence ofMAC_OS_X_VERSION_10_12instead of actually comparing it againstMAC_OS_X_VERSION_MAX_ALLOWED. The previous code that it was fixing was comparing it againstMAC_OS_X_VERSION_MIN_REQUIREDwhich was also wrong as the "min" just means the deploy target, whereas the "max" indicates the SDK you are compiling against.@availablesyntax for checking runtime version was only introduced in Xcode 9. To make the code compilable in earlier Xcode versions, introduce a new macroAVAILABLE_MAC_OSwhich will use@availableif 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@availablechecks 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.Fix #1342