Skip to content

OpenSSL: drop libunwind linking for Clang-based Android NDK#815

Merged
NeroBurner merged 1 commit intocpp-pm:masterfrom
olliwang:OpenSSL
Sep 16, 2025
Merged

OpenSSL: drop libunwind linking for Clang-based Android NDK#815
NeroBurner merged 1 commit intocpp-pm:masterfrom
olliwang:OpenSSL

Conversation

@olliwang
Copy link

Since Android NDK r23+, unwind support is bundled in the Clang toolchain and explicit linking to libunwind is no longer required. Linking this library causes build errors on modern NDKs.

This change removes libunwind from the configure options to ensure successful builds for NDK r23+.

  • I've followed this guide step by step carefully. Yes

Clang-based Android NDKs bundle unwind support and do not require explicit linking. Passing malformed flags like "-l-l:libunwind.a" caused build failures with ld.lld on NDK r23+. This change removes those flags from configure options to ensure successful builds.
@NeroBurner NeroBurner added the enhancement New feature or request label Sep 16, 2025
@NeroBurner
Copy link

sounds reasonable. I have no experience in Android toolchains thoug.

Android build seems to still fail (probably a different error)

Please ping me when you are happy with the state of this PR

@olliwang
Copy link
Author

sounds reasonable. I have no experience in Android toolchains thoug.

Android build seems to still fail (probably a different error)

Please ping me when you are happy with the state of this PR

@NeroBurner Yes, I've tested on NDK 23+ and it works perfectly. Thanks :)

@NeroBurner
Copy link

Could you explain to me why the CI / OpenSSL android-ndk-api-35-arm64-v8a-libcxx14 ubuntu-24.04 toolchain fails? Is the NDK 23+ thing different to the API? Just so I have a ROUGH understanding what is happening here and having a slight chance that the toolchain may be fixed

@olliwang
Copy link
Author

olliwang commented Sep 16, 2025

Could you explain to me why the CI / OpenSSL android-ndk-api-35-arm64-v8a-libcxx14 ubuntu-24.04 toolchain fails? Is the NDK 23+ thing different to the API? Just so I have a ROUGH understanding what is happening here and having a slight chance that the toolchain may be fixed

I cannot find the source code of android-ndk-api-35-arm64-v8a-libcxx14.cmake but I am guessing the toolchain is very old. I remembered the original Android toolchain only support NDK 16 or 17. I modified mine long time ago to support NDK 22. Now I have to update to NDK 28 because Google Play requires support for 16 KB page sizes now and NDK 28 will build C++ libraries for 16 KB page size out-of-box.

@NeroBurner
Copy link

On current master (roughly Hunter v0.26.3) the mentioned error with libunwind is present (which this PR fixes 🎉 ):

/usr/local/lib/android/sdk/ndk/27.3.13750724/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -fPIC -pthread -Wall -O3 -L. -Wl,-z,defs -Wl,-znodelete -shared -Wl,-Bsymbolic   \
	-o providers/legacy.so -Wl,--version-script=providers/legacy.ld \
	providers/legacy-dso-legacyprov.o \
	providers/liblegacy.a providers/libcommon.a -lcrypto -ldl -pthread -latomic -Wl,--build-id=sha1 -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--gc-sections -Qunused-arguments -Wl,--no-undefined  -Wl,--gc-sections -latomic -lm -lc++ -lm -l-l:libunwind.a -ldl -lc -l-l:libunwind.a -ldl
ld.lld: error: unable to find library -l-l:libunwind.a
ld.lld: error: unable to find library -l-l:libunwind.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I see that the Toolchain runs on the provided ndk 27.3

The build matrix of master shows that the android build, the windows store build and the ios-nocodesign builds were already failing

master build matrix

In this PR essentially the same 3 toolchains are failing:

PR toolchains

The error for the android toolchain is different:

