aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gustafsson <dgustafsson@postgresql.org>2025-02-07 15:09:13 +0100
committerDaniel Gustafsson <dgustafsson@postgresql.org>2025-02-07 15:09:13 +0100
commit0951d4ee42f13405343373a849b2f143528012ca (patch)
treed0c884b1d672aa7df473788f23a5064dd9948d05
parent9af2b3435844526ff503f2509c5246749b9c48b0 (diff)
downloadpostgresql-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.build33
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)