Skip to content

Commit 108c57a

Browse files
committed
Read argument to build from config.w32
1 parent 851c465 commit 108c57a

File tree

6 files changed

+69
-1
lines changed

6 files changed

+69
-1
lines changed

.github/workflows/pecl.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ jobs:
8282
build-directory: C:\build
8383
env:
8484
artifact-naming-scheme: pecl
85+
auto-detect-args: true
8586

8687
artifacts:
8788
runs-on: ubuntu-latest

extension/BuildPhpExtension/BuildPhpExtension.psd1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
'Add-Path',
7777
'Add-PhpDependencies',
7878
'Add-StepLog',
79+
'Get-ArgumentFromConfig',
7980
'Get-BuildDirectory',
8081
'Get-Extension',
8182
'Get-ExtensionConfig',

extension/BuildPhpExtension/private/Add-Extension.ps1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,12 @@ Function Add-Extension {
3535
}
3636
}
3737
}
38+
$configW32Content = [string](Get-Content -Path "config.w32")
39+
$argument = Get-ArgumentFromConfig $Extension $configW32Content
3840
$bat_content = @()
3941
$bat_content += ""
4042
$bat_content += "call phpize 2>&1"
41-
$bat_content += "call configure --with-php-build=`"..\deps`" $($Config.options) --with-mp=`"disable`" --with-prefix=$Prefix 2>&1"
43+
$bat_content += "call configure --with-php-build=`"..\deps`" $argument --with-mp=`"disable`" --with-prefix=$Prefix 2>&1"
4244
$bat_content += "nmake /nologo 2>&1"
4345
$bat_content += "exit %errorlevel%"
4446
Set-Content -Encoding "ASCII" -Path $Extension-task.bat -Value $bat_content
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
Function Get-ArgumentFromConfig {
2+
<#
3+
.SYNOPSIS
4+
Get the Libraries from the config.w32 file
5+
.PARAMETER Extension
6+
Extension Name
7+
.PARAMETER ConfigW32Content
8+
config.w32 content
9+
#>
10+
[OutputType()]
11+
param (
12+
[Parameter(Mandatory = $true, Position=0, HelpMessage='Extension Name')]
13+
[string] $Extension,
14+
[Parameter(Mandatory = $true, Position=1, HelpMessage='config.w32 content')]
15+
[string] $ConfigW32Content
16+
)
17+
begin {
18+
}
19+
process {
20+
$buildArgPrefix = $null;
21+
$dashedExtension = $Extension -replace "_", "-"
22+
if($configW32Content.contains("ARG_ENABLE(`"$dashedExtension`"") -or $configW32Content.contains("ARG_ENABLE('$dashedExtension'")) {
23+
$buildArgPrefix = "enable"
24+
} elseif($configW32Content.contains("ARG_WITH(`"$dashedExtension`"") -or $configW32Content.contains("ARG_WITH('$dashedExtension'")) {
25+
$buildArgPrefix = "with"
26+
} elseif($configW32Content.contains("ARG_ENABLE(`"$extension`"") -or $configW32Content.contains("ARG_ENABLE('$extension'")) {
27+
$buildArgPrefix = "enable"
28+
$dashedExtension = $Extension
29+
} elseif($configW32Content.contains("ARG_WITH(`"$extension`"") -or $configW32Content.contains("ARG_WITH('$extension'")) {
30+
$buildArgPrefix = "with"
31+
$dashedExtension = $Extension
32+
}
33+
34+
$argValue='';
35+
if($ConfigW32Content.Contains("PHP_$($Extension.ToUpper())_SHARED")) {
36+
$argValue = "shared"
37+
}
38+
39+
$arg=''
40+
if($null -ne $buildArgPrefix) {
41+
$arg="--$buildArgPrefix-$dashedExtension"
42+
}
43+
if($argValue -ne '') {
44+
$arg="$arg=$argValue"
45+
}
46+
return $arg
47+
}
48+
end {
49+
}
50+
}

extension/BuildPhpExtension/private/Get-ExtensionConfig.ps1

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,19 @@ Function Get-ExtensionConfig {
182182
$config.build_tools += "python"
183183
}
184184

185+
if($env:AUTO_DETECT_ARGS -eq 'true') {
186+
$buildArgPrefix = $null;
187+
$dashedExtension = $Extension -replace "_", "-"
188+
if($configW32Content.contains("ARG_ENABLE(`"$dashedExtension`"")) {
189+
$buildArgPrefix = "enable"
190+
} elseif($configW32Content.contains("ARG_WITH(`"$dashedExtension`"")) {
191+
$buildArgPrefix = "with"
192+
}
193+
if(-not($config.options.contains("--$buildArgPrefix-$dashedExtension"))) {
194+
$config.options += " --$buildArgPrefix-$dashedExtension"
195+
}
196+
}
197+
185198
$config.build_directory = if ($Arch -eq "x64") { "x64\" } else { "" }
186199
$config.build_directory += "Release"
187200
if ($Ts -eq "ts") { $config.build_directory += "_TS" }

extension/action.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ runs:
6666
TEST_OPCACHE_MODE: ${{inputs.test-opcache-mode}}
6767
BUILD_DIRECTORY: ${{inputs.build-directory}}
6868
AUTH_TOKEN: ${{inputs.auth-token}}
69+
AUTO_DETECT_ARGS: ${{env.auto-detect-args}}
6970
run: |
7071
Import-Module ${{ github.action_path }}\BuildPhpExtension -Force
7172
Invoke-PhpBuildExtension -ExtensionUrl "${{inputs.extension-url}}" `

0 commit comments

Comments
 (0)