/usr/local/lib/android/sdk/ndk/27.3.13750724/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -fPIC -pthread -Wall -O3 -L. -Wl,-z,defs -Wl,-znodelete -shared -Wl,-Bsymbolic   \
	-o providers/legacy.so -Wl,--version-script=providers/legacy.ld \
	providers/legacy-dso-legacyprov.o \
	providers/liblegacy.a providers/libcommon.a -lcrypto -ldl -pthread -latomic -Wl,--build-id=sha1 -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--gc-sections -Qunused-arguments -Wl,--no-undefined  -Wl,--gc-sections -latomic -lm -lc++ -lm  -ldl -lc  -ldl
ld.lld: error: providers/legacy-dso-legacyprov.o is incompatible with elf64-x86-64
ld.lld: error: providers/liblegacy.a(liblegacy-lib-cipher_blowfish.o) is incompatible with elf64-x86-64
ld.lld: error: providers/liblegacy.a(liblegacy-lib-cipher_blowfish_hw.o) is incompatible with elf64-x86-64
ld.lld: error: providers/liblegacy.a(liblegacy-lib-cipher_cast5.o) is incompatible with elf64-x86-64

@NeroBurner
Copy link

I cannot find the source code of android-ndk-api-35-arm64-v8a-libcxx14.cmake but I am guessing the toolchain is very old

Or I created it wrong 😅 I changed their creation in #780

The toolchains are generated now by the .github/workflows/set_matrix.py script. If you want to create the toolchains for the OpenSSL project run the following:

python3 .github/workflows/set_matrix.py OpenSSL

Then you'll get the toolchain files in .github/toolchains/android-ndk-api-35-arm64-v8a-libcxx14.cmake

The toolchain file looks as follows:

# toolchain file generated by set_matrix.py, do not modify!
set(CMAKE_SYSTEM_NAME "Android")
set(CMAKE_SYSTEM_VERSION "35") # API level
set(CMAKE_ANDROID_ARCH_ABI "arm64-v8a")
set(CMAKE_ANDROID_NDK "$ENV{ANDROID_NDK}") # provided by GitHub

string(COMPARE EQUAL "${CMAKE_ANDROID_NDK}" "" _is_empty)
if(_is_empty)
  message(FATAL_ERROR
      "Environment variable 'ANDROID_NDK' not set"
  )
endif()

# ANDROID macro is not defined by CMake 3.7+, however it is used by
# some packages like OpenCV
# (https://gitlab.kitware.com/cmake/cmake/merge_requests/62)
add_definitions("-DANDROID")
set(CMAKE_ANDROID_STL_TYPE "c++_static") # LLVM libc++ static
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} -stdlib=libc++")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

Is it grossly wrong? 😅

@NeroBurner NeroBurner merged commit c8a3b2c into cpp-pm:master Sep 16, 2025
13 of 16 checks passed
@NeroBurner NeroBurner changed the title OpenSSL: drop libunwind linking for Clang-based NDK OpenSSL: drop libunwind linking for Clang-based Android NDK Sep 16, 2025
@olliwang
Copy link
Author

I cannot find the source code of android-ndk-api-35-arm64-v8a-libcxx14.cmake but I am guessing the toolchain is very old

Or I created it wrong 😅 I changed their creation in #780

The toolchains are generated now by the .github/workflows/set_matrix.py script. If you want to create the toolchains for the OpenSSL project run the following:

python3 .github/workflows/set_matrix.py OpenSSL

Then you'll get the toolchain files in .github/toolchains/android-ndk-api-35-arm64-v8a-libcxx14.cmake

The toolchain file looks as follows:

# toolchain file generated by set_matrix.py, do not modify!
set(CMAKE_SYSTEM_NAME "Android")
set(CMAKE_SYSTEM_VERSION "35") # API level
set(CMAKE_ANDROID_ARCH_ABI "arm64-v8a")
set(CMAKE_ANDROID_NDK "$ENV{ANDROID_NDK}") # provided by GitHub

string(COMPARE EQUAL "${CMAKE_ANDROID_NDK}" "" _is_empty)
if(_is_empty)
  message(FATAL_ERROR
      "Environment variable 'ANDROID_NDK' not set"
  )
endif()

# ANDROID macro is not defined by CMake 3.7+, however it is used by
# some packages like OpenCV
# (https://gitlab.kitware.com/cmake/cmake/merge_requests/62)
add_definitions("-DANDROID")
set(CMAKE_ANDROID_STL_TYPE "c++_static") # LLVM libc++ static
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} -stdlib=libc++")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

