Skip to content

Commit

Permalink
Merge pull request #1268 from mavlink/macos-framework
Browse files Browse the repository at this point in the history
Add option to build macos framework
  • Loading branch information
JonasVautherin committed Nov 25, 2020
2 parents 5a6d5e3 + 4abae83 commit 0a556e5
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 9 deletions.
29 changes: 25 additions & 4 deletions .github/workflows/main.yml
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -420,20 +437,24 @@ 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
with:
name: mavsdk_server_ios.xcframework
name: mavsdk_server.xcframework
path: ./build/mavsdk_server.xcframework
retention-days: 2
- name: Publish artefacts
if: startsWith(github.ref, 'refs/tags/v')
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

Expand Down
6 changes: 3 additions & 3 deletions src/backend/src/CMakeLists.txt
Expand Up @@ -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})
Expand Down Expand Up @@ -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
Expand Down
8 changes: 6 additions & 2 deletions src/backend/tools/package_backend_framework.bash
Expand Up @@ -6,16 +6,20 @@ 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 -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 -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
zip -9 -r mavsdk_server.xcframework.zip mavsdk_server.xcframework

echo "Success! You will find the xcframework in ${BUILD_DIR}!"

0 comments on commit 0a556e5

Please sign in to comment.