diff --git a/.github/workflows/dev-build-mac.yml b/.github/workflows/dev-build-mac.yml index 3f08857d5f..93dc3ccd81 100644 --- a/.github/workflows/dev-build-mac.yml +++ b/.github/workflows/dev-build-mac.yml @@ -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 diff --git a/.github/workflows/release-maa-mac.yml b/.github/workflows/release-maa-mac.yml index dfcf59744a..9626366e53 100644 --- a/.github/workflows/release-maa-mac.yml +++ b/.github/workflows/release-maa-mac.yml @@ -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: diff --git a/CMakeLists.txt b/CMakeLists.txt index 983f50d9be..4f58ddbb51 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/cmake/fastdeploy.cmake b/cmake/fastdeploy.cmake index 953266a6a3..329fd97f66 100644 --- a/cmake/fastdeploy.cmake +++ b/cmake/fastdeploy.cmake @@ -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) diff --git a/cmake/macos.cmake b/cmake/macos.cmake index bf5d596bd4..bf6a12e6fd 100644 --- a/cmake/macos.cmake +++ b/cmake/macos.cmake @@ -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) diff --git a/cmake/opencv.cmake b/cmake/opencv.cmake index 63553c75f7..5786a976e5 100644 --- a/cmake/opencv.cmake +++ b/cmake/opencv.cmake @@ -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}) diff --git a/cmake/utils.cmake b/cmake/utils.cmake index 349aa4f517..10be63281c 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -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) diff --git a/src/MaaMacGui b/src/MaaMacGui index 32fb20c0b9..32498915a5 160000 --- a/src/MaaMacGui +++ b/src/MaaMacGui @@ -1 +1 @@ -Subproject commit 32fb20c0b9826642f3ffb67707daf2c10e20f45b +Subproject commit 32498915a599cd7f72b9ed1ab95545aec00c3225