Skip to content

Use CMake 3.24.0+ for Android (#3065) #5125

Use CMake 3.24.0+ for Android (#3065)

Use CMake 3.24.0+ for Android (#3065) #5125

Workflow file for this run

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
os: ubuntu-22.04
build_type: RelWithDebInfo
qt_version: 5.15.2
qt_target: desktop
compiler: ""
- name: Linux
os: ubuntu-22.04
build_type: RelWithDebInfo
qt_version: 6.7.0
qt_target: desktop
compiler: ""
- name: Linux_GCC13
os: ubuntu-24.04
build_type: RelWithDebInfo
qt_version: 6.7.0
qt_target: desktop
compiler: "gcc-13"
- name: macOS
os: macos-13
build_type: RelWithDebInfo
qt_version: 5.15.2
qt_target: desktop
deployment_target: 10.15
deployment_arch: "x86_64"
compiler: ""
- name: macOS
os: macos-14
build_type: RelWithDebInfo
qt_version: 6.7.0
qt_target: desktop
deployment_target: 11.0
deployment_arch: "x86_64;arm64"
compiler: ""
- name: macOS_LLVM18
os: macos-14
build_type: RelWithDebInfo
qt_version: 6.7.0
qt_target: desktop
deployment_target: 11.0
deployment_arch: "arm64"
compiler: "llvm"
- name: win64_msvc2019
os: windows-2022
build_type: "RelWithDebInfo"
compiler_type: x64
compiler_version: 14.29
qt_version: 5.15.2
qt_target: desktop
qt_arch: win64_msvc2019_64
qt_tools: ""
- name: win64_msvc2019
os: windows-2022
build_type: "RelWithDebInfo"
compiler_type: x64
compiler_version: 14.29
qt_version: 6.7.0
qt_target: desktop
qt_arch: win64_msvc2019_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
- name: Setup submodules
shell: bash
run: |
cd source
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c core.longpaths=true -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 || 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
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_msvc2019_64'
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.compiler_type }}
toolset: ${{ matrix.compiler_version }}
- name: Setup ninja
uses: seanmiddleditch/gha-setup-ninja@v5
- 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: Update ccache
if: runner.os == 'Windows'
shell: bash
run: |
# version is pinned due to issues with caching MSVC in 4.8
choco.exe install ccache --version=4.7.5 --no-progress
ccache.exe --version
echo "CCACHE_CONFIGPATH=C:/Users/runneradmin/AppData/Roaming/ccache/ccache.conf" >> "$GITHUB_ENV"
- 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, Qt5)
if: runner.os == 'Linux' && matrix.qt_version == '5.15.2'
uses: ./source/.github/actions/qt5-build
- name: Build maplibre-native (Linux, Qt6)
if: runner.os == 'Linux' && matrix.qt_version != '5.15.2' && matrix.compiler == ''
uses: ./source/.github/actions/qt6-build
- name: Build maplibre-native (Linux, Qt6, custom compiler)
if: runner.os == 'Linux' && matrix.qt_version != '5.15.2' && 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.qt_version != '5.15.2' && 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.qt_version != '5.15.2' && 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