Skip to content

Commit 4b013c4

Browse files
committed
feat: Add binaries for Windows ARM64
1 parent 0ef5f6b commit 4b013c4

File tree

4 files changed

+143
-5
lines changed

4 files changed

+143
-5
lines changed
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
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"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: "windows-all"
1+
name: "windows-x64"
22

33
runs:
44
using: composite

.github/workflows/build.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,29 @@ jobs:
5555
- name: Create Linux ARM64 binaries
5656
uses: ./.github/actions/linux-arm64
5757

58-
build-windows:
58+
build-windows-x64:
5959
runs-on: windows-latest
6060
needs: [version]
6161
steps:
6262
- name: Code checkout
6363
uses: actions/checkout@v4
6464

6565
- name: Create Windows binaries
66-
uses: ./.github/actions/windows-all
66+
uses: ./.github/actions/windows-x64
67+
68+
build-windows-arm64:
69+
runs-on: windows-11-arm
70+
needs: [version]
71+
steps:
72+
- name: Code checkout
73+
uses: actions/checkout@v4
74+
75+
- name: Create Windows binaries
76+
uses: ./.github/actions/windows-arm64
6777

6878
release:
6979
runs-on: ubuntu-latest
70-
needs: [build-macos, build-linux-x64, build-linux-arm64, build-windows]
80+
needs: [build-macos, build-linux-x64, build-linux-arm64, build-windows-x64, build-windows-arm64]
7181
permissions:
7282
contents: write
7383
steps:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
A repository with static and dynamic binaries for libavif.
44

5-
It supports macOS (x64 & arm64), Linux (x64 & arm64) and Windows (x64).
5+
It offers x64 & arm64 versions for macOS, Linux and Windows.
66

77
## 👨🏾‍💻 Author
88

0 commit comments

Comments
 (0)