Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
4bf59f3
Initial build for macos and ios
tomasMizera Apr 22, 2026
c21c512
Fix Bluetooth model syntax
tomasMizera Apr 23, 2026
0b8bad0
Merge branch 'master' into dev/qt-6.10.2
tomasMizera Apr 24, 2026
66dc38c
Update QGIS to 3.44.10
Withalion May 5, 2026
f17dd94
Format cmake files
Withalion May 5, 2026
3f34c4d
Fix failing Linux build
Withalion May 5, 2026
8ce1b4d
Add log to Linux CI
Withalion May 6, 2026
4dcf10b
Install mono on linux CI
Withalion May 6, 2026
1d840ae
Remove mono from deleted packages
Withalion May 6, 2026
ec847f5
Remove debug output from Linux CI
Withalion May 6, 2026
d8b6c0f
Update Geodiff to 2.2.0
Withalion May 6, 2026
e559e45
Fix nuget for Linux CI again
Withalion May 6, 2026
12a2941
Reintroduce Geodiff warning flag
Withalion May 6, 2026
75e6bce
Update runner versions and cmake minor version
Withalion May 6, 2026
4b20cb7
Update xCode version to 26.4.1
Withalion May 6, 2026
bbc1837
Remove deployment target for apple builds
Withalion May 6, 2026
163a6be
Fix dep install on Linux CI
Withalion May 6, 2026
6b46aa3
Update or remove manual versions of Qt in CI
Withalion May 6, 2026
e569978
Remove unused env var in Gallery CI
Withalion May 6, 2026
bd34808
Fix missing mono package on newer Ubuntu
Withalion May 6, 2026
9be20a0
Return xvfb package on Linux CI
Withalion May 6, 2026
9116011
Wrap geodiff compilation flag to apple only
Withalion May 6, 2026
3073b68
Add package for libxcrypt
Withalion May 6, 2026
c96bcad
Update signing certs for iOS
Withalion May 6, 2026
ce76cc3
Another try to fix iOS certs
Withalion May 6, 2026
93e5948
Fix iOS signing cert
Withalion May 7, 2026
5ce46a9
Format geodiff port
Withalion May 7, 2026
b627e9b
Update QtDeclarative to 6.10.3
Withalion May 7, 2026
8a3cf92
Remove QtKeychain overlay port
Withalion May 7, 2026
2aeb487
Update cmake info in INSTALL.md
Withalion May 7, 2026
62eb6f7
Remove QtMultimedia overlay port, use VCPKG default
Withalion May 7, 2026
e1a184d
Update QtPositioning to 6.10.3
Withalion May 7, 2026
c2225a7
Remove GStreamer overlay port and use VCPKG default
Withalion May 7, 2026
6002d80
Remove libb2 overlay port, vcpkg bug should be fixed now
Withalion May 7, 2026
e3957b4
Update libiconv overlay port to match VCPKG port
Withalion May 7, 2026
619338d
Add LibSpatialIndex port info to README
Withalion May 7, 2026
b274f0b
Remove unused qca patches, update README
Withalion May 7, 2026
392e935
Remove libspatialindex overlay port & pin version in vcpkg.json
Withalion May 7, 2026
625c38e
Remove qtbase overlay port in place of VCPKG default port
Withalion May 7, 2026
98929a0
Add wayland support for linux build
Withalion May 7, 2026
d53b569
Update xcode in Android CI
Withalion May 7, 2026
c6bf02b
Update cmake version in CI to match used by VCPKG
Withalion May 7, 2026
87c2fa8
Add wayland packages for linux build
Withalion May 8, 2026
74dfc75
Add pcre2 port to fix android linker error
Withalion May 11, 2026
9bb6235
Update android CI
Withalion May 11, 2026
e964458
Update Android setup based on Qt 6.10
Withalion May 11, 2026
d64f4df
Fix Android build issues
Withalion May 11, 2026
a5a50f1
Format cmake
Withalion May 11, 2026
c986fd9
Fix Android ARMv7 build
Withalion May 12, 2026
d339f5f
WIP fixed safe area rendering on iOS and cmake configuration for andr…
gabriel-bolbotina May 12, 2026
492d9eb
Add libpq port for iOS
Withalion May 12, 2026
35c5c4a
Fix another libpq issue on iOS
Withalion May 12, 2026
f552d78
Fix iOS build arg for make in VCPKG
Withalion May 12, 2026
6792688
Remove libiconv port
Withalion May 12, 2026
9ee3a0a
Fix qtpositioning patches for windows
Withalion May 13, 2026
2af2739
Fix qgis patches for Windows
Withalion May 13, 2026
56bee7d
Add fix for windows build failing on lazperf
Withalion May 14, 2026
cc4964d
Amend last windows fix to target only windows
Withalion May 14, 2026
33049c3
Fix local ios VCPKG build failing on race condition
Withalion May 14, 2026
2282047
Fix qtmultimedia build on iOS
Withalion May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .github/secrets/ios/Certificates_ios_dist.p12.gpg
Binary file not shown.
Binary file not shown.
19 changes: 10 additions & 9 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,19 @@ jobs:
ANDROID_ABI: 'arm64-v8a'
BUILD_OFFSET: 50