Is it grossly wrong? 😅

This is the toolchain I’m using now. It has worked for several years across all the updates of Android Studio.

# STEP 1: Lock variables from Gradle build

set(ANDROID_ABI "@ANDROID_ABI@")
set(ANDROID_PLATFORM "@ANDROID_PLATFORM@")
set(ANDROID_STL "@ANDROID_STL@")
set(CMAKE_ANDROID_ARCH_ABI "@CMAKE_ANDROID_ARCH_ABI@")
set(CMAKE_ANDROID_STL_TYPE "c++_static")
set(CMAKE_SYSTEM_NAME "Android")
set(CMAKE_SYSTEM_VERSION "@CMAKE_SYSTEM_VERSION@")

# STEP 2: Include original toolchain

# Original toolchain file will be saved in variable:
# * _ORIGINAL_TOOLCHAIN_FILE

if("@_ORIGINAL_TOOLCHAIN_FILE@" STREQUAL "")
  # Variable not set, initial project configuration.
  # Path to original Android NDK toolchain saved in CMAKE_TOOLCHAIN_FILE.
  if("@CMAKE_TOOLCHAIN_FILE@" STREQUAL "")
    message(FATAL_ERROR "Unexpected: CMAKE_TOOLCHAIN_FILE is empty")
  endif()

  if(NOT EXISTS "@CMAKE_TOOLCHAIN_FILE@")
    message(FATAL_ERROR "File not found: '@CMAKE_TOOLCHAIN_FILE@'")
  endif()

  set(_original_toolchain_file "@CMAKE_TOOLCHAIN_FILE@")
else()
  set(_original_toolchain_file "@_ORIGINAL_TOOLCHAIN_FILE@")
endif()

set(
  _ORIGINAL_TOOLCHAIN_FILE
  "${_original_toolchain_file}"
  CACHE
  PATH
  "Original Android NDK toolchain"
)

if(NOT "${_ORIGINAL_TOOLCHAIN_FILE}" STREQUAL "${CMAKE_CURRENT_LIST_FILE}")
  include("${_ORIGINAL_TOOLCHAIN_FILE}")
endif()

# STEP 3: Fix Android NDK

if ("@_CMAKE_ANDROID_NDK@" STREQUAL "" AND
    NOT "@CMAKE_ANDROID_NDK@" STREQUAL "")
  set(
    _CMAKE_ANDROID_NDK
    "@CMAKE_ANDROID_NDK@"
    CACHE
    PATH
    "Original Android NDK"
  )
  set(CMAKE_ANDROID_NDK "@CMAKE_ANDROID_NDK@")
elseif("${CMAKE_ANDROID_NDK}" STREQUAL "")
  set(CMAKE_ANDROID_NDK "@_CMAKE_ANDROID_NDK@")
endif()

# STEP 4: Tweak CMake Android variables

set(CMAKE_SYSTEM_VERSION "${ANDROID_NATIVE_API_LEVEL}")

# STEP 5: Custom user variables

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

@NeroBurner
Copy link

Could you provide a filled out version as well? This could be very helpful. Thanks!

@olliwang
Copy link
Author

Could you provide a filled out version as well? This could be very helpful. Thanks!

Sure. This toolchain was modified based on the original Android toolchain. Be aware that I’m targeting C++20 for my purposes. It works well with all the Hunter packages I’m using, though I definitely haven’t tested every package.

# Copyright (c) 2018, Ruslan Baratov
# All rights reserved.

# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
#   list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
#   this list of conditions and the following disclaimer in the documentation
#   and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# For the latest version of this file and working example see:

# For the example and for the latest version of this file check:
# * https://github.com/forexample/android-studio-with-hunter

# Hunter need stand-alone toolchain that will not depend
# on any ANDROID_* variables:
# * https://docs.hunter.sh/en/latest/overview/customization/toolchain-id.html

# To achieve this we need to make a 3 steps:
# * Lock CMake variables that coming from Gradle build
# * Include original Android toolchain from NDK
# * Add any custom user variables

