axmol/tools/ci/genbindings.ps1

113 lines
3.4 KiB
PowerShell
Raw Normal View History

param(
$stage = 3
)
2023-09-26 10:32:53 +08:00
$myRoot = $PSScriptRoot
$AX_ROOT = (Resolve-Path $myRoot/../..).Path
$succeed = $true
if (($stage -band 1)) {
# ensure prebuilt lib downloaded
Push-Location $AX_ROOT
2024-04-24 01:48:22 +08:00
./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
2023-09-26 10:32:53 +08:00
. $setup_script -p android
echo "after setup py_ver: $(&$python_cmd -V), PATH=$env:PATH"
2023-09-26 10:46:22 +08:00
echo "$ndk_root=$ndk_root"
2023-09-26 10:32:53 +08:00
## download win64 libclang.dll
Release 2.1.5 (#2076) * Fix unexpected libpng used * Fix string format incorrect for tests * Fix #1751, use coroutine control AutoTest flow * Update CHANGELOG.md * Added OpenType font (.otf) to the noCompress list. (#2077) * Update 1k & copyright notice in some sources * Move doctest to axmol 3rdparty * Fix ci * Update 1kdist to v90 * Update 1kiss.ps1 * DrawNodeV2 0.95.1 (#2079) * Rename remaining legacy engine related spells and improve code style * Update 3rdparty README.md * Fix checkReallySupportsASTC does not work on ios device reported by @BIGCATDOG in https://github.com/axmolengine/axmol/issues/2078 * Fix ci * FastRNG: add missing include for AXASSERT (#2081) * Delete unused files * Improve FileUtils - Rename FileUtils::createDirectory to FileUtils::createDirectories - Use splitpath_cb to optimize FileUtils::createDirectories - Rename FileUtils::getFileShortName to FileUtils::getPathBaseName - Rename FileUtils::getFileExtension to FileUtils::getPathExtension - Add FileUtils::getPathDirName - Add FileUtils::getPathBaseNameNoExtension - Mark all renamed FileUtils stubs old name deprecated - Mark all FileUtils offthread APIs deprecated * Update box2d to v2.4.2 * Disable /sdl checks explicitly for winuwp For axmol deprecated policy, we need disable /sdl checks explicitly to avoid compiler traits invoking deprecated functions as error * Update cppwinrt to 2.0.240405.15 * Update simdjson to 3.10.0 * Fix box2d testbed compile error * Improve file path to url * Fix FileUtils::createDirectories unix logic * axmol-cmdline: remove arch suffix for host build output directory * Update CHANGELOG.md * Update lua bindings --------- Co-authored-by: Dani Alias <danielgutierrezalias@gmail.com> Co-authored-by: aismann <icesoft@freenet.de> Co-authored-by: smilediver <smilediver@outlook.com>
2024-08-11 21:11:35 +08:00
$lib_name = @('libclang.dll', 'libclang.so', 'libclang.dylib')[$HOST_OS]
$lib_path = Join-Path $AX_ROOT "tools/bindings-generator/libclang/$lib_name"
if (!(Test-Path $lib_path -PathType Leaf)) {
2024-05-22 21:42:04 +08:00
setup_7z
$llvm_ver = '15.0.7'
2024-05-22 21:42:04 +08:00
$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
Release 2.1.5 (#2076) * Fix unexpected libpng used * Fix string format incorrect for tests * Fix #1751, use coroutine control AutoTest flow * Update CHANGELOG.md * Added OpenType font (.otf) to the noCompress list. (#2077) * Update 1k & copyright notice in some sources * Move doctest to axmol 3rdparty * Fix ci * Update 1kdist to v90 * Update 1kiss.ps1 * DrawNodeV2 0.95.1 (#2079) * Rename remaining legacy engine related spells and improve code style * Update 3rdparty README.md * Fix checkReallySupportsASTC does not work on ios device reported by @BIGCATDOG in https://github.com/axmolengine/axmol/issues/2078 * Fix ci * FastRNG: add missing include for AXASSERT (#2081) * Delete unused files * Improve FileUtils - Rename FileUtils::createDirectory to FileUtils::createDirectories - Use splitpath_cb to optimize FileUtils::createDirectories - Rename FileUtils::getFileShortName to FileUtils::getPathBaseName - Rename FileUtils::getFileExtension to FileUtils::getPathExtension - Add FileUtils::getPathDirName - Add FileUtils::getPathBaseNameNoExtension - Mark all renamed FileUtils stubs old name deprecated - Mark all FileUtils offthread APIs deprecated * Update box2d to v2.4.2 * Disable /sdl checks explicitly for winuwp For axmol deprecated policy, we need disable /sdl checks explicitly to avoid compiler traits invoking deprecated functions as error * Update cppwinrt to 2.0.240405.15 * Update simdjson to 3.10.0 * Fix box2d testbed compile error * Improve file path to url * Fix FileUtils::createDirectories unix logic * axmol-cmdline: remove arch suffix for host build output directory * Update CHANGELOG.md * Update lua bindings --------- Co-authored-by: Dani Alias <danielgutierrezalias@gmail.com> Co-authored-by: aismann <icesoft@freenet.de> Co-authored-by: smilediver <smilediver@outlook.com>
2024-08-11 21:11:35 +08:00
$suffix = @('win32/x64/libclang.dll', 'linux/libclang.so', 'mac/libclang.dylib')[$HOST_OS]
Copy-Item "$prefix/llvm-$llvm_ver/lib/$suffix" -Destination $lib_path
}
2023-06-12 10:26:08 +08:00
## 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")
}
2023-02-14 23:30:44 +08:00
## run genbindings.py
Push-Location $AX_ROOT/tools/tolua
2022-01-01 21:56:55 +08:00
&$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) {
2024-02-02 00:15:06 +08:00
throw "Generating lua bindings fails"
}