From 20cc4d2bb03c483d5f3f9648c60e615c597c46bf Mon Sep 17 00:00:00 2001 From: Jonas Vautherin Date: Tue, 24 Nov 2020 16:44:22 +0100 Subject: [PATCH 1/2] Add option to build macos framework --- .github/workflows/main.yml | 23 ++++++++++++++++++- src/backend/src/CMakeLists.txt | 6 ++--- .../tools/package_backend_framework.bash | 6 ++++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 225e682413..b4935fd11a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -370,6 +370,23 @@ jobs: tag: ${{ github.ref }} overwrite: true + macOS-framework: + name: macOS-framework + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: configure + run: cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=build/release/install -DBUILD_BACKEND=ON -DBUILD_SHARED_LIBS=OFF -DMACOS_FRAMEWORK=ON -DWERROR=OFF -j 2 -Bbuild/macos -H. + - name: build + run: cmake --build build/macos -j 2 --target install + - uses: actions/upload-artifact@v2 + with: + name: mavsdk_server_macos.framework + path: ./build/macos/src/backend/src/mavsdk_server.framework + retention-days: 2 + iOS: name: iOS runs-on: macos-latest @@ -406,7 +423,7 @@ jobs: iOS-XCFramework: name: iOS XCFramework - needs: [iOS, iOS-Simulator] + needs: [macOS-framework, iOS, iOS-Simulator] runs-on: macos-latest steps: - uses: actions/checkout@v2 @@ -420,6 +437,10 @@ jobs: with: name: mavsdk_server_ios_simulator.framework path: ./build/ios_simulator/src/backend/src/mavsdk_server.framework + - uses: actions/download-artifact@v2 + with: + name: mavsdk_server_macos.framework + path: ./build/macos/src/backend/src/mavsdk_server.framework - name: Package run: bash ./src/backend/tools/package_backend_framework.bash - uses: actions/upload-artifact@v2 diff --git a/src/backend/src/CMakeLists.txt b/src/backend/src/CMakeLists.txt index 897d6ac77a..2d758a5bff 100644 --- a/src/backend/src/CMakeLists.txt +++ b/src/backend/src/CMakeLists.txt @@ -29,14 +29,14 @@ set(BACKEND_SOURCES grpc_server.cpp ) -if(IOS) +if(IOS OR (APPLE AND MACOS_FRAMEWORK)) set_property(SOURCE module.modulemap PROPERTY MACOSX_PACKAGE_LOCATION "Modules") list(APPEND BACKEND_SOURCES module.modulemap) endif() -if(IOS OR ANDROID) +if(IOS OR ANDROID OR (APPLE AND MACOS_FRAMEWORK)) add_library(mavsdk_server SHARED ${BACKEND_SOURCES}) else() add_library(mavsdk_server ${BACKEND_SOURCES}) @@ -116,7 +116,7 @@ if(NOT IOS AND NOT ANDROID) endif() # iOS builds mavsdk_server.framework -if(IOS) +if(IOS OR (APPLE AND MACOS_FRAMEWORK)) set_target_properties(mavsdk_server PROPERTIES FRAMEWORK TRUE BUILD_WITH_INSTALL_RPATH TRUE diff --git a/src/backend/tools/package_backend_framework.bash b/src/backend/tools/package_backend_framework.bash index 3a55a05dd3..2726eee457 100644 --- a/src/backend/tools/package_backend_framework.bash +++ b/src/backend/tools/package_backend_framework.bash @@ -6,14 +6,18 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BUILD_DIR=${SCRIPT_DIR}/../../../build IOS_BACKEND_DIR=${BUILD_DIR}/ios/src/backend/src IOS_SIM_BACKEND_DIR=${BUILD_DIR}/ios_simulator/src/backend/src +MACOS_BACKEND_DIR=${BUILD_DIR}/macos/src/backend/src if [ -d ${BUILD_DIR}/mavsdk_server.xcframework ]; then echo "${BUILD_DIR}/mavsdk_server.xcframework already exists! Aborting..." exit 1 fi +echo "Fixing Modules in macOS framework" +ln -s Versions/Current/Modules ${MACOS_BACKEND_DIR}/mavsdk_server.framework + echo "Creating xcframework..." -xcodebuild -create-xcframework -framework ${IOS_BACKEND_DIR}/mavsdk_server.framework -framework ${IOS_SIM_BACKEND_DIR}/mavsdk_server.framework -output ${BUILD_DIR}/mavsdk_server.xcframework +xcodebuild -create-xcframework -framework ${IOS_BACKEND_DIR}/mavsdk_server.framework -framework ${IOS_SIM_BACKEND_DIR}/mavsdk_server.framework -framework ${MACOS_BACKEND_DIR}/mavsdk_server.framework -output ${BUILD_DIR}/mavsdk_server.xcframework cd ${BUILD_DIR} zip -9 -r mavsdk_server.zip mavsdk_server.xcframework From 4abae83aa4d7daf8b76eca946723023de10f875f Mon Sep 17 00:00:00 2001 From: Jonas Vautherin Date: Tue, 24 Nov 2020 19:15:07 +0100 Subject: [PATCH 2/2] Artifact is now mavsdk_server.xcframework.zip instead of mavsdk_server_ios.zip --- .github/workflows/main.yml | 6 +++--- src/backend/tools/package_backend_framework.bash | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b4935fd11a..b09d19f918 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -445,7 +445,7 @@ jobs: run: bash ./src/backend/tools/package_backend_framework.bash - uses: actions/upload-artifact@v2 with: - name: mavsdk_server_ios.xcframework + name: mavsdk_server.xcframework path: ./build/mavsdk_server.xcframework retention-days: 2 - name: Publish artefacts @@ -453,8 +453,8 @@ jobs: uses: svenstaro/upload-release-action@v1-release with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: 'build/mavsdk_server.zip' - asset_name: 'mavsdk_server_ios.zip' + file: 'build/mavsdk_server.xcframework.zip' + asset_name: 'mavsdk_server.xcframework.zip' tag: ${{ github.ref }} overwrite: true diff --git a/src/backend/tools/package_backend_framework.bash b/src/backend/tools/package_backend_framework.bash index 2726eee457..1be13ad19c 100644 --- a/src/backend/tools/package_backend_framework.bash +++ b/src/backend/tools/package_backend_framework.bash @@ -14,12 +14,12 @@ if [ -d ${BUILD_DIR}/mavsdk_server.xcframework ]; then fi echo "Fixing Modules in macOS framework" -ln -s Versions/Current/Modules ${MACOS_BACKEND_DIR}/mavsdk_server.framework +ln -sf Versions/Current/Modules ${MACOS_BACKEND_DIR}/mavsdk_server.framework echo "Creating xcframework..." xcodebuild -create-xcframework -framework ${IOS_BACKEND_DIR}/mavsdk_server.framework -framework ${IOS_SIM_BACKEND_DIR}/mavsdk_server.framework -framework ${MACOS_BACKEND_DIR}/mavsdk_server.framework -output ${BUILD_DIR}/mavsdk_server.xcframework cd ${BUILD_DIR} -zip -9 -r mavsdk_server.zip mavsdk_server.xcframework +zip -9 -r mavsdk_server.xcframework.zip mavsdk_server.xcframework echo "Success! You will find the xcframework in ${BUILD_DIR}!"