ci: expanded the macOS tests suite to cover more compilers and C++ versions
authorAki Van Ness <aki@yosyshq.com>
Thu, 28 Oct 2021 01:43:51 +0000 (21:43 -0400)
committerAki Van Ness <aki@yosyshq.com>
Mon, 1 Nov 2021 00:07:43 +0000 (20:07 -0400)
.github/workflows/test-macos.yml [new file with mode: 0644]

diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml
new file mode 100644 (file)
index 0000000..c9722c5
--- /dev/null
@@ -0,0 +1,157 @@
+name: Build and run tests (macOS)
+
+on: [push, pull_request]
+
+jobs:
+  test-macos:
+    runs-on: ${{ matrix.os.id }}
+    strategy:
+      matrix:
+        os:
+          - { id: macos-10.15, name: Catalina }
+          - { id: macos-11, name: 'Big Sur' }
+        cpp_std:
+          - 'c++11'
+          - 'c++14'
+          - 'c++17'
+      fail-fast: false
+    steps:
+      - name: Install Dependencies
+        run: |
+          brew install bison gawk libffi pkg-config bash
+
+      - name: Runtime environment
+        shell: bash
+        env:
+          WORKSPACE: ${{ github.workspace }}
+        run: |
+          echo "GITHUB_WORKSPACE=`pwd`" >> $GITHUB_ENV
+          echo "$GITHUB_WORKSPACE/.local/bin" >> $GITHUB_PATH
+          echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH
+          echo "procs=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
+
+      - name: Tool versions
+        shell: bash
+        run: |
+          cc --version
+
+      - name: Checkout Yosys
+        uses: actions/checkout@v2
+
+      - name: Get iverilog
+        shell: bash
+        run: |
+          git clone git://github.com/steveicarus/iverilog.git
+
+      - name: Cache iverilog
+        id: cache-iverilog
+        uses: actions/cache@v2
+        with:
+          path: .local/
+          key: ${{ matrix.os.id }}-${{ hashFiles('iverilog/.git/refs/heads/master') }}
+
+      - name: Build iverilog
+        if: steps.cache-iverilog.outputs.cache-hit != 'true'
+        shell: bash
+        run: |
+          mkdir -p $GITHUB_WORKSPACE/.local/
+          cd iverilog
+          autoconf
+          CC=gcc CXX=g++ ./configure --prefix=$GITHUB_WORKSPACE/.local/
+          make -j${{ env.procs }}
+          make install
+
+      - name: Build yosys
+        shell: bash
+        run: |
+          make config-clang
+          make -j${{ env.procs }} CXXSTD=${{ matrix.cpp_std }} CC=cc CXX=cc LD=cc
+
+      - name: Run tests
+        shell: bash
+        run: |
+          make -j${{ env.procs }} test CXXSTD=${{ matrix.cpp_std }} CC=cc CXX=cc LD=cc
+
+
+  test-macos-homebrew:
+    runs-on: ${{ matrix.os.id }}
+    strategy:
+      matrix:
+        os:
+          - { id: macos-10.15, name: Catalina }
+        cpp_std:
+          - 'c++11'
+          - 'c++14'
+          - 'c++17'
+        compiler:
+          - gcc@10
+          - gcc
+      fail-fast: false
+    steps:
+      - name: Install Dependencies
+        run: |
+          brew install bison gawk libffi pkg-config bash
+
+      - name: Runtime environment
+        shell: bash
+        env:
+          WORKSPACE: ${{ github.workspace }}
+        run: |
+          echo "GITHUB_WORKSPACE=`pwd`" >> $GITHUB_ENV
+          echo "$GITHUB_WORKSPACE/.local/bin" >> $GITHUB_PATH
+          echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH
+          echo "procs=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
+
+      - name: Setup compiler
+        shell: bash
+        run: |
+          brew install ${{ matrix.compiler }}
+          CC=${COMPILER/@/-}
+          CXX=${CC/#gcc/g++}
+          echo "CC=$CC" >> $GITHUB_ENV
+          echo "CXX=$CXX" >> $GITHUB_ENV
+        env:
+          COMPILER: ${{ matrix.compiler }}
+
+      - name: Tool versions
+        shell: bash
+        run: |
+          $CC --version
+          $CXX --version
+
+      - name: Checkout Yosys
+        uses: actions/checkout@v2
+
+      - name: Get iverilog
+        shell: bash
+        run: |
+          git clone git://github.com/steveicarus/iverilog.git
+
+      - name: Cache iverilog
+        id: cache-iverilog-homebrew
+        uses: actions/cache@v2
+        with:
+          path: .local/
+          key: ${{ matrix.os.id }}-homebrew-${{ hashFiles('iverilog/.git/refs/heads/master') }}
+
+      - name: Build iverilog
+        if: steps.cache-iverilog.outputs.cache-hit != 'true'
+        shell: bash
+        run: |
+          mkdir -p $GITHUB_WORKSPACE/.local
+          cd iverilog
+          autoconf
+          CC=gcc CXX=g++ ./configure --prefix=$GITHUB_WORKSPACE/.local
+          make -j${{ env.procs }}
+          make install
+
+      - name: Build yosys
+        shell: bash
+        run: |
+          make config-gcc
+          make -j${{ env.procs }} CXXSTD=${{ matrix.cpp_std }} CC=$CC CXX=$CC LD=$CC
+
+      - name: Run tests
+        shell: bash
+        run: |
+          make -j${{ env.procs }} test CXXSTD=${{ matrix.cpp_std }} CC=$CC CXX=$CC LD=$CC