Skip to content

Commit

Permalink
Prepare release 3.0 (#177)
Browse files Browse the repository at this point in the history
* Update changelog for 3.0.0 release

* Minor documentation tweaks

* Update clang-tidy config for LLVM 19

* Move JDK distribution to temurin

* Apply suggestions from code review

Co-authored-by: Bart Louwers <[email protected]>

---------

Co-authored-by: Bart Louwers <[email protected]>
  • Loading branch information
ntadej and louwers authored Oct 10, 2024
1 parent 06ca8a4 commit d929c78
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 45 deletions.
1 change: 1 addition & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ Checks: >
-misc-include-cleaner,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
-misc-use-internal-linkage,
-modernize-avoid-c-arrays,
-modernize-use-trailing-return-type,
-readability-convert-member-functions-to-static,
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/Android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ jobs:
- name: Set up OpenJDK 17
uses: actions/setup-java@v4
with:
distribution: adopt
distribution: temurin
java-version: 17

- name: Setup ninja
Expand Down
30 changes: 30 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,35 @@
# Changelog

## v3.0.0

### ✨ New features

- Completely reorganized the project structure into the `QMapLibre` namespace
and three libraries: `QMapLibre`, `QMapLibreLocation` and `QMapLibreWidgets`.
- Reference documentation now available at
https://maplibre.org/maplibre-native-qt/docs/.
- Built with Qt 6.5, 6.6 and 6.7 for all platforms and also Qt 5.15.2 for
macOS, Linux and Windows.
- QML configuration cleaned up, styles are now set with `maplibre.map.styles`.
- QML style parameters are also made available in C++.
Now imported using `import MapLibre 3.0`.
- QML plugins can be installed using a CMake helper function
`qmaplibre_location_setup_plugins`.
- Add ability to build as static libraries (#98).
- Add CMake presets for easier usage (#112).
- Support image coordinate change (#139).
- Add mouse events with coordinate to GLWidget (#141).
- Improve GeoJSON and image source handling (#164).

### 🐞 Bug fixes

- Improve handling of system ICU on Linux (#56).
- Allow to use as a CMake included project (#100).
- Make creation of Style with empty URL possible (#107).
- Set proper soversion (#117).
- Use less generic target names to allow usage as subproject (#127).
- Fix style filters setting (#163).

## v2.1.0

### ✨ New features
Expand Down
90 changes: 47 additions & 43 deletions docs/Building.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,55 @@ ninja
ninja install
```

See below for platform-specific instructions.
See [below](#platform-specific-build-instructions) for platform-specific instructions.

@note It is recommended to use [CMake workflows](#using-cmake-workflows) as they
are always up-to-date and cover all supported platforms.

## Using CMake workflows

CMake workflow presets are provided for all supported platforms.
Run the following command in the root directory to use a preset:

```shell
cmake --workflow --preset <preset>
```

for example

```shell
cmake --workflow --preset macOS-ccache
```

will run the macOS build with `ccache` enabled.

It is recommended to set `QT_ROOT_DIR` environment variable as the path
to the Qt installation to be used, mainly for mobile platforms to use
the correct Qt version.

For Android, the `ANDROID_ABI` environment variable should be set.

### Supported release workflows

| Platform | Qt6 | Qt6 with ccache | Qt5 | Qt5 with ccache |
|----------|-----------|------------------|------------------|-------------------------|
| Linux | `Linux` | `Linux-ccache` | `Linux-legacy` | `Linux-legacy-ccache` |
| macOS | `macOS` | `macOS-ccache` | `macOS-legacy` | `macOS-legacy-ccache` |
| Windows | `Windows` | `Windows-ccache` | `Windows-legacy` | `Windows-legacy-ccache` |
| iOS | `iOS` | `iOS-ccache` | | |
| Android | `Android` | `Android-ccache` | | |
| WASM | `WASM` | `WASM-ccache` | | |

### Special workflows

| Platform | Workflow | Description |
|----------|----------------------|---------------------------------------------------------------------|
| Linux | `Linux-coverage` | Linux build with Qt6, `ccache` and code coverage |
| Linux | `Linux-internal-icu` | Linux build with Qt6 and internal ICU library (also with `-ccache`) |
| macOS | `macOS-clang-tidy` | macOS build with Qt6, `ccache` and `clang-tidy` |

## Platform specific build instructions

### Linux

Release binaries are build with `-DCMAKE_BUILD_TYPE="Release"`.
Expand Down Expand Up @@ -92,6 +136,7 @@ cmake ../maplibre-native-qt -G "Ninja Multi-Config" \
-DCMAKE_CONFIGURATION_TYPES="Release;Debug" \
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
-DCMAKE_DEFAULT_CONFIGS="all" \
-DCMAKE_INSTALL_PREFIX="../install"
ninja
ninja install
Expand All @@ -112,6 +157,7 @@ cmake ../maplibre-native-qt -G "Ninja Multi-Config" \
-DCMAKE_CONFIGURATION_TYPES="Release;Debug" \
-DCMAKE_C_COMPILER_LAUNCHER="ccache" \
-DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \
-DCMAKE_DEFAULT_CONFIGS="all" \
-DCMAKE_INSTALL_PREFIX="../install" \
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="14.0"
Expand Down Expand Up @@ -157,48 +203,6 @@ ninja
ninja install
```

## Using CMake workflows

CMake workflow presets are provided for all supported platforms.
They can be simply used by running in the root directory of the repository:

```shell
cmake --workflow --preset <preset>
```

for example

```shell
cmake --workflow --preset macOS-ccache
```

will run the macOS build with `ccache` enabled.

It is recommended to set `QT_ROOT_DIR` environment variable as the path
to the Qt installation to be used, mainly for mobile platforms to use
the correct Qt version.

For Android, `ANDROID_ABI` environment variable should be set.

### Supported release workflows

| Platform | Qt6 | Qt6 with ccache | Qt5 | Qt5 with ccache |
|----------|-----------|------------------|------------------|-------------------------|
| Linux | `Linux` | `Linux-ccache` | `Linux-legacy` | `Linux-legacy-ccache` |
| macOS | `macOS` | `macOS-ccache` | `macOS-legacy` | `macOS-legacy-ccache` |
| Windows | `Windows` | `Windows-ccache` | `Windows-legacy` | `Windows-legacy-ccache` |
| iOS | `iOS` | `iOS-ccache` | | |
| Android | `Android` | `Android-ccache` | | |
| WASM | `WASM` | `WASM-ccache` | | |

### Special workflows

| Platform | Workflow | Description |
|----------|----------------------|---------------------------------------------------------------------|
| Linux | `Linux-coverage` | Linux build with Qt6, `ccache` and code coverage |
| Linux | `Linux-internal-icu` | Linux build with Qt6 and internal ICU library (also with `-ccache`) |
| macOS | `macOS-clang-tidy` | macOS build with Qt6, `ccache` and `clang-tidy` |

<div class="section_buttons">

| Previous | Next |
Expand Down
3 changes: 3 additions & 0 deletions docs/Documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ You would normally use this API in a Qt-based application.
If you are interested in the internals of MapLibre Native you can also look at
[Core C++ API](https://maplibre.org/maplibre-native/cpp/api/).

If not explicitly specified, all classes and functions are available
as of version 3.0 of the library.

The source code can be found [on GitHub](https://github.com/maplibre/maplibre-native-qt):

```shell
Expand Down
1 change: 1 addition & 0 deletions docs/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -952,6 +952,7 @@ WARN_LOGFILE =
INPUT = \
../src/core \
../src/widgets \
../CHANGELOG.md \
location \
Documentation.md \
Building.md \
Expand Down
2 changes: 1 addition & 1 deletion test/widgets/gl_tester.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ void GLTester::initializeAnimation() {
int GLTester::selfTest() {
if (m_bearingAnimation) {
m_bearingAnimation->setDuration(kAnimationDuration);
m_bearingAnimation->setEndValue(map()->bearing() + 360 * 4);
m_bearingAnimation->setEndValue(map()->bearing() + (360 * 4));
m_bearingAnimation->start();
}

Expand Down

0 comments on commit d929c78

Please sign in to comment.