The installer no longer names debug libraries with a `d` suffix. They
are distinguished by the per-runtime-library directory containing them.
Fixes: #25856
Since commit 5cc8a69867 (FindOpenSSL: Trust the user's OPENSSL_ROOT_DIR,
2023-05-17, v3.27.0-rc1~71^2) we use `OPENSSL_ROOT_DIR` whenever it is
defined, even if it is an empty string. This breaks a pattern in
existing projects that define an empty `OPENSSL_ROOT_DIR` cache entry so
that `cmake-gui` users can fill it in. Use the value only if non-empty.
Issue: #18352
Activate the logic from commit 8098bd5768 (FindOpenSSL: add pthread and
dl dependencies to static lib on Linux, 2019-09-13, v3.16.0-rc1~72^2)
on more UNIX platforms.
Fixes: #24870
When the user has specified the OpenSSL installation root directory,
through the variable OPENSSL_ROOT_DIR or the environment variable with
the same name, trust it, don't try to find OpenSSL anywhere else.
Fixes: #18352
* Avoid searching in the `Program Files` folder because the official
OpenSSL is built for the MSVC ABI, and so is not compatible with MinGW.
* Static libraries on MinGW has `.a` extension.
Because -pthread doesn't begin with -l, it doesn't show up in the
pkgconfig LIBRARIES variable, causing FindOpenSSL to not add the
Threads::Threads dependency. Explicitly search LDFLAGS_EXTRA
for -pthread and add the dependency if it's found.
Fixes: #24532
Since commit 1b7804edd0 (FindOpenSSL: use extra dependencies from
pkg-config as well, 2022-12-05, v3.26.0-rc1~227^2) we conditionally find
Threads but unconditionally depend on it. Make the conditions
consistent.
Fixes: #24505
The variables `OPENSSL_VERSION_MAJOR`, `OPENSSL_VERSION_MINOR` and
`OPENSSL_VERSION_FIX` are now set to the correct values when using
OpenSSL version >= 3.0.0, which uses a new format.
The upstream `openssl` build system may install libraries to `lib64`
even on platforms whose conventions do not use `lib64` for
distro-packaged libraries.
Fixes: #22945
In commit 7b83ca816a (FindOpenSSL: add target OpenSSL::applink to
support OpenSSL's applink feature, 2020-05-12, v3.18.0-rc1~150^2) the
version check was written as "major.major.fix" instead of
"major.minor.fix".
Fix the regex syntax added by commit 61d746e592 (FindOpenSSL: Detect
OpenSSL 3.0.0, 2020-05-27, v3.17.3~1^2). Add missing escapes.
Test with `openssl-3.0.0-alpha3`.
While at it, also unset a temporary variable after use.
When using a custom sysroot to build things using pkg-config, some of
the output variables feature the sysroot while others do not:
```console
$ export PKG_CONFIG_SYSROOT_DIR=/path/to/sysroot
$ export PKG_CONFIG_LIBDIR=/path/to/sysroot/usr/lib/pkgconfig
$ pkg-config --cflags-only-I openssl
-I/path/to/sysroot/usr/include/
$ pkg-config --variable=includedir openssl
/usr/include
$ pkg-config --libs-only-L openssl
-L/path/to/sysroot/usr/lib
$ pkg-config --variable=libdir openssl
/usr/lib
```
When using `pkg_check_modules`, it's pretty much the same:
```cmake
pkg_check_modules(_OPENSSL QUIET openssl)
_OPENSSL_INCLUDE_DIRS == /path/to/sysroot/usr/include/
_OPENSSL_INCLUDEDIR == /usr/include
_OPENSSL_LIBRARY_DIRS == -L/path/to/sysroot/usr/lib
_OPENSSL_LIBDIR == /usr/lib
```
However, FindOpenSSL only searches for headers in `INCLUDEDIR` and
libraries in `LIBDIR` instead of searching `INCLUDE_DIRS` and
`LIBRARY_DIRS` as well.
This fixes that behaviour.
Fixes: #16885
Signed-off-by: Denis Thulin <denis.thulin@enyx.fr>
Some are user facing.
Found using
codespell -q 3 --skip="./Utilities" -I .cmake-whitelist.txt`
whereby the whitelist contained:
ans
dum
helpfull
emmited
emmitted
buil
iff
isnt
nto
ot
pathes
substract
te
todays
upto
whitespaces
Since commit v3.8.0-rc1~132^2 (FindOpenSSL: Check that both CRYPTO and
SSL libraries are present, 2017-01-03) we require both crypto and ssl
libraries to be present. This makes sense because `OPENSSL_LIBRARIES`
lists both and breaks when one is not found. However, prior to that
fix we supported finding only the crypto library and using it through
the imported target. Drop the requirement for ssl to restore support
for using crypto alone.
Later this module should be taught to support the `COMPONENTS` argument
of `find_package`.
Fixes: #16882
Per-source copyright/license notice headers that spell out copyright holder
names and years are hard to maintain and often out-of-date or plain wrong.
Precise contributor information is already maintained automatically by the
version control tool. Ultimately it is the receiver of a file who is
responsible for determining its licensing status, and per-source notices are
merely a convenience. Therefore it is simpler and more accurate for
each source to have a generic notice of the license name and references to
more detailed information on copyright holders and full license terms.
Our `Copyright.txt` file now contains a list of Contributors whose names
appeared source-level copyright notices. It also references version control
history for more precise information. Therefore we no longer need to spell
out the list of Contributors in each source file notice.
Replace CMake per-source copyright/license notice headers with a short
description of the license and links to `Copyright.txt` and online information
available from "https://cmake.org/licensing". The online URL also handles
cases of modules being copied out of our source into other projects, so we
can drop our notices about replacing links with full license text.
Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
of the replacements mechanically. Manually fix up shebang lines and trailing
newlines in a few files. Manually update the notices in a few files that the
script does not handle.
Since commit v3.6.0-rc1~182^2 (FindOpenSSL: Prefer libs early in search
path regardless of name, 2016-04-04) we use the `NAMES_PER_DIR` option
to `find_library` calls to consider all names in each directory before
moving on to the next directory. Fix our library search directory
ordering to place more-specific (e.g. VC/) directories before the
general directories. Otherwise they may never be considered.
Closes: #16320
Since OpenSSL 1.1.0, Windows binaries are libcrypto and libssl instead of
the old names libeay32 and ssleay32.
When using MSVC, FindOpenSSL was searching for the old lib names only so
this add the new names to be able to find OpenSSL 1.1.0 libraries.
For example, the files in lib directory of OpenSSL 1.1.0 Win64 :
- libcrypto.lib
- libssl.lib
- VC/libcrypto64MD.lib
- VC/libcrypto64MDd.lib
- VC/libcrypto64MT.lib
- VC/libcrypto64MTd.lib
- VC/libssl64MD.lib
- VC/libssl64MDd.lib
- VC/libssl64MT.lib
- VC/libssl64MTd.lib
32 bits OpenSSL has the same files with "32" instead of "64" for files in
VC directory.
MinGW still works and use lib/libcrypto.lib and lib/libssl.lib.
This patch also add libssl and libcrypto for other windows compilers too (like
Intel).