# STEP 1: Lock variables from Gradle build

set(ANDROID_ABI "@ANDROID_ABI@")
set(ANDROID_PLATFORM "@ANDROID_PLATFORM@")
set(ANDROID_STL "@ANDROID_STL@")
set(CMAKE_ANDROID_ARCH_ABI "@CMAKE_ANDROID_ARCH_ABI@")
set(CMAKE_ANDROID_STL_TYPE "c++_static")
set(CMAKE_SYSTEM_NAME "Android")
set(CMAKE_SYSTEM_VERSION "@CMAKE_SYSTEM_VERSION@")

# STEP 2: Include original toolchain

# Original toolchain file will be saved in variable:
# * _ORIGINAL_TOOLCHAIN_FILE

if("@_ORIGINAL_TOOLCHAIN_FILE@" STREQUAL "")
  # Variable not set, initial project configuration.
  # Path to original Android NDK toolchain saved in CMAKE_TOOLCHAIN_FILE.
  if("@CMAKE_TOOLCHAIN_FILE@" STREQUAL "")
    message(FATAL_ERROR "Unexpected: CMAKE_TOOLCHAIN_FILE is empty")
  endif()

  if(NOT EXISTS "@CMAKE_TOOLCHAIN_FILE@")
    message(FATAL_ERROR "File not found: '@CMAKE_TOOLCHAIN_FILE@'")
  endif()

  set(_original_toolchain_file "@CMAKE_TOOLCHAIN_FILE@")
else()
  set(_original_toolchain_file "@_ORIGINAL_TOOLCHAIN_FILE@")
endif()

set(
  _ORIGINAL_TOOLCHAIN_FILE
  "${_original_toolchain_file}"
  CACHE
  PATH
  "Original Android NDK toolchain"
)

if(NOT "${_ORIGINAL_TOOLCHAIN_FILE}" STREQUAL "${CMAKE_CURRENT_LIST_FILE}")
  include("${_ORIGINAL_TOOLCHAIN_FILE}")
endif()

# STEP 3: Fix Android NDK

if ("@_CMAKE_ANDROID_NDK@" STREQUAL "" AND
    NOT "@CMAKE_ANDROID_NDK@" STREQUAL "")
  set(
    _CMAKE_ANDROID_NDK
    "@CMAKE_ANDROID_NDK@"
    CACHE
    PATH
    "Original Android NDK"
  )
  set(CMAKE_ANDROID_NDK "@CMAKE_ANDROID_NDK@")
elseif("${CMAKE_ANDROID_NDK}" STREQUAL "")
  set(CMAKE_ANDROID_NDK "@_CMAKE_ANDROID_NDK@")
endif()

# STEP 4: Tweak CMake Android variables

set(CMAKE_SYSTEM_VERSION "${ANDROID_NATIVE_API_LEVEL}")

# STEP 5: Custom user variables

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

@NeroBurner
Copy link

With filled out I was referring to have the template variables like "@ANDROID_ABI@" filled out with the actual values. Sorry for being unclear

@olliwang
Copy link
Author

With filled out I was referring to have the template variables like "@ANDROID_ABI@" filled out with the actual values. Sorry for being unclear

It's arm64-v8a in my environment.

@NeroBurner
Copy link

And all the other values? Can you copy the final version after all the @@ template variables got filled out with your environment variables? 🙏

@olliwang
Copy link
Author

And all the other values? Can you copy the final version after all the @@ template variables got filled out with your environment variables? 🙏

No problem. They look like this:

@ANDROID_ABI@: arm64-v8a
@ANDROID_PLATFORM@: android-26
@ANDROID_STL@: c++_static
@CMAKE_ANDROID_ARCH_ABI@: arm64-v8a
@CMAKE_ANDROID_NDK@: /Users/username/Library/Android/sdk/ndk/28.2.13676358
@CMAKE_TOOLCHAIN_FILE@: /Users/username/Developer/proj/src/android/app/.cxx/Debug/6nb1j5q5/arm64-v8a/shared/nanoi/nanoi/generated/toolchain.cmake
@CMAKE_SYSTEM_VERSION@: 26
@_CMAKE_ANDROID_NDK@: /Users/username/Library/Android/sdk/ndk/28.2.13676358
@_ORIGINAL_TOOLCHAIN_FILE@: /Users/username/Library/Android/sdk/ndk/28.2.13676358/build/cmake/android.toolchain.cmake

