diff --git a/.github/workflows/build-ffmpeg.yml b/.github/workflows/build-ffmpeg.yml index aa4a573496..7e7969fa29 100644 --- a/.github/workflows/build-ffmpeg.yml +++ b/.github/workflows/build-ffmpeg.yml @@ -185,6 +185,8 @@ jobs: - name: Build run: osu.Framework.NativeLibs/scripts/ffmpeg/build-linux.sh + env: + arch: x64 - name: Upload uses: actions/upload-artifact@v4 @@ -192,6 +194,24 @@ jobs: name: linux-x64 path: linux-x64 + build-linux-arm64: + name: Build Linux (arm64) + runs-on: ubuntu-22.04-arm + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Build + run: osu.Framework.NativeLibs/scripts/ffmpeg/build-linux.sh + env: + arch: arm64 + + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: linux-arm64 + path: linux-arm64 + build-android: name: Build Android runs-on: ubuntu-22.04 @@ -244,6 +264,10 @@ jobs: with: name: linux-x64 path: osu.Framework.NativeLibs/runtimes/linux-x64/native + - uses: actions/download-artifact@v4 + with: + name: linux-arm64 + path: osu.Framework.NativeLibs/runtimes/linux-arm64/native - uses: actions/download-artifact@v4 with: name: win-arm64 diff --git a/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libavcodec.so.58 b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libavcodec.so.58 new file mode 100755 index 0000000000..7028c503c4 Binary files /dev/null and b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libavcodec.so.58 differ diff --git a/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libavformat.so.58 b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libavformat.so.58 new file mode 100755 index 0000000000..5c16826449 Binary files /dev/null and b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libavformat.so.58 differ diff --git a/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libavutil.so.56 b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libavutil.so.56 new file mode 100755 index 0000000000..1130df11d6 Binary files /dev/null and b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libavutil.so.56 differ diff --git a/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libbass.so b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libbass.so new file mode 100644 index 0000000000..5729fb8bb4 Binary files /dev/null and b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libbass.so differ diff --git a/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libbass_fx.so b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libbass_fx.so new file mode 100644 index 0000000000..44cf0e1372 Binary files /dev/null and b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libbass_fx.so differ diff --git a/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libbassmix.so b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libbassmix.so new file mode 100644 index 0000000000..0bc77f6ddd Binary files /dev/null and b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libbassmix.so differ diff --git a/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libswscale.so.5 b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libswscale.so.5 new file mode 100755 index 0000000000..33837d2aac Binary files /dev/null and b/osu.Framework.NativeLibs/runtimes/linux-arm64/native/libswscale.so.5 differ diff --git a/osu.Framework.NativeLibs/scripts/ffmpeg/build-linux.sh b/osu.Framework.NativeLibs/scripts/ffmpeg/build-linux.sh index 5044d4e061..7468511a24 100755 --- a/osu.Framework.NativeLibs/scripts/ffmpeg/build-linux.sh +++ b/osu.Framework.NativeLibs/scripts/ffmpeg/build-linux.sh @@ -6,18 +6,43 @@ SCRIPT_PATH=$(pwd) popd > /dev/null source "$SCRIPT_PATH/common.sh" +if [ -z "${arch-}" ]; then + PS3='Build for which arch? ' + select arch in "x64" "arm64"; do + if [ -z "$arch" ]; then + echo "invalid option" + else + break + fi + done +fi + +case $arch in + x64) + FFMPEG_FLAGS+=( + --arch=x86_64 + ) + ;; + + arm64) + FFMPEG_FLAGS+=( + --arch=aarch64 + ) + ;; +esac + FFMPEG_FLAGS+=( --target-os=linux ) pushd . > /dev/null -prep_ffmpeg linux-x64 +prep_ffmpeg "linux-$arch" build_ffmpeg popd > /dev/null # gcc creates multiple symlinks per .so file for versioning. # We delete the symlinks and rename the real files to include the major library version -rm linux-x64/*.so -for f in linux-x64/*.so.*.*.*; do +rm linux-$arch/*.so +for f in linux-$arch/*.so.*.*.*; do mv -vf "$f" "${f%.*.*}" done diff --git a/osu.Framework.NativeLibs/update-bass.sh b/osu.Framework.NativeLibs/update-bass.sh index 6e589db399..ba746860d6 100755 --- a/osu.Framework.NativeLibs/update-bass.sh +++ b/osu.Framework.NativeLibs/update-bass.sh @@ -9,6 +9,7 @@ curl -Lso bass24-arm64.zip https://www.un4seen.com/files/bass24-arm64.zip unzip -qjo bass24-arm64.zip arm64/bass.dll -d runtimes/win-arm64/native/ curl -Lso bass-linux.zip https://www.un4seen.com/stuff/bass-linux.zip +unzip -qjo bass-linux.zip aarch64/libbass.so -d runtimes/linux-arm64/native/ unzip -qjo bass-linux.zip x86/libbass.so -d runtimes/linux-x86/native/ unzip -qjo bass-linux.zip x86_64/libbass.so -d runtimes/linux-x64/native/ @@ -32,6 +33,7 @@ curl -Lso bass_fx-arm64.zip https://www.un4seen.com/stuff/bass_fx-arm64.zip unzip -qjo bass_fx-arm64.zip bass_fx.dll -d runtimes/win-arm64/native/ curl -Lso bass_fx-linux.zip https://www.un4seen.com/stuff/bass_fx-linux.zip +unzip -qjo bass_fx-linux.zip aarch64/libbass_fx.so -d runtimes/linux-arm64/native/ unzip -qjo bass_fx-linux.zip x86/libbass_fx.so -d runtimes/linux-x86/native/ unzip -qjo bass_fx-linux.zip x86_64/libbass_fx.so -d runtimes/linux-x64/native/ @@ -55,6 +57,7 @@ unzip -qjo bassmix24.zip bassmix.dll -d runtimes/win-x86/native/ unzip -qjo bass24-arm64.zip arm64/bassmix.dll -d runtimes/win-arm64/native/ curl -Lso bassmix24-linux.zip https://www.un4seen.com/stuff/bassmix-linux.zip +unzip -qjo bassmix24-linux.zip aarch64/libbassmix.so -d runtimes/linux-arm64/native/ unzip -qjo bassmix24-linux.zip x86/libbassmix.so -d runtimes/linux-x86/native/ unzip -qjo bassmix24-linux.zip x86_64/libbassmix.so -d runtimes/linux-x64/native/ diff --git a/osu.Framework/osu.Framework.csproj b/osu.Framework/osu.Framework.csproj index ce70796b37..6039899674 100644 --- a/osu.Framework/osu.Framework.csproj +++ b/osu.Framework/osu.Framework.csproj @@ -27,7 +27,7 @@ - +