Build axTLS static libraries #1
This file contains hidden or 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 axTLS static libraries | |
| on: | |
| workflow_call: | |
| workflow_dispatch: | |
| push: | |
| branches: [ master ] | |
| paths: | |
| - axtls/** | |
| - .github/workflows/build-axtls.yml | |
| pull_request: | |
| branches: [ master ] | |
| paths: | |
| - axtls/** | |
| - .github/workflows/build-axtls.yml | |
| env: | |
| AXTLS_VERSION: 2.1.5 | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| jobs: | |
| build-linux: | |
| name: Build ${{ matrix.platform_arch }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - project: linux-amd64 | |
| runner: ubuntu-22.04 | |
| docker_platform: linux/amd64 | |
| platform_arch: linux/x86_64 | |
| use_qemu: false | |
| - project: linux-arm32v7 | |
| runner: ubuntu-22.04 | |
| docker_platform: linux/arm/v7 | |
| platform_arch: linux/armv7l | |
| use_qemu: true | |
| - project: linux-arm64 | |
| runner: ubuntu-22.04-arm | |
| docker_platform: linux/arm64 | |
| platform_arch: linux/aarch64 | |
| use_qemu: false | |
| runs-on: ${{ matrix.runner }} | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v6 | |
| - name: Allow multiarch | |
| if: ${{ matrix.use_qemu }} | |
| run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
| - name: Build static libraries | |
| run: | | |
| docker run \ | |
| --platform ${{ matrix.docker_platform }} \ | |
| -v "${PWD}:/sources" \ | |
| -w /sources \ | |
| -t totalcross/${{ matrix.project }}:v1.0.7 \ | |
| bash -lc " | |
| cmake --version && | |
| cmake -S /sources/axtls -B /sources/axtls/build/${{ matrix.project }} \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -G Ninja && | |
| cmake --build /sources/axtls/build/${{ matrix.project }} && | |
| cmake --install /sources/axtls/build/${{ matrix.project }} --prefix /sources/axtls/build/${{ matrix.project }}/install && | |
| bash /sources/axtls/scripts/package-artifact.sh \ | |
| /sources/axtls/build/${{ matrix.project }} \ | |
| /sources/axtls/build/${{ matrix.project }}/install \ | |
| ${{ matrix.platform_arch }} | |
| " | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: axtls-${{ matrix.project }} | |
| path: axtls/build/${{ matrix.project }}/axtls-*.tar.gz | |
| build-windows: | |
| name: Build windows/${{ matrix.arch }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - arch: x86 | |
| runner: windows-2022 | |
| cmake_platform: Win32 | |
| - arch: x64 | |
| runner: windows-2022 | |
| cmake_platform: x64 | |
| - arch: arm64 | |
| runner: windows-11-arm | |
| cmake_platform: ARM64 | |
| runs-on: ${{ matrix.runner }} | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v6 | |
| - name: Build static libraries | |
| shell: bash | |
| run: | | |
| cmake -S axtls -B axtls/build/windows-${{ matrix.arch }} \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -G "Visual Studio 17 2022" \ | |
| -A ${{ matrix.cmake_platform }} | |
| cmake --build axtls/build/windows-${{ matrix.arch }} --config Release | |
| cmake --install axtls/build/windows-${{ matrix.arch }} --config Release --prefix axtls/build/windows-${{ matrix.arch }}/install | |
| bash axtls/scripts/package-artifact.sh axtls/build/windows-${{ matrix.arch }} axtls/build/windows-${{ matrix.arch }}/install windows/${{ matrix.arch }} | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: axtls-windows-${{ matrix.arch }} | |
| path: axtls/build/windows-${{ matrix.arch }}/axtls-*.tar.gz | |
| build-android: | |
| name: Build android/arm64-v8a | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v6 | |
| - name: Setup Android SDK | |
| uses: android-actions/setup-android@v3 | |
| with: | |
| packages: '' | |
| - name: Install Android NDK | |
| run: sdkmanager "ndk;28.2.13676358" "cmake;3.22.1" | |
| - name: Build static libraries | |
| run: | | |
| cmake -S axtls -B axtls/build/android-arm64-v8a \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_TOOLCHAIN_FILE="${ANDROID_HOME}/ndk/28.2.13676358/build/cmake/android.toolchain.cmake" \ | |
| -DANDROID_ABI=arm64-v8a \ | |
| -DANDROID_PLATFORM=android-23 \ | |
| -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=OFF \ | |
| -G Ninja | |
| cmake --build axtls/build/android-arm64-v8a | |
| cmake --install axtls/build/android-arm64-v8a --prefix axtls/build/android-arm64-v8a/install | |
| bash axtls/scripts/package-artifact.sh axtls/build/android-arm64-v8a axtls/build/android-arm64-v8a/install android/arm64-v8a | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: axtls-android-arm64-v8a | |
| path: axtls/build/android-arm64-v8a/axtls-*.tar.gz | |
| build-apple: | |
| name: Build ${{ matrix.platform }}/${{ matrix.arch }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - platform: macos | |
| arch: arm64 | |
| build_dir: macos-arm64 | |
| cmake_generator: Ninja | |
| cmake_args: -DCMAKE_OSX_ARCHITECTURES=arm64 | |
| - platform: ios | |
| arch: arm64 | |
| build_dir: ios-arm64 | |
| cmake_generator: Xcode | |
| cmake_args: -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO | |
| - platform: ios-simulator | |
| arch: arm64 | |
| build_dir: ios-simulator-arm64 | |
| cmake_generator: Xcode | |
| cmake_args: -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO | |
| runs-on: macos-15 | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v6 | |
| - name: Build static libraries | |
| run: | | |
| cmake -S axtls -B axtls/build/${{ matrix.build_dir }} \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| ${{ matrix.cmake_args }} \ | |
| -G "${{ matrix.cmake_generator }}" | |
| cmake --build axtls/build/${{ matrix.build_dir }} --config Release | |
| cmake --install axtls/build/${{ matrix.build_dir }} --config Release --prefix axtls/build/${{ matrix.build_dir }}/install | |
| bash axtls/scripts/package-artifact.sh axtls/build/${{ matrix.build_dir }} axtls/build/${{ matrix.build_dir }}/install ${{ matrix.platform }}/${{ matrix.arch }} | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: axtls-${{ matrix.build_dir }} | |
| path: axtls/build/${{ matrix.build_dir }}/axtls-*.tar.gz | |
| package-ios: | |
| name: Package iOS XCFramework | |
| needs: build-apple | |
| runs-on: macos-15 | |
| steps: | |
| - name: Download iOS device artifact | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: axtls-ios-arm64 | |
| path: package-input/ios | |
| - name: Download iOS simulator artifact | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: axtls-ios-simulator-arm64 | |
| path: package-input/ios-simulator | |
| - name: Create XCFramework | |
| run: | | |
| mkdir -p package-work package-output | |
| tar -xzf package-input/ios/axtls-ios-arm64.tar.gz -C package-work | |
| tar -xzf package-input/ios-simulator/axtls-ios-simulator-arm64.tar.gz -C package-work | |
| device_root="${PWD}/package-work/axtls/ios/arm64" | |
| simulator_root="${PWD}/package-work/axtls/ios-simulator/arm64" | |
| if [ ! -f "${device_root}/lib/libaxtls.a" ] || [ ! -f "${simulator_root}/lib/libaxtls.a" ]; then | |
| echo "Unable to locate libaxtls.a in axTLS iOS artifacts" >&2 | |
| exit 1 | |
| fi | |
| mkdir -p package-output/ios package-output/ios-simulator | |
| device_lib="${device_root}/lib/libaxtls.a" | |
| simulator_lib="${simulator_root}/lib/libaxtls.a" | |
| if [ -z "${device_lib}" ] || [ -z "${simulator_lib}" ]; then | |
| echo "Unable to locate axTLS iOS static libraries" >&2 | |
| exit 1 | |
| fi | |
| xcodebuild -create-xcframework \ | |
| -library "${device_lib}" -headers "${device_root}/include" \ | |
| -library "${simulator_lib}" -headers "${simulator_root}/include" \ | |
| -output package-output/axtls-ios.xcframework | |
| cd package-output | |
| ditto -c -k --sequesterRsrc --keepParent axtls-ios.xcframework axtls-ios.xcframework.zip | |
| - name: Upload XCFramework artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: axtls-ios-xcframework | |
| path: package-output/axtls-ios.xcframework.zip |