Skip to content

build with unified CMakeLists.txt #18

build with unified CMakeLists.txt

build with unified CMakeLists.txt #18

Workflow file for this run

name: Build btop
on:
workflow_dispatch:
inputs:
debug_build:
required: false
type: boolean
debug_link:
required: false
type: boolean
push:
branches: ["main"]
pull_request:
workflow_call:
jobs:
build:
name: Build btop
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Load cosmocc version
run: |
version=$(cat .github/cosmocc_version.txt)
echo "cosmocc_version=${version}" >> "$GITHUB_ENV"
- name: Setup cosmocc
uses: bjia56/[email protected]
with:
version: ${{ env.cosmocc_version }}
- name: Build btop
run: |
export CC=cosmocc
export CXX=cosmoc++
cmake -B build
cmake --build build --parallel 4
- name: Upload btop
uses: actions/upload-artifact@v4
with:
name: btop
path: ./build/btop
- name: Interactive debugging
uses: fawazahmed0/action-debug-vscode@v3
if: ${{ always() && inputs.debug_build }}
build_linux_plugin:
name: Build plugin Linux ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up zig
uses: mlugg/setup-zig@v1
with:
version: 0.13.0
- name: Build plugin
shell: bash
run: |
export CC="zig cc -target ${{ matrix.arch }}-linux-gnu.2.17"
export CXX="zig c++ -target ${{ matrix.arch }}-linux-gnu.2.17"
cmake -B build -DBTOP_TARGET=plugin
cmake --build build --parallel 4
cp build/libbtop.so ${{ github.workspace }}/libbtop-Linux-${{ matrix.arch }}.so
- name: Upload plugin
uses: actions/upload-artifact@v4
with:
name: plugin-Linux-${{ matrix.arch }}
path: ./libbtop-Linux-${{ matrix.arch }}.so
bundle:
name: Bundle plugins with btop
runs-on: ubuntu-latest
needs:
- build
- build_linux_plugin
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Load cosmocc version
run: |
version=$(cat .github/cosmocc_version.txt)
echo "cosmocc_version=${version}" >> "$GITHUB_ENV"
- name: Setup cosmocc
uses: bjia56/[email protected]
with:
version: ${{ env.cosmocc_version }}
- name: Download btop
uses: actions/download-artifact@v4
with:
name: btop
path: .
- name: Download plugins
uses: actions/download-artifact@v4
with:
pattern: plugin-*
path: /tmp/btop-plugin/
merge-multiple: true
- name: Bundle
run: |
tree /tmp/btop-plugin || true
mv btop btop.exe
sudo mkdir -p /zip/x86_64/linux
sudo cp /tmp/btop-plugin/libbtop-Linux-x86_64.so /zip/x86_64/linux/libbtop.so
sudo mkdir -p /zip/x86_64/macos
sudo mkdir -p /zip/x86_64/windows
sudo mkdir -p /zip/x86_64/freebsd
sudo mkdir -p /zip/x86_64/openbsd
sudo mkdir -p /zip/x86_64/netbsd
sudo mkdir -p /zip/aarch64/linux
sudo cp /tmp/btop-plugin/libbtop-Linux-aarch64.so /zip/aarch64/linux/libbtop.so
sudo mkdir -p /zip/aarch64/macos
sudo mkdir -p /zip/aarch64/windows
sudo mkdir -p /zip/aarch64/freebsd
sudo mkdir -p /zip/aarch64/openbsd
sudo mkdir -p /zip/aarch64/netbsd
cd /zip
zip -qr ${{ github.workspace }}/btop.exe *
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: btop.exe
path: ./btop.exe
- name: Interactive debugging
uses: fawazahmed0/action-debug-vscode@v3
if: ${{ always() && inputs.debug_link }}
check:
name: Check btop.exe ${{ matrix.os }} ${{ matrix.arch }}
needs: bundle
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- runner: macos-13
arch: x86_64
os: MacOS
- runner: macos-14
arch: arm64
os: MacOS
- runner: ubuntu-latest
arch: x86_64
os: Linux
- runner: windows-latest
arch: x86_64
os: Windows
- runner: ubuntu-latest
arch: x86_64
os: FreeBSD
- runner: ubuntu-latest
arch: aarch64
os: FreeBSD
- runner: ubuntu-latest
arch: x86_64
os: NetBSD
- runner: ubuntu-latest
arch: x86_64
os: OpenBSD
steps:
- name: Set up cosmocc
if: ${{ matrix.os == 'Linux' }}
uses: bjia56/[email protected]
- name: Checkout
uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: btop.exe
path: .
- name: Mark executable
shell: bash
run: |
chmod +x btop.exe
- name: Configure Windows
if: ${{ matrix.os == 'Windows' }}
shell: powershell
run: |
Remove-MpPreference -ExclusionPath (Get-MpPreference).ExclusionPath
Set-Service -Name wuauserv -StartupType Manual -Status Running
- name: Scan with Windows Defender
if: ${{ matrix.os == 'Windows' }}
shell: cmd
run: |
copy btop.exe C:
"C:\Program Files\Windows Defender\MpCmdRun.exe" -SignatureUpdate
"C:\Program Files\Windows Defender\MpCmdRun.exe" -Scan -ScanType 3 -File C:\btop.exe
- name: Check btop.exe
if: ${{ !contains(matrix.os, 'BSD') }}
shell: bash
run: |
./btop.exe --version
- name: Start VM
if: ${{ matrix.os == 'FreeBSD' }}
uses: vmactions/freebsd-vm@v1
with:
sync: nfs
arch: ${{ matrix.arch }}
- name: Start VM
if: ${{ matrix.os == 'NetBSD' }}
uses: vmactions/netbsd-vm@v1
with:
sync: nfs
- name: Start VM
if: ${{ matrix.os == 'OpenBSD' }}
uses: vmactions/openbsd-vm@v1
with:
sync: nfs
release: 7.3
- name: Check btop.exe
if: ${{ matrix.os == 'FreeBSD' }}
shell: freebsd {0}
run: |
cd ${{ github.workspace }}
./btop.exe --version
- name: Check btop.exe
if: ${{ matrix.os == 'NetBSD' }}
shell: netbsd {0}
run: |
cd ${{ github.workspace }}
./btop.exe --version
- name: Check btop.exe
if: ${{ matrix.os == 'OpenBSD' }}
shell: openbsd {0}
run: |
cd ${{ github.workspace }}
./btop.exe --version