|
5 | 5 | pull_request: |
6 | 6 | workflow_dispatch: # |
7 | 7 |
|
| 8 | +env: |
| 9 | + ass_repo: https://github.com/libass/libass |
| 10 | + ass_ver: 0.17.4 |
| 11 | + avs_repo: https://github.com/AviSynth/AviSynthPlus |
| 12 | + avs_ver: 3.7.5 |
| 13 | + avs_date: 20250420 |
| 14 | + |
8 | 15 | jobs: |
9 | 16 | build-linux: |
10 | 17 | runs-on: ubuntu-latest |
11 | 18 | steps: |
12 | 19 | - name: Git checkout |
13 | | - uses: actions/checkout@v3 |
| 20 | + uses: actions/checkout@v4 |
14 | 21 | - name: Install dependencies |
15 | 22 | run: | |
16 | | - sudo apt-get update |
17 | | - sudo apt-get install cmake git ninja-build checkinstall |
18 | | - sudo apt-get install -y --no-install-recommends build-essential g++ gcc libass-dev pkg-config |
19 | | - git clone https://github.com/AviSynth/AviSynthPlus avsplus |
20 | | - cd avsplus |
21 | | - cmake -G "Ninja" -B avisynth-build -S . |
22 | | - cd avisynth-build |
23 | | - ninja |
24 | | - sudo checkinstall --pkgname=avisynth --pkgversion="$(grep -r Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes --strip=yes --stripso=yes --addso=yes --fstrans=no --default ninja install |
25 | | - - name: Build binary |
| 23 | + sudo apt-get update && sudo apt-get install -y ninja-build nasm libfontconfig1-dev meson |
| 24 | + |
| 25 | + git clone ${{ env.avs_repo }}.git -b v${{ env.avs_ver }} --depth=1 avsplus |
| 26 | + |
| 27 | + cd ./avsplus |
| 28 | + cmake -DCMAKE_INSTALL_PREFIX=/usr/local -S . -B avisynth-build |
| 29 | + cmake --build avisynth-build --config Release -j 2 |
| 30 | + sudo cmake --install avisynth-build --config Release |
| 31 | + cd .. |
| 32 | + |
| 33 | + git clone ${{ env.ass_repo }}.git -b ${{ env.ass_ver }} --depth=1 libass |
| 34 | + |
| 35 | + cd ./libass |
| 36 | + meson wrap update-db |
| 37 | + meson wrap install fribidi |
| 38 | + meson wrap install freetype2 |
| 39 | + meson wrap install expat |
| 40 | + meson wrap install harfbuzz |
| 41 | + meson wrap install libpng |
| 42 | + meson wrap install zlib |
| 43 | + |
| 44 | + meson setup build -Ddefault_library=static -Dbuildtype=release -Dasm=enabled -Dc_std=c11 -Dcpp_std=c++17 |
| 45 | + meson compile -C build |
| 46 | + sudo meson install -C build |
| 47 | + - name: Build & Save binary |
26 | 48 | run: | |
27 | 49 | cmake -B build -S . |
28 | 50 | cmake --build build --clean-first |
29 | | - - name: Copy binary |
30 | | - run: cmake -E copy "build/src/libassrender.so" "dist/libassrender.so" |
| 51 | + cmake -E copy "build/src/libassrender.so" "dist/libassrender.so" |
31 | 52 | - name: Upload artifact |
32 | | - uses: actions/upload-artifact@v2 |
| 53 | + uses: actions/upload-artifact@v4 |
33 | 54 | with: |
34 | 55 | name: assrender_bin_linux |
35 | 56 | path: dist |
36 | 57 |
|
37 | 58 | build-win: |
38 | | - runs-on: windows-2019 |
| 59 | + runs-on: windows-latest |
39 | 60 | steps: |
40 | 61 | - name: Git checkout |
41 | | - uses: actions/checkout@v3 |
| 62 | + uses: actions/checkout@v4 |
42 | 63 | - name: Install dependencies |
43 | 64 | run: | |
44 | | - git submodule update --init --recursive |
45 | | - git clone https://github.com/ShiftMediaProject/VSYASM.git |
46 | | - .\VSYASM\install_script.bat |
47 | | - git clone https://github.com/ShiftMediaProject/VSNASM.git |
48 | | - .\VSNASM\install_script.bat |
49 | | - md avsplus |
50 | | - # - name: Install MSYS2 with dependencies |
51 | | - # uses: msys2/setup-msys2@v2 |
52 | | - # with: |
53 | | - # update: true |
54 | | - # install: base-devel git mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-libass |
55 | | - # msystem: MINGW64 |
56 | | - # path-type: inherit |
57 | | - - name: Parse AviSynth+ release metadata |
58 | | - uses: actions/github-script@v6 |
59 | | - with: |
60 | | - script: | |
61 | | - const req = await github.request('https://api.github.com/repos/avisynth/avisynthplus/releases'); |
62 | | - const data = req.data; |
63 | | - let link = ''; |
64 | | - for(let rel of data){ |
65 | | - if(rel.prerelease||rel.draft){ |
66 | | - continue; |
67 | | - } |
68 | | - for(let asset of rel.assets){ |
69 | | - if(asset.name.match(/-filesonly.7z$/i)){ |
70 | | - link = asset.browser_download_url; |
71 | | - } |
72 | | - } |
73 | | - if(link != ''){ |
74 | | - break; |
75 | | - } |
76 | | - } |
77 | | - core.exportVariable('PACKAGE_URL', link); |
78 | | - - name: Download AviSynth+ latest release |
79 | | - run: curl -L "${{ env.PACKAGE_URL }}" -o "./avsplus/avisynthplus-latest-filesonly.7z" |
80 | | - - name: Move libs files |
81 | | - run: | |
| 65 | + choco install ninja nasm pkgconfiglite |
| 66 | + |
| 67 | + python -m pip install --upgrade pip |
| 68 | + pip install meson |
| 69 | + |
| 70 | + curl -L "${{ env.avs_repo }}/releases/download/v${{ env.avs_ver }}/AviSynthPlus_${{ env.avs_ver }}_${{ env.avs_date }}-filesonly.7z" ` |
| 71 | + --create-dirs -o "./avsplus/avisynthplus-latest-filesonly.7z" |
82 | 72 | 7z e "avsplus\*-filesonly.7z" -o"lib\x86-32" "*\x86\c_api\AviSynth.lib" |
83 | 73 | 7z e "avsplus\*-filesonly.7z" -o"lib\x86-64" "*\x64\c_api\AviSynth.lib" |
84 | | - - name: Add MSBuild to PATH |
85 | | - uses: microsoft/setup-msbuild@v1 |
86 | | - - name: Build x86 binary |
87 | | - run: MSBuild.exe /t:Rebuild /p:PlatformToolset=v142 /m /p:Configuration=Release /p:Platform=x86 |
88 | | - - name: Build x64 binary |
89 | | - run: MSBuild.exe /t:Rebuild /p:PlatformToolset=v142 /m /p:Configuration=Release /p:Platform=x64 |
90 | | - # - name: Build MINGW64 binary |
91 | | - # shell: msys2 {0} |
92 | | - # run: | |
93 | | - # cmake -G "MinGW Makefiles" -B build -S . |
94 | | - # cmake --build build --config Release --clean-first |
95 | | - - name: Copy x86 binary |
96 | | - run: cmake -E copy "bin\Release_Win32\assrender.dll" "dist\Release_x86\assrender.dll" |
97 | | - - name: Copy x64 binary |
98 | | - run: cmake -E copy "bin\Release_x64\assrender.dll" "dist\Release_x64\assrender.dll" |
99 | | - # - name: Copy MINGW64 binary |
100 | | - # run: cmake -E copy "build\src\assrender.dll" "dist\Release_MINGW64\assrender.dll" |
| 74 | + |
| 75 | + git clone ${{ env.ass_repo }}.git -b ${{ env.ass_ver }} --depth=1 libass |
| 76 | + |
| 77 | + cd ./libass |
| 78 | + meson wrap update-db |
| 79 | + meson wrap install fribidi |
| 80 | + meson wrap install fontconfig |
| 81 | + meson wrap install freetype2 |
| 82 | + meson wrap install expat |
| 83 | + meson wrap install harfbuzz |
| 84 | + meson wrap install libpng |
| 85 | + meson wrap install zlib |
| 86 | + - name: Setup MSVC (x64) |
| 87 | + uses: ilammy/msvc-dev-cmd@v1 |
| 88 | + with: |
| 89 | + arch: x64 |
| 90 | + - name: Meson + CMake build (x64) |
| 91 | + env: |
| 92 | + PKG_CONFIG_PATH: C:/assdeps/x64/lib/pkgconfig |
| 93 | + run: | |
| 94 | + cd libass |
| 95 | + meson setup build_x64 ` |
| 96 | + --prefix "C:/assdeps/x64" ` |
| 97 | + --libdir "lib" ` |
| 98 | + -Ddefault_library=static ` |
| 99 | + -Dbuildtype=release ` |
| 100 | + -Dasm=enabled ` |
| 101 | + -Db_vscrt=static_from_buildtype ` |
| 102 | + -Dc_std=c11 ` |
| 103 | + -Dcpp_std=c++17 |
| 104 | + meson compile -C build_x64 |
| 105 | + meson install -C build_x64 |
| 106 | + cd .. |
| 107 | + |
| 108 | + cmake -D CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -A x64 -S . -B build_x64 |
| 109 | + msbuild /t:Rebuild /m /p:Configuration=Release /p:Platform=x64 ".\build_x64\assrender.sln" |
| 110 | + cmake -E copy "build_x64\src\Release\assrender.dll" "dist\Release_x64\assrender.dll" |
| 111 | + - name: Setup MSVC (Win32) |
| 112 | + uses: ilammy/msvc-dev-cmd@v1 |
| 113 | + with: |
| 114 | + arch: x86 |
| 115 | + - name: Meson + CMake build (Win32) |
| 116 | + env: |
| 117 | + PKG_CONFIG_PATH: C:/assdeps/x86/lib/pkgconfig |
| 118 | + run: | |
| 119 | + cd libass |
| 120 | + meson setup build_Win32 ` |
| 121 | + --prefix "C:/assdeps/x86" ` |
| 122 | + --libdir "lib" ` |
| 123 | + -Ddefault_library=static ` |
| 124 | + -Dbuildtype=release ` |
| 125 | + -Dasm=enabled ` |
| 126 | + -Db_vscrt=static_from_buildtype ` |
| 127 | + -Dc_std=c11 ` |
| 128 | + -Dcpp_std=c++17 |
| 129 | + meson compile -C build_Win32 |
| 130 | + meson install -C build_Win32 |
| 131 | + cd .. |
| 132 | + |
| 133 | + cmake -D CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -A Win32 -S . -B build_Win32 |
| 134 | + msbuild /t:Rebuild /m /p:Configuration=Release /p:Platform=Win32 ".\build_Win32\assrender.sln" |
| 135 | + cmake -E copy "build_Win32\src\Release\assrender.dll" "dist\Release_Win32\assrender.dll" |
101 | 136 | - name: Upload artifact |
102 | | - uses: actions/upload-artifact@v2 |
| 137 | + uses: actions/upload-artifact@v4 |
103 | 138 | with: |
104 | 139 | name: assrender_bin_win |
105 | 140 | path: dist |
0 commit comments