@olliwang
Copy link
Author

BTW, I also have some fixes for other packages built with the latest iOS 26 / macOS 26 SDK. Could you take a look at them as well?

libpng: hunter-packages/libpng#9
zlib: cpp-pm/zlib#2

I submitted these pull requests because the current versions cause build errors with the newer SDK, which was officially released this month.

@NeroBurner
Copy link

Thank you very much. I'll try to take a look as soon as possible. Thanks again for your contributions!

@NeroBurner
Copy link

hyper-joel added a commit to Hypergene/hunter that referenced this pull request Mar 13, 2026
* Replace boostorg.jfrog.io to archives.boost.io URLs (cpp-pm#771)

Fix for cpp-pm#770

* Update minimum CMake to v3.10 (cpp-pm#769)

* Update minimum CMake to v3.10
* Update docs with new CMake minimum 3.10
* Update gate submodule to v0.11.0

Updates minimum CMake to v3.10

* Update Boost to 1.84.0, 1.85.0 and 1.86.0 (cpp-pm#775)

* Update 'Boost' to v1.84.0

Release notes: https://www.boost.org/users/history/version_1_84_0.html

* Update libraries and tests for Boost v1.84.0

* Add example for boost::conbalt
* Add Boost::cobalt to test matrix
* Add example for Boost::redis
* Add Boost::redis to test matrix

* Update 'Boost' to v1.85.0

Release notes: https://www.boost.org/users/history/version_1_85_0.html

* Update libraries and tests for Boost v1.85.0

* Add example for Boost::charconv
* Add Boost::charconv to test matrix

* refactor: move example for BoostProcess from Boost-process to BoostProcess

Renaming because the Boost::process lib in Boost became a lib for v2

* Update 'Boost' to v1.86.0

Release notes: https://www.boost.org/users/history/version_1_86_0.html

* Update libraries and tests for Boost v1.86.0

* Add example for Boost::predef
  * It seems something changed about Boost::predef in 1.86.0. It is listed as a lib but not build as a lib.
* Add Boost::predef to test matrix
* Add Boost::process to test matrix
* Add example for v2 of Boost::process
  * Boost::process changed in the 1.86.0 release.
    * v1 is header only
    * v2 is a library

---------

Co-authored-by: André Falk <andre.falk@tutanota.com>
Co-authored-by: simbahebinbo <lansheng228@163.com>

* hunter_get_lang_standard_flag: Add C++ 23/26 and C17/C23 check (cpp-pm#779)

Fixes: cpp-pm#756

* Add support for VS2022 Build Tools (cpp-pm#783)

* CI: update toolchains to use latest GitHub runner images and rewrite set_matrix.py without polly (cpp-pm#780)

Update all used GitHub runner images (Linux, Windows and Mac) and update the `set_matrix.py` script to work without the `polly` toolchains.

- Update from the deprecated ubuntu-20.04 images to the currently latest ubuntu-24.04 image. In the process update the `gcc` version from 7, 8, 9 to 12, 13, 14.
  - fixes: cpp-pm#778 
- Update from the deprecated `windows-2019` image with `vs-16-2019` toolchain to `windows-2022` with `vs-17-2022` toolchain
  - fixes: cpp-pm#781 
- Update from deprecated `macos-12` image to `macos-15`
  -  fixes: cpp-pm#782 
- rewrite `set_matrix.py` to generate the `CMAKE_TOOLCHAIN_FILE` from the `toolchain` matrix name
- update CI and remove the dependency on the [polly toolchain project](https://github.com/cpp-pm/polly)
- remove `analyze` and `sanitize` jobs, no-one looks at them and they are a hassle to implement, PR welcome, but for now removed
- remove the `build.sh` and `build.cmd` default build scripts and replace them with a `build.py` python script
- remove `build_hunter_tests.sh` build script and use `build.py` there as well
- remove unused `jenkins.py` file
- update custom `matrix.json` and `build.sh` for the following projects:
  - `filament`
  - `pthreads-win32`
  - `occt`
  - `freetype-gl`
  - `Boost`

* update msgpack to v4.1.3 (cpp-pm#644)

* update msgpack to v4.1.3
* update docu and example after review
* Update docs/packages/pkg/msgpack.rst

---------

Co-authored-by: NeroBurner <pyro4hell@gmail.com>

* Add note about updating copyright notes to the manual (cpp-pm#601)

one should update the copyright notices when a new package is created.
Point this out to the user in the guide to create a new package.

Co-authored-by: NeroBurner <pyro4hell@gmail.com>

* libsodium: update version to 1.0.18-p0 (cpp-pm#672)

Update the default version of libsodium to 1.0.18-p0

Fixes: cpp-pm#634

---------

Co-authored-by: NeroBurner <pyro4hell@gmail.com>

* Update civetweb to v1.13-p0 (cpp-pm#304)

* GIT_SUBMODULE fix: File not found .git/HEAD error (cpp-pm#168)

* Fix File not found .git/HEAD error
* Verify if git path output is absolute

* docs: update URL to tar file for boost-components documentation (cpp-pm#561)

* fix link-all.py with high CPU count and little files (cpp-pm#785)

Code changes by https://github.com/aggiehorns

When we have more CPUs than files to link the `files_per_job` variable
got `0`. And then the begin and end indexes got wrong and multiple jobs
tried to link the same file.

Fixes: cpp-pm#664

* set_matrix: simplify regex, fix typos (cpp-pm#786)

Fix some typos in output, variable-names and comments.

The usage of `[\d]` in regex is explicit, but also uneccessarily
complex. Simplify a bit.

* set_matrix: format

* CI: run check-urls: rework script to run on changed files and let it run in CI (cpp-pm#787)

Rework the `check-urls.py` script to make it work with the changed files file from GitHub Actions.

Add a new job to run `check-urls.py` and check projects with changed `hunter.cmake` files and their URLs.

Fixes: cpp-pm#598

* Boost: remove USE_CONFIG_FROM_BOOST hunter option, remove old (cpp-pm#784)

Remove the option `USE_BOOST_CONFIG`. It is now essentially always
enabled.

Remove all Boost versions older than 1.72, as the old versions don't
supply a `BoostConfig.cmake` file yet.

Remove the code and templates to create a `BoostConfig.cmake` with
Hunter.

Update the examples and remove the `-useBoostConfig` example folders.

Fixes: cpp-pm#723

* OpenBLAS: silence warnings (cpp-pm#792)

The OpenBLAS build has uncountable many warnings. Disable them as we
don't need them. Only errors are really interesting.

* docs: fix warning about matrix.json not valid for code highlighting (cpp-pm#793)

Fixing the following warning:
```sh
Warning, treated as error:
hunter/docs/creating-new/test/ci.rst:84:Could not lex literal_block as "JSON". Highlighting skipped.
```

The referenced codeblock is the following:

```rst
.. literalinclude:: ../../../.github/workflows/ci/matrix.json
  :language: JSON
```

The `matrix.json` file contains `//` comments, which are not valid json tripping the highlighting.

Removing the `:language: JSON` part fixes this warning

Fixes: cpp-pm#790

* docs: msgpack: fix spelling warnings/errors (cpp-pm#795)

The documentation for `msgpack` has two spelling errors:

```
writing output... [ 63%] packages/pkg/msgpack
packages/pkg/msgpack.rst:21:msgpackc:["mudpack"]
packages/pkg/msgpack.rst:21:cxx:["xxx", "xx", "cox", "c xx", "OSX"]

...

 Spelling checker messages written to /home/runner/work/hunter/hunter/docs/_spelling/output.txt
Warning, treated as error:
Found 2 misspelled words
```

Update the documentation properly escaping the target names and in the
process making the spellchecker ignoring the "codeblocks".

Fixes: cpp-pm#794

* docs: quick-start: fix link to HUNTER_ROOT env variable (cpp-pm#800)

`HUNTER_ROOT` link goes to old/not available wiki. Update the link to
use an internal reference the the `HUNTER_ROOT` environment variable
section in the documentation.

Fixes: cpp-pm#682

* nlohmann json update to 3.12.0 (cpp-pm#803)

* update nlohmann_json 3.12.0

* docs: add build_docs.sh script, installing debian packages through apt

Replace the `jenskins.sh` script using pip with `make_docs.sh` script
expected to run on Ubuntu.

For apt install set non-interactive env variable.

Update CI to run on `ubuntu-24.04` instead of `ubuntu-latest`.

Remove the files `jenkins.sh` and `requirements.txt`

* docs: enable myst-parser for markdown support, ignore old-wiki md files

* docs: conf.py: explicitly set language "en"

* docs: update version to v0.26 to match release tags

* docs: conf.py: remove deprecated get_html_theme_path call (cpp-pm#810)

For Sphinx `v8.1.3` compatibility remove the `get_html_theme_path` call.

Fixes: cpp-pm#807

* docs: port foo.rst to foo.md (cpp-pm#808)

I like to write documentation in MarkDown better than in `*.rst`.

First step is to have new package documentation in MarkDown. So port the
reference `foo.rst` to `foo.md`.

* docs: fix deprecation warning replacing spelling with spelling:word-list (cpp-pm#811)

When building the docs on Ubuntu 24.04 many deprecation warnings are shown

```
direct use of the spelling directive is deprecated, replace ".. spelling::" with ".. spelling:word-list::"
```

Fixes: cpp-pm#806

* docs: foo.md: remove double space from enumeration

* libdeflate: add new package with v1.24-p0 (cpp-pm#812)

Need to use a patched version of `libdeflate` as the created CMake
config contains absolute paths breaking the caching.

Once ebiggers/libdeflate#434 is merged and
released we can use pure upstream.

Fixes: cpp-pm#804

* libdeflate: update copyright

* TIFF: update to v4.7.0-p0 (cpp-pm#813)

Unpinn OpenCV 4.10 because TIFF 4.7.0 fixes build issues on Linux.
Fixes: cpp-pm#765

Remove old `FindTIFF.cmake` module. Not needed anymore (and probably
wasn't needed for a long time).

Update to use https://github.com/cpp-pm/libtiff/releases/tag/v4.7.0-p0

hunterized dependencies:
- `zlib`: default ON, only dependency available in previous 4.0.2 hunterized version)
- `libdeflate`: default: ON, available in Hunter starting with `v0.26.3` cpp-pm#804
- `jpeg`: default OFF, newly hunterized
- `lzma`: default OFF, newly hunterized
- `zstd`: default OFF, newly hunterized

Not hunterized dependencies:
- `jbig=OFF`
- `lerc=OFF`
- `webp=OFF`

Update the TIFF example to use use `stdio.h` `remove()` instead of `unlink()`.

Fixes: cpp-pm#789

* TIFF: fix mention about zstd being supported

* Add new package OpenJPH 0.23.0 (cpp-pm#814)

Add upstream version of package `OpenJPH`. The `TIFF` dependency is
optional and I had some issues when adding `hunter_add_package(TIFF)`
with missing includes. So adding with `TIFF` disabled.

Fixes: cpp-pm#805

* Imath: update to 3.2.1 (cpp-pm#817)

Update `Imath` package for OpenEXR 3.4.0 compatibility as described in
the `OpenEXR` install documentation (3.4.0+ should use Imath 3.2).

Fixes: cpp-pm#816

* OpenSSL: strip libunwind flags for Clang-based Android NDK (cpp-pm#815)

Clang-based Android NDKs bundle unwind support and do not require explicit linking.
Passing malformed flags like `-l-l:libunwind.a` caused build failures with `ld.lld` on NDK r23+.
This change removes those flags from configure options to ensure successful builds.

* OpenEXR: add version 3.4.0-p0 (cpp-pm#818)

Update `OpenEXR` with Hunterized `v3.4.0-p0` version:
https://github.com/cpp-pm/openexr/releases/tag/v3.4.0-p0

Dependencies:
- add `Imath` as dependency (unchanged)
- add `libdeflate` as depencency, introduced in `v3.2.0`
- removed `zlib` dependency since `v3.2.0`, replaced by `libdeflate`
- add `OpenJPH` as dependency, since `v3.4.0`

Fixes: cpp-pm#788

* CI: install python requests module to fix upload cache script (cpp-pm#820)

On the `master` branch the pipelines fail at the `upload-cache-to-github.py`
script as it is missing the `requests` python module.

Install it before the build to have a working cache upload again.

Fixes: cpp-pm#819

* PNG: update to v1.6.36-p4 with CMake 3.11 requirement (cpp-pm#823)

Update to release https://github.com/cpp-pm/libpng/releases/tag/v1.6.36-p4

* Jpeg: update to v9f-p1 with CMake 3.10 (cpp-pm#822)

Integrate cmakeified version: https://github.com/cpp-pm/jpeg/releases/tag/v9f-p1

Fixes: cpp-pm#821

* CI: install gitpython python module for cache upload script (cpp-pm#829)

Fixes: cpp-pm#827

* giflib: update to v5.2.2-p0 (cpp-pm#828)

use https://github.com/cpp-pm/giflib/releases/tag/v5.2.2-p0 with updated
minimum CMake 3.10 version.

Fixes: cpp-pm#824

* minizip: update to 1.0.1-p4. (cpp-pm#833)

Update to release https://github.com/cpp-pm/minizip/releases/tag/v1.0.1-p4

Fixes: cpp-pm/minizip#1

* ZLIB: update to v1.3.1-p0. (cpp-pm#831)

Update to release https://github.com/cpp-pm/zlib/releases/tag/v1.3.1-p0

Fixes: cpp-pm#735

* OpenCV+Extra+ippicv: add version v4.12.0-p0 (cpp-pm#832)

Update OpenCV, OpenCV-Extra and ippicv to `v4.12.0-p0`.
Those packages belong together and should be updated at once.

- OpenCV: update to 4.12.0-p0
- OpenCV-Extra: update to 4.12.0 release
- ippicv: update to 20250130 for OpenCV 4.12.0
  - keep APPLE version to ippicv 20240201 from OpenCV 4.10.0
- add `WITH_VTK=OFF`
- Unpin OpenCV for all as Linux build is now fixed with fixed
  TIFF/OpenEXR

Fixes: cpp-pm#801

* opencv: update to v4.12.0-p1 with CUDA 12.9 fix (cpp-pm#835)

Update to `4.12.0-p1` with CUDA 12.9 fix cherry-picked:
opencv/opencv@e2d87de

Link to Release: https://github.com/cpp-pm/opencv/releases/tag/v4.12.0-p1

Fixes: cpp-pm#834

* Add Boost version 1.84.0,  1.85.0, and 1.86.0

* Support for Boost 1.86 with added component configuration

* Update download url for Boost

Update download url from jfrog to boost-archive.

---------

Co-authored-by: Aliaksandr Anishchuk <oav.other@gmail.com>
Co-authored-by: Harry Mallon <hjmallon@gmail.com>
Co-authored-by: Dominik Nussbaumer <4436784+tnixeu@users.noreply.github.com>
Co-authored-by: André Falk <andre.falk@tutanota.com>
Co-authored-by: simbahebinbo <lansheng228@163.com>
Co-authored-by: NeroBurner <pyro4hell@gmail.com>
Co-authored-by: Ronny Nowak <dargun@gmx.net>
Co-authored-by: craffael <raffael@casagrande.ch>
Co-authored-by: Graham Reeds <graham.reeds@gmail.com>
Co-authored-by: Rahul Sheth <rahul@snap.com>
Co-authored-by: Joerg-Christian Boehme <joerg@chaosdorf.de>
Co-authored-by: Timothy Pak <httpak@connect.ust.hk>
Co-authored-by: Andrei Svatko <andrei.svatko@regula.by>
Co-authored-by: Olli Wang <olliwang@ollix.com>
Co-authored-by: Ola Engwall <ola.engwall@hypergene.se>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants