Support static builds #162
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
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 | |
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}} | |
- 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 | |
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: Configure | |
run: cmake -S . -B build | |
-DCMAKE_BUILD_TYPE=${{env.CMAKE_BUILD_TYPE}} | |
-DCMAKE_INSTALL_PREFIX=/usr | |
- name: Build | |
run: | | |
cmake \ | |
--build build \ | |
--config ${{env.CMAKE_BUILD_TYPE}} | |
build/rsgain -v |