Merge pull request #80 from nathanjhood/development #104
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: windows-latest | |
on: | |
workflow_dispatch: # lets you run a build from the UI | |
push: | |
# When pushing new commits, cancel any running builds on that branch | |
concurrency: | |
group: windows-latest-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | |
MULTI_CONFIG_TYPES: Debug;Release | |
BUILD_TYPE: Release | |
BUILD_DIR: Builds | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
DISPLAY: :0 # linux pluginval needs this | |
CMAKE_BUILD_PARALLEL_LEVEL: 3 # Use up to 3 cpus to build juceaide, etc | |
VCPKG_MAX_CONCURRENCY: 3 | |
SCCACHE_GHA_ENABLED: "true" | |
IPP_DIR: C:\Program Files (x86)\Intel\oneAPI\ipp\latest\lib\cmake\ipp | |
STONEYDSP_BIQUADS_CURRENT_VERSION: ${{ vars.STONEYDSP_BIQUADS_VERSION_CURRENT_MAJOR_MINOR_PATCH }} | |
STONEYDSP_CURRENT_JUCE_VERSION: ${{ vars.STONEYDSP_BIQUADS_JUCE_VERSION_CURRENT_MAJOR_MINOR_PATCH }} | |
jobs: | |
windows: | |
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. | |
# You can convert this to a matrix build if you need cross-platform coverage. | |
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | |
runs-on: windows-latest | |
steps: | |
# This is just easier than debugging different compilers on different platforms | |
- name: Set up Clang | |
uses: egor-tensin/setup-clang@v1 | |
- name: Cache IPP | |
id: cache-ipp | |
uses: actions/cache@v4 | |
with: | |
key: ipp-v4 | |
path: C:\Program Files (x86)\Intel | |
- name: Install IPP | |
if: (steps.cache-ipp.outputs.cache-hit != 'true') | |
shell: bash | |
run: | | |
curl --output oneapi.exe https://registrationcenter-download.intel.com/akdlm/IRC_NAS/8d158661-ca8f-4e66-b5ea-3e0b3d00836a/w_ipp_oneapi_p_2021.10.1.15_offline.exe | |
./oneapi.exe -s -x -f oneapi | |
./oneapi/bootstrapper.exe -s -c --action install --components=intel.oneapi.win.ipp.devel --eula=accept -p=NEED_VS2022_INTEGRATION=1 --log-dir=. | |
- name: Save IPP cache (even on CI fail) | |
if: (steps.cache-ipp.outputs.cache-hit != 'true') | |
uses: actions/cache/save@v4 | |
with: | |
path: C:\Program Files (x86)\Intel | |
key: ipp-v4 | |
- name: Install Ninja | |
shell: bash | |
run: choco install ninja sccache | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
submodules: true # Get JUCE populated (if used) | |
- name: Cache the build | |
uses: mozilla-actions/sccache-action@v0.0.4 | |
- name: vcpkg install | |
# You may pin to the exact commit or the version. | |
# uses: johnwason/vcpkg-action@7c4b562bb35ef5a01d9d728acc90100b107dee4d | |
uses: johnwason/vcpkg-action@v6 | |
with: | |
# List of packages to build, separated by spaces. Cannot be used with manifest-dir | |
# pkgs: # optional | |
# vcpkg triplet to use | |
triplet: x64-windows | |
# Extra vcpkg command line args (optional) | |
# extra-args: --allow-unsupported # optional | |
# Additional cache key component (optional) | |
cache-key: windows-latest # optional | |
# Disable cache (useful for release builds) | |
# disable-cache: # optional, default is false | |
# vcpkg revision to checkout. | |
revision: master # optional, default is | |
# GitHub token to authenticate API requests. Recommended to use github.token | |
token: ${{ github.token }} | |
# Directory containing vcpkg.json manifest file. Cannot be used with pkgs. | |
manifest-dir: ${{ github.workspace }} # optional, default is | |
# Use vcpkg built-in GitHub binary caching. If not specified, will use the dry-run based file cache. | |
github-binarycache: true | |
# Fetch depth for vcpkg checkout | |
# fetch-depth: # optional, default is 1 | |
- name: Use Node.js 16.18.0 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16.18.0 | |
- name: npm install | |
run: npm install | |
- name: Configure (Debug) | |
working-directory: ${{github.workspace}} | |
shell: bash | |
# Configure CMake in a 'bin' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: >- | |
cmake --fresh -S${PWD} | |
-B${PWD}/${{ env.BUILD_DIR }} | |
-DCMAKE_BUILD_TYPE:STRING=Debug | |
-DCMAKE_C_COMPILER_LAUNCHER=sccache | |
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache | |
-DSTONEYDSP_BIQUADS_BUILD_TESTS:BOOL=TRUE | |
-DCMAKE_INSTALL_PREFIX:PATH=${PWD}/install | |
-DVCPKG_HOST_TRIPLET:STRING=x64-windows | |
-DVCPKG_TARGET_TRIPLET:STRING=x64-windows | |
-DVCPKG_MANIFEST_MODE:BOOL=FALSE | |
-DCMAKE_TOOLCHAIN_FILE:FILEPATH="${PWD}/vcpkg/scripts/buildsystems/vcpkg.cmake" | |
-G "Ninja" | |
--compile-no-warning-as-error | |
--no-warn-unused-cli | |
- name: Build (Debug) | |
# Build your program with the given configuration | |
run: >- | |
cmake | |
--build ${PWD}/${{ env.BUILD_DIR }} | |
--config Debug | |
--parallel 4 | |
--target all | |
- name: Test (Debug) | |
working-directory: ${{ github.workspace }} | |
shell: bash | |
# Execute tests defined by the CMake configuration. | |
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail | |
run: >- | |
ctest | |
--test-dir ${PWD}/${{ env.BUILD_DIR }} | |
-j4 | |
-C Debug | |
--rerun-failed | |
--output-on-failure | |
--verbose | |
- name: Install (Debug) | |
shell: bash | |
working-directory: ${{ github.workspace }} | |
# Install StoneyDSP Biquads with the given configuration | |
run: cmake --install ${PWD}/${{ env.BUILD_DIR }} --config Debug | |
- name: Configure (Release) | |
working-directory: ${{github.workspace}} | |
shell: bash | |
# Configure CMake in a 'bin' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. | |
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type | |
run: >- | |
cmake --fresh -S${PWD} | |
-B${PWD}/${{ env.BUILD_DIR }} | |
-DCMAKE_BUILD_TYPE:STRING=Release | |
-DCMAKE_C_COMPILER_LAUNCHER=sccache | |
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache | |
-DSTONEYDSP_BIQUADS_BUILD_TESTS:BOOL=TRUE | |
-DCMAKE_INSTALL_PREFIX:PATH=${PWD}/install | |
-DVCPKG_HOST_TRIPLET:STRING=x64-windows | |
-DVCPKG_TARGET_TRIPLET:STRING=x64-windows | |
-DVCPKG_MANIFEST_MODE:BOOL=FALSE | |
-DCMAKE_TOOLCHAIN_FILE:FILEPATH="${PWD}/vcpkg/scripts/buildsystems/vcpkg.cmake" | |
-G "Ninja" | |
--compile-no-warning-as-error | |
--no-warn-unused-cli | |
- name: Build (Release) | |
# Build your program with the given configuration | |
run: >- | |
cmake | |
--build ${PWD}/${{ env.BUILD_DIR }} | |
--config Release | |
--parallel 4 | |
--target all | |
- name: Test (Release) | |
working-directory: ${{ github.workspace }} | |
shell: bash | |
# Execute tests defined by the CMake configuration. | |
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail | |
run: >- | |
ctest | |
--test-dir ${PWD}/${{ env.BUILD_DIR }} | |
-j4 | |
-C Release | |
--rerun-failed | |
--output-on-failure | |
--verbose | |
- name: Install (Release) | |
shell: bash | |
working-directory: ${{ github.workspace }} | |
# Install StoneyDSP Biquads with the given configuration | |
run: cmake --install ${PWD}/${{ env.BUILD_DIR }} --config Release | |
- name: Zip Source | |
shell: bash | |
working-directory: ${{ github.workspace }} | |
# Pack the StoneyDSP source code with the given configuration | |
run: cpack --config ${PWD}/${{ env.BUILD_DIR }}/CPackSourceConfig.cmake -B install -G ZIP | |
- name: Zip Build | |
shell: bash | |
working-directory: ${{github.workspace}} | |
# Pack the StoneyDSP source code with the given configuration | |
run: cpack --config ${PWD}/${{ env.BUILD_DIR }}/CPackConfig.cmake -B install -G ZIP | |
- name: Upload Zip Build | |
uses: actions/upload-artifact@v4 | |
with: | |
name: StoneyDSP-Biquads-v${{ env.STONEYDSP_BIQUADS_CURRENT_VERSION }}-Windows-AMD64-JUCE-v${{ env.STONEYDSP_CURRENT_JUCE_VERSION }}.zip | |
path: '${{ github.workspace }}/install/StoneyDSP-Biquads-v${{ env.STONEYDSP_BIQUADS_CURRENT_VERSION }}-Windows-AMD64-JUCE-v${{ env.STONEYDSP_CURRENT_JUCE_VERSION }}.zip' | |
- name: Get Artifacts | |
uses: actions/download-artifact@v4 |