camera: support multiple cameras within one instance #4308
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Test | |
on: | |
push: | |
branches: | |
- 'main' | |
tags: | |
- 'v*' | |
pull_request: | |
branches: | |
- '*' | |
jobs: | |
macOS: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.runner }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: macOS x64 | |
build-framework: OFF | |
runner: macos-13 | |
architecture: 'x64' | |
- name: macOS arm64 | |
build-framework: OFF | |
runner: macos-14 | |
architecture: 'arm64' | |
- name: macOS framework x64 | |
build-framework: ON | |
runner: macos-13 | |
architecture: 'x64' | |
- name: macOS framework arm64 | |
build-framework: ON | |
runner: macos-14 | |
architecture: 'arm64' | |
steps: | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- uses: actions/cache@v4 | |
id: cache | |
with: | |
path: ./build/macos/third_party/install | |
key: ${{ github.job }}-${{ matrix.name }}-${{ hashFiles('./third_party/**') }}-1 | |
- name: disable superbuild on cache hit | |
if: steps.cache.outputs.cache-hit == 'true' | |
run: echo "superbuild=-DSUPERBUILD=OFF" >> $GITHUB_ENV && echo "cmake_prefix_path=-DCMAKE_PREFIX_PATH=$(pwd)/build/macos/third_party/install" >> $GITHUB_ENV | |
- name: set SDKROOT value | |
run: echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV | |
- name: configure | |
run: cmake $superbuild $cmake_prefix_path -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=build/macos/install -DBUILD_MAVSDK_SERVER=ON -DBUILD_SHARED_LIBS=OFF -DMACOS_FRAMEWORK=${{ matrix.build-framework }} -DWERROR=ON -DENABLE_CPPTRACE=On -Bbuild/macos -H. -DASAN=ON | |
- name: build | |
run: cmake --build build/macos -j2 --target install | |
- name: unit tests | |
run: ./build/macos/src/unit_tests/unit_tests_runner | |
- name: set camera debugging | |
run: echo "MAVSDK_CAMERA_DEBUGGING=1" >> $GITHUB_ENV | |
- name: system tests | |
run: ./build/macos/src/system_tests/system_tests_runner | |
- name: test (mavsdk_server) | |
run: ./build/macos/src/mavsdk_server/test/unit_tests_mavsdk_server | |
- name: Upload framework as artefact | |
if: ${{ matrix.build-framework == 'ON' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: mavsdk_server_macos_${{ matrix.architecture }}.framework | |
path: ./build/macos/src/mavsdk_server/src/mavsdk_server.framework | |
retention-days: 2 | |
- name: Upload binary as artefact | |
if: ${{ matrix.build-framework == 'OFF' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: mavsdk_server_macos_${{ matrix.architecture }} | |
path: build/macos/install/bin/mavsdk_server | |
retention-days: 2 | |
- name: Publish mavsdk_server_macos to github release | |
if: ${{ startsWith(github.ref, 'refs/tags/v') && matrix.build-framework == 'OFF' }} | |
uses: svenstaro/upload-release-action@v1-release | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: build/macos/install/bin/mavsdk_server | |
asset_name: mavsdk_server_macos_${{ matrix.architecture }} | |
tag: ${{ github.ref }} | |
overwrite: true | |
iOS: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.runner }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: ios | |
platform: OS64 | |
sdk: iphoneos | |
runner: macos-14 | |
- name: ios_simulator_x64 | |
platform: SIMULATOR64 | |
sdk: iphonesimulator | |
runner: macos-13 | |
- name: ios_simulator_arm64 | |
platform: SIMULATORARM64 | |
sdk: iphonesimulator | |
runner: macos-14 | |
steps: | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
architecture: 'x64' | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- uses: actions/cache@v4 | |
id: cache | |
with: | |
path: ./build/${{ matrix.name }}/third_party/install | |
key: ${{ github.job }}-${{ matrix.name }}-${{ hashFiles('./third_party/**', './tools/ios.toolchain.cmake') }}-1 | |
- name: disable superbuild on cache hit | |
if: steps.cache.outputs.cache-hit == 'true' | |
run: echo "superbuild=-DSUPERBUILD=OFF" >> $GITHUB_ENV && echo "cmake_prefix_path=-DCMAKE_PREFIX_PATH=$(pwd)/build/${{ matrix.name }}/third_party/install" >> $GITHUB_ENV | |
- name: set SDK-related environment variables (for non-cmake deps) | |
run: | | |
echo "SDKROOT=$(xcrun --sdk ${{ matrix.sdk }} --show-sdk-path)" >> $GITHUB_ENV | |
- name: install pymavlink dependencies | |
run: | | |
python3 -m pip install --upgrade pip | |
python3 -m pip install wheel | |
python3 -m pip install future | |
- name: configure | |
run: cmake $superbuild $cmake_prefix_path -DENABLE_STRICT_TRY_COMPILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE=$(pwd)/tools/ios.toolchain.cmake -DENABLE_BITCODE=Off -DPLATFORM=${{ matrix.platform }} -DDEPLOYMENT_TARGET=14.0 -DBUILD_MAVSDK_SERVER=ON -DBUILD_SHARED_LIBS=OFF -DWERROR=ON -Bbuild/${{ matrix.name }} -H. | |
- name: build | |
run: cmake --build build/${{ matrix.name }} -j$(nproc) | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: mavsdk_server_${{ matrix.name }}.framework | |
path: ./build/${{ matrix.name }}/src/mavsdk_server/src/mavsdk_server.framework | |
retention-days: 2 | |
iOS-XCFramework: | |
name: iOS XCFramework | |
needs: [macOS, iOS] | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/download-artifact@v4 | |
with: | |
name: mavsdk_server_ios.framework | |
path: ./build/ios/src/mavsdk_server/src/mavsdk_server.framework | |
- uses: actions/download-artifact@v4 | |
with: | |
name: mavsdk_server_ios_simulator_x64.framework | |
path: ./build/ios_simulator_x64/src/mavsdk_server/src/mavsdk_server.framework | |
- uses: actions/download-artifact@v4 | |
with: | |
name: mavsdk_server_ios_simulator_arm64.framework | |
path: ./build/ios_simulator_arm64/src/mavsdk_server/src/mavsdk_server.framework | |
- uses: actions/download-artifact@v4 | |
with: | |
name: mavsdk_server_macos_x64.framework | |
path: ./build/macos_x64/src/mavsdk_server/src/mavsdk_server.framework | |
- uses: actions/download-artifact@v4 | |
with: | |
name: mavsdk_server_macos_arm64.framework | |
path: ./build/macos_arm64/src/mavsdk_server/src/mavsdk_server.framework | |
- name: Install tree | |
run: brew install tree | |
- name: Package | |
run: bash ./src/mavsdk_server/tools/package_mavsdk_server_framework.bash | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: mavsdk_server.xcframework | |
path: ./build/mavsdk_server.xcframework | |
retention-days: 2 | |
- name: Publish xcframework | |
if: startsWith(github.ref, 'refs/tags/v') | |
uses: svenstaro/upload-release-action@v1-release | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: 'build/mavsdk_server.xcframework.zip' | |
asset_name: 'mavsdk_server.xcframework.zip' | |
tag: ${{ github.ref }} | |
overwrite: true | |
- name: Publish xcframework checksum | |
if: startsWith(github.ref, 'refs/tags/v') | |
uses: svenstaro/upload-release-action@v1-release | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: 'build/mavsdk_server.xcframework.zip.sha256' | |
asset_name: 'mavsdk_server.xcframework.zip.sha256' | |
tag: ${{ github.ref }} | |
overwrite: true |