1+ name : " windows-arm64"
2+
3+ runs :
4+ using : composite
5+ steps :
6+ - name : Code checkout
7+ uses : actions/checkout@v4
8+
9+ - name : Install NASM
10+ uses : ilammy/setup-nasm@v1
11+
12+ - name : Install MSYS2
13+ uses : msys2/setup-msys2@v2
14+ with :
15+ msystem : CLANGARM64
16+ update : true
17+ install : |
18+ mingw-w64-clang-aarch64-gcc-compat
19+ mingw-w64-clang-aarch64-cmake
20+ mingw-w64-clang-aarch64-make
21+
22+ - name : Install vcpkg
23+ shell : bash
24+ run : |
25+ mkdir -p $GITHUB_WORKSPACE/static_arm64/lib
26+ mkdir -p $GITHUB_WORKSPACE/dynamic_arm64/lib
27+ git clone https://github.com/microsoft/vcpkg builder
28+ ./builder/bootstrap-vcpkg.sh
29+
30+ - name : Build libyuv & dav1d
31+ shell : msys2 {0}
32+ run : |
33+ ./builder/vcpkg install "libyuv:arm64-mingw-static"
34+ ./builder/vcpkg install "dav1d:arm64-mingw-static"
35+
36+ ./builder/vcpkg install "libyuv:arm64-mingw-dynamic"
37+ ./builder/vcpkg install "dav1d:arm64-mingw-dynamic"
38+
39+ - name : Build svt-av1
40+ shell : msys2 {0}
41+ env :
42+ MSYS2_PATH_TYPE : inherit
43+ MSYSTEM : CLANGARM64
44+ run : |
45+ git clone https://gitlab.com/AOMediaCodec/SVT-AV1 $GITHUB_WORKSPACE/svt-av1_arm64
46+ cp -r $GITHUB_WORKSPACE/svt-av1_arm64 $GITHUB_WORKSPACE/svt-av1_arm64_dynamic
47+
48+ mkdir -p $GITHUB_WORKSPACE/svt-av1_arm64/local
49+ cd $GITHUB_WORKSPACE/svt-av1_arm64/Build
50+ cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DSVT_AV1_LTO=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/svt-av1_arm64/local ..
51+ mingw32-make -j4
52+ mingw32-make install
53+
54+ mkdir -p $GITHUB_WORKSPACE/svt-av1_arm64_dynamic/local
55+ cd $GITHUB_WORKSPACE/svt-av1_arm64_dynamic/Build
56+ cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DSVT_AV1_LTO=OFF -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/svt-av1_arm64_dynamic/local ..
57+ mingw32-make -j4
58+ mingw32-make install
59+
60+ - name : Prepare dependencies
61+ shell : bash
62+ run : |
63+ cp -r $GITHUB_WORKSPACE/builder/installed/arm64-mingw-static/include $GITHUB_WORKSPACE/static_arm64/
64+ for file in "$GITHUB_WORKSPACE"/builder/installed/arm64-mingw-static/lib/*.a; do
65+ cp "$file" "$GITHUB_WORKSPACE/static_arm64/lib/"
66+ done
67+
68+ cp -r "$GITHUB_WORKSPACE"/svt-av1_arm64/local/include/svt-av1 "$GITHUB_WORKSPACE"/static_arm64/include/
69+ cp "$GITHUB_WORKSPACE"/svt-av1_arm64/local/lib/libSvtAv1Enc.a "$GITHUB_WORKSPACE"/static_arm64/lib/libSvtAv1Enc.a
70+
71+ cp -r $GITHUB_WORKSPACE/builder/installed/arm64-mingw-dynamic/include $GITHUB_WORKSPACE/dynamic_arm64/
72+ for file in "$GITHUB_WORKSPACE"/builder/installed/arm64-mingw-dynamic/lib/*.dll.a; do
73+ cp "$file" "$GITHUB_WORKSPACE/dynamic_arm64/lib/"
74+ done
75+
76+ for file in "$GITHUB_WORKSPACE"/builder/installed/arm64-mingw-dynamic/bin/*.dll; do
77+ cp "$file" "$GITHUB_WORKSPACE/dynamic_arm64/lib/"
78+ done
79+
80+ cp -r "$GITHUB_WORKSPACE"/svt-av1_arm64_dynamic/local/include/svt-av1 "$GITHUB_WORKSPACE"/dynamic_arm64/include/
81+ cp "$GITHUB_WORKSPACE"/svt-av1_arm64_dynamic/local/lib/libSvtAv1Enc.dll.a "$GITHUB_WORKSPACE"/dynamic_arm64/lib/libSvtAv1Enc.dll.a
82+ cp "$GITHUB_WORKSPACE"/svt-av1_arm64_dynamic/local/bin/libSvtAv1Enc.dll "$GITHUB_WORKSPACE"/dynamic_arm64/lib/libSvtAv1Enc.dll
83+
84+ - name : Build avif
85+ shell : msys2 {0}
86+ env :
87+ MSYS2_PATH_TYPE : inherit
88+ MSYSTEM : CLANGARM64
89+ run : |
90+ git clone https://github.com/AOMediaCodec/libavif avif_arm64
91+ cp -r $GITHUB_WORKSPACE/avif_arm64 $GITHUB_WORKSPACE/avif_arm64_dynamic
92+
93+ mkdir -p $GITHUB_WORKSPACE/avif_arm64/build
94+ cd $GITHUB_WORKSPACE/avif_arm64/build
95+ cmake -G "MinGW Makefiles" -DBUILD_SHARED_LIBS=OFF -DAVIF_BUILD_APPS=OFF -DAVIF_CODEC_DAV1D=SYSTEM -DAVIF_CODEC_SVT=SYSTEM -DAVIF_LIBYUV=SYSTEM -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/static_arm64 ..
96+ mingw32-make -j4
97+
98+ mkdir -p $GITHUB_WORKSPACE/avif_arm64_dynamic/build
99+ cd $GITHUB_WORKSPACE/avif_arm64_dynamic/build
100+ cmake -G "MinGW Makefiles" -DAVIF_BUILD_APPS=OFF -DAVIF_CODEC_DAV1D=SYSTEM -DAVIF_CODEC_SVT=SYSTEM -DAVIF_LIBYUV=SYSTEM -DCMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/dynamic_arm64 ..
101+ mingw32-make -j4
102+
103+ - name : Prepare local
104+ shell : bash
105+ run : |
106+ mv $GITHUB_WORKSPACE/static_arm64/lib/libSvtAv1Enc.a $GITHUB_WORKSPACE/static_arm64/lib/libsvtav1.a
107+ cp -r "$GITHUB_WORKSPACE"/avif_arm64/include/avif "$GITHUB_WORKSPACE"/static_arm64/include/
108+ cp "$GITHUB_WORKSPACE"/avif_arm64/build/libavif.a "$GITHUB_WORKSPACE"/static_arm64/lib/libavif.a
109+
110+ mv $GITHUB_WORKSPACE/dynamic_arm64/lib/libSvtAv1Enc.dll $GITHUB_WORKSPACE/dynamic_arm64/lib/libsvtav1.dll
111+ cp -r "$GITHUB_WORKSPACE"/avif_arm64_dynamic/include/avif "$GITHUB_WORKSPACE"/dynamic_arm64/include/
112+ cp "$GITHUB_WORKSPACE"/avif_arm64_dynamic/build/libavif.dll "$GITHUB_WORKSPACE"/dynamic_arm64/lib/libavif.dll
113+ rm "$GITHUB_WORKSPACE"/dynamic_arm64/lib/*.dll.a
114+
115+ - name : Zip local
116+ shell : bash
117+ run : |
118+ cd $GITHUB_WORKSPACE/static_arm64
119+ 7z a -tzip -mx=9 $GITHUB_WORKSPACE/static_windows_arm64.zip include lib
120+
121+ cd $GITHUB_WORKSPACE/dynamic_arm64
122+ 7z a -tzip -mx=9 $GITHUB_WORKSPACE/dynamic_windows_arm64.zip include lib
123+
124+ - name : Save artifacts
125+ uses : actions/upload-artifact@v4
126+ with :
127+ name : binaries-windows-arm64
128+ path : " *.zip"
0 commit comments