From 67310538906eac080c338bf16e1890cd275a1f8d Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Sun, 11 Aug 2024 15:11:45 +0200 Subject: [PATCH] WIP: Attempt to build MCU binary packages --- .github/workflows/cpp_package.yaml | 101 ++++++++++++++++++++++++++++- api/cpp/CMakeLists.txt | 4 ++ 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cpp_package.yaml b/.github/workflows/cpp_package.yaml index fa629350fee..4676e64d5ab 100644 --- a/.github/workflows/cpp_package.yaml +++ b/.github/workflows/cpp_package.yaml @@ -11,9 +11,10 @@ env: MACOSX_DEPLOYMENT_TARGET: "11.0" # Keep in sync with features in nightly_snapshot.yaml, slint_tool_binary.yaml, api/node/Cargo.toml, and api/python/Cargo.toml SLINT_BINARY_FEATURES: "-DSLINT_FEATURE_BACKEND_LINUXKMS_NOSEAT=ON -DSLINT_FEATURE_BACKEND_WINIT=ON -DSLINT_FEATURE_RENDERER_FEMTOVG=ON -DSLINT_FEATURE_RENDERER_SKIA=ON -DSLINT_FEATURE_RENDERER_SOFTWARE=ON" + SLINT_MCU_FEATURES: "-DSLINT_FEATURE_FREESTANDING=ON -DSLINT_FEATURE_RENDERER_SOFTWARE=ON" jobs: - cmake_package: + cmake_package_desktop: env: DYLD_FRAMEWORK_PATH: /Users/runner/work/slint/Qt/6.5.1/clang_64/lib QT_QPA_PLATFORM: offscreen @@ -70,3 +71,101 @@ jobs: with: name: cpp_bin-${{ matrix.package_suffix }} path: ${{ runner.workspace }}/cppbuild/Slint-cpp-* + + cmake_package_mcu: + env: + CARGO_INCREMENTAL: false + strategy: + matrix: + target: [thumbv7em-none-eabihf] + host: [ubuntu-20.04, windows-2022, macOS-12] + + runs-on: ${{ matrix.host }} + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/install-linux-dependencies + with: + old-ubuntu: true + - uses: ./.github/actions/setup-rust + - uses: baptiste0928/cargo-install@v3 + with: + crate: cargo-about + - name: Prepare licenses + run: bash -x ../../scripts/prepare_binary_package.sh ../.. + working-directory: api/cpp/ + - uses: ilammy/msvc-dev-cmd@v1 + - name: Select MSVC (windows) + run: | + echo "CC=cl.exe" >> $GITHUB_ENV + echo "CXX=cl.exe" >> $GITHUB_ENV + if: matrix.host == 'windows-2022' + - name: C++ Build + uses: lukka/run-cmake@v3.4 + with: + cmakeListsOrSettingsJson: CMakeListsTxtAdvanced + cmakeListsTxtPath: CMakeLists.txt + cmakeAppendedArgs: "-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DRust_CARGO_TARGET=${{ matrix.target }} ${{ env.SLINT_MCU_FEATURES }} ${{ matrix.build_flags }}" + buildDirectory: ${{ runner.workspace }}/cppbuild + buildWithCMakeArgs: "--config Release" + - name: cpack + working-directory: ${{ runner.workspace }}/cppbuild + run: cpack -G TGZ + - name: "Upload C++ packages" + uses: actions/upload-artifact@v4 + with: + name: cpp_mcu_bin-${{ runner.os }}-${{ runner.arch }}-${{ matrix.target }} + path: ${{ runner.workspace }}/cppbuild/Slint-cpp-* + + cmake_package_mcu_esp: + env: + CARGO_INCREMENTAL: false + strategy: + matrix: + target: [riscv32imafc-esp-espidf] + host: [ubuntu-22.04, windows-2022] #, macOS-12] + + runs-on: ${{ matrix.host }} + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/install-linux-dependencies + with: + old-ubuntu: true + - uses: dtolnay/rust-toolchain@stable + - name: install espup + run: | + cargo install espup + espup install + rustup default esp + - name: add esp toolchains to PATH + if: runner.os == 'Linux' + run: | + source "$HOME/export-esp.sh" + echo "$PATH" >> "$GITHUB_PATH" + - uses: baptiste0928/cargo-install@v3 + with: + crate: cargo-about + - name: Prepare licenses + run: bash -x ../../scripts/prepare_binary_package.sh ../.. + working-directory: api/cpp/ + - uses: ilammy/msvc-dev-cmd@v1 + - name: Select MSVC (windows) + run: | + echo "CC=cl.exe" >> $GITHUB_ENV + echo "CXX=cl.exe" >> $GITHUB_ENV + if: matrix.host == 'windows-2022' + - name: C++ Build + uses: lukka/run-cmake@v3.4 + with: + cmakeListsOrSettingsJson: CMakeListsTxtAdvanced + cmakeListsTxtPath: CMakeLists.txt + cmakeAppendedArgs: "-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DRust_CARGO_TARGET=${{ matrix.target }} -DSLINT_LIBRARY_CARGO_FLAGS='-Zbuild-std=core,alloc' ${{ env.SLINT_MCU_FEATURES }} ${{ matrix.build_flags }}" + buildDirectory: ${{ runner.workspace }}/cppbuild + buildWithCMakeArgs: "--config Release" + - name: cpack + working-directory: ${{ runner.workspace }}/cppbuild + run: cpack -G TGZ + - name: "Upload C++ packages" + uses: actions/upload-artifact@v4 + with: + name: cpp_mcu_bin-${{ runner.os }}-${{ runner.arch }}-${{ matrix.target }} + path: ${{ runner.workspace }}/cppbuild/Slint-cpp-* diff --git a/api/cpp/CMakeLists.txt b/api/cpp/CMakeLists.txt index f60a171acd3..2b6a680a785 100644 --- a/api/cpp/CMakeLists.txt +++ b/api/cpp/CMakeLists.txt @@ -475,6 +475,10 @@ else() set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") endif() +if (Rust_CARGO_TARGET) + set(CPACK_SYSTEM_NAME "${CPACK_SYSTEM_NAME}-${Rust_CARGO_TARGET}") +endif() + include(CPack) if(SLINT_BUILD_TESTING)