RE: [INTERNALS-WIN] PHP7: which Windows Kit?
[email protected] ("Anatol Belski") Tue, 4 Aug 2015 10:16:58 +0200
| Newsgroups | php.internals.win |
|---|---|
| Message-ID | <[email protected]> |
Hi Jan, > -----Original Message----- > From: Jan Ehrhardt [mailto:[email protected]] > Sent: Tuesday, August 4, 2015 12:32 AM > To: [email protected] > Cc: [email protected]; [email protected] > Subject: Re: [INTERNALS-WIN] PHP7: which Windows Kit? > > Hi Anatol, > > "Anatol Belski" in php.internals.win (Mon, 3 Aug 2015 23:30:50 +0200): > >Windows Kit means targeting the OS specific features. PHP on Windows > >currently doesn't target anything except Desktop/Server in the range of > >Vista and up. PHP currently doesn't claim to be a universal APP. Like > >to run on a smartphone, or as a store app, or ... PHP doesn't > >develop/require any kernel mode drivers. All the functionality in PHP > >is covered by the native CRT, which is UCRT due to VS2015 requirement for > PHP7. > > As far as I know that is not the whole story. For instance network connectivity > (WinSock2.h) is not part of the UCRT, but has to be included from either > > C:\Program Files (x86)\Windows Kits\8.1\include\um\ or C:\Program Files > (x86)\Windows Kits\10\Include\10.0.10240.0\um\ > > A fresh VS 2015 Pro install includes the UM headers from Windows Kit 10. > It may be true that you do not target any system, but implicitely you are making > a choice between '8.1\include\um\' and '10\Include\10.0.10240.0\um\'. > > Pierre is always hammering on using the same sources to avoid bugs/issues that > are caused by non-standard source code. Then certainly this must be true as well > for the included UM headers. You have to rule out differences between the 8.1 > UM headers and the 10.0.10240.0 UM headers. It does not really make any > difference for me which of the 2 you choose as long as the choice is clear and > documented. > > https://wiki.php.net/internals/windows/stepbystepbuild just says 'Install Visual > Studio 2015' and open the 'Developer Command Prompt for VS2015'. On my > laptop (which still has VS2015 RC) that means using the Windows 8.1 UM kit for > things like network connectivity. Om my development machine VS 2015 Pro > includes the UM kit from 10.0.10240.0. > You do not want such differences. > > Unless you had access to the 10.0.10240.0 UM headers before the release, the > VC14 dependencies aren't compiled with them. People that start building PHP7 > now (after July 29) using the instructions on the wiki page will have a different > building environment then what was (and is?) used for the windows.php.net > builds. > -- Your information is not correct. A separate SDK is only needed when an earlier VS version is used. And SDK 10 needed when targeting specific Win10 features. PHP7 only requires UCRT which is present on Win10/Server 2016 by default or available as a VC++ redistributable on lower. Regarding headers - within same VS version ABI/API compatibility is usually kept. This is the very common thing that should be reliable. For the system headers and libraries the system is in charge to keep them compatible within the versions range. Requiring them to be the same makes no sense. The sentence about the sources is related to the dependency libraries we build and use, the CRT/SDK version is predefined. Regards anatol