Skip to content

Commit

Permalink
Support AST extension
Browse files Browse the repository at this point in the history
  • Loading branch information
Halleck45 committed Dec 26, 2024
1 parent 4b16631 commit 287e278
Show file tree
Hide file tree
Showing 9 changed files with 107 additions and 1 deletion.
4 changes: 4 additions & 0 deletions config/ext.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
"type": "external",
"source": "apcu"
},
"ast": {
"type": "external",
"source": "ast"
},
"bcmath": {
"type": "builtin"
},
Expand Down
14 changes: 14 additions & 0 deletions config/lib.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
{
"ast": {
"source": "ast",
"static-libs-unix": [
"ast.la",
"ast.lo"
],
"static-libs-windows": [
],
"headers": [
"ast_arginfo.h",
"ast_str_defs.h",
"php_ast.h"
]
},
"brotli": {
"source": "brotli",
"static-libs-unix": [
Expand Down
10 changes: 10 additions & 0 deletions config/source.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,16 @@
"path": "LICENSE"
}
},
"ast": {
"type": "url",
"url": "https://pecl.php.net/get/ast",
"path": "php-src/ext/ast",
"filename": "ast.tgz",
"license": {
"type": "file",
"path": "LICENSE"
}
},
"brotli": {
"type": "ghtar",
"repo": "google/brotli",
Expand Down
17 changes: 17 additions & 0 deletions src/SPC/builder/extension/ast.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php

declare(strict_types=1);

namespace SPC\builder\extension;

use SPC\builder\Extension;
use SPC\util\CustomExt;

#[CustomExt('ast')]
class ast extends Extension
{
public function getUnixConfigureArg(): string
{
return '--with-ast';
}
}
12 changes: 12 additions & 0 deletions src/SPC/builder/linux/library/ast.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

declare(strict_types=1);

namespace SPC\builder\linux\library;

class ast extends LinuxLibraryBase
{
use \SPC\builder\unix\library\ast;

public const NAME = 'ast';
}
12 changes: 12 additions & 0 deletions src/SPC/builder/macos/library/ast.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

declare(strict_types=1);

namespace SPC\builder\macos\library;

class ast extends MacOSLibraryBase
{
use \SPC\builder\unix\library\ast;

public const NAME = 'ast';
}
32 changes: 32 additions & 0 deletions src/SPC/builder/unix/library/ast.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

declare(strict_types=1);

namespace SPC\builder\unix\library;

use SPC\exception\FileSystemException;
use SPC\exception\RuntimeException;
use SPC\exception\WrongUsageException;

trait ast
{
/**
* @throws FileSystemException
* @throws RuntimeException
* @throws WrongUsageException
*/
protected function build(): void
{
shell()->cd($this->source_dir)
->setEnv(['CFLAGS' => $this->getLibExtraCFlags(), 'LDFLAGS' => $this->getLibExtraLdFlags(), 'LIBS' => $this->getLibExtraLibs()])
->exec('phpize')
->execWithEnv(
'./configure '
)
->execWithEnv('make clean')
->execWithEnv('make')
->execWithEnv('make install DESTDIR=' . BUILD_ROOT_PATH);

$this->cleanLaFiles();
}
}
5 changes: 5 additions & 0 deletions src/globals/ext-tests/ast.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

declare(strict_types=1);

assert(function_exists('ast\parse_code'));
2 changes: 1 addition & 1 deletion src/globals/test-extensions.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ function _getCombination(string $type = 'common'): string
'common' => 'bcmath,bz2,calendar,ctype,curl,dom,exif,fileinfo,filter,ftp,gd,gmp,iconv,xml,mbstring,mbregex,' .
'mysqlnd,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,redis,session,simplexml,soap,sockets,' .
'sqlite3,tokenizer,xmlwriter,xmlreader,zlib,zip',
'bulk' => 'apcu,bcmath,bz2,calendar,ctype,curl,dba,dom,event,exif,fileinfo,filter,ftp,gd,gmp,iconv,imagick,imap,' .
'bulk' => 'apcu,ast,bcmath,bz2,calendar,ctype,curl,dba,dom,event,exif,fileinfo,filter,ftp,gd,gmp,iconv,imagick,imap,' .
'intl,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pcntl,pdo,pdo_mysql,pdo_pgsql,pdo_sqlite,pgsql,phar,' .
'posix,protobuf,readline,redis,session,shmop,simplexml,soap,sockets,sodium,sqlite3,swoole,sysvmsg,sysvsem,' .
'sysvshm,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,zlib',
Expand Down

0 comments on commit 287e278

Please sign in to comment.