mirror of
https://github.com/slint-ui/slint.git
synced 2025-12-23 09:19:32 +00:00
205 lines
10 KiB
YAML
205 lines
10 KiB
YAML
# Copyright © SixtyFPS GmbH <info@slint.dev>
|
|
# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
|
|
|
|
name: Build slint-viewer or -lsp binary
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
program:
|
|
type: choice
|
|
description: binary to build
|
|
options:
|
|
- viewer
|
|
- lsp
|
|
features:
|
|
type: string
|
|
description: features to enable for build
|
|
# Keep in sync with features in nightly_snapshot.yaml, cpp_package.yaml,api/node/Cargo.toml, and api/python/slint/Cargo.toml
|
|
default: "backend-linuxkms-noseat,backend-winit,renderer-femtovg,renderer-skia,renderer-software"
|
|
codesign:
|
|
type: boolean
|
|
description: Sign binaries on macOS (false for manual builds)
|
|
default: false
|
|
|
|
workflow_call:
|
|
inputs:
|
|
program:
|
|
type: string
|
|
description: binary to build
|
|
features:
|
|
type: string
|
|
description: features to enable for build
|
|
# Keep in sync with features in nightly_snapshot.yaml, cpp_package.yaml,api/node/Cargo.toml, and api/python/slint/Cargo.toml
|
|
default: "backend-linuxkms-noseat,backend-winit,renderer-femtovg,renderer-skia,renderer-software"
|
|
codesign:
|
|
type: boolean
|
|
description: Sign binaries on macOS
|
|
default: true
|
|
secrets:
|
|
certificate:
|
|
description: "certificate secret"
|
|
required: false
|
|
certificate_password:
|
|
description: "certificate password"
|
|
required: false
|
|
keychain_password:
|
|
description: "keychain password to use"
|
|
required: false
|
|
developer_id:
|
|
description: "developer id to use"
|
|
required: false
|
|
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: "11.0"
|
|
|
|
jobs:
|
|
build_windows:
|
|
strategy:
|
|
matrix:
|
|
arch: [x86_64-pc-windows-msvc, aarch64-pc-windows-msvc]
|
|
include:
|
|
- arch: x86_64-pc-windows-msvc
|
|
runner: windows-2022
|
|
package_suffix: x86_64
|
|
- arch: aarch64-pc-windows-msvc
|
|
runner: windows-11-arm
|
|
package_suffix: arm64
|
|
|
|
runs-on: ${{ matrix.runner}}
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: ./.github/actions/setup-rust
|
|
with:
|
|
target: ${{ matrix.arch }}
|
|
- uses: baptiste0928/cargo-install@v3
|
|
with:
|
|
crate: cargo-about
|
|
version: "=0.6.6"
|
|
- name: Build
|
|
run: cargo build --verbose --no-default-features --features ${{ github.event.inputs.features || inputs.features }} --release -p slint-${{ github.event.inputs.program || inputs.program }}
|
|
- name: Create artifact directory
|
|
run: |
|
|
mkdir pkg
|
|
cd pkg
|
|
mkdir slint-${{ github.event.inputs.program || inputs.program }}
|
|
cd slint-${{ github.event.inputs.program || inputs.program }}
|
|
cp ..\..\target/release/slint-${{ github.event.inputs.program || inputs.program }}.exe ./
|
|
cd ..
|
|
cd ..
|
|
cd tools\${{ github.event.inputs.program || inputs.program }}
|
|
bash -x ../../scripts/prepare_binary_package.sh ..\..\pkg\slint-${{ github.event.inputs.program || inputs.program }}
|
|
- name: Create archive
|
|
shell: powershell
|
|
run: |
|
|
cd pkg
|
|
Compress-Archive -Path slint-${{ github.event.inputs.program || inputs.program }}\* -Destination ..\slint-${{ github.event.inputs.program || inputs.program }}-windows-${{ matrix.package_suffix }}.zip
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: slint-${{ github.event.inputs.program || inputs.program }}-windows-${{ matrix.package_suffix }}
|
|
path: |
|
|
slint-${{ github.event.inputs.program || inputs.program }}-windows-${{ matrix.package_suffix }}.zip
|
|
|
|
build_linux:
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: ./.github/actions/install-linux-dependencies
|
|
with:
|
|
old-ubuntu: true
|
|
- uses: ./.github/actions/setup-rust
|
|
with:
|
|
target: x86_64-unknown-linux-gnu
|
|
- uses: baptiste0928/cargo-install@v3
|
|
with:
|
|
crate: cargo-about
|
|
version: "=0.6.6"
|
|
- name: Build
|
|
run: cargo build --verbose --no-default-features --features ${{ github.event.inputs.features || inputs.features }} --release -p slint-${{ github.event.inputs.program || inputs.program }}
|
|
- name: Create artifact directory
|
|
run: |
|
|
mkdir -p slint-${{ github.event.inputs.program || inputs.program }}
|
|
cp target/release/slint-${{ github.event.inputs.program || inputs.program }} slint-${{ github.event.inputs.program || inputs.program }}/
|
|
cd tools/${{ github.event.inputs.program || inputs.program }}
|
|
../../scripts/prepare_binary_package.sh ../../slint-${{ github.event.inputs.program || inputs.program }}
|
|
- name: Tar artifacts to preserve permissions
|
|
run: tar czvf slint-${{ github.event.inputs.program || inputs.program }}-linux.tar.gz slint-${{ github.event.inputs.program || inputs.program }}
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: slint-${{ github.event.inputs.program || inputs.program }}-linux
|
|
path: slint-${{ github.event.inputs.program || inputs.program }}-linux.tar.gz
|
|
|
|
build_linux_arm:
|
|
runs-on: ubuntu-22.04
|
|
strategy:
|
|
matrix:
|
|
target:
|
|
- armv7-unknown-linux-gnueabihf
|
|
- aarch64-unknown-linux-gnu
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: ./.github/actions/setup-rust
|
|
with:
|
|
target: x86_64-unknown-linux-gnu
|
|
- uses: baptiste0928/cargo-install@v3
|
|
with:
|
|
crate: cross
|
|
- uses: baptiste0928/cargo-install@v3
|
|
with:
|
|
crate: cargo-about
|
|
version: "=0.6.6"
|
|
- name: Build
|
|
run: cross build --target=${{ matrix.target }} --no-default-features --features ${{ github.event.inputs.features || inputs.features }} --release -p slint-${{ github.event.inputs.program || inputs.program }}
|
|
- name: Create artifact directory
|
|
run: |
|
|
mkdir -p slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}
|
|
cp target//${{ matrix.target }}/release/slint-${{ github.event.inputs.program || inputs.program }} slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}/
|
|
cd tools/${{ github.event.inputs.program || inputs.program }}
|
|
../../scripts/prepare_binary_package.sh ../../slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}
|
|
- name: Tar artifacts to preserve permissions
|
|
run: tar czvf slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}.tar.gz slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}
|
|
path: slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}.tar.gz
|
|
|
|
build_macos:
|
|
runs-on: macos-26
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: ./.github/actions/setup-rust
|
|
with:
|
|
target: aarch64-apple-darwin
|
|
- uses: baptiste0928/cargo-install@v3
|
|
with:
|
|
crate: cargo-about
|
|
version: "=0.6.6"
|
|
- name: Build aarch64
|
|
run: cargo build --verbose --target aarch64-apple-darwin --no-default-features --features ${{ github.event.inputs.features || inputs.features }} --release -p slint-${{ github.event.inputs.program || inputs.program }}
|
|
- name: Create artifact directory
|
|
run: |
|
|
mkdir -p slint-${{ github.event.inputs.program || inputs.program }}
|
|
cd slint-${{ github.event.inputs.program || inputs.program }}
|
|
lipo -create -output ./slint-${{ github.event.inputs.program || inputs.program }} ../target/aarch64-apple-darwin/release/slint-${{ github.event.inputs.program || inputs.program }}
|
|
install_name_tool -add_rpath @executable_path/. ./slint-${{ github.event.inputs.program || inputs.program }}
|
|
cd ..
|
|
cd tools/${{ github.event.inputs.program || inputs.program }}
|
|
../../scripts/prepare_binary_package.sh ../../slint-${{ github.event.inputs.program || inputs.program }}
|
|
- uses: ./.github/actions/codesign
|
|
if: ${{ github.event.inputs.codesign == 'true' }}
|
|
with:
|
|
binary: slint-${{ github.event.inputs.program || inputs.program }}/slint-${{ github.event.inputs.program || inputs.program }}
|
|
certificate: ${{ github.event.inputs.certificate }}
|
|
certificate_password: ${{ github.event.inputs.certificate_password }}
|
|
keychain_password: ${{ github.event.inputs.keychain_password }}
|
|
developer_id: ${{ github.event.inputs.developer_id }}
|
|
- name: Tar artifacts to preserve permissions
|
|
run: tar czvf slint-${{ github.event.inputs.program || inputs.program }}-macos.tar.gz slint-${{ github.event.inputs.program || inputs.program }}
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: slint-${{ github.event.inputs.program || inputs.program }}-macos
|
|
path: slint-${{ github.event.inputs.program || inputs.program }}-macos.tar.gz
|