Skip to content

macOS static build #180

macOS static build

macOS static build #180

Workflow file for this run

name: Build
on:
push:
paths-ignore:
- "**/**.md"
pull_request:
branches:
- master
paths-ignore:
- "**/**.md"
workflow_dispatch:
permissions:
actions: none
checks: none
contents: write
deployments: none
issues: none
packages: read
pull-requests: none
repository-projects: none
security-events: none
statuses: read
defaults:
run:
shell: bash
env:
VCPKG_COMMITTISH: 962e5e39f8a25f42522f51fffc574e05a3efd26b
jobs:
build_windows:
name: Windows
runs-on: windows-2022
strategy:
fail-fast: false
env:
CMAKE_BUILD_TYPE: Release
CMAKE_GENERATOR: Visual Studio 17 2022
VCPKG_TRIPLET: custom-triplet
steps:
- name: Remove Old VS version (Hack)
shell: pwsh
run: |
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
$componentsToRemove= @(
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ARM"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ARM64"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ARM64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.x86.x64"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.x86.x64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ATL"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ATL.Spectre"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ATL.ARM"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ATL.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ATL.ARM64"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.ATL.ARM64.Spectre"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.MFC"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.MFC.Spectre"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.MFC.ARM"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.MFC.ARM.Spectre"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.MFC.ARM64"
"Microsoft.VisualStudio.Component.VC.14.35.17.5.MFC.ARM64.Spectre"
)
[string]$workloadArgs = $componentsToRemove | ForEach-Object {" --remove " + $_}
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
# should be run twice
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
- name: Checkout Git repository
uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 0
- name: Setup vcpkg
uses: friendlyanon/setup-vcpkg@v1
with:
committish: ${{env.VCPKG_COMMITTISH}}
- name: Setup Overlays
uses: actions/checkout@v3
with:
repository: complexlogic/vcpkg
ref: refs/heads/rsgain
path: build/overlays
- name: Configure
run: cmake -S . -B build
-G "${{env.CMAKE_GENERATOR}}"
-DCMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"
-DVCPKG_MANIFEST_FEATURES="ffmpeg;libebur128;inih;"
-DVCPKG_OVERLAY_PORTS=build/overlays/ports
-DVCPKG_OVERLAY_TRIPLETS=config/vcpkg_triplets
-DVCPKG_TARGET_TRIPLET=${{env.VCPKG_TRIPLET}}
- name: Build
run: |
cmake \
--build build \
--target package \
--config ${{ env.CMAKE_BUILD_TYPE }}
build/${{env.CMAKE_BUILD_TYPE}}/rsgain.exe -v
- name: Upload Package
uses: actions/upload-artifact@v3
with:
name: Windows build
path: build/*.zip
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: build/*.zip
build_linux:
name: Linux
runs-on: ubuntu-latest
permissions:
packages: write
strategy:
fail-fast: false
matrix:
config:
- name: Debian
docker_image: debian:bookworm
package_type: DEB
package_ext: .deb
vcpkg_features: fmt;
- name: Fedora
docker_image: fedora:38
package_type: RPM
package_ext: .rpm
vcpkg_features: fmt;
- name: Static
docker_image: debian:bullseye
package_type: TXZ
package_ext: .tar.xz
vcpkg_features: fmt;ffmpeg;libebur128;inih;
container:
image: ${{matrix.config.docker_image}}
env:
CMAKE_BUILD_TYPE: Release
VCPKG_COMMITISH: 51de327421f4bd99b828a97b4e4adde54db032a6
VCPKG_TRIPLET: x64-linux
steps:
- name: Checkout Git repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: "Install dependencies"
run: |
if [[ "${{matrix.config.name}}" == "Debian" ]]; then
apt update && apt install -y curl zip unzip tar build-essential git cmake pkg-config libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libebur128-dev libinih-dev binutils
fi
if [[ "${{matrix.config.name}}" == "Fedora" ]]; then
dnf install -y curl zip unzip tar git make pkg-config gcc-c++ fedora-packager rpmdevtools cmake libavcodec-free-devel libavformat-free-devel libswresample-free-devel libavutil-free-devel libebur128-devel inih-devel
fi
if [[ "${{matrix.config.name}}" == "Static" ]]; then
apt update && apt install -y curl zip unzip tar build-essential git cmake pkg-config python3 nasm binutils
fi
- name: Setup vcpkg
uses: friendlyanon/setup-vcpkg@v1
with:
committish: ${{env.VCPKG_COMMITTISH}}
cache-key: vcpkg-${{matrix.config.name}}-${{env.VCPKG_COMMITISH}}
cache-restore-keys: vcpkg-${{matrix.config.name}}-${{env.VCPKG_COMMITISH}}
- name: Setup Overlays
uses: actions/checkout@v3
with:
repository: complexlogic/vcpkg
ref: refs/heads/rsgain
path: build/overlays
- name: Configure
run: cmake -S . -B build
-DCMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"
-DVCPKG_TARGET_TRIPLET=${{env.VCPKG_TRIPLET}}
-DVCPKG_MANIFEST_FEATURES="${{matrix.config.vcpkg_features}}"
-DVCPKG_OVERLAY_PORTS=build/overlays/ports
-DCMAKE_BUILD_TYPE=${{env.CMAKE_BUILD_TYPE}}
-DCMAKE_INSTALL_PREFIX=/usr
-DPACKAGE=${{matrix.config.package_type}}
-DSTRIP_BINARY=ON
- name: Build
run: |
cmake \
--build build \
--target package
build/rsgain -v
- name: Upload Package
uses: actions/upload-artifact@v3
with:
name: ${{matrix.config.name}} build
path: build/*${{matrix.config.package_ext}}
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: build/*${{matrix.config.package_ext}}
token: ${{secrets.ACTIONS_SECRET}}
build_macos:
name: macOS
runs-on: macos-12
permissions:
packages: write
strategy:
fail-fast: false
matrix:
config:
- name: Intel
OSX_ARCH: x86_64
VCPKG_TRIPLET: x64-osx
- name: Apple Silicon
OSX_ARCH: arm64
VCPKG_TRIPLET: arm64-osx
env:
CMAKE_BUILD_TYPE: Release
steps:
- name: Checkout Git repository
uses: actions/checkout@v3
with:
fetch-depth: 0
# - name: "Install dependencies"
# run: |
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# brew install libebur128 taglib ffmpeg fmt inih cmake pkg-config || true
- name: Setup vcpkg
uses: friendlyanon/setup-vcpkg@v1
with:
committish: ${{env.VCPKG_COMMITTISH}}
cache-key: vcpkg-${{matrix.config.name}}-${{env.VCPKG_COMMITISH}}
cache-restore-keys: vcpkg-${{matrix.config.name}}-${{env.VCPKG_COMMITISH}}
- name: Setup Overlays
uses: actions/checkout@v3
with:
repository: complexlogic/vcpkg
ref: refs/heads/rsgain
path: build/overlays
- name: Configure
run: cmake -S . -B build
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_OSX_ARCHITECTURES=${{matrix.config.OSX_ARCH}}
-DCMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"
-DVCPKG_OVERLAY_PORTS=build/overlays/ports
-DVCPKG_TARGET_TRIPLET=${{matrix.config.VCPKG_TRIPLET}}
-DVCPKG_MANIFEST_FEATURES="fmt;ffmpeg;libebur128;inih;"
-DSTRIP_BINARY=ON
-DPACKAGE=ZIP
- name: Build
run: |
cmake \
--build build \
--target package
build/rsgain -v
- name: Upload Package
uses: actions/upload-artifact@v3
with:
name: macOS ${{matrix.config.name}} build
path: build/*.zip
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: build/*.zip
token: ${{secrets.ACTIONS_SECRET}}