forked from kamailio/kamailio
-
Notifications
You must be signed in to change notification settings - Fork 0
72 lines (63 loc) · 2.99 KB
/
cmake_build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: CMake on multiple platforms
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false
# Set up a matrix to run the following 6 configurations:
# 1. <Linux, Release, latest GCC compiler toolchain on the default runner image, default generator>
# 2. <Linux, Release, latest Clang compiler toolchain on the default runner image, default generator>
# 3. <Linux, Release, latest GCC compiler toolchain on the default runner image, cross-compiled for aarch64>
# 4. <Linux, Release, latest Clang compiler toolchain on the default runner image, cross-compiled for aarch64>
# 5. <MacOS, Release, latest GCC compiler toolchain on the default runner image, default generator>
# 6. <MacOS, Release, latest Clang compiler toolchain on the default runner image, default generator>
matrix:
os: [ubuntu-latest, macos-latest]
# To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list.
build_type: [Release]
c_compiler: [gcc, clang]
kamailio_groups: [DEFAULT]
target_arch: [aarch64, x86_64]
exclude:
# Exclude combinations that are not supported
- os: macos-latest
target_arch: x86_64
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install cross-compiler
if: matrix.os == 'ubuntu-latest' && matrix.target_arch == 'aarch64'
run: |
sudo apt update
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- name: Build Project natively
uses: threeal/cmake-action@v2.1.0
# Step runs for all except this combination
if: matrix.os != 'ubuntu-latest' || matrix.target_arch != 'aarch64'
with:
build-dir: ${{github.workspace}}/build
build-args: -j8
options: |
CMAKE_BUILD_TYPE=${{matrix.build_type}}
MODULE_GROUP_NAME=${{matrix.kamailio_groups}}
CMAKE_C_COMPILER=${{matrix.c_compiler}}
- name: Build Project with cross-compiler
if: matrix.os == 'ubuntu-latest' && matrix.target_arch == 'aarch64'
uses: threeal/cmake-action@v2.1.0
with:
build-dir: ${{github.workspace}}/build
build-args: -j8
options: |
CMAKE_BUILD_TYPE=${{matrix.build_type}}
MODULE_GROUP_NAME=${{matrix.kamailio_groups}}
CMAKE_TOOLCHAIN_FILE=${{github.workspace}}/cmake/aarch64-toolchain.cmake