Skip to content

Commit

Permalink
macOS: update to mpv 0.39.0
Browse files Browse the repository at this point in the history
  • Loading branch information
xfangfang committed Oct 12, 2024
1 parent 5d578d4 commit 0cb3ecb
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 55 deletions.
15 changes: 10 additions & 5 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ jobs:
DIST_PS4: ${{ steps.info.outputs.DIST_PS4 }}
DIST_DMG_PREFIX: ${{ steps.info.outputs.DIST_DMG_PREFIX }}
DIST_INTEL_DMG: ${{ steps.info.outputs.DIST_INTEL_DMG }}
DIST_INTEL_OLD_DMG: ${{ steps.info.outputs.DIST_INTEL_OLD_DMG }}
DIST_ARM_DMG: ${{ steps.info.outputs.DIST_ARM_DMG }}
DIST_UNIVERSAL_DMG: ${{ steps.info.outputs.DIST_UNIVERSAL_DMG }}
DIST_FLATPAK_X86_64: ${{ steps.info.outputs.DIST_FLATPAK_X86_64 }}
Expand Down Expand Up @@ -77,6 +78,7 @@ jobs:
echo "DIST_PS4=wiliwili-PS4-${VERSION}" >> $GITHUB_OUTPUT
echo "DIST_DMG_PREFIX=wiliwili-macOS" >> $GITHUB_OUTPUT
echo "DIST_INTEL_DMG=wiliwili-macOS-IntelChip-${VERSION}" >> $GITHUB_OUTPUT
echo "DIST_INTEL_OLD_DMG=wiliwili-macOS-IntelChip_10.11-${VERSION}" >> $GITHUB_OUTPUT
echo "DIST_ARM_DMG=wiliwili-macOS-AppleSilicon-${VERSION}" >> $GITHUB_OUTPUT
echo "DIST_UNIVERSAL_DMG=wiliwili-macOS-Universal-${VERSION}" >> $GITHUB_OUTPUT
echo "DIST_FLATPAK_X86_64=wiliwili-Linux-${VERSION}-x86_64" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -341,10 +343,14 @@ jobs:

build-macos:
needs: [ version ]
runs-on: macos-13
runs-on: macos-14
strategy:
matrix:
arch: [ IntelChip, AppleSilicon, Universal ]
include:
- { arch: IntelChip, name: IntelChip }
- { arch: IntelChipOld, name: IntelChip_10.11 }
- { arch: AppleSilicon, name: AppleSilicon }
- { arch: Universal, name: Universal }
# Don't fail the whole workflow if one architecture fails
fail-fast: false
steps:
Expand Down Expand Up @@ -385,15 +391,14 @@ jobs:
-DMAC_${{ matrix.arch }}=ON \
-DMAC_DOWNLOAD_DYLIB=ON \
-DBRLS_UNITY_BUILD=${{ github.event.inputs.disable_unity_build == 'true' && 'OFF' || 'ON' }} \
-DCMAKE_UNITY_BUILD_BATCH_SIZE=16 \
-DCURL_USE_LIBPSL=OFF
-DCMAKE_UNITY_BUILD_BATCH_SIZE=16
make -C build wiliwili.app -j$(sysctl -n hw.ncpu)
- name: Name
if: matrix.arch != 'Universal' || ( matrix.arch == 'Universal' && github.event.inputs.universal_macos == 'true')
id: name
run: |
echo "DMG=${{ needs.version.outputs.DIST_DMG_PREFIX }}-${{ matrix.arch }}-${{ needs.version.outputs.version }}" >> $GITHUB_OUTPUT
echo "DMG=${{ needs.version.outputs.DIST_DMG_PREFIX }}-${{ matrix.name }}-${{ needs.version.outputs.version }}" >> $GITHUB_OUTPUT
- name: Bundle
if: matrix.arch != 'Universal' || ( matrix.arch == 'Universal' && github.event.inputs.universal_macos == 'true')
Expand Down
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ cmake_dependent_option(BUILTIN_NSP "Built in NSP forwarder" OFF "PLATFORM_SWITCH
# macOS
# These four options are only for macOS app bundling usage.
# Do not use it until you know what you are doing.
cmake_dependent_option(MAC_IntelChip "Build for x86_64 (10.11)" OFF "APPLE;NOT PLATFORM_IOS" OFF)
cmake_dependent_option(MAC_IntelChip_Old "Build for x86_64 (10.11)" OFF "APPLE;NOT PLATFORM_IOS" OFF)
cmake_dependent_option(MAC_IntelChip "Build for x86_64 (10.15)" OFF "APPLE;NOT PLATFORM_IOS" OFF)
cmake_dependent_option(MAC_AppleSilicon "Build for arm64 (11.0)" OFF "APPLE;NOT PLATFORM_IOS" OFF)
cmake_dependent_option(MAC_Universal "Support x86_64;arm64 at the same time" OFF "APPLE;NOT PLATFORM_IOS" OFF)
cmake_dependent_option(MAC_DOWNLOAD_DYLIB "Using precompiled dylib instead of system provided" OFF "APPLE;NOT PLATFORM_IOS" OFF)
Expand Down
22 changes: 17 additions & 5 deletions cmake/extra.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,40 +16,52 @@ if (APPLE AND PLATFORM_DESKTOP)
OUTPUT_VARIABLE MACOS_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "compiling on macOS: ${MACOS_VERSION}")
if (MAC_IntelChip)
if (MAC_IntelChip_Old)
message(STATUS "CMAKE_OSX_ARCHITECTURES: x86_64")
message(STATUS "CMAKE_OSX_DEPLOYMENT_TARGET: 10.11")
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "" FORCE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "" FORCE)