runs-on: macos-15
runs-on: macos-26
env:
NDK_VERSION: 'r27' # '27.2.12479018'
NDK_VERSION_FULL: r27c
JDK_VERSION: 17
SDK_PLATFORM: android-35
ANDROIDAPI: 24
SDK_PLATFORM: android-36
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
SDK_BUILD_TOOLS: 34.0.0
CMAKE_VERSION: '3.31.6'
SDK_BUILD_TOOLS: 36.0.0
CMAKE_VERSION: '4.3.2'
QT_ANDROID_KEYSTORE_ALIAS: input
QT_ANDROID_KEYSTORE_KEY_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }}
QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }}
XC_VERSION: ${{ '16.2' }}
XC_VERSION: ${{ '26.4.1' }}
VCPKG_ROOT: '${{ github.workspace }}/vcpkg'
LC_ALL: 'en_US.UTF-8' #fastlane
LANG: 'en_US.UTF-8' #fastlane
Expand Down Expand Up @@ -97,7 +96,7 @@ jobs:
cmakeVersion: ${{ env.CMAKE_VERSION }}

- name: Setup XCode
uses: maxim-lobanov/setup-xcode@v1.6.0
uses: maxim-lobanov/setup-xcode@v1.7.0
with:
xcode-version: ${{ env.XC_VERSION }}

Expand Down Expand Up @@ -126,13 +125,15 @@ jobs:
add-to-path: true

- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v5
with:
java-version: ${{ env.JDK_VERSION }}
distribution: zulu

- name: Setup Android SDK
uses: malinskiy/action-android/install-sdk@release/0.1.7
uses: android-actions/setup-android@v4
with:
packages: ''

- name: Install Android Tools
run: |
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/code_style.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@ on:
types:
- published

env:
QT_VERSION: '6.8.3' # use scripts/update_qt_version.bash to change
CACHE_VERSION: 0

jobs:
code_style_cpp:
name: C++ code convention check
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/gallery.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,14 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-15, windows-2022]
os: [ubuntu-latest, macos-26, windows-latest]
runs-on: ${{ matrix.os }}
env:
QT_VERSION: '6.8.3' # use scripts/update_qt_version.bash to change
QT_VERSION: '6.10.3'
GITHUB_TOKEN: ${{ secrets.INPUTAPP_BOT_GITHUB_TOKEN }}
CACHE_VERSION: 1
XC_VERSION: ${{ '16.2' }} # macos-only
XC_VERSION: ${{ '26.4.1' }} # macos-only
VS_VERSION: "2022" # win-only
QT_ARCH: "win64_msvc2022_64" # win-only

steps:
- uses: actions/checkout@v6
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/i18n.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate '))
runs-on: ubuntu-latest
env:
QT_VERSION: '6.8.3' # use scripts/update_qt_version.bash to change
QT_VERSION: '6.10.3'
steps:

