diff options
author | Daniel Gustafsson <dgustafsson@postgresql.org> | 2025-02-07 15:09:13 +0100 |
---|---|---|
committer | Daniel Gustafsson <dgustafsson@postgresql.org> | 2025-02-07 15:09:13 +0100 |
commit | 0951d4ee42f13405343373a849b2f143528012ca (patch) | |
tree | d0c884b1d672aa7df473788f23a5064dd9948d05 | |
parent | 9af2b3435844526ff503f2509c5246749b9c48b0 (diff) | |
download | postgresql-0951d4ee42f13405343373a849b2f143528012ca.tar.gz postgresql-0951d4ee42f13405343373a849b2f143528012ca.zip |
meson: Fix linking using old OpenSSL lib names
Before OpenSSL 1.1.0 the legacy names ssleay32 and libeay32 were
still used on Windows, and while we have support for this auto-
conf the meson buildsystem only used the new names on all plat-
forms. This adds support for the old name scheme when building
on Windows.
This patch only applies to 17 and 16 as master no longer support
OpenSSL 1.0.2.
Author: Darek Ćlusarczyk <dslusarczyk@splunk.com>
Reviewed-by: Nazir Bilal Yavuz <byavuz81@gmail.com>
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
Discussion: https://postgr.es/m/CAN55FZ1Nk8wqY=mTrN78H026TuGV50h2H6uq1PwxhTauPYi3ug@mail.gmail.com
Backpatch-through: 16
-rw-r--r-- | meson.build | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/meson.build b/meson.build index ed9f4737d34..1ea94f0cf7a 100644 --- a/meson.build +++ b/meson.build @@ -1333,14 +1333,37 @@ if sslopt in ['auto', 'openssl'] # via library + headers if not ssl.found() + is_windows = host_system == 'windows' + + ssl_lib_common_params = { + 'dirs': test_lib_d, + 'header_include_directories': postgres_inc, + 'has_headers': ['openssl/ssl.h', 'openssl/err.h'], + } ssl_lib = cc.find_library('ssl', - dirs: test_lib_d, - header_include_directories: postgres_inc, - has_headers: ['openssl/ssl.h', 'openssl/err.h'], - required: openssl_required) + kwargs: ssl_lib_common_params, + required: openssl_required and not is_windows + ) + # Before OpenSSL 1.1.0, there was a different naming convention for + # libraries on Windows, so try the alternative name if ssl wasn't found + if not ssl_lib.found() and is_windows + ssl_lib = cc.find_library('ssleay32', + kwargs: ssl_lib_common_params, + required: openssl_required + ) + endif + crypto_lib = cc.find_library('crypto', dirs: test_lib_d, - required: openssl_required) + required: openssl_required and not is_windows) + # Before OpenSSL 1.1.0, there was a different naming convention for + # libraries on Windows, so try the alternatve name if crypto wasn't found + if not crypto_lib.found() and is_windows + crypto_lib = cc.find_library('libeay32', + dirs: test_lib_d, + required: openssl_required) + endif + if ssl_lib.found() and crypto_lib.found() ssl_int = [ssl_lib, crypto_lib] ssl = declare_dependency(dependencies: ssl_int, include_directories: postgres_inc) |