Merge pull request #3079 from hguandl/osx/multiple-builds

macOS: 分别编译 x86_64 和 arm64 应用
This commit is contained in:
MistEO
2022-12-16 11:51:07 +08:00
committed by GitHub
8 changed files with 116 additions and 111 deletions

View File

@@ -44,12 +44,12 @@ jobs:
- name: Configure MaaCore
run: |
mkdir build && cd build
cmake .. -GNinja -DBUILD_XCFRAMEWORK=ON -DBUILD_UNIVERSAL=ON
cmake .. -GNinja -DBUILD_XCFRAMEWORK=ON
- name: Build libMaaCore
run: cmake --build build
- name: Build MAA
working-directory: src/MaaMacGui
run: xcodebuild ARCHS="arm64 x86_64" CODE_SIGN_IDENTITY="-" DEVELOPMENT_TEAM="-" ONLY_ACTIVE_ARCH=NO -derivedDataPath DerivedData -project MeoAsstMac.xcodeproj -scheme MAA
run: xcodebuild CODE_SIGN_IDENTITY="-" DEVELOPMENT_TEAM="-" -derivedDataPath DerivedData -project MeoAsstMac.xcodeproj -scheme MAA-x86_64
- uses: actions/upload-artifact@v3
with:
name: MAA-macos

View File

