name: Build on: push: branches: - main - stable pull_request: branches: - main - stable env: CTEST_OUTPUT_ON_FAILURE: ON CTEST_PARALLEL_LEVEL: 2 jobs: #################### # Linux / macOS #################### Unix: name: ${{ matrix.name }} (${{ matrix.config }}, ${{ fromJSON('["HeaderOnly", "Static"]')[matrix.static == 'ON'] }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-20.04, macos-latest] config: [Release] static: [ON, OFF] include: - os: macos-latest name: macOS - os: ubuntu-20.04 name: Linux env: IGL_NUM_THREADS: 1 # See https://github.com/libigl/libigl/pull/996 steps: - name: Checkout repository uses: actions/checkout@v1 with: fetch-depth: 10 - name: Dependencies (Linux) if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install \ libblas-dev \ libboost-filesystem-dev \ libboost-system-dev \ libboost-thread-dev \ libglu1-mesa-dev \ liblapack-dev \ libmpfr-dev \ xorg-dev \ ccache - name: Dependencies (macOS) if: runner.os == 'macOS' run: | brew update brew install boost gmp mpfr ccache - name: Cache Build id: cache-build uses: actions/cache@v1 with: path: ~/.ccache key: ${{ runner.os }}-${{ matrix.config }}-${{ matrix.static }}-cache - name: Prepare ccache run: | ccache --max-size=1.0G ccache -V && ccache --show-stats && ccache --zero-stats - name: Configure run: | mkdir -p build cd build cmake .. \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_BUILD_TYPE=${{ matrix.config }} \ -DLIBIGL_USE_STATIC_LIBRARY=${{ matrix.static }} \ -DLIBIGL_WITH_CGAL=ON \ -DLIBIGL_WITH_COMISO=ON - name: Build run: cd build; make -j2; ccache --show-stats - name: Tests run: cd build; ctest --verbose #################### # Windows #################### Windows: name: Windows (${{ matrix.config }}, ${{ fromJSON('["HeaderOnly", "Static"]')[matrix.static == 'ON'] }}) runs-on: windows-2019 env: CC: cl.exe CXX: cl.exe strategy: fail-fast: false matrix: config: [Release] static: [ON, OFF] steps: - name: Checkout repository uses: actions/checkout@v1 with: fetch-depth: 10 - uses: seanmiddleditch/gha-setup-ninja@master - name: Setup Conda uses: conda-incubator/setup-miniconda@v2 with: activate-environment: libigl-cgal environment-file: cmake/libigl-cgal.yml auto-activate-base: false - name: Set env run: | echo "appdata=$env:LOCALAPPDATA" >> ${env:GITHUB_ENV} - name: Cache build id: cache-build uses: actions/cache@v1 with: path: ${{ env.appdata }}\Mozilla\sccache key: ${{ runner.os }}-${{ matrix.config }}-${{ matrix.static }}-cache - name: Prepare sccache run: | Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') scoop install sccache --global # Scoop modifies the PATH so we make it available for the next steps of the job echo "${env:PATH}" >> ${env:GITHUB_PATH} # We run configure + build in the same step, since they both need to call VsDevCmd # Also, cmd uses ^ to break commands into multiple lines (in powershell this is `) - name: Configure and build shell: cmd run: | call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=x64 cmake -G Ninja ^ -DCMAKE_CXX_COMPILER_LAUNCHER=sccache ^ -DCMAKE_BUILD_TYPE=${{ matrix.config }} ^ -DLIBIGL_USE_STATIC_LIBRARY=${{ matrix.static }} ^ -DLIBIGL_WITH_CGAL=ON ^ -DLIBIGL_WITH_COMISO=OFF ^ -DCMAKE_JOB_POOLS=pool-linking=1;pool-compilation=2 ^ -DCMAKE_JOB_POOL_COMPILE:STRING=pool-compilation ^ -DCMAKE_JOB_POOL_LINK:STRING=pool-linking ^ -B build ^ -S . cmake --build build - name: Tests run: cd build; ctest --verbose