mirror of https://github.com/axmolengine/axmol.git
113 lines
3.4 KiB
PowerShell
113 lines
3.4 KiB
PowerShell
param(
|
|
$stage = 3
|
|
)
|
|
$myRoot = $PSScriptRoot
|
|
|
|
$AX_ROOT = (Resolve-Path $myRoot/../..).Path
|
|
|
|
$succeed = $true
|
|
if (($stage -band 1)) {
|
|
# ensure prebuilt lib downloaded
|
|
Push-Location $AX_ROOT
|
|
./setup.ps1
|
|
axmol -c
|
|
Pop-Location
|
|
|
|
$pip_cmd = @('pip3', 'pip')[$IsWin]
|
|
$python_cmd = @('python3', 'python')[$IsWin]
|
|
|
|
&$pip_cmd install PyYAML Cheetah3
|
|
## setup ndk
|
|
$setup_script = (Resolve-Path $AX_ROOT/setup.ps1).Path
|
|
|
|
. $setup_script -p android
|
|
echo "after setup py_ver: $(&$python_cmd -V), PATH=$env:PATH"
|
|
|
|
echo "$ndk_root=$ndk_root"
|
|
|
|
## download win64 libclang.dll
|
|
$lib_name = @('libclang.dll', 'libclang.dylib', 'libclang.so')[$HOST_OS]
|
|
$lib_path = Join-Path $AX_ROOT "tools/bindings-generator/libclang/$lib_name"
|
|
if (!(Test-Path $lib_path -PathType Leaf)) {
|
|
setup_7z
|
|
$llvm_ver = '15.0.7'
|
|
$llvm_pkg = "llvm-$llvm_ver.7z"
|
|
|
|
$prefix = Join-Path $AX_ROOT "cache/devtools"
|
|
$llvm_url = devtool_url $llvm_pkg
|
|
$llvm_out = Join-Path $prefix $llvm_pkg
|
|
|
|
$1k.mkdirs($prefix)
|
|
download_and_expand -url $llvm_url -out $llvm_out -dest $prefix
|
|
$suffix = @('win32/x64/libclang.dll', 'mac/libclang.dylib', 'linux/libclang.so')[$HOST_OS]
|
|
Copy-Item "$prefix/llvm-$llvm_ver/lib/$suffix" -Destination $lib_path
|
|
}
|
|
|
|
## ensure $env:AX_ROOT/core/axmolver.h exists
|
|
echo "AX_ROOT=$AX_ROOT"
|
|
if (!(Test-Path "$AX_ROOT/core/axmolver.h" -PathType Leaf)) {
|
|
$content = [System.IO.File]::ReadAllText("$AX_ROOT/core/axmolver.h.in")
|
|
$content = $content.Replace('@AX_GIT_PRESENT@', '0')
|
|
[System.IO.File]::WriteAllText("$AX_ROOT/core/axmolver.h")
|
|
}
|
|
|
|
## run genbindings.py
|
|
Push-Location $AX_ROOT/tools/tolua
|
|
|
|
&$python_cmd genbindings.py --ndk_root "$ndk_root"
|
|
$succeed = $?
|
|
|
|
Pop-Location
|
|
}
|
|
|
|
# strip empty lines
|
|
if ($stage -band 2) {
|
|
echo 'Stripping header empty lines ...'
|
|
$UTF8Encoding = [System.Text.Encoding]::UTF8
|
|
$eol = $UTF8Encoding.GetBytes("`n")
|
|
$autogen_dir = Join-Path $AX_ROOT 'extensions/scripting/lua-bindings/auto/*.hpp'
|
|
$header_files = Get-ChildItem $autogen_dir
|
|
|
|
foreach ($file in $header_files) {
|
|
$file_path = "$file"
|
|
$code_lines = Get-Content $file_path
|
|
$fs = [System.IO.File]::Open($file_path, [System.IO.FileMode]::Truncate)
|
|
$empty_lines = 0
|
|
$write_lines = 0
|
|
foreach ($line in $code_lines) {
|
|
if ($line) {
|
|
++$write_lines
|
|
$buf = $UTF8Encoding.GetBytes($line)
|
|
$fs.Write($buf, 0, $buf.Length)
|
|
$fs.Write($eol, 0, $eol.Length)
|
|
}
|
|
else {
|
|
++$empty_lines
|
|
}
|
|
}
|
|
|
|
# $fs.Write($eol, 0, $eol.Length)
|
|
$fs.Dispose()
|
|
|
|
echo "Removed $empty_lines empty lines for file $file_path, valid lines: $write_lines"
|
|
}
|
|
}
|
|
|
|
# check modified files
|
|
Push-Location $AX_ROOT
|
|
if ($succeed -and $env:GITHUB_ACTIONS -eq 'true') {
|
|
$git_status = "$(git status)"
|
|
$no_changes = $git_status.IndexOf('modified:') -eq -1 # -and $git_status.IndexOf('deleted:') -eq -1 -and $git_status.IndexOf('Untracked', [StringComparison]::OrdinalIgnoreCase) -eq -1
|
|
if ($no_changes) {
|
|
echo "BINDING_NO_CHANGES=true" >> ${env:GITHUB_ENV}
|
|
}
|
|
else {
|
|
echo "LAST_COMMIT_HASH=$(git rev-parse --short=7 HEAD)" >> ${env:GITHUB_ENV}
|
|
}
|
|
}
|
|
Pop-Location
|
|
|
|
if (!$succeed) {
|
|
throw "Generating lua bindings fails"
|
|
}
|