name: CMake build on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: strategy: fail-fast: false matrix: include: - name: Ubuntu GCC os: ubuntu-latest install_dir: ~/portaudio dependencies_extras: libjack-dev cmake_generator: "Unix Makefiles" cmake_options: -DOSS=ON - name: Ubuntu MinGW os: ubuntu-latest install_dir: ~/portaudio asio_sdk_cache_path: asiosdk.zip dependencies_extras: mingw-w64 cmake_generator: "Unix Makefiles" cmake_options: -DASIO=ON -DASIO_SDK_ZIP_PATH=asiosdk.zip -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/i686-w64-mingw32.cmake - name: Windows MSVC os: windows-latest install_dir: C:\portaudio cmake_generator: "Visual Studio 16 2019" # ASIO_SDK_ZIP_PATH needs to be quoted or CMake will save the download to # asiosdk instead of asiosdk.zip. asio_sdk_cache_path: "asiosdk.zip" cmake_options: -DASIO=ON -DASIO_SDK_ZIP_PATH="asiosdk.zip" - name: Windows MinGW os: windows-latest install_dir: C:\portaudio cmake_generator: "MinGW Makefiles" # ASIO_SDK_ZIP_PATH needs to be quoted or CMake will save the download to # asiosdk instead of asiosdk.zip. asio_sdk_cache_path: "asiosdk.zip" cmake_options: -DASIO=ON -DASIO_SDK_ZIP_PATH="asiosdk.zip" - name: macOS Clang os: macOS-latest install_dir: ~/portaudio cmake_generator: "Unix Makefiles" cmake_options: -DCMAKE_FRAMEWORK=OFF - name: macOS Clang framework os: macOS-latest install_dir: ~/portaudio cmake_generator: "Unix Makefiles" cmake_options: -DCMAKE_FRAMEWORK=ON runs-on: ${{ matrix.os }} name: ${{ matrix.name }} env: cmake_build_type: RelWithDebInfo steps: - name: checkout Git repository uses: actions/checkout@v2 - name: "[Ubuntu] install ALSA and JACK headers" run: sudo apt-get install libasound2-dev ${{ matrix.dependencies_extras }} if: matrix.os == 'ubuntu-latest' - name: "[macOS] install JACK from Homebrew" run: brew install jack if: matrix.os == 'macOS-latest' - name: "[Windows MinGW] install MinGW from Chocolatey" run: choco install mingw if: startsWith(matrix.os, 'Windows MinGW') - name: "[Windows/MinGW] set up ASIO SDK cache" uses: actions/cache@v2 if: matrix.asio_sdk_cache_path != null with: path: ${{ matrix.asio_sdk_cache_path }} key: ${{ hashFiles('.github/asiosdk-version.txt') }} - name: configure run: cmake -G "${{ matrix.cmake_generator }}" ${{ matrix.cmake_options }} -DCMAKE_INSTALL_PREFIX=${{ matrix.install_dir }} -DCMAKE_BUILD_TYPE=${{ env.cmake_build_type }} -DSKELETON=ON -DBUILD_TESTING=ON -DBUILD_EXAMPLES=ON -S . -B build - name: build run: cmake --build build --config ${{ env.cmake_build_type }} --parallel 2 - name: install run: cmake --install build --config ${{ env.cmake_build_type }} - name: "Upload GitHub Actions artifacts" uses: actions/upload-artifact@v2 with: name: ${{ matrix.name }} PortAudio build path: ${{ matrix.install_dir }}