Refactor atomui pipeline

This commit is contained in:
CHINBOY
2025-06-21 14:34:30 +08:00
parent 49f54913f0
commit ea43c2e96b
7 changed files with 49 additions and 14 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
<h1>AtomUI</h1>
## AtomUI
#### Introduce
+40 -5
View File
@@ -29,10 +29,22 @@ stages:
vmImage: 'macOS-latest'
steps:
- pwsh: |
brew install ninja
cmake -B $(buildDir) -S $(nativeLibSrcDir) -DCMAKE_INSTALL_PREFIX="$(macOutputDir)" -DCMAKE_OSX_ARCHITECTURES:STRING="x86_64;arm64" -DCMAKE_BUILD_TYPE="${{ parameters.BuildConfiguration }}" -G "Ninja"
ninja -C $(buildDir)
ninja -C $(buildDir) install
brew install xmake
xmake --version
clang --version
xmake config --project=$(nativeLibSrcDir) --builddir=$(buildDir) -p macosx -a arm64 -m ${{ parameters.BuildConfiguration }}
xmake build
xmake install --installdir=$(macOutputDir)
xmake config --project=$(nativeLibSrcDir) --builddir=$(buildDir) -p macosx -a x86_64 -m ${{ parameters.BuildConfiguration }}
xmake build
xmake install --installdir=$(macOutputDir)
Write-Output "generate universal binary"
New-Item -Path "$(macOutputDir)/lib" -ItemType Directory -Force
lipo -create $(macOutputDir)/arm64/lib/libAtomUINative.dylib $(macOutputDir)/x86_64/lib/libAtomUINative.dylib -output $(macOutputDir)/lib/libAtomUINative.dylib
dir "$(macOutputDir)" -File
lipo -info $(macOutputDir)/lib/libAtomUINative.dylib
Remove-Item -Path "$(macOutputDir)/arm64/lib/libAtomUINative.dylib"
Remove-Item -Path "$(macOutputDir)/x86_64/lib/libAtomUINative.dylib"
displayName: "Build AtomUINative"
- task: PublishPipelineArtifact@1
inputs:
@@ -49,10 +61,33 @@ stages:
artifact: AtomUINativeMac
displayName: "Download libAtomUINative.dylib to pipeline"
- pwsh: |
$msysPath = "C:/msys64"
$env:MSYSTEM = "CLANG64"
$env:MSYSTEM_CARCH = "x86_64"
$env:MSYSTEM_CHOST = "x86_64-w64-mingw32"
$env:MSYSTEM_PREFIX = "/clang64"
$env:CHERE_INVOKING = "1"
$env:PATH = "$msysPath/clang64/bin;$msysPath/usr/bin;$env:PATH"
Write-Host "##vso[task.setvariable variable=MSYSTEM]CLANG64"
Write-Host "##vso[task.setvariable variable=MSYSTEM_CARCH]x86_64"
Write-Host "##vso[task.setvariable variable=MSYSTEM_CHOST]x86_64-w64-mingw32"
Write-Host "##vso[task.setvariable variable=MSYSTEM_PREFIX]/clang64"
Write-Host "##vso[task.prependpath]$msysPath/clang64/bin"
Write-Host "##vso[task.prependpath]$msysPath/usr/bin"
C:/msys64/usr/bin/bash.exe -lc @"
pacman -Sy --noconfirm
pacman -S mingw-w64-clang-x86_64-xmake --noconfirm
pacman -S mingw-w64-clang-x86_64-clang --noconfirm
"@
xmake --version
clang --version
displayName: "Prepare Build environment"
- pwsh: |
dotnet build --configuration ${{ parameters.BuildConfiguration }} /p:IsNightlyBuild=${{ parameters.IsNightlyBuild }} $(SourceDir)/packages/AtomUI/AtomUI.csproj
$osxNativeLibDir = "$(SourceDir)/output/Bin/Release/runtimes/osx/native"
New-Item -ItemType Directory -Force -Path $osxNativeLibDir
Copy-Item -Path $(Pipeline.Workspace)/lib/libAtomUINative.dylib -Destination $osxNativeLibDir
dotnet build --verbosity normal --configuration ${{ parameters.BuildConfiguration }} /p:IsNightlyBuild=${{ parameters.IsNightlyBuild }} $(SourceDir)/packages/AtomUI/AtomUI.csproj
dotnet build --configuration ${{ parameters.BuildConfiguration }} /p:IsNightlyBuild=${{ parameters.IsNightlyBuild }} $(SourceDir)/packages/AtomUI/AtomUI.csproj
displayName: "Build AtomUI projects"
- pwsh: |
$buildTimestamp = Get-Date -Format 'yyyyMMddHHmm'
+1 -1
View File
@@ -2,7 +2,7 @@
<PropertyGroup>
<NoWarn>$(NoWarn);CS7035</NoWarn>
<AvaloniaVersion>11.3.1</AvaloniaVersion>
<AtomUIVersion>0.0.2</AtomUIVersion>
<AtomUIVersion>0.0.3</AtomUIVersion>
<IsNightlyBuild Condition="'$(IsNightlyBuild)' == ''">false</IsNightlyBuild>
<BuildTimestamp Condition="'$(BuildTimestamp)' == ''">$([System.DateTime]::Now.ToString("yyyyMMddHHmm"))</BuildTimestamp>
<CanAppendBuildInfo>false</CanAppendBuildInfo>
+2 -2
View File
@@ -30,10 +30,10 @@ includes("xmake/options.lua")
includes("xmake/toolchains/atomui")
add_includedirs("include", {public = true})
add_includedirs("$(buildir)/include", {public = true})
add_includedirs("$(builddir)/include", {public = true})
-- global config header generator
set_configdir("$(buildir)/include/atomui")
set_configdir("$(builddir)/include/atomui")
add_configfiles(path.join(ATOMUI_INCLUDE_DIR, "Config.h.in"))
ATOMUI_PACKAGE_NAME = "atomui"
+1 -1
View File
@@ -8,7 +8,7 @@
-- Created by chinboy on 2025/05/19.
function main()
set_configdir("$(buildir)/include/atomui")
set_configdir("$(builddir)/include/atomui")
add_configfiles(path.join(ATOMUI_INCLUDE_DIR, "Config.h.in"))
ATOMUI_PACKAGE_NAME = "atomui"
+1 -1
View File
@@ -16,7 +16,7 @@ function main()
cprint("--------------------------------------------------------------------------------------")
cprint("BUILD_MODE : ${color.success}%s", project_config.mode())
cprint("PROJECT_SOURCE_DIR: ${color.success}%s", os.projectdir())
cprint("PROJECT_BINARY_DIR: ${color.success}%s", "$(buildir)")
cprint("PROJECT_BINARY_DIR: ${color.success}%s", "$(builddir)")
cprint("CONFIGURE_DIR : ${color.success}%s", project_config.directory())
cprint("XMAKE_INSTALL_DIR : ${color.success}%s", "$(programdir)")
cprint("HOST : ${color.success}%s", project_config.host())
+3 -3
View File
@@ -38,15 +38,15 @@ $env:XMAKE_COLORTERM = 'nocolor'
$buildType = $buildType.ToLower()
if ($IsWindows) {
xmake config --project=$sourceDir --buildir=$buildDir -p msys -a x86_64 -m $buildType
xmake config --project=$sourceDir --builddir=$buildDir -p msys -a x86_64 -m $buildType
xmake build
xmake install --installdir=$installPrefix
Copy-Item -Path $installPrefix/x86_64/lib/$libName -Destination $deployDir
} else {
xmake config --project=$sourceDir --buildir=$buildDir -p macosx -a arm64 -m $buildType
xmake config --project=$sourceDir --builddir=$buildDir -p macosx -a arm64 -m $buildType
xmake build
xmake install --installdir=$installPrefix
xmake config --project=$sourceDir --buildir=$buildDir -p macosx -a x86_64 -m $buildType
xmake config --project=$sourceDir --builddir=$buildDir -p macosx -a x86_64 -m $buildType
xmake build
xmake install --installdir=$installPrefix
Write-Output "generate universal binary"