@@ -8,6 +8,11 @@ jobs:
macos-latest:
name: macos-latest
runs-on: macos-12
strategy:
matrix:
arch: [arm64, x86_64]
steps:
- uses: actions/checkout@v3
with:
@@ -29,28 +34,34 @@ jobs:
- name: Configure MaaCore
run: |
mkdir build && cd build
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_XCFRAMEWORK=ON -DBUILD_UNIVERSAL=ON
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_XCFRAMEWORK=ON -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }}
- name: Build libMaaCore
run: cmake --build build
- name: Build MAA
working-directory: src/MaaMacGui
run: xcodebuild -project MeoAsstMac.xcodeproj -scheme MAA archive -archivePath MAA.xcarchive -configuration Release
run: xcodebuild -project MeoAsstMac.xcodeproj -scheme MAA-${{ matrix.arch }} archive -archivePath MAA.xcarchive -configuration Release-${{ matrix.arch }}
- name: Export MAA
working-directory: src/MaaMacGui
run: xcodebuild -exportArchive -archivePath MAA.xcarchive -exportOptionsPlist ExportOptions.plist -exportPath Export
- name: Create disk image
working-directory: src/MaaMacGui
run: create-dmg --background dmg-bkg.png --window-size 500 300 --icon-size 128 --icon MAA.app 0 120 --hide-extension MAA.app --app-drop-link 270 120 MAA.dmg Export/MAA.app
run: create-dmg --background dmg-bkg.png --window-size 500 300 --icon-size 128 --icon MAA.app 0 120 --hide-extension MAA.app --app-drop-link 270 120 MAA-${{ matrix.arch }}.dmg Export/MAA.app
- name: Archive debug symbols
working-directory: src/MaaMacGui/MAA.xcarchive/dSYMs
run: ditto -c -k --keepParent MAA.app.dSYM MAA.app.dSYM.zip
run: ditto -c -k --keepParent MAA.app.dSYM MAA-${{ matrix.arch }}.app.dSYM.zip
- name: Place packages
run: |
GIT_TAG=${GITHUB_REF#refs/*/}
APP_DMG=MAA-${GIT_TAG}-macos-${{ matrix.arch }}.dmg
APP_SYM=MAAComponent-DebugSymbol-${GIT_TAG}-macos-${{ matrix.arch }}.zip
mkdir -p release
mv src/MaaMacGui/MAA-${{ matrix.arch }}.dmg release/${APP_DMG}
mv src/MaaMacGui/MAA.xcarchive/dSYMs/MAA-${{ matrix.arch }}.app.dSYM.zip release/${APP_SYM}
- name: Upload products
uses: actions/upload-artifact@v3
with:
name: MAA-macos
path: |
src/MaaMacGui/MAA.dmg
src/MaaMacGui/MAA.xcarchive/dSYMs/MAA.app.dSYM.zip
path: release
macos-release:
name: macos-release
@@ -61,25 +72,23 @@ jobs:
run: |
GIT_TAG=${GITHUB_REF#refs/*/}
echo "GIT_TAG=${GIT_TAG}" >> $GITHUB_ENV
echo "APP_DMG=MAA-${GIT_TAG}-macos.dmg" >> $GITHUB_ENV
echo "APP_SYM=MAAComponent-DebugSymbol-${GIT_TAG}-macos.zip" >> $GITHUB_ENV
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: MAA-macos
- name: 'Verify image'
run: |
mv MAA.dmg $APP_DMG
mv MAA.xcarchive/dSYMs/MAA.app.dSYM.zip $APP_SYM
hdiutil verify $APP_DMG
find . -name "*.dmg" -exec hdiutil verify {} \;
- name: 'Notarize image'
env:
NOTARY_USER: ${{ secrets.HGUANDL_NOTARY_AAPL_ID }}
NOTARY_PASSWD: ${{ secrets.HGUANDL_NOTARY_PASSWD }}
NOTARY_TEAM: ${{ secrets.HGUANDL_SIGN_IDENTITY }}
run: |
xcrun notarytool submit --apple-id "$NOTARY_USER" --password "$NOTARY_PASSWD" --team-id "$NOTARY_TEAM" --wait $APP_DMG
xcrun stapler staple $APP_DMG
find . -name "*.dmg" | while read dmg; do
xcrun notarytool submit --apple-id "$NOTARY_USER" --password "$NOTARY_PASSWD" --team-id "$NOTARY_TEAM" --wait ${dmg}
xcrun stapler staple ${dmg}
done
- name: Upload image to release
uses: svenstaro/upload-release-action@v2
with:

View File

@@ -17,10 +17,6 @@ set(CMAKE_INSTALL_RPATH "$ORIGIN/")
set(THIRD_PARTY_PATH ${CMAKE_CURRENT_BINARY_DIR}/third_libs)
include(${PROJECT_SOURCE_DIR}/cmake/utils.cmake)
if (APPLE)
include("${PROJECT_SOURCE_DIR}/cmake/macos.cmake")
endif ()
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -65,25 +61,18 @@ else ()
target_link_libraries(MaaCore range-v3::range-v3)
endif ()
if (APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 12.0)
message(STATUS "MAA_DEPS_PATH: ${MAA_DEPS_PATH}")
find_package(OpenCV REQUIRED PATHS ${MAA_DEPS_PATH})
target_link_libraries(MaaCore ${OpenCV_LIBS} ${FastDeploy_LIBS})
else ()
include(${PROJECT_SOURCE_DIR}/cmake/opencv.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/fastdeploy.cmake)
target_link_libraries(MaaCore ${DEPEND_LIBS})
include(${PROJECT_SOURCE_DIR}/cmake/opencv.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/fastdeploy.cmake)
target_link_libraries(MaaCore ${DEPEND_LIBS})
install(TARGETS MaaCore DESTINATION .)
if (INSTALL_PYTHON)
install(DIRECTORY src/Python DESTINATION .)
endif (INSTALL_PYTHON)
if (INSTALL_RESOURCE)
install(DIRECTORY resource DESTINATION .)
install(DIRECTORY 3rdparty/resource DESTINATION .)
endif (INSTALL_RESOURCE)
endif (APPLE)
install(TARGETS MaaCore DESTINATION .)
if (INSTALL_PYTHON)
install(DIRECTORY src/Python DESTINATION .)
endif (INSTALL_PYTHON)
if (INSTALL_RESOURCE)
install(DIRECTORY resource DESTINATION .)
install(DIRECTORY 3rdparty/resource DESTINATION .)
endif (INSTALL_RESOURCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -idirafter ${PROJECT_SOURCE_DIR}/3rdparty/include")
endif ()
@@ -93,22 +82,9 @@ if (BUILD_TEST)
target_link_libraries(test MaaCore)
endif (BUILD_TEST)
if (BUILD_XCFRAMEWORK)
add_custom_command(OUTPUT MaaCore.xcframework
COMMAND rm -rf MaaCore.xcframework
COMMAND xcodebuild -create-xcframework -library libMaaCore.dylib -headers ${PROJECT_SOURCE_DIR}/include -output MaaCore.xcframework
DEPENDS MaaCore
)
add_custom_command(OUTPUT Paddle2ONNX.xcframework
COMMAND rm -rf Paddle2ONNX.xcframework
COMMAND xcodebuild -create-xcframework -library ${MAA_DEPS_PATH}/lib/libpaddle2onnx.1.0.4.dylib -output Paddle2ONNX.xcframework
)
add_custom_target(MaaXCFramework ALL
DEPENDS MaaCore Paddle2ONNX.xcframework MaaCore.xcframework
)
endif (BUILD_XCFRAMEWORK)
if (APPLE)
include(${PROJECT_SOURCE_DIR}/cmake/macos.cmake)
endif (APPLE)
# define MAA_VERSION from git
if (NOT MAA_VERSION)

View File

@@ -6,13 +6,21 @@ set(FASTDEPLOY_TAG "g22325d23")
set(COMPRESSED_SUFFIX ".tar.gz")
if(UNIX)
set(FASTDEPLOY_FILENAME "FastDeploy-Linux")
set(FASTDEPLOY_CHECKSUM "b13891669242c6d219508ae99afba9fadde1ada4af9b3d5781298f58fef9bd34")
elseif(WIN32)
if(WIN32)
set(FASTDEPLOY_FILENAME "FastDeploy-Windows")
set(FASTDEPLOY_CHECKSUM "83e23fd701c828b8e15e38806db65cde71c4fbba3482ca1e24ba23c44fb19028")
endif(UNIX)
elseif(APPLE)
if (CURRENT_OSX_ARCH STREQUAL "arm64")
set(FASTDEPLOY_FILENAME "FastDeploy-macOS-arm64")
set(FASTDEPLOY_CHECKSUM "e77cd3382859165dddcf98d71f433b815345baa11b3c2b01ce16bb2141f78a8a")
else()
set(FASTDEPLOY_FILENAME "FastDeploy-macOS-x86_64")
set(FASTDEPLOY_CHECKSUM "7f1d5c4be83a479b819c33b094db5db565ae14c07bf0977b6a9b7a68d6b2a013")
endif()
else()
set(FASTDEPLOY_FILENAME "FastDeploy-Linux")
set(FASTDEPLOY_CHECKSUM "b13891669242c6d219508ae99afba9fadde1ada4af9b3d5781298f58fef9bd34")
endif(WIN32)
set(FASTDEPLOY_URL ${FASTDEPLOY_URL_PREFIX}/${FASTDEPLOY_TAG}/${FASTDEPLOY_FILENAME}${COMPRESSED_SUFFIX})
@@ -28,10 +36,14 @@ else ()
${THIRD_PARTY_PATH}/install/)
set(FASTDEPLOY_FILENAME fastdeploy)
set(FastDeploy_DIR ${THIRD_PARTY_PATH}/install/${FASTDEPLOY_FILENAME})
find_package(FastDeploy REQUIRED PATHS ${FastDeploy_DIR} NO_DEFAULT_PATH)
include_directories(${FastDeploy_INCLUDE_DIRS})
list(APPEND DEPEND_LIBS ${FastDeploy_LIBS})
if (APPLE)
list(APPEND DEPEND_LIBS ${FastDeploy_DIR}/lib/libfastdeploy.dylib)
else ()
find_package(FastDeploy REQUIRED PATHS ${FastDeploy_DIR} NO_DEFAULT_PATH)
include_directories(${FastDeploy_INCLUDE_DIRS})
list(APPEND DEPEND_LIBS ${FastDeploy_LIBS})
endif (APPLE)
endif (FASTDEPLOY_DIRECTORY)
if (INSTALL_THIRD_LIBS)

View File

@@ -1,47 +1,32 @@
set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0)
if (BUILD_XCFRAMEWORK)
add_custom_command(OUTPUT MaaCore.xcframework
COMMAND rm -rf MaaCore.xcframework
COMMAND xcodebuild -create-xcframework -library libMaaCore.dylib -headers ${PROJECT_SOURCE_DIR}/include -output MaaCore.xcframework
DEPENDS MaaCore
)
if (BUILD_UNIVERSAL)
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64")
endif ()
add_custom_command(OUTPUT OpenCV.xcframework
COMMAND rm -rf OpenCV.xcframework
COMMAND mv ${OPENCV_DIRECTORY}/lib/libopencv_world.4.5.3.dylib ${OPENCV_DIRECTORY}/lib/libopencv_world.4.5.dylib
COMMAND xcodebuild -create-xcframework -library ${OPENCV_DIRECTORY}/lib/libopencv_world.4.5.dylib -output OpenCV.xcframework
)
if (MAA_DEPS_PATH AND EXISTS ${MAA_DEPS_PATH})
message(STATUS "Using MAA_DEPS_PATH: ${MAA_DEPS_PATH}")
else ()
message(STATUS "MAA_DEPS_PATH not set, using default")
add_custom_command(OUTPUT ONNXRuntime.xcframework
COMMAND rm -rf ONNXRuntime.xcframework
COMMAND xcodebuild -create-xcframework -library ${FastDeploy_DIR}/third_libs/install/onnxruntime/lib/libonnxruntime.1.12.0.dylib -output ONNXRuntime.xcframework
)
include(FetchContent)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0135 NEW)
endif()
FetchContent_Declare(
MAA_DEPS
URL https://github.com/hguandl/maa-deps/releases/download/v20221204/maa-deps-macos-v20221204.tar.xz
URL_HASH SHA256=5e193f80a74d1591531bf7de5afccc21b8579fb3363a0b089198cb75fbf89df2)
FetchContent_MakeAvailable(MAA_DEPS)
add_custom_command(OUTPUT Paddle2ONNX.xcframework
COMMAND rm -rf Paddle2ONNX.xcframework
COMMAND xcodebuild -create-xcframework -library ${FastDeploy_DIR}/third_libs/install/paddle2onnx/lib/libpaddle2onnx.1.0.5.dylib -output Paddle2ONNX.xcframework
)
set(MAA_DEPS_PATH ${maa_deps_SOURCE_DIR} CACHE PATH "Path to maa-deps" FORCE)
endif ()
add_custom_command(OUTPUT FastDeploy.xcframework
COMMAND rm -rf FastDeploy.xcframework
COMMAND xcodebuild -create-xcframework -library ${FastDeploy_DIR}/lib/libfastdeploy.0.0.0.dylib -output FastDeploy.xcframework
)
set(FastDeploy_LIBS
"${MAA_DEPS_PATH}/lib/libfastdeploy.a"
"${MAA_DEPS_PATH}/lib/libonnxruntime_common.a"
"${MAA_DEPS_PATH}/lib/libonnxruntime_flatbuffers.a"
"${MAA_DEPS_PATH}/lib/libonnxruntime_framework.a"
"${MAA_DEPS_PATH}/lib/libonnxruntime_graph.a"
"${MAA_DEPS_PATH}/lib/libonnxruntime_mlas.a"
"${MAA_DEPS_PATH}/lib/libonnxruntime_optimizer.a"
"${MAA_DEPS_PATH}/lib/libonnxruntime_providers.a"
"${MAA_DEPS_PATH}/lib/libonnxruntime_session.a"
"${MAA_DEPS_PATH}/lib/libonnxruntime_util.a"
"${MAA_DEPS_PATH}/lib/libpaddle2onnx.1.0.4.dylib"
"${MAA_DEPS_PATH}/lib/libprotobuf.a"
"${MAA_DEPS_PATH}/lib/onnxruntime/external/libabsl_city.a"
"${MAA_DEPS_PATH}/lib/onnxruntime/external/libabsl_hash.a"
"${MAA_DEPS_PATH}/lib/onnxruntime/external/libabsl_low_level_hash.a"
"${MAA_DEPS_PATH}/lib/onnxruntime/external/libabsl_raw_hash_set.a"
"${MAA_DEPS_PATH}/lib/onnxruntime/external/libabsl_throw_delegate.a"
"${MAA_DEPS_PATH}/lib/onnxruntime/external/libnsync_cpp.a"
"${MAA_DEPS_PATH}/lib/onnxruntime/external/libonnx.a"
"${MAA_DEPS_PATH}/lib/onnxruntime/external/libonnx_proto.a"
"${MAA_DEPS_PATH}/lib/onnxruntime/external/libre2.a"
)
add_custom_target(MaaXCFramework ALL
DEPENDS MaaCore Paddle2ONNX.xcframework MaaCore.xcframework OpenCV.xcframework ONNXRuntime.xcframework FastDeploy.xcframework
)
endif (BUILD_XCFRAMEWORK)

