diff options
author | Miodrag Milanović <mmicko@gmail.com> | 2021-11-05 09:58:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-05 09:58:35 +0100 |
commit | 5a5244a12eaeb56b07437223ee79e28e1cf8003c (patch) | |
tree | 362eaef309c861218b44c38a9edd25d38b38d5eb /.github | |
parent | d67eb0eb1c23ad3b5506ba1909822057323e3a6f (diff) | |
parent | e1cfd3738481ef4c8118089ca81c3d54c35bb81f (diff) | |
download | yosys-5a5244a12eaeb56b07437223ee79e28e1cf8003c.tar.gz yosys-5a5244a12eaeb56b07437223ee79e28e1cf8003c.tar.bz2 yosys-5a5244a12eaeb56b07437223ee79e28e1cf8003c.zip |
Merge pull request #3067 from YosysHQ/aki/ci_update
Update the Linux and macOS CI jobs
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/test-linux.yml | 125 | ||||
-rw-r--r-- | .github/workflows/test-macos.yml | 157 | ||||
-rw-r--r-- | .github/workflows/test.yml | 91 |
3 files changed, 282 insertions, 91 deletions
diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml new file mode 100644 index 000000000..ef47d4dca --- /dev/null +++ b/.github/workflows/test-linux.yml @@ -0,0 +1,125 @@ +name: Build and run tests (Linux) + +on: [push, pull_request] + +jobs: + test-linux: + runs-on: ${{ matrix.os.id }} + strategy: + matrix: + os: + - { id: ubuntu-20.04, name: focal } + compiler: + - 'clang-12' + - 'clang-11' + - 'gcc-11' + - 'gcc-10' + cpp_std: + - 'c++11' + - 'c++14' + - 'c++17' + - 'c++20' + include: + # Limit the older compilers to C++11 mode + - os: { id: ubuntu-18.04, name: bionic } + compiler: 'clang-3.9' + cpp_std: 'c++11' + - os: { id: ubuntu-18.04, name: bionic } + compiler: 'gcc-4.8' + cpp_std: 'c++11' + fail-fast: false + steps: + - name: Install Dependencies + shell: bash + run: | + sudo apt-get update + sudo apt-get install gperf build-essential bison flex libreadline-dev gawk tcl-dev libffi-dev git graphviz xdot pkg-config python python3 libboost-system-dev libboost-python-dev libboost-filesystem-dev zlib1g-dev + + - name: Setup GCC + if: startsWith(matrix.compiler, 'gcc') + shell: bash + run: | + CXX=${CC/#gcc/g++} + sudo apt-add-repository ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install $CC $CXX + echo "CC=$CC" >> $GITHUB_ENV + echo "CXX=$CXX" >> $GITHUB_ENV + env: + CC: ${{ matrix.compiler }} + + - name: Setup Clang + if: startsWith(matrix.compiler, 'clang') + shell: bash + run: | + wget https://apt.llvm.org/llvm-snapshot.gpg.key + sudo apt-key add llvm-snapshot.gpg.key + rm llvm-snapshot.gpg.key + sudo apt-add-repository "deb https://apt.llvm.org/${{ matrix.os.name }}/ llvm-toolchain-${{ matrix.os.name }} main" + sudo apt-get update + CXX=${CC/#clang/clang++} + sudo apt-get install $CC $CXX + echo "CC=$CC" >> $GITHUB_ENV + echo "CXX=$CXX" >> $GITHUB_ENV + env: + CC: ${{ matrix.compiler }} + + - name: Runtime environment + shell: bash + env: + WORKSPACE: ${{ github.workspace }} + run: | + echo "GITHUB_WORKSPACE=`pwd`" >> $GITHUB_ENV + echo "$GITHUB_WORKSPACE/.local/bin" >> $GITHUB_PATH + echo "procs=$(nproc)" >> $GITHUB_ENV + + - 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 + 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 (gcc-4.8) + if: matrix.compiler == 'gcc-4.8' + shell: bash + run: | + make config-${{ matrix.compiler }} + make -j${{ env.procs }} CCXXSTD=${{ matrix.cpp_std }} CC=$CC CXX=$CC LD=$CC + + - name: Build yosys + if: matrix.compiler != 'gcc-4.8' + shell: bash + run: | + make config-${CC%%-*} + make -j${{ env.procs }} CCXXSTD=${{ 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 diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml new file mode 100644 index 000000000..c9722c5a0 --- /dev/null +++ b/.github/workflows/test-macos.yml @@ -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 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index ee5b5c00e..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,91 +0,0 @@ -name: Build and run tests - -on: [push, pull_request] - -jobs: - test: - strategy: - matrix: - include: - - runner: ubuntu-20.04 - config: clang - cc: clang - - runner: ubuntu-20.04 - config: gcc - cc: gcc - - runner: ubuntu-18.04 - config: gcc - cc: gcc-4.8 - - runner: ubuntu-18.04 - config: clang - cc: clang-3.9 - - runner: macOS-10.15 - config: clang - cc: clang - runs-on: ${{ matrix.runner }} - steps: - - - uses: actions/checkout@v2 - - - name: Install dependencies (Linux) - if: runner.os == 'Linux' - run: | - sudo apt-get update - sudo apt-get install g++ gperf build-essential bison flex libreadline-dev gawk tcl-dev libffi-dev git graphviz xdot pkg-config python python3 libboost-system-dev libboost-python-dev libboost-filesystem-dev zlib1g-dev - - - name: Install gcc-4.8 - if: matrix.cc == 'gcc-4.8' - run: | - sudo apt-get install g++-4.8 - - - name: Install clang-3.9 - if: matrix.cc == 'clang-3.9' - run: | - sudo apt-get install clang-3.9 - - - name: Install dependencies (macOS) - if: runner.os == 'macOS' - run: | - brew install bison gawk libffi pkg-config bash - - - name: Setup environment (Linux) - if: runner.os == 'Linux' - run: | - echo "procs=$(nproc)" >> $GITHUB_ENV - - - name: Setup environment (macOS) - if: runner.os == 'macOS' - run: | - echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH - echo "procs=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV - - - name: Get iverilog - run: | - git clone git://github.com/steveicarus/iverilog.git - - - name: Cache iverilog - id: cache-iverilog - uses: actions/cache@v2 - with: - path: iverilog-bin - key: ${{ matrix.runner }}-${{ hashFiles('iverilog/.git/refs/heads/master') }} - - - name: Build iverilog - if: steps.cache-iverilog.outputs.cache-hit != 'true' - run: | - mkdir iverilog-bin - cd iverilog - autoconf - CC=gcc CXX=g++ ./configure --prefix=$PWD/../iverilog-bin - make -j${{ env.procs }} - make install - - - name: Build yosys - run: | - ${{ matrix.cc }} --version - make config-${{ matrix.config }} - make -j${{ env.procs }} CC=${{ matrix.cc }} CXX=${{ matrix.cc }} LD=${{ matrix.cc }} - - - name: Run tests - run: | - PATH=$PWD/iverilog-bin/bin:$PATH make -j${{ env.procs }} test CC=${{ matrix.cc }} CXX=${{ matrix.cc }} LD=${{ matrix.cc }} |