@@ -89,38 +89,10 @@ jobs:
8989 uses : actions/checkout@v4
9090
9191 - name : Configure Android NDK
92+ uses : Devolutions/actions-public/cargo-android-ndk@v1
9293 if : matrix.os == 'android'
93- shell : pwsh
94- run : |
95- $CargoConfigFile = "~/.cargo/config.toml"
96- $AndroidToolchain="${Env:ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64"
97-
98- Get-ChildItem -Path $AndroidToolchain "libunwind.a" -Recurse | ForEach-Object {
99- $libunwind = $_.FullName
100- $libgcc = Join-Path $_.DirectoryName "libgcc.a"
101- if (-Not (Test-Path $libgcc)) {
102- Write-Host $libgcc
103- Copy-Item $libunwind $libgcc
104- }
105- }
106-
107- Get-ChildItem -Path "$AndroidToolchain/bin/"
108-
109- echo "[target.i686-linux-android]" >> $CargoConfigFile
110- echo "linker=`"$AndroidToolchain/bin/i686-linux-android21-clang`"" >> $CargoConfigFile
111- echo "rustflags = [`"-C`", `"link-args=-z max-page-size=16384`"]" >> $CargoConfigFile
112-
113- echo "[target.x86_64-linux-android]" >> $CargoConfigFile
114- echo "linker=`"$AndroidToolchain/bin/x86_64-linux-android21-clang`"" >> $CargoConfigFile
115- echo "rustflags = [`"-C`", `"link-args=-z max-page-size=16384`"]" >> $CargoConfigFile
116-
117- echo "[target.armv7-linux-androideabi]" >> $CargoConfigFile
118- echo "linker=`"$AndroidToolchain/bin/armv7a-linux-androideabi21-clang`"" >> $CargoConfigFile
119- echo "rustflags = [`"-C`", `"link-args=-z max-page-size=16384`"]" >> $CargoConfigFile
120-
121- echo "[target.aarch64-linux-android]" >> $CargoConfigFile
122- echo "linker=`"$AndroidToolchain/bin/aarch64-linux-android21-clang`"" >> $CargoConfigFile
123- echo "rustflags = [`"-C`", `"link-args=-z max-page-size=16384`"]" >> $CargoConfigFile
94+ with :
95+ android_api_level : " 21"
12496
12597 - name : Setup build environment
12698 shell : pwsh
@@ -131,38 +103,21 @@ jobs:
131103 echo "IPHONEOS_DEPLOYMENT_TARGET=12.1" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
132104 }
133105
134- - name : Install clang+llvm
106+ - name : Setup LLVM
107+ uses : Devolutions/actions-public/setup-llvm@v1
135108 if : matrix.os == 'linux'
136- shell : pwsh
137- run : |
138- $ClangLlvmVersion='18.1.8'
139- $ClangLlvmArch='x86_64'
140- $ClangLlvmPlatform=@{'win'='windows';'osx'='macos';'linux'='ubuntu-22.04'}['${{matrix.os}}']
141- $ClangLlvmBaseUrl="https://github.com/awakecoding/llvm-prebuilt/releases/download/v2025.2.0"
142- $ClangLlvmName="clang+llvm-${ClangLlvmVersion}-${ClangLlvmArch}-${ClangLlvmPlatform}"
143- wget -q "${ClangLlvmBaseUrl}/${ClangLlvmName}.tar.xz"
144- $LLVM_PREFIX="/opt/llvm"
145- tar -xf "${ClangLlvmName}.tar.xz" -C /tmp
146- sudo mv "/tmp/${ClangLlvmName}" $LLVM_PREFIX
147- $LLVM_BIN_PATH="$LLVM_PREFIX/bin"
148- echo "PATH=$LLVM_BIN_PATH$([IO.Path]::PathSeparator)$Env:PATH" >> $Env:GITHUB_ENV
109+ with :
110+ version : " 18.1.8"
149111
150- - name : Configure CBake
112+ - name : Setup CBake
113+ uses : Devolutions/actions-public/setup-cbake@v1
151114 if : matrix.os == 'linux'
152- shell : pwsh
153- run : |
154- $CBakeVersion = "v2025.02.18.0"
155- $CBakeRepoUrl = "https://github.com/Devolutions/CBake"
156- $CBakeDownloadUrl = "$CBakeRepoUrl/releases/download/$CBakeVersion"
157- git clone -b $CBakeVersion "https://github.com/Devolutions/CBake" cbake
158- @('ubuntu-20.04-amd64-sysroot.tar.xz', 'ubuntu-20.04-arm64-sysroot.tar.xz') | % {
159- curl -L --output "cbake/sysroots/$_" "$CBakeDownloadUrl/$_"
160- tar -C "cbake/sysroots" -xf "cbake/sysroots/$_"
161- Remove-Item "cbake/sysroots/$_" | Out-Null
162- }
163- $CBakeHome = Join-Path (Get-Location) 'cbake'
164- echo "CBAKE_HOME=$CBakeHome" >> $Env:GITHUB_ENV
165- sudo apt install ninja-build g++-aarch64-linux-gnu
115+ with :
116+ version : " v2025.02.18.0"
117+ sysroots : |
118+ - ubuntu-20.04-amd64
119+ - ubuntu-20.04-arm64
120+ cargo_env_scripts : true
166121
167122 - name : Build picky (${{matrix.os}}-${{matrix.arch}})
168123 shell : pwsh
@@ -193,15 +148,7 @@ jobs:
193148
194149 if ($DotNetOs -eq 'linux') {
195150 $LinuxArch = @{'x64'='amd64';'arm64'='arm64'}[$DotNetArch]
196- $CMakeToolchainFile = Join-Path $Env:CBAKE_HOME "cmake/linux.toolchain.cmake"
197151 $Env:SYSROOT_NAME = "ubuntu-20.04-$LinuxArch"
198- $CMakeSourceDir = "$Env:CBAKE_HOME/cargo"
199- $CMakeBuildDir = "$Env:CBAKE_HOME/cargo/${Env:SYSROOT_NAME}"
200- $CMakeArgs = @(
201- "-DSYSROOT_NAME=$Env:SYSROOT_NAME",
202- "-DCMAKE_TOOLCHAIN_FILE=$CMakeToolchainFile"
203- )
204- cmake $CMakeSourceDir -G Ninja -B $CMakeBuildDir $CMakeArgs
205152 . "$HOME/.cargo/cbake/${RustTarget}-enter.ps1"
206153 }
207154
@@ -249,13 +196,8 @@ jobs:
249196 - name : Checkout ${{ github.repository }}
250197 uses : actions/checkout@v4
251198
252- - name : Configure runner
253- shell : pwsh
254- run : |
255- wget -q https://github.com/awakecoding/llvm-prebuilt/releases/download/v2025.2.0/cctools-x86_64-ubuntu-24.04.tar.xz
256- tar -xf cctools-x86_64-ubuntu-24.04.tar.xz -C /tmp
257- sudo mv /tmp/cctools-x86_64-ubuntu-24.04/bin/lipo /usr/local/bin
258- sudo mv /tmp/cctools-x86_64-ubuntu-24.04/bin/install_name_tool /usr/local/bin
199+ - name : Setup CCTools
200+ uses : Devolutions/actions-public/setup-cctools@v1
259201
260202 - name : Download native components
261203 uses : actions/download-artifact@v4
0 commit comments