View File

@@ -6,13 +6,21 @@ set(OPENCV_TAG "4.5.3")
set(COMPRESSED_SUFFIX ".tar.gz")
if(UNIX)
set(OPENCV_FILENAME "OpenCV-Linux")
set(OPENCV_CHECKSUM "edc4138456189c9e8bdf29114ad2be8ec152e8e31087d98e633f6cda59b141ea")
elseif(WIN32)
if(WIN32)
set(OPENCV_FILENAME "OpenCV-Windows")
set(OPENCV_CHECKSUM "bf736b243bbdaa020f139e4dfa1e4f15633f4ce7a8ad885524645e660de47a8b")
endif(UNIX)
elseif(APPLE)
if (CURRENT_OSX_ARCH STREQUAL "arm64")
set(OPENCV_FILENAME "OpenCV-macOS-arm64")
set(OPENCV_CHECKSUM "31beb633c033dd4ee789ffa50911c29c9580860f9a91f334f03d8aa9c85e9700")
else()
set(OPENCV_FILENAME "OpenCV-macOS-x86_64")
set(OPENCV_CHECKSUM "249c5c97cc52257b68d35acf499b1cf1037f5e6f3b40752f82ad5abe7884bea9")
endif()
else(UNIX)
set(OPENCV_FILENAME "OpenCV-Linux")
set(OPENCV_CHECKSUM "edc4138456189c9e8bdf29114ad2be8ec152e8e31087d98e633f6cda59b141ea")
endif(WIN32)
set(OPENCV_URL ${OPENCV_URL_PREFIX}/${OPENCV_TAG}/${OPENCV_FILENAME}${COMPRESSED_SUFFIX})

View File

@@ -13,3 +13,18 @@ function(download_and_decompress url filename sha256_checksum decompress_dir)
message("Decompress file ${filename} ...")
execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf ${filename} WORKING_DIRECTORY ${decompress_dir})
endfunction()
function(get_osx_architecture)
if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
set(CURRENT_OSX_ARCH "arm64" PARENT_SCOPE)
elseif(CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
set(CURRENT_OSX_ARCH "x86_64" PARENT_SCOPE)
else()
set(CURRENT_OSX_ARCH ${CMAKE_HOST_SYSTEM_PROCESSOR} PARENT_SCOPE)
endif()
endfunction()
if (APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 12.0)
get_osx_architecture()
endif (APPLE)