on:
  workflow_dispatch:
  schedule:
  - cron: 0 6 * * *

name: daily
jobs:
  build_linux:
    name: 'Linux Q${{matrix.quantum}}-x64 hdri=${{matrix.hdri}} (${{matrix.modules}})'
    container:
      image: ubuntu:bionic
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        quantum: [ 8, 16, 32, 64 ]
        hdri: [ yes, no ]
        modules: [ 'with-modules', 'without-modules' ]
        exclude:
          - quantum: 8
            hdri: yes
          - quantum: 32
            hdri: no
          - quantum: 64
            hdri: no

    steps:
    - name: Install dependencies
      run: |
        set -e
        apt update
        apt-get install -y autoconf pkg-config gcc libfontconfig1-dev libfreetype6-dev libltdl-dev

    - name: Clone msttcorefonts
      uses: actions/checkout@v2
      with:
        repository: ImageMagick/msttcorefonts
        ref: refs/heads/main
        fetch-depth: 1

    - name: Install msttcorefonts
      run: |
        set -e
        ./install.sh

    - uses: actions/checkout@v2
      with:
        fetch-depth: 1

    - name: Configure ImageMagick
      run: |
        export CFLAGS="-Wno-deprecated-declarations"
        ./configure --with-quantum-depth=${{matrix.quantum}} --enable-hdri=${{matrix.hdri}} --${{matrix.modules}}

    - name: Build ImageMagick
      run: |
        make

    - name: Test ImageMagick
      run: |
        make check || exit_code=$?
        if [ "$exit_code" != "0" ] ; then cat ./test-suite.log ; fi
        exit $exit_code

  build_windows:
    name: 'Windows Q${{matrix.quantum}}-${{matrix.platform}} hdri=${{matrix.hdri}} (${{matrix.buildType}})'
    runs-on: windows-2022

    strategy:
      fail-fast: false
      matrix:
        quantum: [ 8, 16, 32, 64 ]
        hdri: [ yes, no ]
        buildType: [ dmt, smtd ]
        platform: [ x64, x86, arm64 ]
        exclude:
          - quantum: 8
            hdri: yes
          - quantum: 32
            hdri: no
          - quantum: 64
            hdri: no

    steps:
    - name: Clone ImageMagick-Windows
      uses: actions/checkout@v2
      with:
        repository: ImageMagick/ImageMagick-Windows
        path: ImageMagick-Windows
        ref: refs/heads/main
        fetch-depth: 1

    - name: Clone repositories
      shell: cmd
      run: |
        cd %GITHUB_WORKSPACE%\ImageMagick-Windows
        CloneRepositories.cmd https://github.com/ImageMagick shallow

    - name: Build configure
      shell: cmd
      run: |
        call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
        cd %GITHUB_WORKSPACE%\ImageMagick-Windows\VisualMagick\configure
        msbuild configure.2022.sln /m /t:Rebuild /p:Configuration=Release,Platform=x64

    - name: Configure ImageMagick
      shell: cmd
      run: |
        cd %GITHUB_WORKSPACE%\ImageMagick-Windows\VisualMagick\configure
        configure.exe /noWizard /VS2022 /${{matrix.platform}} /${{matrix.buildType}}

    - name: Build ImageMagick
      shell: cmd
      run: |
        call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
        cd %GITHUB_WORKSPACE%\ImageMagick-Windows\VisualMagick
        dir /B *.sln > solution
        set /p solution=<solution
        msbuild %solution% /m /t:Rebuild /p:Configuration=Release,Platform=${{matrix.platform}}

  build_windows_zero_configuration:
    name: 'Windows Q16-x64 hdri=yes (zero configuration ${{matrix.buildType}})'
    runs-on: windows-2022

    strategy:
      fail-fast: false
      matrix:
        buildType: [ dmt, smtd ]

    steps:
    - name: Clone ImageMagick-Windows
      uses: actions/checkout@v2
      with:
        repository: ImageMagick/ImageMagick-Windows
        path: ImageMagick-Windows
        ref: refs/heads/main
        fetch-depth: 1

    - name: Clone repositories
      shell: cmd
      run: |
        cd %GITHUB_WORKSPACE%\ImageMagick-Windows
        CloneRepositories.cmd https://github.com/ImageMagick shallow

    - name: Build configure
      shell: cmd
      run: |
        call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
        cd %GITHUB_WORKSPACE%\ImageMagick-Windows\VisualMagick\configure
        msbuild configure.2022.sln /m /t:Rebuild /p:Configuration=Release,Platform=x64

    - name: Configure ImageMagick
      shell: cmd
      run: |
        cd %GITHUB_WORKSPACE%\ImageMagick-Windows\VisualMagick\configure
        configure.exe /noWizard /VS2022 /x64 /${{matrix.buildType}} /zeroConfigurationSupport

    - name: Build ImageMagick
      shell: cmd
      run: |
        call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
        cd %GITHUB_WORKSPACE%\ImageMagick-Windows\VisualMagick
        dir /B *.sln > solution
        set /p solution=<solution
        msbuild %solution% /m /t:Rebuild /p:Configuration=Release,Platform=x64

  build_msys2:
    name: 'Windows Q16-${{matrix.toolchain}} hdri=yes (MSYS2)'
    runs-on: windows-latest

    strategy:
      matrix:
        include: [
          { msystem: ucrt64, toolchain: ucrt-x86_64 },
          { msystem: mingw64, toolchain: x86_64 },
          { msystem: mingw32, toolchain: i686 }
        ]
      fail-fast: false

    steps:
    - name: Prepare git
      run: git config --global core.autocrlf false

    - uses: actions/checkout@v2

    - uses: actions/checkout@v2
      with:
        repository: ImageMagick/ImageMagick-Windows
        path: ImageMagick-Windows
        ref: refs/heads/main
        fetch-depth: 1

    - uses: msys2/setup-msys2@v2
      with:
        install: mingw-w64-${{ matrix.toolchain }}-toolchain base-devel binutils
        update: true

    - name: Building ImageMagick
      run: cd ImageMagick-Windows && makepkg-mingw --noconfirm --syncdeps
      env:
        MINGW_ARCH: ${{ matrix.msystem }}
        PKGEXT: ".pkg.tar.xz"
      shell: msys2 {0}