set(USE_BOOST_FILESYSTEM ON)
set(USE_SYSTEM_CURL OFF)
elseif(MAC_IntelChip)
message(STATUS "CMAKE_OSX_ARCHITECTURES: x86_64")
message(STATUS "CMAKE_OSX_DEPLOYMENT_TARGET: 10.15")
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "" FORCE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "" FORCE)
set(USE_SYSTEM_CURL ON)
set(CPR_FORCE_DARWINSSL_BACKEND ON)
elseif(MAC_AppleSilicon)
# Build a Universal binary on macOS
message(STATUS "CMAKE_OSX_ARCHITECTURES: arm64")
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "" FORCE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "" FORCE)
set(USE_SYSTEM_CURL ON)
set(CPR_FORCE_DARWINSSL_BACKEND ON)
elseif(MAC_Universal)
# Build a Universal binary on macOS
message(STATUS "CMAKE_OSX_ARCHITECTURES: x86_64;arm64")
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "" FORCE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "" FORCE)
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET[arch=arm64] "11.0" CACHE STRING "" FORCE)

set(USE_BOOST_FILESYSTEM ON)
set(USE_SYSTEM_CURL OFF)
set(USE_SYSTEM_CURL ON)
set(CPR_FORCE_DARWINSSL_BACKEND ON)
elseif (MACOS_VERSION VERSION_GREATER_EQUAL 10.15)
message(STATUS "build for modern system, using curl provided by system")
set(USE_SYSTEM_CURL ON)
set(CPR_FORCE_DARWINSSL_BACKEND ON)
else ()
message(STATUS "build for old system, using boost filesystem and compile curl")
set(USE_BOOST_FILESYSTEM ON)
set(USE_SYSTEM_CURL OFF)
endif()

if (NOT USE_SYSTEM_CURL)
message(STATUS "compile curl")
set(CPR_FORCE_DARWINSSL_BACKEND OFF)
set(CPR_FORCE_OPENSSL_BACKEND ON)
set(CPR_ENABLE_CURL_HTTP_ONLY ON)
set(CURL_USE_LIBPSL OFF)
set(CURL_USE_LIBSSH2 OFF)
set(CMAKE_USE_LIBSSH2 OFF)
endif ()
Expand Down
30 changes: 19 additions & 11 deletions cmake/macos.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,48 @@

if (APPLE)

if (MAC_IntelChip)
if (MAC_IntelChip OR MAC_IntelChip_Old)
set(MAC_OS_ARCH x86_64)
elseif (MAC_AppleSilicon)
set(MAC_OS_ARCH arm64)
elseif (MAC_Universal)
set(MAC_OS_ARCH universal)
endif ()

set(MACOS_PREBUILD_LINK)
set(MACOS_WEBP_VERSION "7.1.8")
if (MAC_IntelChip_Old)
set(MACOS_PREBUILD_LINK "https://github.com/xfangfang/wiliwili/releases/download/v0.1.0/macos_dylib_ffmpeg61_mpv36_old.tar.gz")
list(APPEND APP_PLATFORM_LIB
${CMAKE_BINARY_DIR}/deps/lib/libboost_filesystem-mt.dylib
${CMAKE_BINARY_DIR}/deps/lib/libssl.3.dylib
${CMAKE_BINARY_DIR}/deps/lib/libcrypto.3.dylib)
else ()
set(MACOS_PREBUILD_LINK "https://github.com/xfangfang/wiliwili/releases/download/v0.1.0/macos_dylib_ffmpeg71_mpv39_${MAC_OS_ARCH}.tar.gz")
set(MACOS_WEBP_VERSION "7.1.9")
endif ()

