Intructions update (#89)

- add .gitattributes to cut down the composer package size.
- Update README for instruction to install from package managers and build from source for windows.
This commit is contained in:
Dengke Tang
2023-03-01 16:18:25 -08:00
committed by GitHub
parent 442f3850bd
commit 5334110e8b
3 changed files with 74 additions and 29 deletions
+21
View File
@@ -0,0 +1,21 @@
.github/ export-ignore
crt/ export-ignore
ext/ export-ignore
tests/ export-ignore
dev-scripts/ export-ignore
.clang-format export-ignore
.clang-format-ignore export-ignore
.gitattributes export-ignore
.gitignore export-ignore
.gitmodules export-ignore
CONTRIBUTING.md export-ignore
Makefile.frag export-ignore
Makefile.frag.w32 export-ignore
builder.json export-ignore
config.m4 export-ignore
config.w32 export-ignore
format-check.sh export-ignore
gen_api.php export-ignore
gen_stub.php export-ignore
php-win.ini export-ignore
php.ini export-ignore
+49 -28
View File
@@ -3,52 +3,73 @@
## Requirements ## Requirements
* PHP 5.5+ on UNIX platforms, 7.2+ on Windows * PHP 5.5+ on UNIX platforms, 7.2+ on Windows
* CMake 3.x * CMake 3.x
* GCC 4.4+, clang 3.8+ on UNIX, Visual Studio 2017 build tools on Windows * GCC 4.4+, clang 3.8+ on UNIX, Visual Studio build tools on Windows
* Tests require [Composer](https://getcomposer.org) * Tests require [Composer](https://getcomposer.org)
## Building on UNIX ## Installing with Composer and PECL
The package has two different package published to [composer](https://packagist.org/packages/aws/aws-crt-php) and [PECL](https://pecl.php.net/package/awscrt).
On UNIX, you can get the package from package manager or build from source:
```
pecl install awscrt
composer require aws/aws-crt-php
```
On Windows, you need to build from source as instruction written below for the native extension `php_awscrt.dll`. And, follow https://www.php.net/manual/en/install.pecl.windows.php#install.pecl.windows.loading to load extension. After that:
```
composer require aws/aws-crt-php
```
## Building from Github source
```sh ```sh
$ git clone --recursive https://github.com/awslabs/aws-crt-php.git $ git clone --recursive https://github.com/awslabs/aws-crt-php.git
$ cd aws-crt-php $ cd aws-crt-php
$ phpize $ phpize
$ ./configure $ ./configure
$ make && make test $ make
$ ./dev-scripts/run_tests.sh
``` ```
## Building on Windows ## Building on Windows
* First, ensure that you are able to build PHP on windows via the PHP SDK (this example assumes installation of the SDK to C:\php-sdk and that you've checked out the PHP source to php-src within the build directory). The following resources are helpful to get PHP building on windows:
* https://github.com/microsoft/php-sdk-binary-tools
* https://medium.com/@erinus/how-to-build-php-on-windows-a7ad0a87862a
* https://medium.com/@erinus/how-to-build-php-extension-on-windows-d1667290f809
```bat ### Requirements for Windows
""" From VS2017 Command Prompt
> C:\php-sdk\phpsdk-vc15-x64.bat * Ensure you have the [windows PHP SDK](https://github.com/microsoft/php-sdk-binary-tools) (this example assumes installation of the SDK to C:\php-sdk and that you've checked out the PHP source to php-src within the build directory) and it works well on your machine.
* Ensure you have "Development package (SDK to develop PHP extensions)" and PHP available from your system path. You can download them from https://windows.php.net/download/. You can check if they are available by running `phpize -v` and `php -v`
### Instructions
From Command Prompt (not powershell). The instruction is based on Visual Studio 2019 on 64bit Windows.
``` bat
> git clone --recursive https://github.com/awslabs/aws-crt-php.git
> git clone https://github.com/microsoft/php-sdk-binary-tools.git C:\php-sdk
> C:\php-sdk\phpsdk-vs16-x64.bat
C:\php-sdk\ C:\php-sdk\
$ phpsdk_buildtree php-<version> $ cd <your-path-to-aws-crt-php>
C:\php-sdk\php-<version>\vc15\x64\ <your-path-to-aws-crt-php>\
$ git clone https://github.com/php/php-src.git && cd php-src $ phpize
""" This only has to be done once, the first time you set this all up # --with-prefix only required when your php runtime in system path is different than the runtime you wish to use.
C:\php-sdk\php-<version>\vc15\x64\php-src <your-path-to-aws-crt-php>\
$ phpsdk_deps --update --branch <php-major.minor-version> $ configure --enable-awscrt=shared --with-prefix=<your-path-to-php-prefix>
C:\php-sdk\php-<version>\vc15\x64\php-src <your-path-to-aws-crt-php>\
$ git clone --recursive https://github.com/awslabs/aws-crt-php.git ..\pecl\awscrt
C:\php-sdk\php-<version>\vc15\x64\php-src
$ buildconf
C:\php-sdk\php-<version>\vc15\x64\php-src
$ configure --enable-cli --with-openssl --enable-awscrt=shared
C:\php-sdk\php-<version>\vc15\x64\php-src
$ nmake $ nmake
C:\php-sdk\php-<version>\vc15\x64\php-src <your-path-to-aws-crt-php>\
$ nmake test-awscrt $ nmake generate-php-ini
# check .\php-win.ini, it now has the full path to php_awscrt.dll that you can manually load to your php runtime, or you can run the following command to run tests and load the required native extension for awscrt.
<your-path-to-aws-crt-php>\
$ .\dev-scripts\run_tests.bat <your-path-to-php-binary>
``` ```
Note: for VS2017, Cmake will default to build for Win32, refer to [here](https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2015%202017.html). If you are building for x64 php, you can set environment variable as follow to let cmake pick x64 compiler. Note: for VS2017, Cmake will default to build for Win32, refer to [here](https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2015%202017.html). If you are building for x64 php, you can set environment variable as follow to let cmake pick x64 compiler.
+4 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "aws/aws-crt-php", "name": "aws/aws-crt-php",
"homepage": "http://aws.amazon.com/sdkforphp", "homepage": "https://github.com/awslabs/aws-crt-php",
"description": "AWS Common Runtime for PHP", "description": "AWS Common Runtime for PHP",
"keywords": ["aws","amazon","sdk","crt"], "keywords": ["aws","amazon","sdk","crt"],
"type": "library", "type": "library",
@@ -25,6 +25,9 @@
"src/" "src/"
] ]
}, },
"suggest": {
"ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality."
},
"scripts": { "scripts": {
"test": "./dev-scripts/run_tests", "test": "./dev-scripts/run_tests",
"test-extension": "@test", "test-extension": "@test",