Skip to content

Build axTLS static libraries #1

Build axTLS static libraries

Build axTLS static libraries #1

Workflow file for this run

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