if (NOT DISABLE_WEBP)
list(APPEND APP_PLATFORM_OPTION -DUSE_WEBP)
list(APPEND APP_PLATFORM_LIB ${CMAKE_BINARY_DIR}/deps/lib/libwebp.7.1.9.dylib)
list(APPEND APP_PLATFORM_LIB ${CMAKE_BINARY_DIR}/deps/lib/libwebp.${MACOS_WEBP_VERSION}.dylib)
endif ()

list(APPEND APP_PLATFORM_LIB
${CMAKE_BINARY_DIR}/deps/lib/libmpv.2.dylib
${CMAKE_BINARY_DIR}/deps/lib/libboost_filesystem-mt.dylib
${CMAKE_BINARY_DIR}/deps/lib/libssl.3.dylib
${CMAKE_BINARY_DIR}/deps/lib/libcrypto.3.dylib)
${CMAKE_BINARY_DIR}/deps/lib/libmpv.2.dylib)
list(APPEND APP_PLATFORM_INCLUDE
${CMAKE_BINARY_DIR}/deps/include)

# download deps
include(FetchContent)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0135 NEW)
endif()
FetchContent_Declare(macos_prebuild
URL "https://github.com/xfangfang/wiliwili/releases/download/v0.1.0/macos_dylib_ffmpeg7_mpv38_${MAC_OS_ARCH}.tar.gz"
)
endif ()
FetchContent_Declare(macos_prebuild URL ${MACOS_PREBUILD_LINK})
if (NOT macos_prebuild_POPULATED)
FetchContent_POPULATE(macos_prebuild)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/deps)
file(COPY ${macos_prebuild_SOURCE_DIR}/lib DESTINATION ${CMAKE_BINARY_DIR}/deps)
file(COPY ${macos_prebuild_SOURCE_DIR}/include DESTINATION ${CMAKE_BINARY_DIR}/deps)
endif()
endif ()

endif ()
46 changes: 13 additions & 33 deletions scripts/macos_dylib_merge.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,25 @@
set -e

files=(libass.9.dylib
libavcodec.61.3.100.dylib
libavdevice.61.1.100.dylib
libavfilter.10.1.100.dylib
libavformat.61.1.100.dylib
libavutil.59.8.100.dylib
libboost_atomic-mt.dylib
libboost_filesystem-mt.dylib
libcrypto.3.dylib
libavcodec.61.19.100.dylib
libavfilter.10.4.100.dylib
libavformat.61.7.100.dylib
libavutil.59.39.100.dylib
libdav1d.7.dylib
libfontconfig.1.dylib
libfreetype.6.dylib
libfribidi.0.dylib
libglib-2.0.0.dylib
libgmp.10.dylib
libgnutls.30.dylib
libgraphite2.3.2.1.dylib
libharfbuzz.0.dylib
libhogweed.6.9.dylib
libidn2.0.dylib
libintl.8.dylib
libjpeg.8.3.2.dylib
liblcms2.2.dylib
libluajit-5.1.2.1.1727870382.dylib
libmbedcrypto.3.6.1.dylib
libmbedtls.3.6.1.dylib
libmbedx509.3.6.1.dylib
libmpv.2.dylib
libnettle.8.9.dylib
libp11-kit.0.dylib
libpcre2-8.0.dylib
libplacebo.338.dylib
libplacebo.349.dylib
libpng16.16.dylib
libshaderc_shared.1.dylib
libsharpyuv.0.1.0.dylib
libssl.3.dylib
libswresample.5.1.100.dylib
libswscale.8.1.100.dylib
libtasn1.6.dylib
libswresample.5.3.100.dylib
libswscale.8.3.100.dylib
libunibreak.6.dylib
libunistring.5.dylib
libvulkan.1.3.280.dylib
libwebp.7.1.9.dylib)

rm -rf ./universal
Expand All @@ -48,7 +30,7 @@ i=1
for file in "${files[@]}"; do
echo $i "$file"
arm64_ret=$(otool -l ./arm64/"$file" | { grep minos || true;} | { grep 11.0 || true;})
x86_ret=$(otool -l ./x86_64/"$file" | { grep 10.11 || true;})
x86_ret=$(otool -l ./x86_64/"$file" | { grep 10.15 || true;})

if [ -z "$arm64_ret" ]; then
echo -e "\t\033[31m arm64 不满足 11.0 \033[0m"
Expand All @@ -62,9 +44,7 @@ for file in "${files[@]}"; do
((i++))
done

cp -r ./arm64/cmake ./universal/

output_name="macos_dylib_ffmpeg7_mpv38"
output_name="macos_dylib_ffmpeg71_mpv39"
arch_list=("arm64" "x86_64" "universal")
for i in "${arch_list[@]}";
do
Expand Down

0 comments on commit 0cb3ecb

Please sign in to comment.