Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
266 lines
8.2 KiB
YAML
266 lines
8.2 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_GCC14
|
|
os: ubuntu-24.04
|
|
build_type: RelWithDebInfo
|
|
qt_version: 6.9.1
|
|
qt_target: desktop
|
|
compiler: "gcc-14"
|
|
- name: macOS
|
|
os: macos-14
|
|
build_type: RelWithDebInfo
|
|
qt_version: 6.9.1
|
|
qt_target: desktop
|
|
deployment_target: 12.0
|
|
deployment_arch: "x86_64;arm64"
|
|
compiler: ""
|
|
# disabled due to https://github.com/llvm/llvm-project/issues/77653
|
|
# https://github.com/maplibre/maplibre-native/pull/3879#issuecomment-3406495279
|
|
# - name: macOS_LLVM
|
|
# os: macos-14
|
|
# build_type: RelWithDebInfo
|
|
# qt_version: 6.9.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.9.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:
|
|
- if: runner.os == 'Windows'
|
|
run: git config --global core.longpaths true
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
|
|
with:
|
|
path: source
|
|
submodules: recursive
|
|
persist-credentials: false
|
|
|
|
- name: Install test dependencies
|
|
if: runner.os == 'Linux'
|
|
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'
|
|
uses: rlalik/setup-cpp-compiler@e312c52f6d9664049d97c75ab084c895d9733c0c # master
|
|
with:
|
|
compiler: ${{ matrix.compiler }}
|
|
|
|
- name: Setup compiler (Linux)
|
|
if: runner.os == 'Linux'
|
|
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@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
|
|
with:
|
|
xcode-version: latest-stable
|
|
|
|
- name: Setup MSVC
|
|
if: matrix.qt_arch == 'win64_msvc2022_64'
|
|
uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
|
|
with:
|
|
arch: ${{ matrix.compiler_type }}
|
|
|
|
- name: Setup ninja
|
|
uses: seanmiddleditch/gha-setup-ninja@3b1f8f94a2f8254bd26914c4ab9474d4f0015f67 # v6
|
|
|
|
- name: Download Qt
|
|
uses: jurplel/install-qt-action@d325aaf2a8baeeda41ad0b5d39f84a6af9bcf005 # v4.3.0
|
|
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@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
|
|
with:
|
|
key: Qt_${{ matrix.name }}_${{ matrix.qt_version }}
|
|
max-size: 200M
|
|
|
|
- name: Print cmake version
|
|
run: |
|
|
cmake --version
|
|
which cmake
|
|
|
|
- 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 \
|
|
-DMLN_WITH_OPENGL=ON
|
|
ninja
|
|
|
|
- name: Build maplibre-native (Linux, Qt6)
|
|
if: runner.os == 'Linux'
|
|
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 \
|
|
-DMLN_WITH_OPENGL=ON
|
|
ninja
|
|
|
|
- name: Build maplibre-native (Linux, Qt6, internal libraries)
|
|
if: runner.os == 'Linux'
|
|
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 \
|
|
-DMLN_WITH_OPENGL=ON
|
|
ninja
|
|
|
|
- name: Run tests (Linux)
|
|
if: runner.os == 'Linux'
|
|
uses: coactions/setup-xvfb@b6b4fcfb9f5a895edadc3bc76318fae0ac17c8b3 # v1.0.1
|
|
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 \
|
|
-DMLN_WITH_OPENGL=ON
|
|
ninja.exe
|