- uses: actions/checkout@v6
Expand Down
12 changes: 5 additions & 7 deletions .github/workflows/ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,13 @@ on:
- published

env:
CMAKE_VERSION: '3.31.6'
CMAKE_VERSION: '4.3.2'
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
VCPKG_ROOT: '${{ github.workspace }}/vcpkg'
XC_VERSION: ${{ '16.4' }}
DEPLOYMENT_TARGET: '14.0'
XC_VERSION: ${{ '26.4.1' }}
TRIPLET: arm64-ios
IOS_PROVISIONING_PROFILE_UUID: 59aaa8d7-516a-4592-8c58-d7d1c1f81610
KEYCHAIN: ${{ 'inputapp.keychain' }}
KEYCHAIN: ${{ 'mmapp.keychain' }}

concurrency:
group: ci-${{github.ref}}-ios
Expand All @@ -36,7 +35,7 @@ concurrency:
jobs:
ios_build:
if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate '))
runs-on: macos-15
runs-on: macos-26
steps:
- name: Checkout
uses: actions/checkout@v6
Expand All @@ -57,7 +56,7 @@ jobs:
cmakeVersion: ${{ env.CMAKE_VERSION }}

- name: Setup XCode
uses: maxim-lobanov/setup-xcode@v1.6.0
uses: maxim-lobanov/setup-xcode@v1.7.0
with:
xcode-version: ${{ env.XC_VERSION }}

Expand Down Expand Up @@ -163,7 +162,6 @@ jobs:
-D CMAKE_CXX_VISIBILITY_PRESET=hidden \
-D CMAKE_SYSTEM_NAME=iOS \
-D CMAKE_SYSTEM_PROCESSOR=aarch64 \
-D CMAKE_OSX_DEPLOYMENT_TARGET=${{ env.DEPLOYMENT_TARGET }} \
-DIOS=TRUE \
-DUSE_MM_SERVER_API_KEY=TRUE \
-DUSE_KEYCHAIN=No \
Expand Down
17 changes: 10 additions & 7 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ on:
- published

env:
CMAKE_VERSION: '3.31.6'
CMAKE_VERSION: '4.3.2'
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
VCPKG_ROOT: "${{ github.workspace }}/vcpkg"
TRIPLET: x64-linux
Expand All @@ -32,7 +32,7 @@ concurrency:
jobs:
linux_build:
if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate '))
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
Expand All @@ -47,10 +47,11 @@ jobs:
sudo apt-get update -y

sudo apt-get install -y \
gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa libegl1-mesa-dev \
gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa-dev \
libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev \
autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2 \
bison flex lcov nasm libxrandr-dev xvfb
autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2t64 \
lcov nasm libxrandr-dev mono-complete xvfb libltdl-dev libwayland-dev libwayland-egl-backend-dev \
wayland-protocols

# Required to run unit tests on linux
echo "QT_QPA_PLATFORM=offscreen" >> $GITHUB_ENV
Expand Down Expand Up @@ -95,15 +96,17 @@ jobs:
- name: Setup NuGet Credentials
shell: bash
run: |
mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | tail -n 1` \
${{ env.VCPKG_ROOT }}/vcpkg fetch nuget

mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | head -n 1` \
sources add \
-source "https://nuget.pkg.github.com/merginmaps/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "mergin-maps-bot" \
-password "${{ secrets.MERGIN_MAPS_BOT_GITHUB_TOKEN }}"

mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | tail -n 1` \
mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | head -n 1` \
setapikey "${{ secrets.MERGIN_MAPS_BOT_GITHUB_TOKEN }}" \
-source "https://nuget.pkg.github.com/merginmaps/index.json"

Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,10 @@ on:
- published

