summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2023-03-13 14:44:43 -0700
committerAndres Freund <andres@anarazel.de>2023-03-13 14:44:43 -0700
commit727400994d5a27f2859361f82d0ec9ac2b23385c (patch)
tree5aec560d164edf6ad6c8c968d700895afaa5ae7e /meson.build
parent25a7812cd0867043ec0a045c41e6bd3981d69bc4 (diff)
downloadpostgresql-727400994d5a27f2859361f82d0ec9ac2b23385c.tar.gz
meson: fix openssl detection issues in 6a30027
When not detecting openssl via pkg-config, we'd error out if the headers weren't found, even if -Dssl=auto. When detecting via pkg-config, but the headers could not be found, we'd error out because the ssl_int variable would not exist. Reported-by: Nathan Bossart <nathandbossart@gmail.com> Discussion: https://postgr.es/m/20230313180432.GA246741@nathanxps13
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build18
1 files changed, 12 insertions, 6 deletions
diff --git a/meson.build b/meson.build
index 8208815c96..2ebdf914c1 100644
--- a/meson.build
+++ b/meson.build
@@ -1189,23 +1189,29 @@ if sslopt in ['auto', 'openssl']
# via pkg-config et al
ssl = dependency('openssl', required: false)
+ # only meson >= 0.57 supports declare_dependency() in cc.has_function(), so
+ # we pass cc.find_library() results if necessary
+ ssl_int = []
# via library + headers
if not ssl.found()
ssl_lib = cc.find_library('ssl',
dirs: test_lib_d,
header_include_directories: postgres_inc,
- has_headers: ['openssl/ssl.h', 'openssl/err.h'])
+ has_headers: ['openssl/ssl.h', 'openssl/err.h'],
+ required: openssl_required)
crypto_lib = cc.find_library('crypto',
dirs: test_lib_d,
- header_include_directories: postgres_inc)
- ssl_int = [ssl_lib, crypto_lib]
-
- ssl = declare_dependency(dependencies: ssl_int,
- include_directories: postgres_inc)
+ required: openssl_required)
+ if ssl_lib.found() and crypto_lib.found()
+ ssl_int = [ssl_lib, crypto_lib]
+ ssl = declare_dependency(dependencies: ssl_int, include_directories: postgres_inc)
+ endif
elif cc.has_header('openssl/ssl.h', args: test_c_args, dependencies: ssl, required: openssl_required) and \
cc.has_header('openssl/err.h', args: test_c_args, dependencies: ssl, required: openssl_required)
ssl_int = [ssl]
+ else
+ ssl = not_found_dep
endif
if ssl.found()