262 lines
7.8 KiB
YAML
262 lines
7.8 KiB
YAML
name: qt-ci
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- main
|
|
- qt-*.*.x
|
|
tags:
|
|
- "qt-**"
|
|
paths:
|
|
- CMakeLists.txt
|
|
- ".github/actions/qt5-build/**"
|
|
- ".github/actions/qt6-build/**"
|
|
- ".github/workflows/qt-ci.yml"
|
|
- "bin/**"
|
|
- "expression-test/**"
|
|
- "include/**"
|
|
- "metrics/**"
|
|
- "platform/default/**"
|
|
- "platform/qt/**"
|
|
- "render-test/**"
|
|
- "scripts/**"
|
|
- "src/**"
|
|
- "test/**"
|
|
- "vendor/**"
|
|
- ".gitmodules"
|
|
- "!**/*.md"
|
|
|
|
pull_request:
|
|
branches:
|
|
- "*"
|
|
paths:
|
|
- CMakeLists.txt
|
|
- ".github/actions/qt5-build/**"
|
|
- ".github/actions/qt6-build/**"
|
|
- ".github/workflows/qt-ci.yml"
|
|
- "bin/**"
|
|
- "expression-test/**"
|
|
- "include/**"
|
|
- "metrics/**"
|
|
- "platform/default/**"
|
|
- "platform/qt/**"
|
|
- "render-test/**"
|
|
- "scripts/**"
|
|
- "src/**"
|
|
- "test/**"
|
|
- "vendor/**"
|
|
- ".gitmodules"
|
|
- "!**/*.md"
|
|
|
|
concurrency:
|
|
# cancel jobs on PRs only
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- name: Linux_GCC11
|
|
os: ubuntu-24.04
|
|
build_type: RelWithDebInfo
|
|
qt_version: 6.8.1
|
|
qt_target: desktop
|
|
compiler: ""
|
|
- name: Linux_GCC14
|
|
os: ubuntu-24.04
|
|
build_type: RelWithDebInfo
|
|
qt_version: 6.8.1
|
|
qt_target: desktop
|
|
compiler: "gcc-14"
|
|
- name: macOS
|
|
os: macos-14
|
|
build_type: RelWithDebInfo
|
|
qt_version: 6.8.1
|
|
qt_target: desktop
|
|
deployment_target: 12.0
|
|
deployment_arch: "x86_64;arm64"
|
|
compiler: ""
|
|
- name: macOS_LLVM
|
|
os: macos-14
|
|
build_type: RelWithDebInfo
|
|
qt_version: 6.8.1
|
|
qt_target: desktop
|
|
deployment_target: 12.0
|
|
deployment_arch: "arm64"
|
|
compiler: "llvm"
|
|
- name: win64_msvc2022
|
|
os: windows-2022
|
|
build_type: "RelWithDebInfo"
|
|
compiler_type: x64
|
|
qt_version: 6.8.1
|
|
qt_target: desktop
|
|
qt_arch: win64_msvc2022_64
|
|
qt_tools: ""
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
BUILD_TYPE: ${{ matrix.build_type }}
|
|
COMPILER_TYPE: ${{ matrix.compiler_type }}
|
|
DEPLOYMENT_TARGET: ${{ matrix.deployment_target }}
|
|
DEPLOYMENT_ARCH: ${{ matrix.deployment_arch }}
|
|
QT_VERSION: ${{ matrix.qt_version }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: source
|
|
fetch-depth: 0
|
|
submodules: true
|
|
|
|
- name: Install test dependencies
|
|
if: runner.os == 'Linux' && matrix.compiler != ''
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install \
|
|
libxkbcommon-x11-0 \
|
|
libxcb-cursor0 \
|
|
libxcb-icccm4 \
|
|
libxcb-image0 \
|
|
libxcb-keysyms1 \
|
|
libxcb-randr0 \
|
|
libxcb-render-util0 \
|
|
libxcb-xinerama0 \
|
|
libxcb-xfixes0 \
|
|
libegl1 \
|
|
fonts-noto-cjk
|
|
|
|
- name: Install compiler (Linux)
|
|
id: install_compiler
|
|
if: runner.os == 'Linux' && matrix.compiler != ''
|
|
uses: rlalik/setup-cpp-compiler@master
|
|
with:
|
|
compiler: ${{ matrix.compiler }}
|
|
|
|
- name: Setup compiler (Linux)
|
|
if: runner.os == 'Linux' && matrix.compiler != ''
|
|
env:
|
|
CC: ${{ steps.install_compiler.outputs.cc }}
|
|
CXX: ${{ steps.install_compiler.outputs.cxx }}
|
|
run: |
|
|
{
|
|
echo "CC=$CC"
|
|
echo "CXX=$CXX"
|
|
} >> "$GITHUB_ENV"
|
|
|
|
- name: Setup compiler (macOS)
|
|
if: runner.os == 'macOS' && matrix.compiler != ''
|
|
env:
|
|
MLN_COMPILER: ${{ matrix.compiler }}
|
|
run: |
|
|
# https://github.com/actions/runner-images/issues/8838#issuecomment-1817486924
|
|
brew link --overwrite python@3.12
|
|
brew install "$MLN_COMPILER"
|
|
echo "/opt/homebrew/opt/${MLN_COMPILER}/bin" >> "$GITHUB_PATH"
|
|
{
|
|
echo "CC=/opt/homebrew/opt/${MLN_COMPILER}/bin/clang"
|
|
echo "CXX=/opt/homebrew/opt/${MLN_COMPILER}/bin/clang++"
|
|
echo "LDFLAGS=\"-L/opt/homebrew/opt/${MLN_COMPILER}/lib\""
|
|
echo "CPPFLAGS=\"-I/opt/homebrew/opt/${MLN_COMPILER}/include\""
|
|
} >> "$GITHUB_ENV"
|
|
|
|
- name: Setup Xcode
|
|
if: runner.os == 'macOS'
|
|
uses: maxim-lobanov/setup-xcode@v1
|
|
with:
|
|
xcode-version: latest-stable
|
|
|
|
- name: Setup MSVC
|
|
if: matrix.qt_arch == 'win64_msvc2022_64'
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: ${{ matrix.compiler_type }}
|
|
|
|
- name: Setup ninja
|
|
uses: seanmiddleditch/gha-setup-ninja@v6
|
|
|
|
- name: Download Qt
|
|
uses: jurplel/install-qt-action@v4
|
|
with:
|
|
aqtversion: ==3.1.*
|
|
version: ${{ env.QT_VERSION }}
|
|
dir: ${{ github.workspace }}
|
|
target: ${{ matrix.qt_target }}
|
|
arch: ${{ matrix.qt_arch }}
|
|
tools: ${{ matrix.qt_tools }}
|
|
extra: --base https://mirrors.ocf.berkeley.edu/qt/
|
|
|
|
- name: Set up ccache
|
|
uses: hendrikmuhs/ccache-action@v1
|
|
with:
|
|
key: Qt_${{ matrix.name }}_${{ matrix.qt_version }}
|
|
max-size: 200M
|
|
|
|
- name: Build maplibre-native (macOS)
|
|
if: runner.os == 'macOS' && matrix.qt_target == 'desktop'
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake ../source/ \
|
|
-G Ninja \
|
|
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
|
|
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET="${DEPLOYMENT_TARGET}" \
|
|
-DCMAKE_OSX_ARCHITECTURES="${DEPLOYMENT_ARCH}" \
|
|
-DMLN_WITH_QT=ON
|
|
ninja
|
|
|
|
- name: Build maplibre-native (Linux, Qt6)
|
|
if: runner.os == 'Linux' && matrix.compiler == ''
|
|
uses: ./source/.github/actions/qt6-build
|
|
|
|
- name: Build maplibre-native (Linux, Qt6, custom compiler)
|
|
if: runner.os == 'Linux' && matrix.compiler != ''
|
|
run: |
|
|
mkdir build && cd build
|
|
qt-cmake ../source/ \
|
|
-G Ninja \
|
|
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
|
|
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
|
|
-DMLN_WITH_QT=ON
|
|
ninja
|
|
|
|
- name: Build maplibre-native (Linux, Qt6, custom compiler, internal libraries)
|
|
if: runner.os == 'Linux' && matrix.compiler != ''
|
|
run: |
|
|
mkdir build-internal && cd build-internal
|
|
qt-cmake ../source/ \
|
|
-G Ninja \
|
|
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
|
|
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
|
|
-DMLN_WITH_QT=ON \
|
|
-DMLN_QT_WITH_INTERNAL_ICU=ON \
|
|
-DMLN_QT_WITH_INTERNAL_SQLITE=ON
|
|
ninja
|
|
|
|
- name: Run tests (Linux)
|
|
if: runner.os == 'Linux' && matrix.compiler != ''
|
|
uses: coactions/setup-xvfb@v1
|
|
with:
|
|
run: ctest --output-on-failure
|
|
working-directory: build
|
|
|
|
- name: Build maplibre-native (Windows)
|
|
if: runner.os == 'Windows'
|
|
shell: bash
|
|
run: |
|
|
export PATH="$IQTA_TOOLS/$COMPILER_TYPE/bin:$PATH"
|
|
echo "$PATH"
|
|
mkdir build && cd build
|
|
cmake.exe ../source/ \
|
|
-G"Ninja Multi-Config" \
|
|
-DCMAKE_CONFIGURATION_TYPES="${BUILD_TYPE}" \
|
|
-DCMAKE_C_COMPILER_LAUNCHER="ccache.exe" \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache.exe" \
|
|
-DMLN_WITH_QT=ON
|
|
ninja.exe
|