name: CI on: push: pull_request: jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: build: - linux-gcc - linux-clang - macos - linux-i686-gcc - android - windows-cygwin-64 - windows-cygwin-32 - windows-msys2-64 include: - build: linux-gcc os: ubuntu-22.04 cc: gcc - build: linux-clang os: ubuntu-22.04 cc: clang - build: macos os: macos-13 - build: linux-i686-gcc os: ubuntu-22.04 arch: i686 - build: android os: ubuntu-22.04 arch: aarch64-linux-android32 - build: android-recovery os: ubuntu-22.04 arch: aarch64-linux-android32 - build: windows-cygwin-64 os: windows-latest arch: x86_64 installer_arch: x64 shell: bash - build: windows-cygwin-32 os: windows-latest arch: i686 installer_arch: x86 shell: bash - build: windows-msys2-64 os: windows-latest cc: clang arch: x86_64 installer_arch: x64 shell: msys2 env: CI_TARGET_BUILD: ${{ matrix.build }} CI_TARGET_ARCH: ${{ matrix.arch }} CC: ${{ matrix.cc }} steps: - name: git config line endings (Windows) if: ${{ contains( matrix.build, 'windows' ) }} run: git config --global core.autocrlf input - name: Checkout repo uses: actions/checkout@v3 - name: Install Cygwin toolchain (Windows) if: ${{ startsWith(matrix.build, 'windows-cygwin') }} uses: cygwin/cygwin-install-action@master with: packages: > mingw64-${{matrix.arch}}-binutils mingw64-${{matrix.arch}}-CUnit mingw64-${{matrix.arch}}-curl mingw64-${{matrix.arch}}-dlfcn mingw64-${{matrix.arch}}-gcc-core mingw64-${{matrix.arch}}-headers mingw64-${{matrix.arch}}-runtime mingw64-${{matrix.arch}}-zlib - name: Install msys2 toolchain (Windows) if: ${{ startsWith(matrix.build, 'windows-msys2') }} uses: msys2/setup-msys2@v2 with: install: > git base-devel mingw-w64-${{matrix.arch}}-clang mingw-w64-${{matrix.arch}}-cunit mingw-w64-${{matrix.arch}}-toolchain mingw-w64-${{matrix.arch}}-lld mingw-w64-${{matrix.arch}}-python-scipy mingw-w64-${{matrix.arch}}-python-six mingw-w64-${{matrix.arch}}-python-statsmodels mingw-w64-${{matrix.arch}}-python-sphinx - name: Install dependencies run: ${{matrix.shell}} ./ci/actions-install.sh if: ${{ !contains( matrix.build, 'msys2' ) }} - name: Build run: ${{matrix.shell}} ./ci/actions-build.sh - name: Build installer (Windows) if: ${{ contains( matrix.build, 'windows' ) }} shell: cmd run: | cd os\windows dobuild.cmd ${{ matrix.installer_arch }} cd ..\.. - name: Upload installer as artifact (Windows) if: ${{ contains( matrix.build, 'windows' ) }} uses: actions/upload-artifact@v3 with: name: ${{ matrix.build }}-installer path: os\windows\*.msi - name: Upload installer as release for tagged builds (Windows) uses: softprops/action-gh-release@v1 if: ${{ startsWith(github.ref, 'refs/tags/') && startsWith(matrix.build, 'windows-cygwin') }} with: files: os/windows/*.msi - name: Remove dependency files to resolve Makefile Cygwin sed issue (Windows) if: ${{ startsWith(matrix.build, 'windows-cygwin') }} run: rm *.d */*.d */*/*.d shell: bash - name: Smoke test run: ${{matrix.shell}} ./ci/actions-smoke-test.sh - name: Full test run: ${{matrix.shell}} ./ci/actions-full-test.sh