]> Repos - portaudio/commitdiff
GH Actions: CMake build all supported options, compilers, and OSes
authorBe <be@mixxx.org>
Tue, 9 Feb 2021 17:02:34 +0000 (11:02 -0600)
committerPhil Burk <philburk@mobileer.com>
Thu, 12 Aug 2021 00:23:40 +0000 (17:23 -0700)
.github/workflows/cmake.yml

index df5c80cd089961a8380a3af177997f3d910fccdc..56d3e8f88dc05437ab8f62a3ec035df4b5b8f997 100644 (file)
@@ -12,20 +12,55 @@ jobs:
       fail-fast: false
       matrix:
         include:
-          - name: Ubuntu
+          - name: Ubuntu GCC
             os: ubuntu-latest
             install_dir: ~/portaudio
-          - name: Ubuntu mingw64
+            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_extras: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/i686-w64-mingw32.cmake
-          - name: Windows
+            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
-          - name: macOS
+            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 }}
@@ -34,15 +69,30 @@ jobs:
     steps:
     - name: checkout Git repository
       uses: actions/checkout@v2
-    - name: "[Ubuntu] install dependencies"
-      run: sudo apt-get install libasound2-dev libjack-dev ${{ matrix.dependencies_extras }}
+    - 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 ${{ matrix.cmake_extras }}
+      run: cmake
+           -G "${{ matrix.cmake_generator }}"
+           ${{ matrix.cmake_options }}
            -DCMAKE_INSTALL_PREFIX=${{ matrix.install_dir }}
            -DCMAKE_BUILD_TYPE=${{ env.cmake_build_type }}
-           -DPA_BUILD_TESTS=ON
-           -DPA_BUILD_EXAMPLES=ON
+           -DSKELETON=ON
+           -DBUILD_TESTING=ON
+           -DBUILD_EXAMPLES=ON
            -S .
            -B build
     - name: build