env:
CMAKE_VERSION: '3.31.6'
CMAKE_VERSION: '4.3.2'
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
VCPKG_ROOT: '${{ github.workspace }}/vcpkg'
XC_VERSION: ${{ '16.4' }}
DEPLOYMENT_TARGET: '11.0'
XC_VERSION: ${{ '26.4.1' }}
TRIPLET: arm64-osx

concurrency:
Expand All @@ -33,7 +32,7 @@ concurrency:
jobs:
macos_build:
if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate '))
runs-on: macos-15
runs-on: macos-26
steps:
- name: Checkout
uses: actions/checkout@v6
Expand All @@ -54,7 +53,7 @@ jobs:
cmakeVersion: ${{ env.CMAKE_VERSION }}

- name: Setup XCode
uses: maxim-lobanov/setup-xcode@v1.6.0
uses: maxim-lobanov/setup-xcode@v1.7.0
with:
xcode-version: ${{ env.XC_VERSION }}

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/win.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ concurrency:
jobs:
win64_build:
if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate '))
runs-on: windows-2022
runs-on: windows-2025

env:
VS_VERSION: "2022"
# we can't reference other variables within, so make sure the year in path is same as VS_VERSION
VCINSTALLDIR: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/"
CMAKE_VERSION: '3.31.6'
CMAKE_VERSION: '4.3.2'
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
TRIPLET: x64-windows
CMAKE_GENERATOR: "Visual Studio 17 2022" # see https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md
Expand Down
18 changes: 12 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ if (ANDROID_ABI)
set(ANDROID_ARM_NEON ON)

# Target/Minimum API levels for Android, used as MerginMaps target properties
set(MM_ANDROID_TARGET_SDK_VERSION "35")
set(MM_ANDROID_TARGET_SDK_VERSION "36")
set(MM_ANDROID_MIN_SDK_VERSION "${ANDROIDAPI}")
set(MM_ANDROID_NDK_PATH "$ENV{ANDROID_NDK_HOME}")
if (NOT MM_ANDROID_NDK_PATH)
Expand Down Expand Up @@ -182,13 +182,19 @@ find_package(
REQUIRED
)

# Qt by default assumes that cmake files live in `lib/cmake`. Point to `share` instead.
# See
# https://github.com/qt/qtbase/blob/39290c508e2c7fa816c6f79b3eb284adc0cad3c0/src/corelib/Qt6AndroidMacros.cmake#L1016C16-L1026
if (ANDROID)
get_filename_component(
QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI} "${Qt6_DIR}/.." ABSOLUTE
# Android requires access to private headers for AndroidUtils
find_package(
Qt6
COMPONENTS CorePrivate
REQUIRED
)

