-
Notifications
You must be signed in to change notification settings - Fork 7.7k
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
Update MSVC compiler version detection #14810
Conversation
The failed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, not sure about 8.3 but probably is unlikely to do harm.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think for 8.3 it might make sense to ask RMs @bukka any opinions?
That would be more a feature IMO as we don't officially support such builds for 8.3 and we no longer allow any features to stable version. So should be only for master. |
As of Visual Studio 2015, the major version of the compiler (`cl.exe`) is 19, and the minor version increases by steps of 10. However, the latest Visual Studio 2022 release has the version `19.40`, so that Visual Studio version is not properly detected. This is not a big deal regarding the reported compiler version (`php -v` etc.), but the filenames of the builds would no longer match the expectations (instead of `vs17` there is now `19.40.33811` or another build number). This implies that the files would have to be renamed manually to be properly handled by windows.php.net (or that code would have to be adapted). Therefore we update the version detection to detect all versions < 1950 as Visual Studio 2022, assuming that "For major releases, the minor version increases by 10."[1] still holds in the future. [1] <https://learn.microsoft.com/en-us/cpp/overview/compiler-versions?view=msvc-170#visual-studio-2017-and-later>
Thanks @bukka. I've rebased onto master, which apparently triggered a code review request from a couple of people – sorry for that. |
Welcome back @cmb69 at pull requests 👍 and thanks for all your work on Windows builds. :D |
Welcome back @cmb69 ! |
As of Visual Studio 2015, the major version of the compiler (
cl.exe
) is 19, and the minor version increases by steps of 10. However, the latest Visual Studio 2022 release has the version19.40
, so that Visual Studio version is not properly detected. This is not a big deal regarding the reported compiler version (php -v
etc.), but the filenames of the builds would no longer match the expectations (instead ofvs17
there is now19.40.33811
or another build number). This implies that the files would have to be renamed manually to be properly handled by windows.php.net (or that code would have to be adapted).Therefore we update the version detection to detect all versions < 1950 as Visual Studio 2022, assuming that "For major releases, the minor version increases by 10."[1] still holds in the future.
[1] https://learn.microsoft.com/en-us/cpp/overview/compiler-versions?view=msvc-170#visual-studio-2017-and-later
Note that I have targeted
PHP-8.3
since there may be custom builds which use Visual Studio 2022, so they get a "proper" compiler detection, although that might break some build scripts. Thus, it might be best to only apply this patch tomaster
, because in my opinion PHP 8.4 should be built with Visual Studio 2022, although Visual Studio 2019 still has extended support until 2029-04-10.