Merge pull request #19522 from zchrissirhcz:3.4-fix-android-find-zlib-shared-since...
authorZhuo Zhang <imzhuo@foxmail.com>
Sun, 14 Feb 2021 18:38:53 +0000 (02:38 +0800)
committerGitHub <noreply@github.com>
Sun, 14 Feb 2021 18:38:53 +0000 (21:38 +0300)
commita5a421a9f16763731255d9cd0d41b6d33db17f6d
treee80b925904a5c998a0d7e1d26edab2a30d35af14
parent743099f9f9603e6b06b236c64a06011861907a2a
Merge pull request #19522 from zchrissirhcz:3.4-fix-android-find-zlib-shared-since-ndk19

* fix find zlib.so instead of zlib.a when NDK >= 19

On Android platform, `libopencv_imgcodecs.a` is built, expected to
depend on `libz.so`. However, since Android NDK r19, NDK's `libz.a`
is found instead of `libz.so`, leading to link error
(not found libz.a) on machines without same NDK version & direcotry.

Since Android NDK-r19, toolchain pieces are installed to
`$NDK/toolchains/llvm/prebuilt/<host-tag>/...`, including `libz.so`.
Also installed to old paths (`<NDK>/platforms` and `<NDK>/sysroot`)
in NDK r19, r20, r21, but since NDK 22, old paths are removed.

- https://github.com/android/ndk/wiki/Changelog-r19
- https://github.com/android/ndk/wiki/Changelog-r22

With this commit, `libz.so` can be correctly found in NDK<19 and NDK>=19.

`ZLIB_LIBRARIES` is also simplified as `z`, by appending match (regex)
patterns for new toolchain installation directory's libz.so's paths.

* simplify libz.so match pattern for abbreviation
cmake/OpenCVFindLibsGrfmt.cmake