internals:windows:stepbystepbuild_sdk_2
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
internals:windows:stepbystepbuild_sdk_2 [2018/10/18 09:47] – Update link to php-sdk-binary-tools repository petk | internals:windows:stepbystepbuild_sdk_2 [2024/11/19 14:27] (current) – mention php-windows-builder for GH action builds cmb | ||
---|---|---|---|
Line 17: | Line 17: | ||
* Visual C++ 14.0 (Visual Studio 2015) for **PHP 7.0** or **PHP 7.1**. | * Visual C++ 14.0 (Visual Studio 2015) for **PHP 7.0** or **PHP 7.1**. | ||
- | * Visual C++ 15.0 (Visual Studio 2017) for **PHP 7.2** | + | * Visual C++ 15.0 (Visual Studio 2017) for **PHP 7.2**, **PHP 7.3** or **PHP 7.4**. |
+ | * Visual C++ 16.0 (Visual Studio 2019) for **PHP 8.0**, **PHP 8.1**, **PHP 8.2** or **PHP 8.3**. | ||
+ | * Visual C++ 17.0 (Visual Studio 2022) for **PHP 8.4**. | ||
+ | |||
+ | Always keep your installed Visual C++ up to date. Otherwise build errors may occur due to dependencies built with newer versions. | ||
+ | |||
+ | Support for a certain Visual Studio version means only support for its default platform toolset; building PHP with a non-default platform toolset (such as 14.16 with Visual Studio 2019) may work, but is not recommended. | ||
+ | |||
+ | In filenames (and the '' | ||
==== Setup ==== | ==== Setup ==== | ||
- | * Fetch the latest stable SDK tag from https:// | + | * Fetch the latest stable SDK tag or HEAD from https:// |
* The new PHP SDK is required, when building PHP 7.2+ | * The new PHP SDK is required, when building PHP 7.2+ | ||
* Read the PHP SDK specific notes on the Github repository page | * Read the PHP SDK specific notes on the Github repository page | ||
Line 28: | Line 36: | ||
* If compiling **PHP 7.2+**: | * If compiling **PHP 7.2+**: | ||
* Install Visual Studio 2017 | * Install Visual Studio 2017 | ||
+ | * If compiling **master**: | ||
+ | * Install Visual Studio 2019 | ||
* Optional tools | * Optional tools | ||
Line 42: | Line 52: | ||
* PHP_SDK_PHP_CMD - integrated PHP binary wrapper script | * PHP_SDK_PHP_CMD - integrated PHP binary wrapper script | ||
* PHP_SDK_ROOT_PATH - the path to the PHP SDK root directory | * PHP_SDK_ROOT_PATH - the path to the PHP SDK root directory | ||
- | * PHP_SDK_VC | + | * PHP_SDK_VS |
* several other less relevant vars are available, that can be viewed by the '' | * several other less relevant vars are available, that can be viewed by the '' | ||
Line 59: | Line 69: | ||
* clone the [[http:// | * clone the [[http:// | ||
- Get the binary tools: | - Get the binary tools: | ||
- | * available from [[https:// | + | * available from [[https:// |
* either fetch a tag as zip, or clone the git repository and checkout the tag | * either fetch a tag as zip, or clone the git repository and checkout the tag | ||
- Get the libraries on which PHP depends: | - Get the libraries on which PHP depends: | ||
Line 77: | Line 87: | ||
- Run the '' | - Run the '' | ||
- The '' | - The '' | ||
- | - Extract the PHP source code to '' | + | - Extract the PHP source code to '' |
- | * '' | + | * '' |
* '' | * '' | ||
* For example: '' | * For example: '' | ||
Line 96: | Line 106: | ||
- To build PHP, run: <code bash> | - To build PHP, run: <code bash> | ||
- If you want the resulting PHP builds and extensions to be zipped, after ' | - If you want the resulting PHP builds and extensions to be zipped, after ' | ||
- | - The compiled PHP is now under " | + | - The compiled PHP is now under " |
- | * If you compiled with " | + | * If you compiled with " |
==== Recompile after you have done some changes ==== | ==== Recompile after you have done some changes ==== | ||
Line 128: | Line 138: | ||
At this point, your compiled extension will be located in the release directory. | At this point, your compiled extension will be located in the release directory. | ||
+ | |||
+ | ==== Building PECL extensions with phpize ==== | ||
+ | |||
+ | Alternatively to the " | ||
+ | |||
+ | - Download and unpack the development package which corresponds to your pre-built PHP version and variant from https:// | ||
+ | - Download and unpack the source of the PECL extension | ||
+ | - Invoke the starter script to automatically setup the environment for the desired build config, e.g. '' | ||
+ | - Add the development package folder and the PHP folder to the '' | ||
+ | - Enter the source folder of the PECL extension | ||
+ | - Run '' | ||
+ | - Run '' | ||
+ | * the most important option is the one which enables the extension to be built (e.g. '' | ||
+ | * another important options is '' | ||
+ | * if the extension depends on C libraries, you need to download these and put them either in the '' | ||
+ | * there may be further interesting configuration options, e.g. those which allows to configure details of the extension to be built | ||
+ | - Run '' | ||
+ | - Run '' | ||
+ | - After successful compilation, | ||
+ | - If the extension has a PHPT test suite, run '' | ||
+ | |||
+ | If you want to build your extension via Github Actions, consider to use https:// | ||
+ | |||
+ | ==== Release directories ==== | ||
+ | |||
+ | When you have successfully compiled PHP, the release directory can be one of multiple, depending on the build configuration: | ||
+ | |||
+ | - `Release`: Release NTS build | ||
+ | - `Release_TS`: | ||
+ | - `Debug`: Debug NTS build | ||
+ | - `Debug_TS`: Debug ZTS build | ||
+ | |||
+ | If you are compiling using a 64-bit compiler, then these directories will be located in a directory called `x64`. | ||
===== Pitfalls ===== | ===== Pitfalls ===== | ||
- For possible PHP SDK issues, please consult the PHP SDK readme | - For possible PHP SDK issues, please consult the PHP SDK readme | ||
+ | - As of PHP 7.3 the switch --enable-native-intrinsics is available. The resulting binary will then require a processor with the corresponding feature set available. For example, if you set --enable-native-intrinsics=avx2, | ||
+ | - In some circumstances, | ||
internals/windows/stepbystepbuild_sdk_2.1539856063.txt.gz · Last modified: 2018/10/18 09:47 by petk