# Qt by default assumes that cmake files live in `lib/cmake`. Point to `share` instead.
# See
# https://github.com/qt/qtbase/blob/7ddbc87d8e14ce51d2957ea72d0a6077593d5ff4/src/corelib/Qt6AndroidMacros.cmake#L1281-L1296
cmake_path(SET QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI} "${Qt6_DIR}/..")
cmake_path(ABSOLUTE_PATH QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI} NORMALIZE)
message(
STATUS
"QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI}: ${QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI}}"
Expand Down
9 changes: 2 additions & 7 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ Steps to build and run mobile app:
bison flex lcov nasm libxrandr-dev xvfb
```

Also install CMake 3.x, Ninja and ccache
Also install CMake, Ninja and ccache

2. Install vcpkg and checkout to correct version from file `VCPKG_BASELINE`
Read [vcpkg](#vcpkg) section.
Expand Down Expand Up @@ -426,7 +426,7 @@ mobile app for Android on Windows, please help us to update this section.

1. Setup development environment
- XCode
- install deps, see requirements in `.github/workflows/ios.yml`. Most specifically cmake 3.x, ninja, bison and flex (on PATH)
- install deps, see requirements in `.github/workflows/ios.yml`. Most specifically cmake, ninja, bison and flex (on PATH)
- if you want to build for production, you need development certificates. These are not needed for local development, signing is handled automatically (see IOS_USE_PRODUCTION_SIGNING cmake variable for more info). You can get the certificates by following:
- Get device UDID: either iTunes or about this mac->system report->USB->find iPAD (Serial Number)
- Create dev iOS certificate for development
Expand Down Expand Up @@ -506,12 +506,7 @@ Once the project is opened, build it from Xcode.
```
brew install cmake automake bison flex gnu-sed autoconf-archive libtool ninja pkg-config
```
install cmake 3.x

Note:
- cmake 4.0.1 is broken (empty -isysroot)
- TODO test with cmake 4.0.3 which is today's

2. Install vcpkg and checkout to correct version from file `VCPKG_BASELINE`
Read [vcpkg](#vcpkg) section.

Expand Down
2 changes: 1 addition & 1 deletion VCPKG_BASELINE
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d6995a0cf3cafda5e9e52749fad075dd62bfd90c
a78b96b07eb590c59bde5db0f4b260bda45ba92d
6 changes: 5 additions & 1 deletion app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,7 @@ if (IOS)
PROPERTIES XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER
"LutraConsultingLtd.Input.AppStore"
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY
"iPhone Distribution: LUTRA CONSULTING LIMITED (79QMH2QRAH)"
"Apple Distribution: LUTRA CONSULTING LIMITED (79QMH2QRAH)"
XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Manual"
)
message(STATUS "Using manual code sign with production certificate")
Expand Down Expand Up @@ -484,6 +484,10 @@ target_link_libraries(
Qt6::Widgets
)

if (ANDROID)
target_link_libraries(MerginMaps PRIVATE Qt6::CorePrivate)
endif ()

if (HAVE_BLUETOOTH)
target_link_libraries(MerginMaps PUBLIC Qt6::Bluetooth)
endif ()
Expand Down
34 changes: 0 additions & 34 deletions app/androidutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,40 +186,6 @@ QString AndroidUtils::getDeviceModel()
return deviceModel;
}

QVector<int> AndroidUtils::getSafeArea()
{
QVector<int> ret;

#ifdef ANDROID
const auto activity = QJniObject( QNativeInterface::QAndroidApplication::context() );
const auto safeArrayStringObj = activity.callMethod<jintArray>( "getSafeArea", "()Ljava/lang/String;" );

if ( safeArrayStringObj.isValid() )
{
const QString safeArrayString = safeArrayStringObj.toString();

QStringList stringParts = safeArrayString.split( "," );
if ( stringParts.length() != 4 )
{
CoreUtils::log( "SafeArea", "Android returned malformed string from getSafeArea method" );
return ret;
}

const int top = stringParts[0].toInt(); // top inset
const int right = stringParts[1].toInt(); // right inset
const int bottom = stringParts[2].toInt(); // bottom inset
const int left = stringParts[3].toInt(); // left inset

ret << top << right << bottom << left;
return ret;
}

CoreUtils::log( "SafeArea", "Android returned null from getSafeArea method" );
return ret;
#endif
return ret;
}

void AndroidUtils::hideSplashScreen()
{
#ifdef ANDROID
Expand Down
2 changes: 0 additions & 2 deletions app/androidutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,6 @@ class AndroidUtils: public QObject

static QString getManufacturer();
static QString getDeviceModel();
Q_INVOKABLE QVector<int> getSafeArea();

static void hideSplashScreen();

/**
Expand Down
2 changes: 1 addition & 1 deletion app/bluetoothdiscoverymodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ void BluetoothDiscoveryModel::setDiscovering( bool discovering )
if ( discovering )
{
mDiscoveryAgent->start();
CoreUtils::log( QStringLiteral( "Bluetooth discovery" ), QStringLiteral( "Started discovering devices, method %1" ).arg( mDiscoveryAgent->supportedDiscoveryMethods() ) );
CoreUtils::log( QStringLiteral( "Bluetooth discovery" ), QStringLiteral( "Started discovering devices, method %1" ).arg( static_cast<int>( mDiscoveryAgent->supportedDiscoveryMethods() ) ) );
}
else
{
Expand Down
Loading
Loading