26 simd: ['sse42', 'avx', 'avx2', 'avx512']
28 runs-on: windows-latest
34 - uses: actions/checkout@v3
40 run: git fetch --tags --force
42 working-directory: timidity41
44 - name: Run "git describe"
45 run: echo "TIM41_DESCRIBE=$(git describe --first-parent)" >> $GITHUB_ENV
47 working-directory: timidity41
49 - name: Cache toolchain (x86)
50 id: cache-toolchain-mingw32
51 if: ${{ matrix.arch == 'x86' }}
52 uses: actions/cache@v3
55 key: v2023-01-15/gcc-12.2.0_i686-win32-dwarf-ucrt
57 - name: Install toolchain (x86)
58 if: ${{ matrix.arch == 'x86' && steps.cache-toolchain-mingw32.outputs.cache-hit != 'true' }}
60 curl.exe -L -O https://github.com/starg2/mingw64-builds-GHA/releases/download/v2023-01-15/gcc-12.2.0_i686-win32-dwarf-ucrt.zip
61 7z e gcc-12.2.0_i686-win32-dwarf-ucrt.zip i686-12.2.0-release-win32-dwarf-ucrt-rt_v11.7z
62 7z x i686-12.2.0-release-win32-dwarf-ucrt-rt_v11.7z
64 - name: Cache toolchain (x64)
65 id: cache-toolchain-mingw64
66 if: ${{ matrix.arch == 'x64' }}
67 uses: actions/cache@v3
70 key: v2023-01-15/gcc-12.2.0_x86_64-win32-seh-ucrt
72 - name: Install toolchain (x64)
73 if: ${{ matrix.arch == 'x64' && steps.cache-toolchain-mingw64.outputs.cache-hit != 'true' }}
75 curl.exe -L -O https://github.com/starg2/mingw64-builds-GHA/releases/download/v2023-01-15/gcc-12.2.0_x86_64-win32-seh-ucrt.zip
76 7z e gcc-12.2.0_x86_64-win32-seh-ucrt.zip x86_64-12.2.0-release-win32-seh-ucrt-rt_v11.7z
77 7z x x86_64-12.2.0-release-win32-seh-ucrt-rt_v11.7z
79 - name: Set Toolchain Path
81 "TOOLCHAINDIR=$($env:GITHUB_WORKSPACE -replace '\\', '/')/$(if ('${{ matrix.arch }}' -eq 'x86') { 'mingw32' } else { 'mingw64' })" >> $env:GITHUB_ENV
82 "TOOLCHAINDIR_W=$env:GITHUB_WORKSPACE\$(if ('${{ matrix.arch }}' -eq 'x86') { 'mingw32' } else { 'mingw64' })" >> $env:GITHUB_ENV
86 $vsdir = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath
87 "$vsdir\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin" >> $env:GITHUB_PATH
88 "$vsdir\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja" >> $env:GITHUB_PATH
89 "$env:TOOLCHAINDIR_W\bin" >> $env:GITHUB_PATH
95 -DCMAKE_C_COMPILER="$env:TOOLCHAINDIR/bin/gcc.exe"
96 -DCMAKE_CXX_COMPILER="$env:TOOLCHAINDIR/bin/g++.exe"
97 -DCMAKE_BUILD_TYPE=Release
98 -DCMAKE_INSTALL_PREFIX="$($env:GITHUB_WORKSPACE -replace '\\', '/')/timidity41/inst"
99 -DTIM41_X86_SIMD_LEVEL="$('${{ matrix.simd }}'.ToUpperInvariant())"
104 run: ninja -C timidity41\build
107 run: ninja -C timidity41\build install
109 - name: Install runtime DLLs
112 "$env:TOOLCHAINDIR_W\bin"
114 libgcc_s*.dll libstdc++*.dll
115 ; if ($LASTEXITCODE -le 1) { $LASTEXITCODE = 0 }
117 - name: Create release archive
119 robocopy timidity41\inst "$env:TIM41_DESCRIBE-${{ matrix.arch }}-${{ matrix.simd }}" /E /XD lib; if ($LASTEXITCODE -le 1) { $LASTEXITCODE = 0 }
120 robocopy "$env:TOOLCHAINDIR_W\licenses\mingw-w64" "$env:TIM41_DESCRIBE-${{ matrix.arch }}-${{ matrix.simd }}" COPYING.MinGW-w64-runtime.txt; if ($LASTEXITCODE -le 1) { $LASTEXITCODE = 0 }
121 7z a "$env:TIM41_DESCRIBE-${{ matrix.arch }}-${{ matrix.simd }}.zip" "$env:TIM41_DESCRIBE-${{ matrix.arch }}-${{ matrix.simd }}"
123 - uses: actions/upload-artifact@v3
125 name: timidity41-${{ matrix.arch }}-${{ matrix.simd }}
126 path: ${{ env.TIM41_DESCRIBE }}-${{ matrix.arch }}-${{ matrix.simd }}.zip
129 if: ${{ startsWith(github.ref_name, 'tim41') }}
132 runs-on: ubuntu-latest
141 - uses: actions/download-artifact@v3
145 - name: Move artifacts
146 run: mv artifact/timidity41-*/*.zip .
148 - name: Generate release name
149 run: echo "RELEASE_NAME=$GITHUB_REF_NAME" | sed 's/tim/TiMidity++ 41 version /' >> $GITHUB_ENV
151 - uses: softprops/action-gh-release@v1
153 name: ${{ env.RELEASE_NAME }}