26 simd: ['sse42', 'avx', 'avx2', 'avx512']
28 runs-on: windows-latest
34 - uses: actions/checkout@v3
39 - name: Run "git describe"
40 run: echo "TIM41_DESCRIBE=$(git describe --first-parent)" >> $GITHUB_ENV
42 working-directory: timidity41
44 - name: Install toolchain
46 curl.exe -L -O https://github.com/starg2/mingw64-builds-GHA/releases/download/v2022-09-24/gcc-12.2.0_x86_64-win32-sjlj-ucrt.zip
47 7z x gcc-12.2.0_x86_64-win32-sjlj-ucrt.zip
48 7z x x86_64-12.2.0-static-release-win32-sjlj-rt_v10.7z
52 $vsdir = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath
53 "$vsdir\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin" >> $env:GITHUB_PATH
54 "$vsdir\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja" >> $env:GITHUB_PATH
55 "$env:GITHUB_WORKSPACE\mingw64\bin" >> $env:GITHUB_PATH
61 -DCMAKE_C_COMPILER="$($env:GITHUB_WORKSPACE -replace '\\', '/')/mingw64/bin/gcc.exe"
62 -DCMAKE_CXX_COMPILER="$($env:GITHUB_WORKSPACE -replace '\\', '/')/mingw64/bin/g++.exe"
63 $(if ('${{ matrix.arch }}' -eq 'x86') { '-DCMAKE_C_FLAGS="-m32"' })
64 $(if ('${{ matrix.arch }}' -eq 'x86') { '-DCMAKE_CXX_FLAGS="-m32"' })
65 $(if ('${{ matrix.arch }}' -eq 'x86') { '-DCMAKE_RC_FLAGS="--target=pe-i386"' })
66 -DCMAKE_BUILD_TYPE=Release
67 -DCMAKE_INSTALL_PREFIX="$($env:GITHUB_WORKSPACE -replace '\\', '/')/timidity41/inst"
68 -DTIM41_X86_SIMD_LEVEL="$('${{ matrix.simd }}'.ToUpperInvariant())"
72 - name: Copy runtime DLLs
73 if: ${{ matrix.arch == 'x86' }}
76 mingw64\x86_64-w64-mingw32\lib32
77 timidity41\build\out\bin
78 libgcc_s*.dll libstdc++*.dll
79 ; if ($LASTEXITCODE -le 1) { $LASTEXITCODE = 0 } else { $LASTEXITCODE = 1 }
82 run: ninja -C timidity41\build
85 run: ninja -C timidity41\build install
87 - name: Install runtime DLLs
90 "mingw64\x86_64-w64-mingw32\$(if ('${{ matrix.arch }}' -eq 'x86') { 'lib32' } else { 'lib' })"
92 libgcc_s*.dll libstdc++*.dll
93 ; if ($LASTEXITCODE -le 1) { $LASTEXITCODE = 0 } else { $LASTEXITCODE = 1 }
95 - name: Create release archive
97 robocopy timidity41\inst "$env:TIM41_DESCRIBE-${{ matrix.arch }}-${{ matrix.simd }}" /E /XD lib; if ($LASTEXITCODE -le 1) { $LASTEXITCODE = 0 } else { $LASTEXITCODE = 1 }
98 robocopy mingw64\licenses\mingw-w64 "$env:TIM41_DESCRIBE-${{ matrix.arch }}-${{ matrix.simd }}" COPYING.MinGW-w64-runtime.txt; if ($LASTEXITCODE -le 1) { $LASTEXITCODE = 0 } else { $LASTEXITCODE = 1 }
99 7z a "$env:TIM41_DESCRIBE-${{ matrix.arch }}-${{ matrix.simd }}.zip" "$env:TIM41_DESCRIBE-${{ matrix.arch }}-${{ matrix.simd }}"
101 - uses: actions/upload-artifact@v3
103 name: timidity41-${{ matrix.arch }}-${{ matrix.simd }}
104 path: ${{ env.TIM41_DESCRIBE }}-${{ matrix.arch }}-${{ matrix.simd }}.zip
107 if: ${{ startsWith(github.ref_name, 'tim41') }}
110 runs-on: ubuntu-latest
119 - uses: actions/download-artifact@v3
123 - name: Move artifacts
124 run: mv artifact/timidity41-*/*.zip .
126 - name: Generate release name
127 run: echo "RELEASE_NAME='$GITHUB_REF_NAME'" | sed 's/tim/TiMidity++ Version v/' >> $GITHUB_ENV
129 - uses: softprops/action-gh-release@v1
131 name: ${{ env.RELEASE_NAME }}